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:
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.