Syllabus for Programming Languages class


Textbook: Programming Languages: Principles and Paradigms 2/ed by Allen Tucker and Robert Noonan.

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)..


Resources


This class meets three times a week from 8:00 AM to 8:50 AM in OM/330.

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%


Syllabus
The syllabus is organized by week. There are 3 hours of lecture material per week. However, we may try and squeeze in some lab time. I believe that you all should be able to download the Java implementation from the textbook website and so run the examples at home on your own computers.
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 3 Syntax analysis
Chapter 2
  Ex. 2.1, 2.2, 2.6, 2.8, 2.11, 2.13
3 (1/28, 1/30, 2/1) Chapter 4 Names
(snow week)
   
4 (2/4. 2/6, 2/8) Chapter 5 Types
Chapter 3
   
5 (2/11, 2/13, 2/15) Chapter 6 Type Systems
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 7 Semantics
Chapter 4
 
7 (2/25, 2/27, 2/29) Chapter 8 Semantic Interpretations Chapter 4: Names   Exercises: 4.1, 4.3, 4.5, 4.6 Due Mon Mar 10
8 (3/3, 3/5, 3/7) Chapter 9 Functions Chapter 5: Types    
9 (3/10, 3/12, 3/14) Chapter 10 Function Interpretations Chapter 6: Type Systems systems    
Spring break Mar 17 - 24
10 (3/26, 3/28) Review of Type systems, semantic interpretations, and functions Chapter 7: Semantics Chapter 5: 5.11, 5.14, 5.19, 5.20 Due Fri Apr 4
11 (3/31, 4/2, 4/4) Chapter 11 Memory Management Chapter 9 Functions    
12 (4/7, 4/9, 4/11) Chapter 12 Imperative Programming Chapter 11 Memory Management    
13 (4/14, 4/16, 4/18) Chapter 13 Object Oriented Programming Chapter 12 Imperative Programmimng    
14 (4/21, 4/23, 4/25) Chapter 14 Functional Programming Chapter 13 Object-Oriented Programming Finish Chapter 7
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) Chapter 15 Logic Programming Review    
Final Monday May 5 8-10 am.   take-home final exam Due Tues May 6