Course Information
Course Catalog Description
Syntax and semantics. Compilers and interpreters. Programs as data. Regular expressions and context free grammars. Programming paradigms, including procedural, functional, and object-oriented programming. Type systems, including dynamic and static typing disciplines. Binding, scope, data abstraction, and modularity. Denotational, operational, and axiomatic semantics. Introduction to program correctness.
Format
- Class meetings will be conducted in person.
- Classes will include a mixture of lectures and live problem solving. You should bring your laptop.
- Lecture notes (and sometimes slides) will be made available before each class.
- Attendance at all class meetings is expected, although it will not factor into your grade.
- Classes will be recorded on zoom, but visuals may not have high quality. Recordings will be made
available after each class meeting.
Textbook
There is no required textbook.
Prerequisites
CS302, CS314(=CS300), CS350 passed with grades of C or better.
CS202 is an acceptable subtitute for CS302.
It is assumed that you have substantial programming experience in C/C++.
Experience in at least one other language, such as Python or JavaScript, is
very useful. Prior knowledge of TypeScript (or JavaScript) is not required.
Requirements and Grading
- Weekly homework assignments, mostly in the form of programming exercises in TypeScript.
- Midterm exam (in the lecture slot on May 9) and Final exam (on June 13).
- Exams are conducted in person.
- Exams will be closed-book, without use of a computer or other electronic device, but a small "cheat sheet" of notes will be permitted.
- Makeup of grade:
Homeworks (best 6 of 8) |
50% |
Midterm Exam |
20% |
Final Exam |
30% |
- Course letter grades will be assigned on a sliding scale. There are no absolute
percentages associated with the different grades.
Homework
- There will be 8 homework assignments, roughly one per week.
- Each assignment will have multiple short problems. We will select a subset of
these problems to grade in detail; you will get a small amount of credit for
attempting the others.
- Completed exercises for each week must be submitted on Canvas by
11:59pm on Wednesdays to receive credit.
- This deadline is strict, because solutions will be discussed in class on Thursdays.
- Extensions will be given only in extraordinary circumstances, and require permission of the
instructor in advance.
- In computing your course grade, only the best 6 out of 8 assignments will be counted.
This means that up to two assignments can be submitted late, or skipped altogether, without
damaging your grade. (The latter is
not recommended though, if you want to be prepared for the midterm and final.)
- Exercises may be completed on your own computer (strongly recommended) or on a CS linux
machine.