This page gives an overview of the topics I am currently available to teach. All are available as guided individual instruction, and occasionally as scheduled group classes (currently inactive).

Introductory Group

This is a series of courses that I think present a good foundational introduction to computer science, based on my time as an instructor at Carnegie Mellon.

  • Computation and Change (no requirements)
    An introduction to the fundamentals of computer programming.
  • Getting It Right (requires previous topics or programming experience)
    How do computer scientists know if their computer programs are correct?
  • Numbers in a Computer (no requirements)
    How do computers store and manipulate numbers?
  • Arrays, Searching, and Sorting (requires previous topics)
    Some of the most beautiful algorithms in computer science deal with sequences of information.
  • Trees and the Structure of Data (requires some programming experience)
    Learn about the different ways computers represent, store, and think about data.

Other Topics

  • Foundations of Programming - Learn about the lambda calculus and the theory behind the use of types in programming languages.
  • Contracts and Correctness with JML - The Java Modeling Language is an powerful tool for documenting, testing, and proving the correctness of programs and data structures.
  • Introduction to Coq - Follows the curriculum from the Logical Foundations textbook.

Start today!

Learn any of the topics here with my expert help, on your own schedule.