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 12:45-1:30 and 2:30-4:00, Thursday 2:30-4:00
email: freund@cs.williams.edu
phone: 413-597-4260
TAs:     Taylor Beebe, Miranda Chaiken, Caroline Kessler,
David Lee, Shivam Patel


TA Hours

TA hours will be in TCL 312.


Calendar


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