HW7 Due on Dec 3, 2pm
Project 2 Due on Dec 3, 2pm
Tuesday & Thursday 2:10pm-3:30pm
GILMAN 1810
Wednesday 10:00am - 10:50am
GILMAN 2104
Ting Zhang
Office: 113 Atanasoff Hall
Email: tingz@cs.iastate.edu
Phone: 1-515-294-2410
Office hours: Tuesday & Thursday 1-2pm
Mehdi Bagherzadeh
Office: Person 145
Email: mbagherz@cs.iastate.edu
Office hours: Monday 1-2pm & Thursday 4-5pm
This course is about fundamental concepts in the design and implementation of programming languages. It covers core features in modern programming languages, such as name binding, control flow, data types, abstraction, modularity, exception handling and so on. Students are going to learn why features in a language are chosen by the designer, how to evaluate a programming language and how select a language for the computation task.
Projects are to be written in Python.
Familiarity with at least one of the following programming languages: C, C++, Java, Pascal, Scheme, LISP.
You are free to discuss ideas with others, but all the homework you hand in or projects you submit should be your own creation.
You should state on your solution the names of people with whom you have discussed the problems.
For the programming projects, you should write EVERY LINE of your code. SHARING CODE is PROHIBITED.
Late Submission:A penalty of 10% will be applied to homework or a project that is submitted up to 24 hours late.
No credit will be given for homework or a project that is submitted more than 24 hours after it is due.
Appealing:If you have questions regarding the grading of your assignments, you MUST come to see either the instructor or the TA WITHIN ONE WEEK of receipt of your graded assignments.
If you have a disability and require accommodations, please contact the instructor early in the semester so that your learning needs may be appropriately met. You will need to provide documentation of your disability to the Disability Resources (DR) office, located on the main floor of the Student Services Building, Room 1076, 515-294-6624.
Michael L. Scott Programming Language Pragmatics (Third Edition)
The following books/tutorials/papers are recommended as useful readings:
The tentative schedule with PDF lecture notes is shown below. You are encouraged to download and print the notes as handouts to take to class.
Homework solutions are only posted in WebCT.
| Date | Lecture Notes | Reading Assignment | Additional Materials | Assignments | ||
|---|---|---|---|---|---|---|
| 8/25 | History and Classification (L) (S) | Ch 1.1-1.3, 1.5, 1.7 | The Language List | |||
| 8/27 | Compilation and Interpretation | Ch 1.4, 1.6 | ||||
| 9/1 | Regular and Context-free Languages | Ch 2.1, 2.2, 2.4 | Regular Expression Examples | |||
| 9/3 | LL(1) Parsing | Ch 2.3 | ||||
| 9/8 | LR(0) Parsing | Ch 2.3 | HW 1 | |||
| 9/10 | LR(0) Parsing | Ch 2.3 | ||||
| 9/15 | Semantics Analysis | Ch 4.1-4.4, 4.6 | ||||
| 9/17 | Name, Binding Time and Storage Allocation | Ch 3.1,3.2 | HW 2 | |||
| 9/22 | Name, Binding and Storage Allocation | Ch 3.1, 3.2 | Project 1 | |||
| 9/24 | Scope and Binding | Ch 3.3, 3.5 | HW 3 | |||
| 9/29 | Scope and Binding | Ch 3.3, 3.5 | ||||
| 10/1 | ControlFlow I (Expression) | Ch 6.1 | Final Exam Sample | |||
| 10/6 | ControlFlow II (Execution Order) | Ch 6.2-6.6 | ||||
| 10/8 | Data Types I (Type System) | Ch 7.1-7.2 | HW 4 | |||
| 10/13 | Data Types II (Composite Types) (L) (S) | Ch 7.2-7.8 | ||||
| 10/15 | Midterm Exam | |||||
| 10/20 | Data Types II (Composite Types) (L) (S) | Ch 7.2-7.8 | ||||
| 10/22 | Control Abstraction (Subroutines) (L) (S) | Ch 8.2-8.4 | HW 5 | |||
| 10/27 | Control Abstraction (Exceptions) (L) (S) | Ch 8.5 | ||||
| 10/29 | Data Abstraction (Oject Oritentation) (L) (S) | Ch 9.1-9.4 | HW 6 | |||
| 11/3 | Coroutine and Continuation (L) (S) | Ch 8.6 | Project 2 | |||
| 11/5 | Control Abstraction (CPS) (L) (S) | |||||
| 11/10 | Funcational Programming (Scheme Overview) (L) (S) | Ch 10.2, 10.3 | ||||
| 11/12 | Funcational Programming (Advanced Scheme) (L) (S) | Ch 10.4, 10.5 | HW 7 | |||
| 11/17 | Funcational Programming (Monads) (L) (S) | |||||
| 11/19 | Logic Programming (Prolog) (L) (S) | |||||
| 11/24 | Thanksgiving | |||||
| 11/26 | Thanksgiving | |||||
| 12/1 | ||||||
| 12/3 | ||||||
| 12/8 | Final Review | |||||
| 12/10 | Final Review | |||||
| 12/18 | Final Exam |
For more details on university events, see the ISU academic calendar and the final exam schedule.
Web master: Ting Zhang <tingz@cs.iastate.edu>