Tuesday & Thursday 2:10pm-3:30pm
GILMAN 1810
Monday 12:10pm - 1:00pm
GILMAN 1810
Ting Zhang
Office: 113 Atanasoff Hall
Email: tingz@mail.iastate.edu
Phone: 1-515-294-2410
Office hours: Tuesday & Thursday 1-2pm
Robert Dyer
Office: Person 145
Email: rdyer@iastate.edu
Office hours: Monday & Wednesday 3-4pm
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.
Python is the programming language for projects.
321; 330 or Cpr E 310; either 309, 362 or 363; Engl 250.
Familiarity with at least one of the following programming languages: C/C++/Java/C#.
You are guaranteed to receive the highest applicable letter grade based on the following scale.
The instructor reserves the right to raise grades. For example, if your final grade is 87%, you are guaranteed to receive at least a A-, but you may receive an A.
Programming projects and homework assignments will be penalized 1% per hour past the deadline. For instance, if you turn in a project 6 hours late, your grade will be multiplied by 0.94. Homework assignments will not be accepted after Friday midnight (i.e., no late than 24 hours). Programming projects more than 100 hours late will be assigned a grade of zero points.
Coupon:Each student will be given two coupons for projects only. You can think of each coupon as a personal due-date extension good for one day. For instance, you can choose to do one of the following (only one, not all!):
Coupons are subject to the following rules.
You must submit the COUPON file(s) together with your source code i.e., you must include it together with your last submission of the code. If you had included the file in a previous submission but not the last one, the TA has no way of knowing that you want to use a coupon, because old submissions are automatically overwritten.
Use your coupons wisely, because additional coupons will not be awarded except under extreme circumstances.
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. You may not SHARING CODE.
Grades may be appealed for ONE WEEK after they are posted in WEBCT except the final exam whose grade will be emailed by request only. After the appeal period has expired, grade change requests will be denied.
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/24 | History and Classification (L) (S) | Ch 1.1-1.3, 1.5, 1.7 | The Language List | ||
| 8/26 | Compilation and Interpretation (L) (S) | Ch 1.4, 1.6 | |||
| 8/31 | Scanning and Regular Languages (L) (S) | Ch 2.2 | Regular Expression Examples | ||
| 9/2 | Finite Automata (L) (S) | Ch 2.2.1, 2.4.1 | HW 1 | ||
| 9/7 | Context-free Languages (L) (S) | Ch 2.1.2, 2.1.3 | |||
| 9/9 | LL(1) Parsing Procedure (L) (S) | Ch 2.3.1, 2.3.2 | HW 2 | ||
| 9/14 | LL(1) Parsing Table Generaton (L) (S) | Ch 2.3.1, 2.3.2 | |||
| 9/16 | Semantics Analysis (L) (S) | Ch 4.1-4.4, 4.6 | HW 3 | ||
| 9/21 | Scope and Binding (L) (S) | Ch 3.1,3.2 | |||
| 9/23 | Midterm 1 | ||||
| 9/28 | ControlFlow I (Expression) (L) (S) | Ch 6.1 | Project 1 | ||
| 9/30 | ControlFlow II (Execution Order) (L) (S) | Ch 6.2-6.6 | HW 4 | ||
| 10/5 | ControlFlow II (Execution Order) (L) (S) | Ch 6.2-6.6 | |||
| 10/7 | Stroage Allocation (L) (S) | Ch 3.2 | HW 5 | ||
| 10/12 | Garbage Collection (L) (S) | Ch 3.2 | |||
| 10/14 | Garbage Collection (L) (S) | Ch 3.2 | HW 6 | ||
| 10/19 | Data Types I (Type System) (L) (S) | Ch 7.1-7.2 | |||
| 10/21 | Data Types II (Composite Types) (L) (S) | Ch 7.2-7.8 | HW 7 | ||
| 10/26 | Control Abstraction (Subroutines) (L) (S) | Ch 8.2-8.4 | |||
| 10/28 | Midterm 2 | ||||
| 11/2 | Control Abstraction (Exceptions) and Data Abstraction (Oject Oritentation) (L1)(L2) (S1)(S2) | Ch 8.5, Ch 9.1-9.4 | Project 2 | ||
| 11/4 | Funcational Programming (Scheme Overview) (L) (S) | Ch 10.2, 10.3 | Racket | HW 8 | |
| 11/9 | Funcational Programming (Scheme Overview) (L) (S) | Ch 10.2, 10.3 | |||
| 11/11 | Funcational Programming (Advanced Scheme) (L) (S) | Ch 10.4, 10.5 | HW 9 | ||
| 11/16 | Coroutine and Continuation (L) (S) | Ch 8.6 | |||
| 11/18 | Coroutine and Continuation (L) (S) | Ch 8.6 | HW 10 | ||
| 11/23 | Thanksgiving | ||||
| 11/25 | Thanksgiving | ||||
| 11/30 | Control Abstraction (CPS) (L) (S) | ||||
| 12/2 | Final Review I | ||||
| 12/7 | Final Review II | ||||
| 12/9 | Final Review III | ||||
| 12/13 | Final Exam | Mon. Dec. 13 12:00-2:00 p.m. | Final Exam Sample |
For more details on university events, see the ISU academic calendar and the final exam schedule.
Iowa State University complies with the American with Disabilities Act and Section 504 of the Rehabilitation Act. Any student who may require an accommodation under such provisions should contact me as soon as possible and no later than the end of the first week of class or as soon as you become aware. 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-7220. Please request that a Disability Resources staff send a SAAR form verifying your disability and specifying the accommodation you will need.
Web master: Ting Zhang <tingz@cs.iastate.edu>