This course deals with the processes involved in software development, from requirements specification and analysis through design, implementation, and testing. We discuss ways to organize and manage work processes as well as technical design models. A major portion of the course activity is the development of real software products in teams of about three students. The specific types of software projects we'll develop in this course will be computer games. Each team will develop a 2D arcade game, a 3D miniature golf game, and a third game of their design.
We focus on games for several reasons. First because they are fun projects. Second, because students have a strong sense of what constitute a good product. Third, because you don't have to break anyone's leg to get them to do their homework. But most importantly, games require solutions to a broad range of problems that rarely show up in a single software project. Games require good user interface design. They typically use computer graphics and sound. They can draw on other areas of computer science as well, such as artificial intelligence, computer networking, and computer art. Games often involve the modeling and simulation of physical systems, which requires concepts from mathematics, engineering and physics. And all of the processing in games must be done fast enough to give a good frame rate and in the presence of invetible numerical inaccuracies. Games are challenging projects.
Class participation (5%), Homework (5%), Project 1 (20%), Project 2 (30%), Team software development project (40%)
Examples of games from previous semester can be found here.