Principles of Programming Languages
CSCI 3135
| Projects | 45% |
| Quizzes | 25% |
| Question on reading | 10% |
| Final exam | 20% |
All assignments in this course will be structured as part of three projects. Each project will have three parts, where each part will be some combination of implementation, answering homework style questions, and discussion. The projects are designed to give students experience with language design, implementation, and use.
For every reading, each student needs to submit a question or comment on the reading before the class in which the reading will first be discussed. The question must be submitted using PEP. Questions/comments should be specific: e.g., asking "I didn't understand the reading, can you explain it?" is not acceptable. We will answer these questions electronically. These questions make up 10% of your grade.
| Project assigned | Stage 0 | Stage 1 | Discussion | Stage 2 | |
| Project 1 | 18th January | 30th January | February 8th | February 13th | February 20th |
| Project 2 | February 20th | March 8th and March 22nd | April 10th | April 10th | April 17th |
| Project 3 | April 17th | April 24th | April 24th | May 1st |
The quizzes will be held on the following dates. All students
must take quizzes at their scheduled time.
| January 25th |
| February 8th |
| February 22nd |
| March 8th |
| April 5th |
| April 19th |
| Approximate number of lectures | Topic and slides | Reading |
| 1 | Introduction (slides in pdf) | Chapter 1 |
| 2 | Programming language syntax (slides in pdf) | Sections 2.1, 2.2 (excl. 2.2.4, "Locally least-cost error recovery", and 2.2.6) |
| 2 | Names, scopes and bindings (slides in pdf) | Sections 3.1, 3.2, 3.3, 3.5, 3.6 |
| 1 | Semantic analysis (slides in pdf) | Chapter 4 (excl. 4.5, 4.6) |
| 2 | Control flow (slides in pdf) | Chapter 6 (excl. 6.5.3 and 6.7) |
| 2 | Subroutines and control abstraction(slides in pdf, updated) | Sections 8.1, 8.2, 8.3. ALSO
"How the parameters got their modes" from handout "How the language got its spots" |
| 2 | Implementation of subroutines incl. closures (slides in pdf) | Sections 3.2 and 3.4 |
| 2 | Intro to types (slides in pdf) | Sections 7.1, 7.3.1, 7.3.2, 7.3.4 (except "variants in ada"), 7.4.1, 7.4.2, 7.5, 7.6 |
| 2 | Type equality, subtyping, information hiding. (slides in pdf) | Section 7.2 excl 7.2.4, ALSO "How the types got their identity" from "How the language got its spots" |
| 2 | Case studies of types: Modula-3 (slides in pdf) | Modula-3 language definition, Section 2.2 |
| 3 | Object orientation: basic concepts (slides in pdf) | Sections 10.1, 10.2, 10.4.1 |
| 2 | Object orientation case study: Java (slides in pdf) | Read up on objects and class in Java in your favorite text |
| 4 | Functional programming languages (slides in pdf) | Scott 11.1, 11.2 (until page 598), 11.2.3. Scott 7.2.4, 7.2.5 |
| 2 | Exception handling (slides in pdf) | Section 8.5 |
| 1 | Garbage collection |