CMSC 15300-1: Foundations of Software

Fall Quarter, 2006 
MWF, 9:30 pm - 10:20 am
Ryerson 251


Index

Announcements
Instructor Contact Info
Course Description
Course Textbook
Course Policies
Course Mailing List
Course Schedule
Homework Assignments
Handouts
Programming in SML
SML/NJ FAQ


Announcements/Updates

There will be a special SML programming clinic in Ryerson 251 at 4pm on Monday, 11/27/06.

Instructor Contact Info

Name Role Office Office hours Phone Email
David MacQueen Professor Hinds 045 By appointment 2-4980 dbm@cs.uchicago.edu
Henry Wu TA Ryerson 177 Monday 4:00-7:00 4-4416 xyzw2307 [at] yahoo [dot] com
Irina Matveeva TA Ryerson 177 Thursday 3:00-6:00 (773)702-6614 matveeva [at] cs [dot] uchicago [dot] edu

Course Description

This course is concerned with the mathematical foundations of computer software. It will introduce the student to a number of mathematical areas used in the modelling of programming languages and software, including propositional and predicate logic, basic set theory, relations, orderings, and finite state automata. Inductive definitions and proofs play a central role in formalizing and reasoning about programs, and will form a central theme of the course. The connection between mathematics and software will be made via examples and small programming assignments.

Students should have some programming experience. Programming examples and exercises will use the Standard ML (SML) programming language, which will be introduced in the class.

Course Textbook

The textbook for the course is Discrete Structures, Logic, and Computability by James Hein. A student study guide is also available from the publisher.

Programming Exercises

This is not a course centered on programming projects, but programming examples and exercises that show how to implement the ideas explored in the lectures and textbook will be given using the language Standard ML. There are several good sources of documentation and tutorials for SML/NJ available online, and some of these are given in the course SML/NJ page.

Course Policies

Course Mailing List

A mailing list has been created for the course. The address is cmsc15300@cs.uchicago.edu. The web page for the mailing list is at http://mailman.cs.uchicago.edu/mailman/listinfo/cmsc15300.

Course Schedule

Here is a tenative schedule of the lectures. This is subject to midcourse adjustment, of course.

Date Topic Reading
9/25 Introduction and admin  
9/27 Sets 1.1-1.3
9/29 Relations 4.1
10/2 Functions 2.1-2.3
10/4 Equivalence Relations 4.2
10/6 Order Relations 4.3
10/9 Recursion and Induction  
10/11 Fixed Points  
10/13 Inductive structures  
10/16    
10/18    
10/20    
10/23    
10/25 Midterm review  
10/27 Midterm exam
10/30 Propositional Calculus 6.1-6.2
11/1 Propositional Calculus 6.3
11/3 Propositional Calculus
11/6 Predicate Calculus 7.1
11/8 Predicate Calculus 7.2-7.3
11/10 Predicate Calculus 7.2-7.3
11/13 Lambda Calculus
11/15
11/17
11/20
11/22
11/27
11/29
12/1 Reading Period

Homework Assignments

Here are links to PDF files of the homework assignments.
Homework 1 (due Oct 4)

Homework 2 (due Oct 13) Homework 3 (due Oct 20); Homework 4 (due Oct 27).
Homework 5 (due Nov 6).
Homework 6 (due Nov 13) Homework 7 (due Nov 20).
Homework 8 (due Nov 29).

Midterm Solutions

Midterm Solutions

Handouts

Here are links to PDF files of the handouts.
Outline of concepts
Sequent-style rules for Natural Deduction
Loading Source Files in SML

SML Code

Here are links to sample code.

set.sml A general set module (functor SetFn).
wff-mod.sml Wffs of propositional calculus.
quine.sml Quine's method of testing for tautologies.
lambda-EV.sml Lambda calculus evaluator.

Additional Useful Links

The book "Naive Set Theory" by Paul Halmos (published by Springer and available from Amazon for $39) is a slim and very readable account of what every mathematician (and I would add most computer scientists) should know about elementary set theory.


Dave MacQueen
Last modified: Sun Dec 3 11:35:58 CST 2006