Department of Computer Science 
CS 189 - Foundations of Computing

Fall 2005 Syllabus
COURSE OBJECTIVES:   This course unites basic topics in discrete mathematics with computer science, using functional programming and other computer science applications to demonstrate the importance of these ideas in the real world.  Topics include functions and sets, logic and direct proof techniques, induction, recursion, probability, data structures (trees, graphs, and matrices), and their applications in computer science.  Applications include probabilistic text analysis and Web searching, relational databases, data compression, cryptography, and logic design.  Minimum preparation for this course is three years of high school mathematics, but no prior knowledge of computer programming or calculus is assumed.

Course Web site: http://www.bowdoin.edu/~allen/courses/cs189/syllabus.html
Course e-mail address: csci189@bowdoin.edu
Class meeting time (attendance is required):  TTh 1:00-2:30pm, Searles 223
Problem session meeting time (attendance is optional): T 2:30-4:00, Searles 128
PRIMARY TEXT (required):  Gersting, J., Mathematical Structures for Computer Science 5e, Freeman, 2003 (recently available on Amazon.com for $63 used and $105 new), and supplementary software and other information at the course Web site.

INSTRUCTOR:  Allen Tucker, 220 Searles Hall
E-mail address: allen@bowdoin.edu
Office Hours: TW 2:30-4:00pm , or by arrangement

COURSE WORK:  We'll have weekly asssignments, and some work will use the computer.  You'll learn about the Haskell programming language, a valuable tool for exploring many of the mathematical principles in the course and their applications in computer science.  The course will also have three examinations, each open book and non-cumulative.  All assignments and examinations will contribute to your course grade.  You are expected to follow the Bowdoin College Honor Code in all course work.

Many of the problems discussed in class will be solved collaboratively, as will some of the assigned homework problems.  Weekly out-of-class problem sessions will be scheduled in the iMac lab and conducted by the instructor and/or a computer science major who is familiar with the material in the course - attendance at these sessions is optional.

Lab work will accompany many of the assigned problems.  It will use the Haskell programming language, which is available in all the Mac and PC labs on campus.  These labs are generally open from 6-11 every night, and from 12-6pm on the weekends.  You may also download and install Haskell on your own computer for $0.  Detailed instructions for using and downloading Haskell accompanies Assignment 1.

COURSE OUTLINE:

Week beginning  Topics  Readings  Work Due

August 29, Sept 5

Logic and Proof
   operations, properties, quantifiers, validity
Ch 1.1-1.4  Asst 1
Sept 12    Application: proof checking by
   computer

Asst 2
Sept 19    Methods of proof: contradiction,
   induction
Ch 2.1, 2.2
Asst 3
Sept 26, Oct 3 Sets and relations
   Properties, operations, power sets,
   closures, recursive definitions (*** Test #1 ***)
Ch 3.1, 4.1
Asst 4

Oct 10, 17 (1-1/2 weeks)

Equivalence relations, Application: relational
   database
Ch 3.4, 4.3
Asst 5
Oct 24

Functions
   properties, composition, reduction,
   algorithms as partial functions, growth
   of functions, O notation.Applications: RSA cryptography

Ch 4.4
Asst 6
Oct 31

Functional Programming: recurrence relations, recursive functions, recursively defined data structures 

Ch 2.4, handout
Asst 7
Nov 7
(*** Test #2 ***)

 
Nov 14
Cardinality, Counting, and
Probability  
Ch 3.2-3.5
Asst 8
Nov 21 (1/2 week), 28
   Pigeonhole principle, combinations,
   permutations, expected value,
   conditional probability
   Applications: Web searching and
   natural language analysis


Dec 5
Graphs, Trees, and Matrices
   Properties, operations, structural induction
Ch 5.1-5.2, 4.5
Asst 9

   Applications: decision trees, Huffman
   coding, data compression  (JPEG)
Ch 5.3, 5.4, handout 

Dec 19
Monday Dec 19, 2:00pm (*** Test #3 ***)