CS 2051 - Honors Introduction to Discrete Mathematics
CS 2051, formally known as Honors Introduction to Discrete Mathematics, is a 3-credit Computer Science class taken as a core requirement for Computer Science majors. It serves as an advanced alternative to the standard discrete math option of CS 2050. It provides a detailed overview of common and uncommon discrete structures used in computing, as well as methods of proof key to the design and analysis of various algorithms. It is immediately succeeded by MATH 3012.
Workload[edit | edit source]
Unlike its non-honors counterpart, CS 2051 is more in the style of 3000-level math classes. Problem sets are given once a week and generally lean on the moderate to very difficult side. On average these will take north of 3 hours to complete, and collaboration is strongly encouraged.
There are a total of three exams in the class: two midterms and a final. These assess the mastery of material through both multiple choice as well as proof-writing questions.
Like CS 2050, proof writing skill is not expected for students in this class. However, unlike CS 2050, the class does expect its students to master proof writing fairly quickly. Problem sets and exams generally asks for more proofs compared to CS 2050, and more of the class content is dedicated to proving and deriving relationships.
Topics List[edit | edit source]
As with a typical honors class, CS 2051 goes into a couple extra topics compared to CS 2050. The topics exclusive to CS 2051 are marked with an asterisk.
- Propositions and Propositional Logic
- Propositions and Truth Values
- Propositional Operations
- Truth Tables
- Implications
- DeMorgan's Laws
- Propositional Functions
- Quantifications
- Arguments
- Methods of Proof
- Direct Proof
- Contraposition
- Contradiction
- Construction (Direct and Indirect)
- Equivalency Proofs
- Casework
- Set Theory
- Sets
- Subsets
- Venn Diagrams
- Finite Cardinality
- Power Sets
- Cartesian Products
- Set Operations
- Functions
- Infinite Cardinality (*)
- Countability (*)
- Cantor's Theorem (*)
- Relations (*)
- Binary Relations
- Properties of Relations
- Equivalence Relations
- Equivalence Classes and Partitions
- Functions as Relations
- Induction and Recursion
- Weak Induction
- Strong Induction
- Induction and Recursive Problems
- Algorithms and Big-O Analysis
- Formal Definition of Big-O, Big-Omega, and Big-Theta
- Properties of Big-O
- Basic Algorithm Analysis
- Solving for Algorithm Runtime (*)
- Recurrence Relations (*)
- Introductory Number Theory
- Partition of the Integers & Quotient Spaces (*)
- Congruence Classes
- Fast Exponentiation (*)
- GCD and Euclid's Algorithm
- Modular Inverse
- Linear Congruences (*)
- The Extended Euclidean Algorithm and Bezout's Theorem (*)
- Systems of Linear Congruences (*)
- The Chinese Remainder Theorem (*)
- Divisibility
- Fermat's Last Theorem (*)
- Intro to Diophantine Equations (*)
- The Totient Function (*)
- Euler's Theorem (*)
- Primality Testing (*)
- The RSA Cryptosystem (*)
- Introduction to Cryptosystems
- The RSA Algorithm
- Encoding and Decoding
- Counting and Combinatorics
- Standard Counting Rules
- Principle of Inclusion-Exclusion
- The Pigeonhole Principle
- Generalized Pigeonhole Principle (*)
- Permutations and Combinations
- The Binomial Theorem
- Counting with Repetition (*)
- A selection of more advanced topics (varies by semester)
Prerequisite Knowledge[edit | edit source]
Programming[edit | edit source]
Very basic programming exposure is required for this course, as a bit of pseudocode will be written during the algorithms section. However, unlike CS 2050, some algorithms knowledge is also helpful, as runtime analyses of common algorithms like linear search and binary search are performed.
Mathematics[edit | edit source]
Only basic algebra is required for this course, no calculus is necessary. However, exposure to linear algebra can be useful, especially during the discussion of injective, surjective, and bijective functions, but this is absolutely not required.
No proofs knowledge is also required for this course, even though it is significantly more proofs heavy.
Future Outlook[edit | edit source]
CS 2051 is an optional advanced version of CS 2050 for CS majors. For those with either the Intelligence or Theory threads, CS 2051 might be a useful alternative to CS 2050 due to the heavy math and proofs nature of those threads (although Intelligence is remarkably lighter on proofs compared to Theory).
Otherwise, like CS 2050, CS 2051 is the start to a major prerequisite chain. CS 2051 acts as a prerequisite for CS majors for MATH 3012, and is one of the prerequisites for CS 3510, both of which are prerequisites for theory classes for both the Intelligence and Theory threads, as well as the Theory Thread's Advanced Math Elective.
CS 2051 is also one of the prerequisites for daring CS majors willing to take MATH 3235 for their probability and statistics option. Do note that CS 2050 will NOT meet this prerequisite.
Registration[edit | edit source]
CS 2051 is not a linked course, and unlike CS 2050, has no Recitation. Thus, you must only register for the lecture section (marked with an A, B, C, etc.)
Key Registration Footnote:
- Please note that CS 2051 is not offered regularly. Please check the future course plan on the CoC website, found here, to gain a rough idea as to when this course will be offered.
- CS 2051 was last offered in: Fall 2021, Spring 2021, Spring 2020, Spring 2022
- It will be offered next in Spring 2023 (not Fall 2022)
Prerequisites[edit | edit source]
None! CS 2051 can be taken as a first year class.
Equivalent Courses[edit | edit source]
CS 2050 is the equivalent non-honors section of discrete math. It gives equivalent credit. If you do not like math or do not consider yourself strong at math, it is strongly recommended to take CS 2050.
Resources[edit | edit source]
Spring 2021[edit | edit source]
The advanced topics in Spring 2021 included:
- Recursive Counting and Recurrence Relations
- Generating Functions