CS251: Principles of Programming Languages

This course introduces the principles underlying the design, semantics, and implementation of modern programming languages in major paradigms. We will cover core concepts in programming language design and implementation, including evaluation, abstraction, state, binding, and type systems.

Course staff:

Instructor: Carolyn Anderson
Tutors: Funing Yang and Anastacia Castro
Grader: Annie Liu

Students will develop skills and strategies for exploring and analyzing novel programming languages. The programming component will give students a solid foundation in functional programming and practical experience in metaprogramming and program analysis.


Time: TF 11:20-12:35
Location: SCI L-wing 043


We will use the Google Group TBA for announcements and discussion. You are subscribed automatically on registration. Please stay subscribed and check your email regularly. This is also a great place to ask questions about assignments (but don’t post any code).

Help hours:

Time: W 4-5
          F 2:15-4:15
Location: SCI L-wing hallway


You can submit anonymous questions here: Question Form

You read the CS 251 Q&A here: Q&A

Anastacia's hours:

Time: Mondays 12:30-1:30pm
Location: SCI L-wing hallway

Funing's hours:

Time: Sundays 1-2pm
Location: Zoom (sign up sheet)

Guest speakers:

We will have some guest speakers in this class. Stay tuned for more information!