|
COMP 311 is an introduction to the principles of programming languages. It focuses on:
A secondary theme is software engineering. All of the programming assignments in this course are conducted using test-driven development and pair-programming, two of the major tenets of Extreme Programming.COMP 311 consists of three parts:
The course enables students to ask relevant technical questions about the semantics and pragmatics of the old, new, and future programming languages that they are likely to encounter in the workplace (e.g., Fortran, C, C++, Java, Visual Basic, C#, Perl). They will also be able to build efficient interpreters for new languages or for "special-purpose" languages embeded in software applications.
Notes in the notation we use in class.
Please take a look at the course information discussed on the first day of classes
Please refer to the assignments column in the below.
# |
Date |
Day |
Topic |
Reference |
Assignments |
1 |
8/25 | M |
Introduction & Motivation | |
|
2 |
8/27 | W |
Parsing | Project 1 assigned, 8/27 | |
3 |
8/29 | F |
|||
|
9/1 | M |
Labor Day - No Classes | ||
4 |
9/3 |
W |
The Scope of Variables | Essentials, ch. 1 | |
5 |
9/5 | F |
A Syntactic Interpreter for LC | Review 1 | |
6 |
9/8 | M |
|||
7 |
9/10 | W |
A Syntactic Interpreter for LC (cont'd) | Project
1 due 12 noon, 9/10 Project 2 assigned, 9/10 |
|
8 |
9/12 | F |
A Meta Interpreter for LC | Essentials, ch. 3.1-3.6, 3.8 | |
9 |
9/15 | M |
|||
10 |
9/17 | W |
Eliminating Meta Errors | ||
11 |
9/19 | F |
|||
12 |
9/22 | M |
Data Domains Supporting Recursive Definitions | The Why of Y Domain Theory: An Introduction Types as Intervals The Lambda Calculus as a Model of Computation |
Project
2 due 12 noon, 9/22 Project 3 assigned, 9/22 |
13 |
9/24 | W |
|||
14 |
9/26 | F |
Recursive Definitions and Environments | ||
15 |
9/29 | M |
|||
16 |
10/1 | W |
|||
17 |
10/3 | F |
Review | Supplemental Material |
Hand Evaluation Exercises, Solution to Hand Evaluation Exercises |
18 |
10/6 | M |
Assignment and Mutability | Essentials, ch. 3.7, 3.9 | |
19 |
10/8 | W |
|||
20 |
10/10 | F |
Environment Representation and Control | Essentials, ch. 7, 8 | |
10/13 | M |
Midterm Recess - No Classes | |||
21 |
10/15 | W |
Environment Representation and Control | Essentials, ch. 7, 8 | |
22 |
10/17 |
F |
Object-Oriented Languages, Featherweight Java | Essentials, ch. 5 | Project
3 due 12 noon, 10/17 Project 4 and 4xc assigned, 10/17 |
23 |
10/20 |
M |
|||
24 |
10/22 |
W |
|||
25 |
10/24 |
F |
Review | ||
26 |
10/27 |
M |
What Is a Type?, Types and Safety | Essentials, ch. 4 |
Project 4 and 4xc due 12 noon, 10/27 |
27 |
10/29 |
W |
Types and datatype |
Exam 1 distributed in class, 10/29 |
|
28 |
10/31 |
F |
|||
29 |
11/3 |
M |
Polymorphism | Essentials, ch. 6 | |
30 |
11/5 |
W |
Exam Discussion | Exam 1 due in class, 11/5 | |
31 |
11/7 |
F |
Implicit Polymorphism | Type Inference Study Guide | |
32 |
11/10 |
M |
Final Words on Types |
Project 5 due 12 noon, 11/10 Project 6 (PDF) assigned, 11/10 |
|
33 |
11/12 |
W |
The Meaning of Function Calls | Essentials, ch. 8 | |
34 |
11/14 |
F |
Continuation-Passing Style | ||
35 |
11/17 |
M |
Type Inference Study Guide | ||
36 |
11/19 |
W |
Explaining letcc and error & The True Meaning of Function Calls | ||
37 |
11/22 |
F |
Garbage Collection | Uniprocessor Garbage Collection Techniques |
Project 6 due noon, 11/26 Project 7 assigned, 11/22 |
38 |
11/24 |
M |
|||
39 |
11/26 |
W |
OO Code Optimization | Sample Exam 2 | Exam 2 handed out in class, 11/28 |
|
11/28 |
F |
Thanksgiving Recess - No Classes | ||
40 |
12/3 |
M |
TBA | ||
41 |
12/3 |
W |
TBA | ||
42 |
12/5 |
F |
TBA |
Project 7 due at 11:59 PM, 12/5 Exam 2 due at 11:59 PM, 12/5 |
Students with disabilities are encouraged to contact me during the first two weeks of class regarding any special needs. Students with disabilities should also contact Disabled Student Services in the Ley Student Center and the Rice Disability Support Services.