Home

Course description

Lecture notes

Assignments

Reference

 

 

 

CS 345 - Programming Languages (55645)

Spring 2008

Time and place Tue and Thu, 2-3:30pm, GEO 2.102
Instructor
Vitaly Shmatikov
     Email: shmat AT cs    Office: TAY 4.115C
     Phone: 471-9530    Office hours: Tue 3:30-4:30pm
TAs
Julian Bishop Austin Waters
     Email: julian AT cs      Email: austin AT cs
     Office: ENS 31NQ      Office: ENS 31NQ
     Office hours: Thu 11am-12n      Office hours: Mon 3:45-4:45pm
Textbooks Programming Languages (2nd ed.) by Tucker and Noonan.
        ISBN 0072866098.
C: A Reference Manual (5th ed.) by Harbison and Steele.
        ISBN 013089592X.
Grading Homeworks and programming assignments: 39%
Midterms: 30% (15% each midterm)
Final: 25%
Pop quizzes: 6%

Course schedule

Jan 15. Introduction and course logistics.   [slides] Read T&N Chap. 1 and C Ref Chap. 1.
Jan 17. Programming language paradigms.   [slides]
Jan 22. Brief history of programming languages.   [slides] Homework 1 assigned.
Jan 24. Syntax: grammars and parsing.   [slides] Read T&N Chap. 2 and 3, and C Ref Chap. 2.
Jan 29. Grammars and parsing (cont'd). Homework 1 due.
Read C Ref Chap. 7.
Jan 31. Imperative programming.   [slides] Homework 2 assigned.
Read T&N Chap. 12 and C Ref Chap. 8.
Feb 5. Introduction to ML (guest lecture by Ricky Chang).   [slides] [OCaml examples]
Feb 7. Functions: parameter passing mechanisms.   [slides] Read T&N Chap. 9 and C Ref Chap. 4 and 9.
Feb 12. Functions: scope, activation records.   [slides] Homework 2 due.
Feb 14. Buffer overflow.   [slides] Homework 3 assigned.
Read Smashing the stack.
Feb 19. Types. Overloading and polymorphism.   [slides]
              Quiz #1.
Read T&N Chap. 5 and C Ref Chap. 5 and 6.
Feb 21. Type inference. Homework 3 due.
Feb 26. Midterm #1.
Feb 28. Garbage collection.   [slides] Homework 4 assigned.
Read T&N Chap. 11.
Mar 4. Exceptions.   [slides] Read T&N Sec. 7.7.
Mar 6. Code analysis tools.   [slides] Homework 4 due.
Spring break.
Mar 18. Concurrent programming: mutual exclusion, semaphores, monitors.   [slides] Read T&N Chap. 17.
Mar 20. Concurrent programming: Java threads, synchronization. Homework 5 assigned.
Mar 25. Concurrent programming: race conditions, Java memory model.
Mar 27. Lambda calculus.   [slides] Homework 5 due.
Read T&N Sec. 14.1.
Apr 1. Functional programming in Scheme.   [slides]
            Quiz #2.
Read T&N Sec. 14.2 and Why functional programming matters.
Apr 3. Introduction to JavaScript.   [slides] Homework 6 assigned.
Apr 8. Security vulnerabilities in scripting languages.   [slides]
Apr 10. Logic programming.   [slides] Homework 6 due.
Read T&N Chap. 15.
Apr 15. Modules and objects (guest lecture by Ricky Chang).   [slides] Read T&N Sec. 13.1 and 13.2.
Apr 17. Midterm #2.
Apr 22. Introduction to Python.   [slides]
              Quiz #3.
Homework 7 assigned.
Read T&N Sec. 13.5.
Apr 24. Simula and Smalltalk.   [slides]
Read T&N Sec. 13.3.
Apr 29. Introduction to C++.   [slides]
Homework 7 due.
May 1. C++ (cont'd). Last day of class.
May 13 (2-5pm). Final.

Code of Conduct

UTCS Code of Conduct will be strictly enforced.