The University of Iowa

22c:185 - Programming Language Foundations

Fall 2006

TuTh 1:05pm - 2:20pm, 218 PH

Course Syllabus


Prof. Cesare Tinelli
201F MLH

Office hours: Tue and Thu 3:30-5:00pm, or by appointment.

Teaching Assistant

Fang Yang
101N MLH

Office hours: Mon 3:30-4:30pm, Wed, 10:30-11:30am


grades of C- or higher in 22C:031 and 22C:111 or equivalents, 22C:044 and 22C:054; or consent of instructor.

Web Page

Most of the information about the class, including handouts and assignments, will be available from the class web site:

Students are expected to check both the web site and its related bulletin board on a regular basis (at least every other day) for announcements regarding the course.


Additional reading material and handouts will be available from the course web site.

Course Purpose

This is an introductory course on the formal foundations of programming languages. Its overall goals are to:

The first part of the course will focus on the semantics of programming languages. We will study three main styles of formal semantics: operational, axiomatic, and denotational, concentrating mostly on the first two. We will see how these semantics precisely define the meaning of programming language constructs in the imperative, functional and object-oriented programming paradigms. In the second part of the course will study a number of type systems for programming languages together with techniques for statically checking that a program is well-typed.

Students should be prepared to put in considerable time and effort into reading to become familiar with the course's topics, and into homeworks and exercises to gain experience with the techniques seen in class.

Homework Assignments

Several small written assignments and programming assignments will be given, covering the material from the textbook and the lectures. All assignments will be collected and graded. They are to be done individually.
Programming assignments will be in Objective Caml (Ocaml), a declarative programming language. A few lectures will be spent on the basics of Ocaml and declarative programming. However, students are expected to have enough knowledge and practice of programming languages to be able to learn the rest on their own. Pointers to Ocaml handouts and tutorials will be provided on the course web site.


There will be one midterm exam and one final exam. The midterm will be held during class time. The final exam will be held as per university schedule.


The weighting of items in grade determination will be the following:

Participation 05%
Homeworks 35%
Midterm 25%
Final Exam 35%

The following cutoffs will be used to determine letter grades. In the ranges below, x stands for your total score at the end of the semester. Final scores near a cutoff will be individually considered for the next higher grade. Plus(+) and minus(-) grades will also be given; their cutoffs will be determined at the end of the semester.

Score  Grade
88 <= x < 100 A
75 <= x < 88


60 <= x < 75 C
50 <= x < 60 D
00 <= x < 50 F

We do not curve grades in this course. It is theoretically possible for everyone in the class to get an A (or an F). Your final grade depends only on your own performance and not on that of others.

Course Policies

Textbooks: You are expected to study all the material in each chapter covered in the readings, even if that material is not explicitly discussed in class or in the homeworks. You are also expected to study the extra material presented in class which is not in the textbook. Material presented in class, but not in the textbooks may appear on tests.

Readings and discussions: You are urged to consult sources other than our textbooks, including both reserve books and on-line material, even if there is no directed outside reading assignment. You are also encouraged to discuss the course topics with your classmates, either in person or on the course's bulletin board. It is a genuinely helpful learning activity having to formulate your own thoughts about the material well enough to express them to others.

Attendance: Students are expected to attend all classes. Your knowledge and therefore your grade depends on it. You are responsible for all announcements and material covered during class even if you did not attend.

Homework assignments: You are allowed and encouraged to discuss the homework assignments with your classmates, but you are not allowed to share solutions. Since the homework counts as a significant portion of your grade, it is expected that the submitted work be strictly your own.
(The following rule of thumb will help you not to cross the line: discuss the assignments together but do not take any written notes; go home and write the solution by yourself.)

Cheating: Sharing solutions or copying someone else's work, including posted solutions from previous editions of the course, is not allowed. Doing that will result in a zero on the assignment for the first offense and an F in the course for the second offense.

Submissions: Both written and programming assignments are to be submitted electronically, through the course website. Typed solutions of written assignments are preferred but not required. The only acceptable formats for typed solutions are: plain ASCII text, Microsoft Word, PDF and postscript. Handwritten solutions are to be scanned and submitted in either JPEG or PDF format.
Late assignments will be graded according to the following policy:

Sundays are excluded from the count of late hours.

Extra credit: No extra-credit homeworks or tests will be given on an individual basis (although they maybe given to the whole class).

Make-up exams: Make-up exams will be offered only if there is a serious, documented reason for not being able to attend a scheduled exam, and if the request is made at least a week before the scheduled exam.

Regrading: If you think that your homework assignment has been misgraded and deserves a regrading, you are invited to let us know. Go see the class TA first, and then the instructor, if you are not satisfied by the TA's response. Regrading policies for the midterm will be announced in class when the graded exams are handed back. We welcome and will give full consideration to all well motivated regrading requests.

Special needs: The instructors must hear from anyone who has a disability that may require some modification of seating, testing, or other class requirements so that appropriate arrangements can be made. Please contact the instructor during office hours.

General Policies: This course is offered by the College of Liberal Arts and Sciences (CLAS). This means that class policies on matters such as requirements, grading, and sanctions for academic dishonesty are governed by the CLAS. Students wishing to add or drop this course after the official deadline must receive the approval of the CLAS Dean. Details of the University policy of cross enrollments may be found at: .