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.
Prerequisites
Officially: CS202, and CS251, passed with grades of C or better. CS201 is also strongly
advised. It is assumed that you have substantial programming experience in C++ and/or C.
Requirements and Grading
- Weekly lab assignments in form of programming problems or written exercises.
- Midterm exam (week 6) and Final exams.
The midterm will be conducted during lab sections.
There will be a written final exam in the official time slot.
- Makeup of grade:
Lab/Homeworks |
35% |
Midterm Exam |
25% |
Final Exam |
35% |
In-class TopHat Quizzes |
5% |
Labs and Homework
- Concurrent registration in a lab section (CS320L) is required.
- Labs meet in the CS linuxlab (FAB 88-09).
- You should automatically have an account
on the CS linux machines.
- Each lab will have a handout (available on D2L) with exercises.
Completed exercises for each week are to be submitted to D2L by
9am on Tuesday of the following week.
- Exercises may be completed on your own computer or on a CS linux
machine, but they must work on a CS linux machine, which is where
they will be tested.
- Extensions will be given only under extraordinary circumstances; consult the
instructor in advance.