Grades of C- or higher in 22C:034, 22C:044, and 22C:054; or consent of instructor.
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.
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 |
B |
| 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.
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:
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.
We will use the Linux workstations in the CS Educational Lab in 301 MLH. Please contact the TA after class or by email if do not have a CS account yet.
| Topic | Readings |
|---|---|
| Introduction and mathematical preliminaries | Chap. 1 of [Win] |
| Introduction to operational semantics | Chap. 2 of [Win] |
| Principles of induction and inductive definitions | Chap. 3,4 of [Win], Chap 1 of [Har] |
| Denotational semantics of IMP, a simple imperative language |
Chap. 5 of [Win] |
| Axiomatic semantics of IMP | Chap. 6 of [Win] |
| Topic | Readings | Defining a programming language | Chap. 4-7 of [Har] |
|---|---|
| MiniML, a minimal functional language | Chap. 8 of [Har] |
| Type Safety of MiniML | Chap. 9 of [Har] |
| Abstract Machines and Exceptions | Chap. 11, 13 of [Har] |
| Mutable Storage and References | Chap. 14 of [Har] |
| Aggregate Data Structures and Polymorphism | Chap. 19, 20 of [Har] |
| Featherweight Java | Chap. 25 of [Har] |
| Inheritance and subtyping | Chap. 26, 27 of [Har] |