Projects General Descriptions
Gaming emphasizes entertainment, which can have its benefits, but could be far more powerful if it was used as an educational tool. Surprisingly, very few companies have successfully developed games that actually teach something to our youth. The goal of these projects is to develop educational games to provide an unique but effective tool to teach high schools and college students, various computer science and software engineering topics.
Software engineering profession incorporates many different aspects and activities. Software engineers communicate with the customer, design the software system, implement the design, test the system, deliver it to the customer, and perform maintenance, while following certain methodologies and processes. Unfortunately, due to faulty stereotypes, most students are not aware of all aspects of the software engineering discipline, and perceive this profession as one where one would sit in a cubicle all day programming. By putting students in real world scenarios, the proposed game(s) allow each student to experience many of the challenges that real world software engineers are faced with every day and equip them with the proper background for taking best decisions. By asking students to play a game, their interest is immediately focused on the subject matter. Having a game that is fun, enticing, and has a “cool” factor are important attributes for the design of educational games.
The projects objectives are as follows:
a) Identify the software engineering concept to educate students about.
b) Develop the proper metaphor for the software engineering concept. The metaphor needs to resonate with students and be appealing, intuitive, and fun.
c) Identify the proper tools, such as modeling software, engines, textures that will enhance the quality of the game.
d) Design and develop the game by leveraging any gaming software that would reduce the development time. Online games are best, developing it as an app is even better.
1. Online game (preferably multiplayer) that incorporates all phases of software development lifecycle into a persistent, online experience for students. Students would interact and compete against one another to become the best software engineer possible, i.e. including finding the best software development life cycle for a software product, best processes, etc. Topics include software development life cycles, software project management, etc.
2. A strategy game for gathering requirements processes. Through interviews of various avatars, the students should be able to gather the requirements and take decisions. There will be many decision points in the game and scenarios with different outcomes. By allowing the student to choose a scenario they are interested in, they would become even more immersed in the game and pay more attention. Adding additional scenarios would increase the replay value of the game as well. Also students could have ability to create their own questions in
addition to predefined ones in order to enhance the game and also force them to think even harder since they would have to come up with those questions.
Topics include Interview Process, Prototyping, User Observation, Use Cases, etc.
3. Complex strategy game that requires students to react to every action in the game. The game would educate students about software design, as students must use the correct strategies to combat the game challenges. Each level of the game would require the student to guide avatars through the level from the start to end point. It is up to the student how to defeat the challenges, which would block avatars from crossing the level. The student would assign roles to the avatars to help guide other avatars through the level in order to win.
Topics include Cohesion and Coupling, Design Patterns, Systems Design, UML, etc.
4. Puzzle-based game that teaches students about software implementation. The puzzles in the game would teach students about the various aspects of being a competent programmer. The game could use physics analogies for instance, as the student must fix a circuit that is inoperable. By repairing various aspects of the circuit, the students through the use of metaphors, would learn implementation concepts like data structures and algorithm efficiency, performance, or GUI friendliness.
Topics include Algorithms, Data Structures, Programming Languages, Version Control, Implementation Rules (naming conventions, indentation, comments, etc.), etc.
5. Interactive game that will teach students concepts on software testing. The students could play a real-time strategy game, to defend properties from enemies. For instance, black box testing involves testing without knowing what is inside certain modules in a software system, whereas white box testing rely on the structure and availability of the source code. A game could be developed where the metaphors to the inner workings of a module could be navigating through unknown properties and saving them from enemies. The students should have the ability to choose between different toolboxes that would allow them to switch visibility and trace back paths.
Topics include Black-Box Testing, White-Box Testing, Unit Testing, Regression Testing, etc.
All games should:
– Be intuitive and user friendly
– Be cross-platform and also work well on small devices