Difference between revisions of "CS 2051"
(added key registration footnote) |
m (Added course name to display title) |
||
(5 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
+ | {{DISPLAYTITLE: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. |
||
⚫ | |||
⚫ | '''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]]. |
||
− | == Class Structure == |
||
− | + | == Workload == |
|
− | Unlike its non-honors counterpart, CS 2051 is more in the style of |
+ | 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 |
+ | 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. |
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 == |
|
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. |
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. |
||
Line 27: | Line 28: | ||
## Contradiction |
## Contradiction |
||
## Construction (Direct and Indirect) |
## Construction (Direct and Indirect) |
||
− | ## Equivalency |
+ | ## Equivalency Proofs |
## Casework |
## Casework |
||
⚫ | |||
− | ## Induction (Weak and Strong) |
||
⚫ | |||
− | ## Combinatorial Proof (*) |
||
+ | ## Subsets |
||
⚫ | |||
+ | ## Venn Diagrams |
||
− | ## Fundamentals |
||
⚫ | |||
## Finite Cardinality |
## Finite Cardinality |
||
⚫ | |||
− | ## Cartesian |
+ | ## Cartesian Products |
## Set Operations |
## Set Operations |
||
## Functions |
## Functions |
||
− | ## Injection, Surjection, and Bijection |
||
## Infinite Cardinality (*) |
## Infinite Cardinality (*) |
||
## Countability (*) |
## Countability (*) |
||
## Cantor's Theorem (*) |
## Cantor's Theorem (*) |
||
# Relations (*) |
# Relations (*) |
||
− | ## |
+ | ## Binary Relations |
## Properties of Relations |
## Properties of Relations |
||
## Equivalence Relations |
## Equivalence Relations |
||
Line 51: | Line 51: | ||
## Weak Induction |
## Weak Induction |
||
## Strong Induction |
## Strong Induction |
||
− | ## Recursive |
+ | ## Induction and Recursive Problems |
# Algorithms and Big-O Analysis |
# Algorithms and Big-O Analysis |
||
− | ## Big-O, Big-Omega, and Big-Theta |
+ | ## Formal Definition of Big-O, Big-Omega, and Big-Theta |
− | ## Formal Definition of Big-O |
||
## Properties of Big-O |
## Properties of Big-O |
||
⚫ | |||
− | ## Recursive Algorithms |
||
− | ## Algorithm |
+ | ## Solving for Algorithm Runtime (*) |
## Recurrence Relations (*) |
## Recurrence Relations (*) |
||
# Introductory Number Theory |
# Introductory Number Theory |
||
## Partition of the Integers & Quotient Spaces (*) |
## Partition of the Integers & Quotient Spaces (*) |
||
## Congruence Classes |
## Congruence Classes |
||
⚫ | |||
⚫ | |||
+ | ## GCD and Euclid's Algorithm |
||
## Modular Inverse |
## Modular Inverse |
||
## Linear Congruences (*) |
## Linear Congruences (*) |
||
+ | ## The Extended Euclidean Algorithm and Bezout's Theorem (*) |
||
## Systems of Linear Congruences (*) |
## Systems of Linear Congruences (*) |
||
⚫ | |||
− | ## Divisibility |
+ | ## Divisibility |
⚫ | |||
## Intro to Diophantine Equations (*) |
## Intro to Diophantine Equations (*) |
||
## The Totient Function (*) |
## The Totient Function (*) |
||
⚫ | |||
− | # Number Theoretic Algorithms |
||
⚫ | |||
⚫ | |||
⚫ | |||
− | ## Bezout's Theorem & the Extended Euclidean Algorithm (*) |
||
⚫ | |||
## Euler's Theorem (*) |
## Euler's Theorem (*) |
||
⚫ | |||
# The RSA Cryptosystem (*) |
# The RSA Cryptosystem (*) |
||
## Introduction to Cryptosystems |
## Introduction to Cryptosystems |
||
Line 91: | Line 88: | ||
# A selection of more advanced topics (varies by semester) |
# A selection of more advanced topics (varies by semester) |
||
+ | == Prerequisite Knowledge == |
||
− | ==== Majors ==== |
||
− | Majors that take CS 2051 are listed below: |
||
+ | === Programming === |
||
− | * Computer Science (choice between CS 2050 and 2051) |
||
+ | 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 === |
|
+ | 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. |
||
− | CS 2051, like CS 2050, is a critical component of the Theory and Intelligence threads, and in fact, CS 2051 is a decently good class in deciding whether one wants to take the Theory thread. CS 2051 acts as one of the soft prerequisites for [[MATH 3012]] (Applied Combinatorics), as well as a hard prerequisite for for [[CS 3510]] (Algorithm Design), which are both key classes for the Theory thread CS classes: [[CS 4540]] (Advanced Algorithms) and [[CS 4510]] (Automata and Complexity Theory). Furthermore, the proof writing in CS 2051 is an excellent introduction to proof writing in general for future Theory (and even Intelligence) thread classess. |
||
+ | No proofs knowledge is also required for this course, even though it is significantly more proofs heavy. |
||
⚫ | |||
+ | |||
+ | == Future Outlook == |
||
+ | 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. |
||
+ | |||
⚫ | |||
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.) |
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:''' |
'''Key Registration Footnote:''' |
||
− | * Please note that CS 2051 is not offered regularly. Please check the future course plan on the CoC website, found [https://www. |
+ | * Please note that CS 2051 is not offered regularly. Please check the future course plan on the CoC website, found [https://www.dropbox.com/s/yadp1zyvmfbbzvx/CS%20three%20year%20course%20outline%20Sp%2022%20to%20Sp%2023.pdf?dl=0 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 |
+ | * 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 === |
=== Prerequisites === |
||
Line 120: | Line 127: | ||
* Recursive Counting and Recurrence Relations |
* Recursive Counting and Recurrence Relations |
||
* Generating Functions |
* Generating Functions |
||
− | |||
⚫ |
Latest revision as of 15:15, 12 May 2022
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