CSCI 334
Principles of Programming Languages
Home | Lectures | Handouts | Reading | Links
Home
Instructor: | Prof. Stephen Freund |
Email: | freund@cs.williams.edu |
Phone: | x4260 |
Office: | TPL 302 |
Office Hours: | MW 2:30 -- 4 |
Lectures: | TR 9:55-11:10 in TCL 206 |
TAs: | Antal Spector-Zabusky |
Office Hours: | Sun 9-11, Mon 9-midnight in Unix Lab |
Course Description
A programming language is a programmer's principle interface with the
computer. As such, the choice of an appropriate language can make a
large difference in a programmer's productivity. A major goal of this
course is to present a comprehensive introduction to the principal
features and overall design of both traditional and modern programming
languages. You will examine language features both in
isolation and in the context of more complete language
descriptions.
At the end of this course you will have a more thorough
understanding of why certain programming language features provide
better support for the production of reliable programs, while others are
fraught with ambiguity or other problems. Since programming languages
mediate between the programmer and the raw machine, we will also gain
a deeper understanding of how programming languages are compiled, what
actually happens when a program is executed on a computer, and how the
programming language design affects these issues. As an example, by the end
of the course, you should be able to understand why Java replaced
C++ as the hot language, and why new languages are now taking its place.