Home

Course description

Lecture notes

Assignments

Reference

 

 

 

CS 345 - Programming Languages (52470)

Fall 2010

Time and place Tue and Thu, 2-3:30pm, UTC 4.124
Instructor
Vitaly Shmatikov
     Email: shmat AT cs    Office: CSA 1.114
     Phone: 471-9530    Office hours: Tu 3:30-4:30
TAs
Jeremy Stober Austin Waters
     Email: stober AT cs      Email: austin AT cs
     Office: PAI 5.33, desk #1      Office: PAI 5.33, desk #2
     Office hours: Mo 2-3, We 1:30-2:30      Office hours: We 11:30-1:30
Textbooks Concepts in Programming Languages by Mitchell.
        ISBN 0521780985.
C: A Reference Manual (5th ed.) by Harbison and Steele.
        ISBN 013089592X.
Grading 7 homeworks and programming assignments: 49% (7% each)
2 midterms and final: 51% (17% each)

Course schedule

Aug 26. Introduction and course logistics.   [slides]
Aug 31. Programming paradigms.   [slides] Read Mitch 2.1.
Sep 2. Brief history of programming languages.   [slides]
Sep 7. Syntax: grammars and parsing.   [slides] Read Mitch 4.1 and C Ref Chap. 2 and 7.
Sep 9. Grammars and parsing (cont'd).
Sep 14. Imperative programming.   [slides] Homework 1 assigned.
Read Mitch 5.1-2 and C Ref Chap. 8.
Sep 16. Functions: parameter passing mechanisms.   [slides] Read C Ref Chap. 4 and 9.
Sep 21. Functions: scope, activation records.   [slides] Homework 1 due.
Read Mitch 7.
Sep 23. Buffer overflow.   [slides] Homework 2 assigned.
Read Smashing the stack.
Sep 28. Class canceled.
Sep 30. Introduction to ML.   [slides]
Exceptions.   [slides]
Homework 2 due (11:59pm, Oct 1).
Read Mitch 5.3-4 and 8.2.
Oct 5. Midterm #1.
Oct 7. Garbage collection.   [slides]
Oct 12. Types. Overloading and polymorphism.   [slides] Homework 3 assigned.
Read Mitch 6 and C Ref Chap. 5 and 6.
Oct 14. Type inference.
Oct 19. Concurrent programming: mutual exclusion, semaphores, monitors.   [slides] Homework 3 due.
Read Mitch 14.
Oct 21. Concurrent programming: Java threads, synchronization. Homework 4 assigned.
Oct 26. Concurrent programming: race conditions, Java memory model.
Oct 28. Lambda calculus.   [slides] Homework 4 due.
Homework 5 assigned.
Read Mitch 4.2.
Nov 2. Functional programming in Scheme.   [slides] Read Mitch 3 and Why functional programming matters.
Nov 4. Logic programming in Prolog.   [slides] Homework 5 due.
Read Mitch 15.
Nov 9. Midterm #2.
Nov 11. Introduction to JavaScript   [slides] Homework 6 assigned.
Nov 16. Security vulnerabilities in scripting languages.   [slides]
Nov 18. Modules and objects.   [slides] Homework 6 due.
Read Mitch 9 and 10.
Nov 23. Simula and Smalltalk.   [slides] Homework 7 assigned.
Read Mitch 11.
Nov 25. No class (Thanksgiving).
Nov 30. Introduction to C++.   [slides] Read Mitch 12.
Dec 2. C++ (cont'd). Homework 7 due.
Dec 9 (2-5pm, CAL 100). Final.

Code of Conduct

UTCS Code of Conduct will be strictly enforced.