CMPU-145

Foundations of Computer Science

Spring 2012


Book Chapters


Instructor Luke Hunsberger
Lectures Mon/Wed @ 1:30 - 2:45 p.m., OLB 205
Labs Thu @ 1:30 - 2:45 p.m., OLB 105

Contents and Frequented Links


Overview

This course introduces a variety of fundamental concepts, tools, algorithms and techniques that are used throughout the field of Computer Science. Topics include: sets, relations, functions, proof techniques, induction, structural induction, recursion, structural recursion, proving program correctness, probability and logic. The course will emphasize the exploration of these topics through computer exercises; however, it will also focus on developing proof techniques in handwritten exercises.

Nuts and Bolts

The primary textbook for the course is: Sets, Logic and Maths for Computing by David Makinson (c) 2008, published by Springer-Verlag. It appears that this book is still available ONLINE (for free) through Vassar's Springer Link feature.

In case the above link doesn't work for you, here are: instructions for accessing the book online!
We will be following the chapters in this book quite closely; however, there will be occasional supplements distributed in class. The material in the text will be complemented by regular programming assignments.

We will use the Scheme programming language and the DrScheme software, available at drscheme.org. (Pay no attention to the pop-up window concerning DrRacket.)

The lab sessions will initially be devoted to getting familiar with the DrScheme programming environment. (It is very similar to DrRacket.) Some lab sessions may also include lectures. Periodically (about once every two weeks), a lab session will include a brief paper-and-pencil, closed-book quiz. All quizzes will be announced in advance (i.e., no "pop" quizzes).

There will be regular assignments, usually about one every two weeks. Most of the problems on these assignments will require you to write, test and run programs written in Scheme; however, some of the problems, particularly in the first part of the semester, will require you to write proofs using techniques discussed in class. You are strongly encouraged to use PENCIL when writing proofs! (It's a lot easier to erase than ink.) It is not necessary to use a word processor for proofs; paper-and-pencil is fine. Assignments involving computer programs will be submitted both electronically and in paper form. Whether involving handwritten proofs or typed-up programs, all assignments must be clearly composed and laid out neatly on the page. Your programs must include concise comments that make it clear what you are doing; and your proofs must be legible. In general, at least one blank line should separate consecutive problems/programs.

All assignments must be done individually. No collaboration of any kind is allowed. Any cases of inappropriate collaboration (cheating) have to be reported to the department chair, and will be dealt with promptly. Any sharing of code---even if it's just pointing out something on the screen that you've written---will be considered cheating.

There will be one in-class exam during the semester, shortly before Spring break. There will also be a final exam. All exams will be paper-and-pencil affairs, with open-book/open-notes, but no electronic devices (e.g., no calculators or computers), except that we may provide you with access to an online browser that is restricted to the cs145 website.

The elements of the course (exams, quizzes, labs and assignments) will be weighted as follows when determining your overall grade:

Labs and Quizzes 20%
Assignments 45%
Exams 35% (midterm: 15%, final: 20%)

Academic accommodations are available for students with disabilities who are registered with the Office of Disability and Support Services. Please schedule an appointment with the instructor early in the semester to discuss any accommodations for this course which have been approved by the Director of Disability and Support Services as indicated in your accommodation letter.

Calendar

Week Monday Wednesday Thursday
0 Jan. 18
Introduction. Scheme summary.
Read sections 1.1-1.4 in the textbook!
Notes from class; Proof from class.
Jan. 19
Lab 1 SOLUTIONS!!: Scheme summary.
1 Jan. 23
Continued with Chapter 1.
Read 1.5,1.7 in the textbook.
Jan. 25
A really explicit proof; and beginning to implement sets as lists in Scheme.
Code from class. (Open this file in DrScheme and click the RUN button! Make sure the asmt-helper.txt file is visible, though.)
Jan. 26
Lab 2 SOLUTIONS!!: Implementing functions concerning sets.
2Jan. 30
Starting Chapter 2: Relations!
Read: 2.1, 2.2.2, 2.3.1, 2.4.
Code from class, Interactions, Some notes, Proof from class.
Feb. 1
More fun with Relations. Proof from class.
Feb. 2
Lab 3 SOLUTIONS!!.
3Feb. 6
More fun with Lab 3; Reflexive, Symmetric and Transitive Relations!
Feb. 8
Equivalence Relations and Partitions
Read: 2.5; 3.1-3.3
Proof that an equivalence relation determines a partition.
Feb. 9
Lab 4 SOLUTIONS!!
4Feb. 13
More fun with equivalence relations and partitions!
Feb. 15
A last word about equiv. relns. and partitions; but then starting with Functions in Chapter 3 (Sections 3.1-3.3).
Proof from class
Feb. 16
Lab 5 SOLUTIONS!!
5 Feb. 20
Induction and Numerical Recursion
NumRec handout
Feb. 22
Feb. 23
Lab 6 SOLUTIONS!!
6 Feb. 27
MIDTERM EXAM over everything before Induction!
Feb. 29
Midterm solutions
Problems 1-3 Solutions, Problem 4 Solution
Mar. 1
Lab 7 SOLUTIONS!!
  SPRING BREAK!  
7 Mar. 19
Proofs by Induction
Proofs from class.
Mar. 21
More proofs by induction.
Proofs from class.
Read Section 4 through page 99.
List-based Recursion handout.
Practice induction problems; Answers to practice induction problems.
Mar. 22
Lab 8 SOLUTIONS!!
8 Mar. 26
Finishing up induction; starting on Chapter 5 (Counting)
Proof from class; Notes from class.
Optional Handout on Less-Than.
Mar. 28
Permutations and Combinations; Dice, Poker and Bridge.
Code from class
Mar. 29
Lab 9 SOLUTIONS!!
9 Apr. 2
More "counting" examples.
Code from class; Proofs from class.
Apr. 4
Probability: Sample space, probability distribution function, events, equiprobable outcomes, disjoint events, random variables, expected value of a random variable.
Code from class
Start reading Chapter 6.
Apr. 5
Lab 10 SOLUTIONS!!.
10 Apr. 9
Expected value of a random variable, conditional probabilities, independent events
Notes from class, Code from class.
Apr. 11
Finishing up probability.
Code from class, Helper file.
Apr. 12
Lab 11 SOLUTIONS!!.
11 Apr. 16
Propositional Logic
Code from class.
Start reading Chapter 8. (NOTE: We will not cover Chapter 7.)
Apr. 18
More Propositional Logic
Code from class.
Apr. 19
Lab 12 SOLUTIONS!!.
12 Apr. 23
Entailment and Inference in Propositional Logic; the Resolution Rule.
Apr. 25
Inference in Propositional Logic
Notes, UNICORN.
Apr. 26
Lab 13 SOLUTIONS!!
13 Apr. 30
Prolog code.
FOR OFFICE USE ONLY FOR OFFICE USE ONLY