CS 334: Principles of Programming Languages

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.

Full Syllabus

Class Details

      Instructor:   Stephen Freund
Office: TPL 302
Office Hours:     Monday 2:30-4:00, Wednesday 2:30-4:00
email: freund@cs.williams.edu
phone: 413-597-4260
TAs:     Margaret Allen, Taylor Beebe, Betsy Button,
David Lee, Karmen Liang, Shivam Patel


TA Hours

TA hours will be in TCL 312.


Calendar


Mon
Tues
Wed
Thurs
Fri
09/02
09/03
09/04
09/05
Intro & Halting Problem
09/06
09/02
09/03
09/04
09/05
Intro & Halting Problem
09/06
09/09
09/10
Lisp & Functional Programming
09/11
09/12
Lisp & Functional Programming
09/13
09/09
09/10
Lisp & Functional Programming
09/11
09/12
Lisp & Functional Programming
09/13
09/16
09/17
Fundamentals
09/18
09/19
Fundamentals
09/20
09/16
09/17
Fundamentals
09/18
09/19
Fundamentals
09/20
09/30
10/02
10/03
Type Inference
10/04
09/30
10/02
10/03
Type Inference
10/04
10/14
Reading Period
10/15
Reading Period
10/16
10/18
10/14
Reading Period
10/15
Reading Period
10/16
10/18
10/21
10/22
Modularity, ADTs, and Objects
10/23
10/24
OOP: Smalltalk
  • Slides
  • Pick up midterm from Lauren any time after 11:10am. Return by 2pm Saturday.
10/25
10/21
10/22
Modularity, ADTs, and Objects
10/23
10/24
OOP: Smalltalk
  • Slides
  • Pick up midterm from Lauren any time after 11:10am. Return by 2pm Saturday.
10/25
10/28
10/29
Object-Oriented Programming
10/30
10/31
Scala
11/01
10/28
10/29
Object-Oriented Programming
10/30
10/31
Scala
11/01
11/04
11/05
C++
11/06
11/07
C++
11/08
11/04
11/05
C++
11/06
11/07
C++
11/08
11/11
11/13
11/14
Java and Scala
11/15
11/11
11/13
11/14
Java and Scala
11/15
11/18
11/20
11/21
Concurrency
11/22
11/18
11/20
11/21
Concurrency
11/22
11/25
11/26
Security
11/27
11/28
Thanksgiving Break
11/29
11/25
11/26
Security
11/27
11/28
Thanksgiving Break
11/29
12/02
12/03
Security & Wrap Up
12/04
12/05
TBD
12/06
12/02
12/03
Security & Wrap Up
12/04
12/05
TBD
12/06