The study of programming language is intended to help students understand the basis for program language design, the differences between programming language paradigms and how those differences affect design. We will introduce the design principles of programming languages using a formal grammar, type system, and denotational semantics. Because this area is very abstract and often theoretical, it's helpful to be able to see the effect of the design choices: so this textbook provides supporting software that implements the formal model(s) covered.
This book normally expects that students will know Java. However, it has been used also at schools that know C++ (William and Mary). So, like them, we will build on your knowledge of C#/C++. I highly recommend getting an introductory book to Java. I will post several recommendations for Java texts as we go along.
This can be difficult material. There will be both a concept component and a practical component. Our credit policy (see below) will try to accomodate students with strengths in either area, although ideally you will all be able to complete all the material There will be paper assignments/exercises every week as well as some applied exercises. All homework will be available at the start of the week, and will be due BEFORE we start the next section. There will be three exams (2 midterms and 1 final)..
There will be weekly paper assignments and an ongoing programming project that exemplifies the concepts we are covering in class. Your grade is based on:
| Weekly assignments: | 25% |
| Ongoing project: | 25% |
| classroom participation | 10% |
| 2 midterms: | 25% |
| final: | 15% |
| Week | Reading and topic | Lecture notes and supplementary material | Assignment |
|---|---|---|---|
| 1 (1/14, 1/16, 1/18) |
Introduction (Chap 1) Chapter 2 (Syntax) |
Chapter 1 ppt
my chapter 1 lecture notes Chapter 2 ppt |
Ex. 1.1, 1.2, 1.6 Remember: we are 3 weeks behind the syllabus, starting ch 3 on 2/11. Chapter assignments are due at the lecture following chapter completion. |
| 2 (1/23, 1/25) (no class 1/21) |
Chapter 2 |
Ex. 2.1, 2.2, 2.6, 2.8, 2.11, 2.13 |
|
| 3 (1/28, 1/30, 2/1) |
(snow week) |
||
| 4 (2/4. 2/6, 2/8) |
Chapter 3 |
||
| 5 (2/11, 2/13, 2/15) |
Chapter 3 |
Ex. 3.1, 3.2, 3.4, 3.13, 3.17 (Due Mon 2/25) | |
| 6 (2/20, 2/22) (no school 2/18 Pres day Holiday) |
Chapter 4 |
|
|
| 7 (2/25, 2/27, 2/29) |
|
Exercises: 4.1, 4.3, 4.5, 4.6 Due Mon Mar 10 | |
| 8 (3/3, 3/5, 3/7) |
|
||
| 9 (3/10, 3/12, 3/14) |
|
||
| Spring break Mar 17 - 24 | |||
| 10 (3/26, 3/28) |
|
|
Chapter 5: 5.11, 5.14, 5.19, 5.20 Due Fri Apr 4 |
| 11 (3/31, 4/2, 4/4) |
|
||
| 12 (4/7, 4/9, 4/11) |
|
||
| 13 (4/14, 4/16, 4/18) |
|
||
| 14 (4/21, 4/23, 4/25) |
NO SCHOOL 4/21! Passover! |
Chapter 7: 7.1, 7.2, 7.4, 7.7, 7.8, 7.14, 7.16 Due Mon 4/28
Answers to code problems: |
|
| 15 (4/28, 4/30) (no class 5/2) |
|
||
| Final Monday May 5 8-10 am. | take-home final exam Due Tues May 6 | ||