This project-based course is our half-capstone. It is intensive in all ways. Teamwork is a major focus and challenge. Students will primarily work in small teams on extended project iterative design cycles, involving diverse aspects of computer science, design, and engineering.
In project-based learning, students are given opportunities to create new knowledge, beyond ingesting prior knowledge.
A fundamental goal of this class is for students to develop strong, creative capabilites for applying programming in practical, real world, situated contexts. Another goal, since all of you are likely to build programs that people use, is for students to learn the fundamentals of human-computer interaction, including design and data gathering. The course addresses good programming techniques to ease code integration, reuse, and clarity. It also addresses group process and team dynamics, which can be as challenging as design and programming.
- Coding style
- Object-oriented Design
- Design of software components, systems, APIs
- Test-driven development
- Specification and documentation
- Iterative design
- Game design fundamentals
- Understanding users
- Interface design
- User study design and data analysis
- Video production (for YouTube)
ObjectivesExpected accomplishments of students:
- Become a confident software and interaction developer, experienced in iterative design process.
- Become a capable and effective teammate in a small design team.
- Become an effective communicator.
OutcomesStudents who complete this course are expected to gain:
- Knowledge of programming and debugging tools.
- Ability to design and refine large interactive systems based on rough system requirements.
- Ability to implement and test interactive system design.
- Ability to work as a member of a interactive system project development team.
- Ability to design interfaces that users can understand.
- Ability to gather and analyze user study data.
- Ability to utilize data to motivate iterative design.
- Ability to manage interctive system development projects.
- Ability to write technical documentation that communicates the overall design and details of interactive computing systems.
- Basic knowledge of software engineering, database systems, human-computer interaction, and game design.