# MATHEMATICAL LOGIC and PROGRAMMING LANGUAGES

## CRN 14605, SECTION 013, COURSE CS 410

Location FAB 150

MW 1400-1550

## Course Description

This course is about the use of Logic in Programming Languages.

The course presents propositional logic, predicate logic (and perhaps
modal logic). The course is organized around the study
of algorithms that manipulate these logics, including
algorithms for proof and refutation, And how these algorithms can be used
as computation mechnisms within a programming language.

Algorithms for
satisfiability and model checking are studied in depth. Examples
and problems illustrate the use of logic in reasoning about
programs and systems.

The algorithms studied will be written in the Haskell programming language.
The course aims for small, clear, and elegant programs that are easy
to understand. Efficiency of the programs is not an important
issue. While some familarity with Haskell would be beneficial,
good programmers should catch on quickly.

The class will combine both traditional lecture, and signifcant student
led discussion focused on the study of programs written by both the instructor and the
students in the class.
If you ever wanted to learn a new subject by writing exploratory programs and
by studying your and other class members programs, **this is the class for you**.

## Grading and Assessment

Students will be assessed by a series of exercises, problem
sets, projects, and presentations.

Exercises will be shared in class. They may be peer critiqued.
They will not be formally graded, but submission of exercises
will be tracked. Students should prepare
exercises in advance and deposit them in the class
"repository" on D2L. Participation in the presentation and
critique of exercises will be part of class participation, which
will be 20% of the grade.

Problem sets are to be handed in. They will be graded by the
instructors. These grades will be recorded. Problem sets will
account for 20% of the grade.

Projects will be larger in scope and significantly more open
ended than problem sets. Each student will do one project. The
project grade is 40% of the grade

Presentations: students will be asked to prepare presentations
on lecture topics, exercises, and on their projects. Presentations will
typically be 20 to 30 minute lecture segments. Presentations will
account for 20% of the grade. Presentations will be evaluated for
clarity, organization, technical content, and overall
effectiveness.