Math for computing

One of the hardest topics for software engineers to teach themselves is the mathematical foundations of their work. They may use sets, logical operations and graphs every day, but without some background in set theory, logic, graph theory and so on, there is a limit to how effective they can be with their tools.

This course is designed as a first formal look for practicing software engineers at the discrete math topics typically covered at the early undergrad level. It also briefly visits a handful of topics outside of discrete math that may be of interest to software engineers.

Since early in the 20th century, most math education has become exceedingly rigorous, which may have been important to the development of the field, but unfortunately an impediment to the practical, intuitive understanding sought by non-mathematicians. Our course eschews the proof-centric methodology, instead focusing on problem solving and intuition building.

Topics covered

  • Logic
  • Set theory
  • Graph theory
  • Combinatorics and probability
  • Recursion
  • Turing machines, the halting problem and Godel’s incompleteness theorems
  • Linear algebra crash course
  • Number theory for cryptography


This course presumes strong programming abilities, and some familiarity with C. It will include a brief review of C, but students are advised to be familiar enough to say solve an exercise in K&R C without much outside assistance. Some familiarity with an assembly language is advised but not assumed.

Schedule and fees

This course is next scheduled to run in March 2017. Apply now to be considered; exact dates and times will be finalized based on participant availability. Classes will be approximately nine hours per week for three weeks, for a total price of $1,800

San Francisco, California
© 2016 Bradfield School of Computer Science