CS 131: Programming Languages

Course Description

This course provides you with a systematic framework for thinking about programming languages. You already had an introduction to the programming languages area in CS 60, where you used four languages representing at least four different approaches: Java for object-oriented programming, Rex for functional programming, Prolog for logic programming, and ISCAL for low-level (assembly) programming. But our emphasis is different in this course.

CS 131 is organized around ideas that recur in many different languages (with less emphasis on particular choices of syntax). Understanding these ideas will help you better understand the languages you know, and help you to quickly master new languages—even languages that haven't been invented yet. The concepts you learn will also help you to devise new languages of your own (which happens more often than you may think). We will study both the formal topics that arise when specifying the behavior of programming languages, and the practical issues that arise in implementing them.

The assignments in the class give you practical experience in implementing key programming-language concepts, as well as doing significant work in Standard ML, a language that has some valuable differences from the languages you may be used to.You will also get lots of practice writing software, including some fairly large programs, which should allow you to improve your coding skills and speed

Course Website

The website for students enrolled in CS 131 is located in the CS131Spring2007 web within the CS department Wiki site.