Mathematics for Computer Science
Albert Meyer and Adam Chlipala teach this MIT course as an interactive introduction to discrete mathematics for computer science and engineering, split roughly into thirds: proofs, sets, and functions; discrete structures like graphs, state machines, and modular arithmetic; and discrete probability theory. The full course is published on MIT's Open Learning Library, a free interactive platform where you can view all the materials without enrolling or sign up to track progress, alongside the traditional OCW lecture notes, readings, and an open textbook. It prepares students for later courses in algorithm design and analysis, computability theory, and computer systems. Because it lives on the boundary between the EECS and Mathematics departments at MIT, it works equally well as a discrete math foundation for programmers or a CS-flavored math elective. Completing it builds the proof and counting skills that more advanced algorithms courses assume.