|
|
Announcements:
All announcements will be posted exclusively on Piazza.
Description
This core course is about techniques for analyzing and understanding
software artifacts. Ultimately, the goal of this area of study is to
improve the quality of software. We will cover three
related areas of programming languages research:
- Static analysis, the name for any automatic technique for reasoning
about program source code. We will study data flow analysis, symbolic
execution, and type systems in depth, with more cursory coverage of
other analysis techniques. Related techniques are covered in CMSC
630.
- Formal systems for describing languages and
programs, including lambda calculus and axiomatic, denotational, and
operational semantics. We will use the Coq proof assistant to help
mechanize our formalizations and check proofs of properties about
these systems.
- Programming language features and
how they affect software, including imperative, functional, and
object-oriented programming.
|