CMSC 244 Discrete Mathematics and Functional Programming

Description:  This course covers many mathematical concepts of importance to the foundation of the modern computer scientist, employing a functional programming language as a vehicle for computational expression.  General discrete mathematics topics will include logic and formal proof, sets, relations, functions, induction and co-induction, number theory, and graph theory. Functional programming concepts will include lambda calculus, type theory, lists and algebraic data types, recursion and co-recursion, and polymorphism.  This course satisfies the functional programming requirement for moderation into the computer science program.
 
Professor: Robert W. McGrail.

Lectures:
Monday and Friday from 10:30 PM to 12:30 PM in LC 210.

Text:
The Haskell Road to Logic, Maths, and Programming, by Kees Doets and Jan van Eick.  Texts in Computing series.  London:  King's College Publications.  2004.

Course Policies

Meetings:  These will be conducted in traditional lecture style, with laboratory time reserved at the end of many meetings.

Laboratory Time:  This segment of the meetings will be conducted in the Albee 100 computer laboratory.  It will involve some step-by-step instruction, student-instructor consultation and feedback, and group work.

Software and Systems:   We will employ the Haskell98 version of the Haskell functional programming language.  Our official implementation is the Hugs command-line interpreter on the Mac OS X platform, as installed on the Albee 100 machines.  We will also make extensive use of the Glasgow Haskell Compiler (ghc) during the latter half of the course as well as Bill McCune's Mace system (mace4) and its accompanying programs and libraries.  Students may install any of these packages on their own machines.  However, no support from Bard faculty or staff is promised.

Homework:  There will be approximately 10 homework assignments.  Each assignment will be a combination of paper and email submissions.

Project:
  The running theme of this course is the use of computing to solve problems in discrete mathematics.   A general problem will be introduced and students will form groups in order to solve certain aspects of that problem.  Projects will commence soon after the midterm and will culminate with the publication of a formal technical report.

Exam:  Each student's journey will rely heavily upon the development of several technical skills.  Hence there is a certain amount of technical knowledge that each student must acquire.  My method for determining whether students are sufficiently absorbing such detail include an in-class exam.

Grading: The final grade will be computed according to the following breakdown.
  • Homework: 30%
  • Project: 40%
  • Exams: 30%

Syllabus

  • Sudoku and Algebra Completion Problems
  • The Hugs Interpreter
  • Basic Haskell Expressions and Identifiers
  • Functions
  • Lists
  • Recursion
  • Propositional Logic
  • First-Order Logic
  • First-Order Interpretations
  • Posets
  • Exam I
  • The Mace4 Model Searcher
  • The Haskell Module System
  • GHC and Standalone Executables
  • Quasigroups
  • Higher-Order Analysis of First-Order Interpretations
  • Bands and Quandles
  • Parametrized Theories
  • Exam II
  • Technical Report Deadline

News

Homework Assignment 5
3/16/07 - Please find all partially ordered sets of size 5. Due Friday, March 23.

Homework Assignment 4
3/4/07 - Write a lexer and parser for the FOL (first-order logic) data type and source language. Due: Monday, March 19, 2007.

Homework Assignment 3
2/21/07 - A collection of Haskell functions that manipulate propositional formulas. Due: Monday, March 5th.

Homework Assignment 2
2/15/07 - Read the full description, Mary...

Top of page Recommend page Print version Contact  Accessible Version  Imprint