About CS 3250 A

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 2240, CS 2250.


Prereqs enforced by the system: CS 2240 and CS 2250

Section Description

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.

Section Expectation

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).

Important Dates

Note: These dates may change before registration begins.

Note: These dates may not be accurate for select courses during the Summer Session.

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.