Principles of programming language design and fundamental implementation concepts. Syntax, semantics, and static analysis of programs. Provable properties of programming languages such as type safety. Prerequisites: CS 124, CS 125.
Prereqs enforced by the system: CS 124 and CS 125
The focus of this course is on the design of programming languages (PLs) and general underlying concepts. We will emphasize: Syntax (form): What language constructs are desirable, feasible? How do we want to write programs? Semantics (meaning): How do we precisely define and document what language features should “do”? Implementation: How do we implement a language so that its features behave on a computer the way we document/intend them to? Reasoning about programs: well-designed languages allow careful, even formal, thought and reasoning, not just hacking. How can formal reasoning be integrated in PL design and used for programming? Program properties, aka Metatheory: How can we define and prove general properties of programs, such as type safety, based on language design? Static (compile-time) analysis: Ensures properties of programs, by predicting the meaning of programs based solely on their form.
Prerequisites: CS 124, CS 125. The main course materials aside from lectures will be course notes that summarize main topics and will be posted before each class. These and additional supplementary materials will be posted on blackboard. All materials for the class will be freely available.
Homework for the course will be a combination of written assignments and programming assignments. Written assignments will generally be distributed every 10 to 14 days and may include small programming exercises, while programming assignments will be less frequent but will require more programming effort. All homework solutions are expected to be an original, individual effort. (60% of final grade). In addition to homework, a midterm and final exam will be conducted (40% of final grade).
Votey Bldg 307 (View Campus Map)
to on Tuesday and Thursday
Note: These dates may not be accurate for select courses during the Summer Session.
Courses may be cancelled due to low enrollment. Show your interest by enrolling.
|Last Day to Add|
|Last Day to Drop|
|Last Day to Withdraw with 50% Refund|
|Last Day to Withdraw with 25% Refund|
|Last Day to Withdraw|
There are no courses that meet this criteria.