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.