|
|
|
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...
|