Note: This is the webpage for the Fall 2024 offering of COMP2804, Sections A and B.
Instructor: Pat Morin, 5177 HP, morin@scs.carleton.ca
News and Announcements
New (December 20): 435 students wrote the COMP 2804 final exam. Final exam grades and the class grade distributions for all coursework are now visible in Brightspace.
TAs continue to mark Assignment 4, but I went ahead and computed a tentative grade distribution by filling in each student's missing assignment grades with the average grade from their completed assignments. This is what the resulting grade distribution looks like:
435 final grades
25th percentile: 63.1 (C)
Median grade: 70.6 (B-)
75th percentile: 79.1 (A-)
Average grade: 70.7 (B-)
F 15 ===============
D- 10 ==========
D 15 ===============
D+ 21 =====================
C- 39 =======================================
C 43 ===========================================
C+ 46 ==============================================
B- 47 ===============================================
B 51 ===================================================
B+ 39 =======================================
A- 57 =========================================================
A 30 ==============================
A+ 22 ======================
I don't expect this distribution to change much when the TAs are done with Assignment 4.
Letter conversions are done using the most generous interpretation of Carleton's percentage to letter conversion scheme
Unlike many of your professors, I will post the complete data used to compute your letter grade on Brightspace once I have it all. This means some of you will see that your percentage grade was a very close to a higher letter grade. For example, you may have gotten 78.8% (a B+) and see that you were only 0.2% away from an A-. I won't respond to requests asking to round these up. As I said, I'm already using the most generous interpretation of Carleton's conversion scheme (which actually states that 80-84 is the range for A-).
Happy Holidays!
New (Sep 13): This course has course discord to communicate with other students.
Learning Modality
Classes will take place in a classroom somewhere on campus that I am not allowed to disclose. Find the location by logging into Carleton Central. The mid-term exam will take place in class. The final exam is a formally scheduled exam managed by exam services.
Below, you will find a class by class list of lecture topics along with videos of each topic recorded in Fall 2020. These can be a useful resource if, for some reason, you miss some classes.
Course Objectives
A second course that is designed to give students a basic understanding of Discrete Mathematics and its role in Computer Science. Computers handle discrete data rather than continuous data. The course presents an overview of some of the major theoretical concepts needed to analyze this type of data.
Office Hours Schedule
We have lots of office hours during which TAs or myself can help you with studying course material and offer you guidance for assignments.
Important Dates
Due dates for assignments and the date of the midterm exam are in the Course Outline
Assignments
Assignments will be posted here as they become available. Assignments are to be submitted using Brightspace.
-
Assignment 4 is due on December 6, at 11:55pm. It should be submitted on Brightspace as a single PDF file.
-
Assignment 3 is due on November 10th, at 11:55pm. It should be submitted on Brightspace as a single PDF file. Assignment 3 sample solutions and grading guidelines.
-
Assignment 2 is due on October 18th, at 11:55pm. It should be submitted on Brightspace as a single PDF file. Here are Assignment 2 sample solutions and grading guidelines.
-
Assignment 1 is due Sunday September 22nd, at 11:55pm. It should be submitted on Brightspace as a single PDF file. Here are Assignment 1 sample solutions and grading guidelines.
If you would like to see some sample solutions from a previous offering of this course, you can find some here. If you are looking for an example of excellent assignment solutions, here are the sample solutions (pdf) (tex) for Assignment 1 Fall 2019
Please note the following rules and requirements about assignments:
- Late assignments will not be accepted.
- Assignments emailed to me will not be accepted.
- I will not respond to emails sent shortly before or after assignment deadlines asking for exceptions to the preceding two rules.
- You can type your solutions, or write them by hand and scan them (for example, using a scan app on your phone or using a real scanner).
- Solutions written-up in LaTeX are preferred, but not strictly required. In case you want to learn LaTeX, here is a tutorial. Learning LaTeX is a useful exercise, since many programs (including Microsoft Word) now use LaTeX for typesetting formulas.
- Each assignment must be submitted as one single PDF file through Brightspace.
Exams
The midterm exam will take place in class. The final exam will be a formally scheduled exam handled by examination services.
Here are exams for previous offerings of this course (for study purposes).
Here you can use use previous exams as practice exams.
Grading Scheme
This course will use the following grading scheme.
Assignments | 25% |
Mid-term exam | 25% |
Final exam | 50% |
If you fail to submit an assignment on time but are able to provide me with a valid reason then I will shift the weight of the missed assignment onto the remaining assignments. If you fail to submit all of the assignments with a valid reason for each one them then I will shift their weight onto the final exam. If you fail to attend the midterm exam and provide me with a valid reason then I will shift the weight of the midterm exam onto the final exam.
Textbooks
We will be using the following free (libre and gratis) textbooks. The first one is the primary textbook for this course. The second contains supplementary and background material:
- Michiel Smid. Discrete Structures for Computer Science: Counting, Recursion, and Probability, 2019.
- Eric Lehman, F Thomson Leighton, and Albert R Meyer. Mathematics for Computer Science, 2018
Lecture Topics
You should already be familiar with the following topics from COMP 1805: basic logical reasoning, sets and functions, proof strategies (direct proof, proof by contradiction, proof by induction), Sigma-notation for summations, basic graph theory, Big-Oh, Big-Omega, Big-Theta. You may take a look at Chapter 2 of the textbook and do some of the exercises at the end of that chapter. Review the relevant parts of Lehman et al if you are still struggling.
Note: Most of the videos below are from the Fall 2020 offering of this course and are provided as a tool for reviewing things that will be taught in class. The lecture-by-lecture schedule may be changed as the semester progresses and (late in the semester) we may cover some topics not covered in the videos below.
- Lecture 1: Introduction (in-class notes)
- Course overview.
- Chapter 1 in the textbook: Ramsey Theory, Quick-Sort, Sperner's Theorem.
- Lecture 2: Counting (1) (in-class notes)
- Product Rule, Section 3.1
- Product Rule, Section 3.1
- Lecture 3: Counting (2) (in-class notes)
- Bijection Rule, Complement Rule, Sum Rule, The Principle of Inclusion-Exclusion, Sections 3.2, 3.3, 3.4, 3.5.
- Bijection Rule, Complement Rule, Sum Rule, The Principle of Inclusion-Exclusion, Sections 3.2, 3.3, 3.4, 3.5.
- Lecture 4: Counting (3) (in-class notes)
- Binomial coefficients, Newton's Binomial Theorem, combinatorial proofs, Vandermonde's Identity, Pascal's Triangle, Sections 3.6, 3.7.
- Binomial coefficients, Newton's Binomial Theorem, combinatorial proofs, Vandermonde's Identity, Pascal's Triangle, Sections 3.6, 3.7.
- Lecture 5: Counting (4) (in-class notes)
- Sections 3.7 and 3.8.
- How many strings can be obtained from SUCCESS? Section 3.9.1
- Counting solutions of linear (in)equalities, Section 3.9.2
- Lecture 6: Pigeonhole Principle (in-class notes)
- Simon's Drinking Problem, Section 3.10.1
- Every $(n+1)$-element subset of $\{1,\ldots,2n\}$ contains a divisible pair, Section 3.10.2
- The Erdös-Szekeres Theorem
Infinity of primes, Section 3.10.4
- Lecture 7: Recursion (1) (in-class notes)
- Recursive functions, Section 4.1.
- Fibonacci numbers, Section 4.2.
- Proof that $f_n = (\varphi^n - \psi^n)/\sqrt{5}$
- Counting 00-free bitstrings
- Counting $aa$-free strings over $\{a,b,c\}$
- Counting $ab$-free strings over $\{a,b,c\}$
- Lecture 8: Recursion (2) (in-class notes)
- Exercise 4.38
- Euclid's algorithm, Section 4.5. (gcd.py)
-
Lecture 9: Recursion (3) (in-class notes)
- MergeSort, Section 4.6. (merge_sort.py)
- MergeSort, Section 4.6. (merge_sort.py)
-
Lecture 10: Randomization and probability (in-class notes)
- Anonymous broadcasting: Dining Cryptographers, Section 5.1.
- Probability Theory: Probability spaces, sample spaces, probability functions, Section 5.2.
- Basic rules of probability, Section 5.3.
- Lecture 11: Two surprising examples (in-class notes)
- The Birthday Paradox (section 5.5)
- Find the big box (section 5.6)
-
Lecture 12:
- Find Patti: The O'Reilley Triplets Problem, Section 5.7.
- Conditional probability, Section 5.8.
- Anil's kids, Exercise 5.40, the remarkable set B.
-
Midterm Exam Preparation (sample midterm)
-
Midterm Exam
-
Lecture 13: Independent events (in-class notes)
- Independent events, Section 5.11.
- Exercise 5.81: Annie, Boris, and Charlie write an exam.
-
Lecture 14: (in-class notes)
- Section 5.12, in particular, the probability of a circuit failing, Section 5.12.3.
- Choosing a random line in a file, Section 5.13.
-
Lecture 15: (in-class notes)
- Infinite probability spaces, Section 5.15, Exercises 5.85 and 5.91.
- The law of total probability
-
Lecture 16: (in-class notes)
- Random variables, Section 6.1.
- Independent random variables, Section 6.2.
- Expected value, Section 6.4.
- Linearity of expectation, Section 6.5.
-
Lecture 17: (in-class notes)
- Indicator random variables, Section 6.8, Exercise 6.57.
- Expected running time of Insertion-Sort, Section 6.9
- Largest elements in prefixes of random permutations, Section 6.8.2.
- Estimating the harmonic number, Section 6.8.3.
-
Lecture 18: (in-class notes)
- Quick-Sort and random binary search trees, Section 6.10 and Section 7.1 of ODS.
- Quick-Sort and random binary search trees, Section 6.10 and Section 7.1 of ODS.
-
Lecture 19: (in-class notes)
- Geometric distribution and its expected value, Section 6.6, Exercise 6.35.
- Exercise 6.59 (the Coupon Collector's Problem)
- Binomial distribution and its expected value, Section 6.7.
- Lecture 20: The Probabilistic Method (in-class notes)
- Finding large bipartite subgraphs, Section 7.1
- Graphs with no large clique or independent set, Section 7.2
- Jaccard distance satisfies triangle inequality, Section 7.4
- Lecture 21: Planar graphs and the Crossing Lemma (in-class notes)
- Proof that the Ramsey Number $R(k,k)\le 2\cdot 4^k$
- Planar graphs, Section 7.5.1
- The crossing lemma, Section 7.5.2
- Final-exam review
- Solving the Winter 2019 Final Exam
- Solving questions 19-25 on the Winter 2019 Final Exam
- Solving the Winter 2019 Final Exam