CSci 4651 Programming Languages

[Home] [Syllabus] [Assignments] [Resources]

Syllabus

The syllabus below is somewhat approximate. Dates, topics, assigned reading, and problem set due dates are subject to change. All changes in assigned reading and due dates will be announced in class (and occasionally by e-mail). While I will do my best to update the web site accordingly, it is a student's responsibility to keep track of the problem set due dates and reading assignments. If you are not sure about due dates, please don't hesitate to ask.

Both the midterm and the final exams are open book, open notes.

Note that the date for the midterm exam is set and will not change. If you have a conflict with this date, please let me know right away.

All reading is from John Mitchell "Concepts in Programming Languages", unless specified otherwise.

Problem sets are due in the beginning of the class on the due date. Late penalty is 1/3 of the credit per each class meeting that a problem set is late, unless a problem set is accompanied by a late coupon (see below). For instance, if a problem set is due on Wednesday, but is submitted on Thursday or on Friday before the class meeting, then it is graded out of 2/3 credit, and if it is submitted after Friday, but before Monday class meeting, then it is graded out of 1/3 credit. Problem sts which are more than 2 class meetings late loose all their credit.
Problem sets submitted more than 2 minutes after beginning of the class are considered late.

Late coupons

You are allowed two delayed submissions of problem sets during the entire semester without late penalty: either two problem sets, each one meeting late, or one problem set two meetings late. To avoid late penalty, attach a separate sheet of paper to your problem set with the following information: Since you only get two late coupons, use them wisely. No other extensions on problem sets will be given.

Monday Wednesday Friday
Week 1: August 25 -- August 29
Introduction, course overview.
Reading: Ch. 1.
Language design space, language processing (compilers, interpreters).
Reading: TBA due Fri, Sept. 12th
Computability.
Reading: Ch. 2.
Week 2: Sept. 1 -- Sept 5
LABOR DAY -- no class Computability (continue).
Problem set 1: Computability (WAS due Wedn., Sept. 10th, extended to Fri., Sept. 12th)
Functional vs. imperative languages, overview of Scheme.
Reading: Ch. 3.
Week 3: Sept. 8 - Sept. 12
Data representation in Scheme (box-and-pointer model) First-class functions in Scheme. Discussion of practicality of functional languages.
Introduction to semantics of programming languages, lambda calculus.
Reading: Ch. 4.
Problem set 1 due
Problem set 2: Scheme (due Fri., Sept. 19th)
Week 4: Sept. 15 - Sept. 19
Lambda calculus (continue) Introduction to denotational semantics. Reasoning about programs based on semantics. Problem set 2 due
Problem set 3: Lambda calculus, denotational semantics. (due Fri., Sept. 26th)
Week 5: Sept. 22 - Sept. 26
Historic overview of "imperative" languages (Algol, Pascal, C), introduction to ML.
Reading: Ch. 5
Introduction to ML types, ML assignment statement. More on ML types; ML pattern-matching.
Problem set 3 due
Problem set 4: ML. (due Fri., Oct. 3rd)
Week 6: Sept. 29 - Oct. 3
Type systems in programming languages other than ML. Type checking, type inference.
Reading: Ch. 6 (except 6.5)
ML type inference in detail. Type polymorphism.
Problem set 4 due
Problem set 5: Type systems, type inference. (due Fri., Oct. 10th)
Week 7: Oct. 6 - Oct. 10
Block-structures languages.
Reading: Ch. 7.
Midterm exam (includes material up to Wedn., Oct. 1) Storage management for functions, parameter passing.
Problem set 5 due
Week 8: Oct. 13 - Oct. 17
FALL BREAK -- no class Storage management for recursion, higher order functions.
Problem set 6: Storage management (due Wedn., Oct. 22nd)
Storage management (cont.).
Week 9: Oct. 20 - Oct. 24
Structured control.
Reading: Ch. 8 (except 8.3).
Exceptions.
Problem set 6 due.
Problem set 7: storage management, control, exceptions. (due Wedn., Oct. 29th)
Data abstraction and modularity.
Reading: Ch. 9.
Week 10: Oct. 27 - Oct. 31 Beginning of winter!
Modularity. Overview of Modula, Ada. Modules in other languages. Discussion.
Problem set 7 due.
Problem set 8: modularity (due Wedn., Nov. 5th)
Object-oriented languages.
Reading: Ch. 10.
Week 11: Nov. 3 - Nov. 7
Program structure, design patterns in Object-oriented languages. Historic overview: Simula, Smalltalk, C++, Java
Problem set 8 due.
Problem set 9: object-oriented languages (due Wedn., Nov. 12th)
Simula, Smalltalk in more detail: subtyping, inheritance
Reading: Ch. 11.
Week 12: Nov. 10 - Nov. 14
Overview of C++
Reading: Ch. 12
Object-oriented features in C++
Problem set 9 due.
Problem set 10: Object-oriented languages 2 (due Wedn., Nov. 19th)
Overview of Java
Reading: Ch. 13.
Week 13: Nov. 17 - Nov. 21
Object-oriented features in Java
Java types and subtyping, Java system architecture, security features
Problem set 10 due.
Problem set 11: Java features (due Wedn., Nov. 26th)
Concurrency, distributed programming.
Reading: Ch. 14.
Week 14: Nov. 24 - Nov. 28
The Actor Model
Concurrent ML, Java threads
Problem set 11 due.
Problem set 12: Concurrency (due Wedn., Dec. 3rd)
THANKSGIVING -- no class
Week 15: Dec. 1 - Dec. 5
Logic programming.
Reading: Ch. 15
Prolog.
Problem set 12 due.
Problem set 13: Logic programming (due Wedn., Dec. 10th)
Mobile computation, web languages, XML.
Week 16: Dec. 8 - Dec. 11
Catch up and discussion.
Review and wrap up.
Problem set 13 due.