This repository talks about my learnings through coursework that I completed in Introduction to Discrete Mathematics for Computer Science specialization.
Introduction to Discrete Mathematics for Computer Science is a beginner level 5 course specialization which introduces the learner to fundamentally important mathematical concepts for computer science including logic, combinatorics, graph theory, cryptography and approximation algorithms.
- Induction, recursion, logic, invariants, examples, optimality.
- Answering typical programming questions like: How can we be certain a solution exists?
Course 2. Combinatorics and Probability
- Most standard combinatorial settings like permutation and combinations.
- Recursive technique for counting
- Working knowledge and intuition of basics of probability
Course 3. Introduction to Graph Theory
- Understanding practical graph systems like how GPS systems find shortest routes, how engineers design integrated circuits, how biologists assemble genomes.
- Kruskal algorithm for finding minimum spanning tree
- David Gale and Lloyd S. Shapley algorithms for stable matching.
Course 4. Number Theory and Cryptography
- Chinese Remainder Theorem, Fast Modular Exponentiation, Modular Exponentiation
- Implmentation of RSA Cryptosystem
- Weakness and Exploits in RSA cryptosystem
Course 5. Delivery Problem
- Solution to Traveling Salesman Problem using: Cycle Weight, Brute Force, Average Weight and Nearest Neighbors.
- Exact Algorithms: Branch and Bound
- Approximation Algorithms: *2-Approximation"