The goal of the course is to cover Methods of Software Development such as Object-Oriented Programming, generic programming, meta programming, programming with components, Adaptive Programming (AP) and Aspect-Oriented Programming (AOP) and to use them to develop tools useful for solving Constraint Satisfaction Problems that play an important role in many application domains including software development, operations research (planning, scheduling) and theorem proving. Notice the loop: we use methods of software development to study and improve constraint solvers which in turn are used to improve (formal) methods of software development. We study the Alloy system and similar systems that use SAT solvers for their implementation.
Why the focus on Constraint Satisfaction? | Course Directory
Prerequisites: Acceptance to the MS program: basic probability, discrete mathematics, propositional logic, calculus, solid programming experience.
Syllabus | Lecture Notes | Homeworks | Blackboard . | Project
we are using this wiki for communication: CSG 270 Wiki Home