CSci 4651 Programming Languages

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

Syllabus

The timeline 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.

There will be 5-7 short (15 minutes or so) in-class quizzes throughout the semester on recently covered material. The quizzes will not be announced in advance.

Quizzes, 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 set submission and grading; late problem sets

Problem sets can be submitted on paper or electronically. If a part of your problem set (say, a programming part) is submitted electronically, and a part is submitted on paper, make a note on each saying that this is a part of the submission. Electronic submissions can be sent by e-mail (acceptable formats: plain text, .doc, .pdf, .gz, .tgz, .jar, .jpeg, .gif; if your preferred format is not on this list, please check with me first). You may attach the solution to a Wiki page. Sending me a URL of the solution (other than of a Wiki page with the attachment) is not acceptable.

It is your responsibility to keep copies of your submitted programs until the problem set is graded, in case there are issues with formats.

Problem sets are due in the beginning of the class on the due date. Late penalty is 25% of the credit if the problem set is sumbitted at or before the next class meeting, 50% if submitted after that. Note that 25% penalty means that 25% of the total credit is subtracted from the score, and then points are subtracted for incorrect solutions (and similarly for 50% penalty).

Each student is allowed to use 2 late coupons throughout the entire semester. Each late coupon waves late penalty for 1 class meeting that the problem set is late. For instance, if a problem set is submitted 2 class meetings late and is accompanied by 2 late coupons, it's graded out of full credit. If it has only one late coupon, it's graded out of 75% credit. To use a late coupon, simply attach to your problem set a sheet with the follwoing information:

Since you only get two late coupons, use them wisely. No other extensions on problem sets will be given, unless exceptional circumstances occur.

Monday Wednesday Friday
Week 1: January 17 - 20
Martin Luther King Day, no classes
Introduction, course overview.
Reading: Ch. 1.
A brief history of programming languages. Language classification. Language processing (compilers, interpreters).
Reading: 4.1.1
Week 2: January 23 - 27
Computability.
Reading: Ch. 2.
Problem set 1: computability. Due Mon., Jan. 30th
Functional vs. imperative languages, overview of Scheme.
Reading: Ch. 3, 4.4; Paul Graham's article and Carl de Marcken's notes (see Resources).
Data representation in Scheme (box-and-pointer model)
Scheme practice (in the dungeon, second half of the class).
Week 3: January 30 - February 3
First-class functions in Scheme.
Problem set 1 due.
Problem set 2: Scheme. Due Wedn., Feb. 8th
Discussion of advantages and disadvantages of functional languages.
Introduction to semantics of programming languages, lambda calculus.
Reading: 4.1, 4.2.
Lambda calculus (continue)
Week 4: February 6 - 10
Confluence of lambda calculus.
Introduction to denotational semantics.
Reading: 4.3.
Problem set 2 due
Problem set 3: Lambda calculus, denotational semantics. (due Wedn., Feb. 15)
Denotational semantics (continue).
Week 5: February 13 - 17
Semantics-based reasoning about programs.
Historic overview of "imperative" languages (Algol, Pascal, C), introduction to ML.
Reading: Ch. 5
Problem set 3 due
Problem set 4: ML, part I. (due Fri., Feb. 24)
Introduction to O'Caml (a dialect of ML).
Week 6: February 20 - 24
Introduction to ML types, ML assignment statement.
More on ML types; ML pattern-matching.
ML user-defined datatypes.
Problem set 4 due
Problem set 5: ML, part II, C/C++ (due Wedn. March 15)
Week 7: February 27 - March 3
Review for the midterm. Midterm exam (includes material up to Friday, February 24.)
C and C++ datatypes and memory management.
Reading: TBA
March 6 - 10: Spring break, no classes
Week 8: March 13 - 17
Type systems in programming languages other than ML. Type checking, type inference.
Reading: Ch. 6
ML type inference in detail.
Type polymorphism.
Week 9: March 20 - 24
Block-structured languages.
Problem set 5 due
Reading: Ch. 7.
Storage management for functions, parameter passing.
Problem set 6: Type inference, type polymorphism (due Wedn. March 29)
Storage management for recursion, higher order functions.
Week 10: March 27 - 31
Storage management (cont.). Structured control.
Reading: Ch. 8.1, 8.2 (skipping 8.3, 8.4).
Problem set 6 due
Problem set 7: Storage management, structured control, exceptions. (due Wedn. April 5)
Exceptions.
Week 11: April 3 - 7
Data abstraction and modularity.
Reading: Ch. 9.
Modularity. Overview of Modula, Ada.
Problem set 7 due
Problem set 8: Modules, generic types. (due Wedn. April 12)
Parameterized types. Java Generic types (a lab in the dungeon)
Week 12: April 10 - 14
Object-oriented languages.
Reading: Ch. 10.
Historic overview: Simula, Smalltalk, C++, Java
Problem set 8 due
Problem set 9: Object-oriented languages. (due Wedn. April 19)
Simula, Smalltalk in more detail: subtyping, inheritance
Reading: Ch. 11.
Week 13: April 17 - 21
Overview of C++
Reading: Ch. 12
Object-oriented features in C++
Problem set 9 due
Problem set 10: Object-oriented features of C++, Java. (due Wedn. April 26)
Overview of Java
Object-oriented features in Java
Reading: Ch. 13.
Week 14: April 24 - 28
Java types and subtyping, Java system architecture
Concurrency, distributed programming.
Reading: Ch. 14.
Problem set 10 due
Problem set 11: Java system architecture; concurrency; threads. (due Fri., May 5)
The Actor Model
Week 15: May 1 - 5
Concurrent ML, Java threads
More on Java threads
Last day of classes
Discussion, review and wrap up.
Problem set 11 due
Last day to submit any late work.
Final exam: 1:30-3:30 PM Friday, May 12