The course plays two roles. It is primarily an introduction to the area of programming languages, the basic concepts that govern a software developer’s primary tool. For this role, the course provides an idea of what it takes to parse programs, check properties before running them, and compile and interpret them to a final answer. For variety, the course includes many (though by no means all) linguistic constructs in modern languages.

The course will, in a secondary role, also reinforce the lessons of Fundamentals I and II plus OOD. The study of programming languages is the oldest area in computer science, dating back to around 1930. As such, the researchers in this area have developed the deepest understanding of the development of programs, which is what our current introductory curriculum (F I, II, OOD, Sw Dev) teaches. To deepen your understanding of this connection, the course will explicitly point back to the introductory curriculum.


This course relies on Fundamentals I, Fundamentals II, and Object-Oriented Design