welcome [csce 315]

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.
Professor Andruid Kerne


  1. Coding style
  2. Object-oriented Design
  3. Design of software components, systems, APIs
  4. Test-driven development
  5. Specification and documentation
  6. Iterative design
  7. Game design fundamentals
  8. Understanding users
  9. Interface design
  10. User study design and data analysis
  11. Video production (for YouTube)


Expected accomplishments of students:
  1. Gain confidence as a software and interaction designer / developer.
  2. Gain experience in iterative design processes.
  3. Learn to serve as an effective member of a small design team.
  4. Grow to become an effective communicator.


Students who complete this course are expected to develop:
  1. Knowledge of programming and debugging tools.
  2. Ability to design and refine large interactive systems based on rough system requirements.
  3. Ability to implement and test interactive system design.
  4. Ability to work as a member of a interactive system project development team.
  5. Ability to design interfaces that users can understand.
  6. Ability to gather and analyze user study data.
  7. Ability to utilize data to motivate iterative design.
  8. Ability to manage interactive system development projects.
  9. Ability to write technical documentation that communicates the overall design and details of interactive computing systems.
  10. Basic knowledge of software engineering, database systems, human-computer interaction, visual design, and game design.
  11. Ability to learn about and utilize new technologies (e.g., programming languages, APIs, software architectures) on your own, using the Internet.
  12. Ability to conceptualize and produce videos that effectively communicate the user experience of an interactive system, and how it is realized.