The goal of this course is to experience the design and implementation of a large, complex software system. In taking this course, you will:
Over 10 weeks, you will decide what you want your project to be, specify its requirements, create a design and implementation schedule, and then implement it. Because students find the application so compelling, your project will be a distributed, real-time, 3D, multiplayer game. However, the overall goal of this course is not to learn how to write games (notice that it was not listed on the course goals?) -- having the project be a game just makes the development experience more fun and exciting.
We will work on Windows using DirectX and, if you prefer, OpenGL. However, this does not mean that you need prior experience with either toolkit. Remember that your project is a group effort, and only one part of the project deals with graphics.
The project requires both serious commitment and ability. In terms of time commitment, it will be on the order of the compilers course or my CSE 120 operating systems course (using Nachos). In terms of ability, you will need to have excellent programming skills, significant personal initiative, and a well-developed capacity for problem-solving. As an example, you will encounter problems that I will not know the answer to (e.g., detailed problems with DirectX). Our TA is a veteran of the course and is a tremendous resource for tracking down problems. But you will also and you will have to troubleshoot the problems yourself or search online (Web pages, newsgroups, other DirectX code, etc.).
This course is for more than just CSE majors. It is intended to combine the talents of students with strong programming backgrounds (CSE and ECE) with students with strong creative talents in digital arts and visualization (ICAM and CogSci). If you have any questions about whether the course is for you, send me email. Since the success of the project fundamentally depends upon your ability to significantly contribute to a group effort, though, this course should not be taken casually. As a result, I am only allowing students to enroll by instructor permission only. See the application procedure below for more information.
There will be a few lectures at the start of the course, and then weekly group meetings thereafter. There are no homeworks or exams, but you will produce a design specification, a development schedule, weekly status reports, and a final project writeup. Grading will be based on a combination of group and individual performance, including your ability to work successfully as part of a large group. We will be meeting and interacting closely enough that I will be able to appraise individual effort.
We will form the groups at the end of the first day of class. We'll do it in two stages. First, I will ask for two volunteers who are willing to work on the graphics engine for each game. Once we have graphics volunteers for each group, then I will ask people to choose which group they would like to be a part of. After the enrollment process, if you know of people you would like to be in your group just let me know via email (and cc: everyone in the group).
Enrollment is by instructor permission only so that I can ensure that students have sufficient background for the course. Also, to make this kind of class manageable, I plan to limit enrollment to about 30 students. Most students successfully taking the class are in their last year and have taken all of the core classes, but this is not mandatory.
My goal is to ensure that you are not getting in over your head, and that you have the requisite programming skills, personal initiative, and problem-solving ability for the class. It does not require an outstanding GPA; I fully realize that some students are much better software developers than test-takers.
To apply to enroll in the course, submit the following information to me:
Simply email the info to me (voelker@cs.ucsd.edu) and I'll acknowledge that I received it.
For the Spring 2008 quarter, the deadline for submitting materials is Wednesday, February 27, 2008. I will notify everyone of enrollment decisions by Wednesday, March 5, 2008. If you were planning on enrolling in courses before decisions are made, I suggest enrolling in the classes you were originally intending to take and drop one afterwards if you wind up taking this course. If you have any questions, do not hesitate to send me email. (I am on sabbatical out of the country during winter quarter, and do not currently have office hours. So we'll have to make do with email.)