Computer Science
LaTeX 101

This first course will go over the basics of LaTeX (pronounced "lah-tek"), including creating your first document. LaTeX is a typesetting language for creating beautiful text documents. It is normally used in scientific and mathematical fields, but you can use it for term papers, reports, memos, or anything you'd like.

Internet Relay Chat (IRC) Microcourse

This will be a short (one week) microcourse (or seminar?) on the popular IRC protocol. Internet Relay Chat is a protocol on the Internet to trasmit messages in which the naive will refer to as "chat rooms" but are really "channels". These aren't insipid sewers full of preteens and cybersexers, however, but places where long frienships are formed, where you can recieve support for many types of software, and where social movements online are coordinated. IRC channels are often populated by tech-savvy individuals, and aren't normally for children. I liken IRC to the undercurrent to the web, where the communities are and where the movements grow.

A simple protocol, learning it will teach you the fundamentals of the client/server model, will make you more comfortable with using the command line, and will make you a better communicator and faster typer. You will also learn how to use it to recieve support for software from the creators themselves. Primarily, it is the first step into integrating yourself with the tech community.

Intro to 2D Rigid Body Physics

This course will walk students through the creation of a 2D rigid body physics engine. The course will cover:

  • The motion of 1D and 2D bodies
  • Simple integrators
  • Collision detection and response
  • Advanced integrators and solvers
  • An intro to more complex dynamics, such as constraints and contact

My goal for this class is to provide students with a theoretical framework that is language-agnostic. Many coding examples will be provided in the text, so prior programming knowledge is a plus. However, programming efficiency is not required to understand the physical theory.

First lecture will be posted July 14th, 2010!

Introduction to Intelligent Search and AI in boardgames with Python

This is a practical introduction to intelligent boardgames and search. It will include some gametheory, search and AI (artificial intelligence) in general. We will start with basic search and tree-generation in python, solving some practical combinatorical problems. Later on we will introduce game programming and talk about combinatorics, complexity and game theory, especially minimax. Parallel to that we will programm intelligent agents for games like tic-tac-toe and its variants, 4-in a row and checkers.

There will be plenty of homework nessecary, since it is a programming course and thus programm a lot.

The class will be structured as follows:

1) Introduction to AI and search (theory)

2-4) Solve Puzzles, Sudoku and Quizes (coding)

5) Intelligent Boardgame-playing (theory)

6) Programm TicTacToe

7) Programm AI for TicTacToe

8) Programm different games

9) More theory about game complexity and programming, chess and Go.

10) Programm anything you want

Computer Networking

Learn computer networking from the ground up.

Often it can be easy to gloss over some details of networking, even for those that are IT professionals. The goal of this course is to make the details of networking accessible to anyone who has an interest.

The actual course content will be hosted at The comments and course updates can be found at

Fixing Imperative Programmers

An introductory course to Haskell, and functional programming in general, but for someone already familiar with imperative programming. Click the class URL for the sub-reddit where I will be posting lessons.