Sect 3. Algorithms CONCEPTS Algorithm Recursion Complexity: big O, Omega, Theta Euclidean Algorithm: division theorem, prime, factorization, GCD Affine encryption: modular arithmetic, 3 theorems Topological sort NOTATION SKILLS 1. Identify concepts in a context E.g., what are c and n0 in the Big Oh notation 2. Understand recursive algorithms E.g., tell output of a recursive function for some input E.g., find recursive formulation of a given function 3. Understand Big Oh (Omega, Theta) notation E.g., tell whether a function is Big Oh (Omega, Theta) of another 4. Understand GCD E.g., compute GCD of two numbers 5. Manipulate Affine Ciphers E.g., tell whether a function is an encryption E.g., determine the decryption function E.g., find fixpoints of an encryption 6. Understand topological sort E.g., sort a poset Sources *** Recommended *** Youtube: Recursion https://www.youtube.com/watch?v=Mv9NEXX1VHc Wikibooks: Programming Concepts: Recursive Techniques https://en.wikibooks.org/wiki/A-level_Computing/AQA/Paper_1/Fundamentals_of_programming/Recursion Wikibooks: Big Oh https://en.wikibooks.org/wiki/Algorithms/Mathematical_Background (Not yet "Algorithm Analysis: Solving Recurrence Equations") Tutorialspoint: Data Structures - Algorithms Basics https://www.tutorialspoint.com/data_structures_algorithms/algorithms_basics.htm *** Recommended *** Tutorialspoint: Data Structures - Asymptotic Analysis https://www.tutorialspoint.com/data_structures_algorithms/asymptotic_analysis.htm Wikipedia: GCD visual https://en.wikipedia.org/wiki/Algorithm *** Recommended *** https://en.wikipedia.org/wiki/Affine_cipher Youtube: affine cipher https://www.youtube.com/watch?v=EVOIAvQ7_JY https://www.youtube.com/watch?v=03Gv0YAMWmo https://www.youtube.com/watch?v=J8hp4k40YOM *** Recommended *** Youtube: Topological Sort by IDeserve https://www.youtube.com/watch?v=71eHuQvSwc0 (simplest algorithm) Youtube: Topological Sort by EducateYourself https://www.youtube.com/watch?v=yYW6lQ1ajx4 (precised, detailed) Youtube: Topological Sort by GeeksforGeeks https://www.youtube.com/watch?v=Q9PIxaNGnig (efficient algorithm) *** Recommended *** Lerma, sect 3.1-3.2 Smid, sect 4.1 (lots of exerceise at the end of the section) ADS, sect 8.1-8.2 (lots of examples and exercises)