next up previous
Next: About this document ...

Department of Computer Science, Clemson University
CpSc 372 - Intro to Software Development
Brian Malloy, PhD
Course Description
May 20, 2008



The abiding leadership of the United States in science and technology may be coming to an end. Maturing economies across the globe are gaining in technological sophistication and in the production of skilled practitioners. An illustration of this trend is the fact that many high level tasks are being outsourced from the US to other countries. Factors contributing to this leadership decline include waning interest in undergraduate computing courses and outdated computing curricula.

One approach to piquing the enthusiasm of undergraduate students in computing curricula is through courses in computer game development. These courses are both interesting and challenging because game construction integrates many computer science topics into a single project. Computer game construction exercises low-level skill development such as algorithm implementation, event-based processing, network implementation, artificial intelligence, graphics and human computer interaction (HCI). However, game construction also exercises high-level skill development such as requirements specification, object-oriented design, and project management. In spite of the demanding nature of game construction courses, they remain among the most popular in the Clemson School of Computing, mostly due to the ``fun factor'' attached to the construction of a real computer game. Computer game construction provides an opportunity to unify the ideals of low-level and high-level skill development into a traditional software engineering (SE) curricula

Thus, this course on Introduction to Software Development will be project-based, and you may choose from among the following two options for your project:

  1. Form a development team to work with a student in the 8th grade who is struggling with a particular topic. The student will work as the client to your team to develop a computer game to facilitate comprehension and improvement in the topic for which the student is struggling. Each SE development group will progress through the software life cycle to build an educational game, utilizing game scripting and game story boards for requirements analysis, design patterns to facilitate the design phase and the use of the client as beta-tester in the final phase of the project. An educational psychologist will consult with individual SE teams at various times during the game construction life cycle.
  2. Form a development team to design a maintenance project on an existing video game. Motivation for the structure of this second option derives from three observations. First, most industrial software development is not from scratch, but from previously developed code. Second, software maintenance and evolution account for the majority of the costs involved in a software system's life cycle. And third, although the amount of time spent on software maintenance and evolution in the undergraduate curriculum is minimal, maintenance of an existing project is the most likely scenario of a new hire in a software development company.

    In this second option, you will work with a student in the 8th grade who is struggling with a particular topic. The student will work as the client to your team to extend a computer game to facilitate comprehension and improvement in the topic for which the student is struggling; thus, your extension of the video game will be to inject educational goals into the game. This is, I believe, the right approach based on the fact that in the past many educational games have been as interesting as watching paint dry! Thus, rather than starting with an educational game and trying to inject ``fun'' into it, you can start with a ``fun'' game and inject education into it.

    This second option will focus on maintenance of a previously developed game, including comprehension, refactoring, testing and extension of the game. The deliverable, should you choose this second option, should be especially robust and well tested.



Advantages of these options

We expect that you will be better prepared for future employment due to the emphasis on a client-centered approach to software development, and the emphasis on a real-world project that contributes to the growth of the client.



Languages and Platforms

The language that you will use for your project will be C#. I am hoping that you don't know the language, in keeping with most new job situations: you are immediately confronted with a lot of concepts, techniques and language that you do not know. The game API that you will use is XNA and the OS will be Microsoft Windows. I will provide instruction on the language and the API.




next up previous
Next: About this document ...
Brian Malloy 2008-05-20