Exam Details
- In class on Friday, November 1st
- Covers material through Friday, October 25th (through BoP Chapter
10; up to and including proof by induction).
- You can bring one double-sided 8.5x11” sheet of hand-written
notes.
- Resources:
- (you are here) I have made a study
guide of sorts, which lists of the Goals for each lecture; my goal
is for the exam to be a fair assessment of the extent to which you’ve
achieved these outcomes.
- I have provided some Racket practice
problems. You can expect the Racket questions on the exam to
resemble these.
- These are also linked from the course webpage Schedule table, on the
day of the Midterm Exam.
For practice problems, see the Racket
practice problems, and the in-class exercises (linked as
ws
from each day’s lecture on the Schedule table). See also
the exercises for BoP Chapters 1-2 and 4-10; odd numbered exercise
solutions are in the back of the book.
Course Outcomes:
The course outcomes relevant to this exam are the following, with
some parts crossed out that we haven’t covered yet:
- Thorough understanding of the mathematical definitions of concepts
important to computer science, including sets, tuples, lists,
strings, formal languages, functions and relations.
- The ability to prove basic theorems involving these mathematical
concepts including proofs by contradiction and inductive proof
- The ability to employ effectively the functional programming style
in a functional programming language
Per-Lecture Goals
Sets 0
- Describe what a set is and how a set’s contents and members are
denoted (\(\{\ldots\}\),\(\in\) )
- Know the notation for natural numbers (\(\mathbb{N}\)), integers (\(\mathbb{Z}\)), rational numbers (\(\mathbb{Q}\)), real numbers, and the empty
set (\({\varnothing}\) or \(\emptyset\), or occasionally \(\{\}\)).
Racket 0
- Know how to interpret and write expressions in prefix operator
notation
- Know how to interact with the Racket interpeter in DrRacket
- Know how to represent and work with basic data types (booleans,
numbers, strings) in racket.
Sets 1
- Define sets using set-builder notation.
- Calculate the cardinality of a set.
Racket 1
- Know how to define and use functions in Racket using
lambda
- Know how lexical scope works in Racket, and how to introduce local
variables using
let
and let*
.
- Know how to express conditionals using
if
and
cond
Racket 2
Know how to create and work with dotted pairs using
cons
, car
, cdr
, and
cadr
and friends
Know how create and interact with lists, including the
list
function
Be able to implement simple recursive list processing functions
in Racket
Know how to create recursive helper methods to carry information
through the recursion
Sets 2
Know the definition of subset, power set.
Compute a Cartesian Product of two or more sets
Understand the notation and meaning for: union, intersection,
difference, and complement
Be able to draw and interpret Venn diagrams
Logic 1
- tell whether an English sentence or a mathematical expression is a
logical statement.
- articulate the meanings of logical AND, OR, NOT, conditional
statements and biconditional statements.
Logic 2
- articulate the meanings of logical AND, OR, NOT,
conditional statements and biconditional statements.
- use truth tables to calculate truth values of logical
statements
- use truth tables to verify logically equivalent statements
Logic 3
- use truth tables to calculate truth values of logical
statements
- use truth tables to verify logically equivalent statements
- be able to interpret and use universal \((\forall)\) and existential \((\exists)\) quantifiers
Logic 4
- Be able to translate English sentences involving quantifiers,
logical operators, and statements into logical symbols and back.
- Be able to negate statements expressed symbolically.
- Know how to read a mathematical definition, and know a few common
and useful ones:
- even, odd,
divides, parity
Direct Proof
- Be able to use direct proof to prove statements involving
definitions including even, odd,
divides, parity.
- Be able to prove statements that require consideration of multiple
cases.
- Know when and how to apply “without loss of generality” to treat
similar/symmetric cases.
Contrapositive Proof
- Know how to use contrapositive proof to show \(P \Rightarrow Q\) by showing that \(\neg Q \Rightarrow \neg P\).
Proof By Contradiction
- Know how to prove statements, including conditional statements, by
contradiction.
Proving Non-Conditional
Statements
- Know how to prove if-and-only-if statements and equivalence
statements
- Know how to prove existentially quantified statements
- Know how to disprove statements in general
- Know how to disprove universally quantified statements and
conditional statements by counterexample
Proof by Induction
- Know the intuition and logical reasining underlying proof by
induction.
- Know the meaning of base case, inductive
hypothesis, and inductive step (or
inductive case) in the context of proof by
induction.
- Be able to apply proof by induction
- Be able to apply proof by strong induction
- Know the definition of the Fibonacci sequence