--Please Read--
I'm getting a LOT of people asking me if they can sign up to the class late, and where to find things, and all of that. Yes, you can still sign up, just turn in your homework by the regular deadline. You can find all the lessons and postings so far by just going to the course subreddit.
--Okay, back to the actual description--
This course will cover game programming from an introductory level and continue to an advanced one at a brisk pace. The course is set up to be language-agnostic, although most example code will be in Java.
The course assumes basic programming competency. Early lessons will be quite easy for anyone, but later lessons will be very difficult for newbies. You should be at least familiar enough with programming to have a preferred language and set up external libraries in that language. There may be lessons that require specific languages; these will be announced at least two weeks in advance to allow you to brush up on those languages.
Class will start September 29th and classes will be weekly from that point onwards. The syllabus given below is highly tentative and will be stretched if I decide a topic needs more time than I've given it, or a student names a topic I should cover that I feel fits in well earlier than what I've listed.
Note with the listed homework that you only need to complete half the assignments for a full grade. Doing every assignment would be impressive, but is not necessary. Do note that some assignments depend on others, so you should probably look ahead before deciding to skip something.
Lesson 1 - Choosing a language and libraries. Introducing the bog-standard game loop. Homework - set up a game loop using any language/library pair besides Java/Java standard library.
Lesson 2 - Entities, object-orientation, collision detection and entity interaction. Homework - make a shmup.
Lesson 3 - Ways to build worlds. Tiles, objects, lines. Homework - make a platformer.
Lesson 4 - Tools programming. Level editors, level loading. Homework - make your platformer have levels.
Lesson 5 - How to make object interaction reasonably speedy. Grids and quad trees. Homework - make your Galaga clone have over 100 enemies on screen.
Lesson 7 - AI and Pathfinding. A*, state machines. Homework - do something where a pathfinder interpets the player input.
Lesson 6 - How to make menus and animation without pulling your hair out. State machines. Homework - make your last game have menus.
Lesson 8 - More pathfinding. Floyd-Warshall algorithm. Homework - Geometry Wars with terrain and pathfinding.
Lesson 9 - Procedural generation. Cellular caves, simplex noise, the Roguelike algorithm. Homework - spice up that Geometry Wars clone
Lesson 10 - Scripting. LUA. Homework - add scripts and a couple Zelda-ish puzzles to any previous project.
Lesson 11 - Physics. Box2D. Homework - do any tank-based puzzle game (Tetris, Puyo) that needs physics
Lesson 12 - Memory management. Mempools in C. Homework - make any game take advantage of a mempool and not blow up
Lesson 13 - Winter break. This lesson will be dangerously close to Christmas so it's something esoteric and the homework is extra-optional. How to program for Java4k. Homework - create a game you will enter in the Java4k competition. There will be a week off after this assignment.
Lesson 14 - Polish. Lerping, particles, camera shake, hit pause, fake lighting, idle animations. Homework - make any previous homework shinier.
Lesson 15 - 3D. Getting a basic scene to render in OpenGL. Homework - make something simple with a 3rd person camera.
Lesson 16 - More 3D. Ray casting, hit checking the mouse. Homework - make something simple with a 1st person camera.
Lesson 17 - 3D Procedural Generation. Simplex noise again. Homework - minecraft clones.
Lesson 18 - Vertex Shaders. Grass and water. Homework - make that minecraft clone prettier.
Lesson 19 - Fragment Shaders. The standard bump/normal/diffuse-specular stack. Homework - make that minecraft clone prettier.
Lesson 20 - Geometry Shaders. Particles and subdivision. Homework - make that minecraft clone even prettier.
The course will have weekly graded homeworks. Almost all homeworks will be in the form of games - you are not expected to make completed, polished games, but you are expected to write functioning ones. You can take the class without doing the homeworks, but that, of course, also means no grades.
70% of your grade will be based on completion. You will have to complete at least half of the assignments to get the full 70%. The rest of the grade will be based on "smile points" - you get one each time you turn in homework that does something with the assignment interesting enough to make me smile. I may also give one for suggesting an especially good topic to add to the curriculum or for outstanding class participation. Each point is worth an additional 3% on your grade.
Letter grades will be assigned on a typical American scale. 90-100% is A, 80-89% is B, and so forth. If you get over 100% you can have an A+ or an S at your whim.
I mentored Experimental Game Design at Rensselaer Polytechnic Institute for three years. I also beat Notch at a game programming competition once.



Latest tweet:
JMartin has created a class! http://t.co/lRukVNE8 "Painting a still life in oil"
Top Reddit Post:
[INTEREST CHECK] Learn to play bridge.
Latest WordPress Post:
The UReddit v3 frontend is now live!
Latest GitHub commit:
"fixed bug preventing teachers from creating classes"