CMSC 433: Programming Language Techologies and Paradigms

Fall 2023


This course is about formal methods:  the theory and practice of systematically reasoning about the correctness of software.  In the class you will learn different techniques for writing down precise specifications of desired system behavior and for proving that specifications hold of software artifacts.  You will also apply these techniques in a variety of software projects using the Dafny and Haskell languages and tools.  Here is a tentative schedule for the semester.


Rance Cleaveland

 Time / Place:

3:30 – 4:45 TuTh, CSIC 1115


There is no required text; notes and suggested readings will be made available throughout the semester.


The work you will be asked to complete, and the relative impacts of each category on your final grade, are the following. Note that assignments will primarily, although not exclusively, be programming projects.

Assignments (7) 60%
Midterm exam 15%
Final exam 25%


The midterm and final exams will be in-person.  The lecture schedule gives the dates.

Course policies on academic integrity, excused absences, academic accommodatons, personal conduct, and the like will follow those listed in

Web Accessibility