Course overview
Welcome! This is an overview of the fall 2026 edition of CSE210A (“Programming Languages”), a graduate course in the Computer Science and Engineering Department at the UC Santa Cruz Baskin School of Engineering.
Instructor

Hi, I’m Lindsey Kuper! (I prefer to be called Lindsey; I’m not really into titles.)
- Email: for anything CSE210A-related, send a DM on the course Zulip instead. Otherwise: lkuper@ucsc.edu
- Office location: Engineering 2, Room 349B
- Office hours: Wednesdays 1-2pm, or by appointment (DM me on Zulip anytime!)
- Research areas: programming languages, distributed systems, software verification, concurrency (more information on my website)
- Pronouns: she/her/hers
A few essential details about the course
- 5-unit graduate course
- Class meets in person Mondays, Wednesdays, and Fridays, 9:20-10:25am Pacific time, in Engineering 2, Room 192
- We use Canvas for grades and not much else.
- We use Zulip for all course-related communication. Enrolled students will receive an invitation link to the course Zulip organization.
- What you’re looking at right now is the public course website. While I won’t ask you to do your work in public, I like to make my course materials available to the public when I’m able to; hence, this website.
What’s this course about?
This course is a graduate-level introduction to the research area of programming languages (PL) as a subfield of computer science. In this course, I hope to introduce you to a “PL mindset” – a point of view that PL people bring to their work (or I do, anyway). Whether or not you plan to continue in PL, I hope that you’ll find a PL mindset useful.
There are many facets of PL, and we won’t have time to talk about them all. Our particular focus in this course will be on the semantics of programs and programming languages. “Semantics” is just a fancy word for “meaning”. We will spend a lot of time thinking about what programs mean in a formal, mathematical sense, and we’ll gain familiarity with certain widely used mathematical tools and techniques for reasoning about program semantics (though again, there will be many tools and techniques we won’t have time for). We’ll see that programs are ultimately mathematical objects that can be reasoned about in a rigorous and general way with mathematical tools.
One of the most interesting kinds of programs we can study, of course, is programs that operate on programs. These include, for example, interpreters, compilers, static analyzers, debuggers, emulators, and so on. Those, too, are programs that can be rigorously reasoned about using mathematical tools, and we’ll spend a lot of time discussing this class of programs.
When you adopt a PL mindset, you will begin to see “programs that operate on programs” everywhere you look. As a result, many computing problems begin to take the shape of programming language design and implementation problems. You may not think of yourself as a programming language designer or implementor – at least, not yet. But language design may be something that you have already done, perhaps without realizing it. My hope is that the concepts you learn in this course will help you avoid common pitfalls and make more intentional choices next time you find yourself implementing a language. It is also my hope that adopting a PL mindset will help you get the most out of modern programming languages and the many affordances they offer, and this course will expose you to a few such language affordances and the mathematical formalisms that underlie them.
The schedule has more details on what we’ll be doing day to day. (There’s also an enthusiastic Mastodon thread with a lot of swears.)
Grading
Your grade in this course will be based on class participation (20%), assignments (25%), a midterm exam (25%), and a final exam (30%).
You earn credit for class participation by completing daily in-class activities. These are graded only on the basis of whether you complete them, not how you complete them.
Assignments will be a mix of programming assignments (in Elsa and Haskell) and on-paper written exercises. We will grade assignments using a mix of automatic and manual grading, depending on the type of assignment.
The two exams will be on-paper, in-person exams. The exam questions will be similar in nature to the written exercises you’ll do as homework. If you’ve been conscientious in doing the homework, the exams will be easy for you.
Here is my promise to you: if you make a “good-faith” effort in this class, you will earn a passing grade (which for a grad student is a grade of at least a B). A good-faith effort includes missing no more than two class sessions, participating actively and constructively in in-class activities on all the days you attend, fully completing each homework assignment and turning it in on time, and strictly following the below academic integrity policy.
Needless to say, the above grading approach assumes no violations of academic integrity.
Academic integrity policy
Like most courses, this course includes learning activities (of which assignments are a part) and evaluation activities (of which exams are a part). You are mostly free to engage with the learning activities in the way that best helps you learn. But the learning activities are designed to help you pass the evaluation activities, where you have less freedom regarding how to engage. So, be advised that it’s in your best interest to engage appropriately with the learning activities.
What does “appropriate” engagement look like? The most important principle to abide by is that all the work you turn in must be your own, independent, original work. It is a very important part of your job as a scholar to understand what counts as plagiarism, and make sure you avoid it.
You can, and should, ask the course staff and your classmates for advice, but you cannot copy from anyone or anything: once you understand the concepts, you must do your own work. While you work on your own homework solutions, you can discuss with classmates the general techniques involved, without sharing your work with them or looking at their work.
You must cite any sources you use and acknowledge any help you received. When you submit a written assignment, you’ll use an assignment template that we provide; a part of that template will be for citing sources that you used and acknowledging those who helped you. When you submit a programming assignment, you must include, at the top level of the assignment directory tree, an ACKS.md file that gives credit to all resources you used or individuals you got help from while working on the assignment. We will provide an example that gives you an idea of the level of detail that is expected in these acknowledgment statements.
The acknowledgment statements you submit will be read by the course staff – not to try to catch you out, but rather as an opportunity to learn about the parts of the assignments you found difficult, and whether the resources you made use of were effective for you.
Policy on the use of generative AI tools
My hope is that the class will write this policy collaboratively, sometime during the first few class sessions. So, please start thinking now about what you would want it to say if you were in charge.
What should I do if I’m struggling in this course?
Talk to the course staff immediately. Tell us what you’re having trouble with; it’s our job to help. Ask questions in class, in office hours, and on Zulip. Keep coming to class, keep turning in the homework even if it’s only partially done, keep doing the in-class activities, and continue to make a good-faith effort to succeed in the course.
Do not wait until the last minute to come talk to us. Do not assume that you can catch up later if you fall behind. Later course material builds on earlier course material, so if you become lost, it will be hard to catch up unless you come talk to us.
A note on accessibility
If you have a disability and you require accommodations to achieve equal access in this course, please submit your Accommodation Authorization Letter from the Disability Resource Center (DRC) to me via the Accommodate system, preferably within the first two weeks of the quarter. I am eager to discuss ways we can ensure your full participation in the course.
I encourage all students who may benefit from learning more about DRC services to contact the DRC.