Mathematics for Computer Science
Prof. Tom LeightonDiscrete mathematical foundations for theoretical computer science: proof techniques, well-ordering, number theory, RSA cryptography, graph theory, recurrences, generating functions, and discrete probability.
Syllabus
22Introduction and Proofs (MIT 6.042J, Lecture 1)
This introductory lecture establishes fundamental concepts of mathematical reasoning, including direct proofs, proofs by contradiction, and the structure of propositions and predicates within discrete mathematics.
Mathematical Induction (MIT 6.042J, Lecture 2)
This lecture introduces the fundamental principle of mathematical induction, demonstrating its application through various proof constructions essential for discrete mathematics and theoretical computer science.
Strong Induction (MIT 6.042J, Lecture 3)
This lecture introduces the principle of strong mathematical induction, contrasting its formulation and application with weak induction. It demonstrates the utility of strong induction through proofs involving number theoretic properties and recursive structures.
Number Theory I (MIT 6.042J, Lecture 4)
This lecture introduces foundational concepts in number theory, covering modular arithmetic, prime factorization, and the Euclidean algorithm. The session progresses to analyze Diophantine equations and their applications in computational contexts.
Number Theory II (MIT 6.042J, Lecture 5)
This lecture continues the exploration of elementary number theory, focusing on modular arithmetic, the Euclidean algorithm for greatest common divisors, and their application to linear Diophantine equations.
Graph Theory and Coloring (MIT 6.042J Mathematics for Computer Science, Lecture 6)
This lecture introduces fundamental concepts of graph theory, including definitions of graphs, paths, cycles, and connectivity. It then delves into graph coloring, covering the chromatic number and its applications.
Matching Problems (MIT 6.042J Mathematics for Computer Science, Lecture 7)
This lecture introduces the fundamental concepts of graph matching problems, covering bipartite matching, perfect matchings, and algorithms for finding maximum matchings. It lays the combinatorial groundwork essential for various applications in computer science.
Graph Theory II: Minimum Spanning Trees (MIT 6.042J, Lecture 8)
This lecture, part of MIT's Mathematics for Computer Science course, rigorously introduces the concept of Minimum Spanning Trees (MSTs). It covers the foundational definitions, properties, and classic greedy algorithms, such as Kruskal's and Prim's, for their construction.
Lecture 9: Communication Networks (6.042J)
This lecture explores the fundamental principles of communication networks, introducing concepts such as network topology, routing algorithms, and data transmission efficiency.
Lecture 10: Graph Theory III (6.042J)
Continuing the advanced study of graph theory, this session delves into topics like network flow, matching algorithms, and connectivity properties of complex graphs.
Lecture 11: Relations, Partial Orders, and Scheduling (6.042J)
This lecture covers binary relations, focusing on properties of partial orders and their applications in scheduling problems, including topological sorting and critical path analysis.
Lecture 12: Sums (6.042J)
This session introduces techniques for evaluating finite and infinite sums, including arithmetic and geometric series, and applies summation methods to recurrence relations.
Lecture 13: Sums and Asymptotics (6.042J)
Exploring advanced summation techniques, this lecture focuses on asymptotic analysis, utilizing Big O, Big Omega, and Big Theta notations for evaluating algorithm complexity and growth rates.
Divide and Conquer Recurrences (MIT 6.042J, Lecture 14)
This lecture systematically introduces the analysis of recurrence relations arising from divide and conquer algorithms. Professor Leighton covers methods for solving these recurrences, including the Master Theorem.
Lecture 15: Linear Recurrences (6.042J)
Focusing on linear recurrence relations, this lecture presents methods for solving homogeneous and non-homogeneous equations using characteristic equations and generating functions.
Lecture 16: Counting Rules I (6.042J)
This foundational lecture introduces essential combinatorial counting principles, including the sum rule, product rule, inclusion-exclusion principle, and pigeonhole principle.
Lecture 17: Counting Rules II (6.042J)
Building on basic counting, this session covers permutations, combinations, and stars and bars methods, illustrating their application in solving complex combinatorial problems.
Lecture 18: Probability Introduction (6.042J)
This introductory lecture establishes the axioms of probability, covering sample spaces, events, and calculating probabilities of simple and compound events.
Lecture 19: Conditional Probability (6.042J)
The lecture explores conditional probability, examining Bayes' Theorem and its applications in updating probabilities based on new evidence and sequential events.
Lecture 20: Independence (6.042J)
This session defines statistical independence between events, discussing its implications for probability calculations and introducing concepts like Bernoulli trials.
Lecture 21: Random Variables (6.042J)
This lecture introduces discrete and continuous random variables, defining probability mass functions (PMFs) and probability density functions (PDFs) and their properties.
Lecture 22: Expectation I (6.042J)
The concept of mathematical expectation is introduced, covering expected values of discrete random variables and linearity of expectation with practical examples.





















