Software Engineering

This module challenges students to address a local problem. This module follows an entrepreneurship approach, modeled after the successful EPICS community-based engineering design process, in which students research an issue in their own community and design a program to help people solve it. Through these activities, students learn many valuable lessons including the role of community service in society, the significant impact that their engineering skills can have on their community, and that assisting others leads to their own substantial growth. The module teaches design, planning, code versioning, collaboration, and aspects of human-computer interaction (HCI) and usability. The final product serves as a capstone project for the course. Industry volunteers and local relevant stakeholders are recruited to provide feedback during periodic whole-class showcases.

Table of Contents

Unit 0: Framing and Intro to Software Engineering and Game Design

Lesson Summary
  • Unit Introduction
    • What topics are we covering?
  • Guest Speaker on Meaningful Impact project
  • Talk about SE projects
    • Project Introduction
    • Project Requirements
    • Start with project identification (students will research)
      • Help students pick out projects
      • Guiding questions to help students think of problems to tackle
      • Playtest a "serious game"
    • Students begin working on the in-class presentation for their project proposals
Learning Objectives
  • Explain about challenges in software development
  • Demonstrate an understanding of the overall software design process
Resources

Unit 1: Intro to Software Engineering

Lesson Summary
  • SE
    • Breaking into phases - what functionality is most essential
    • Project management
    • Collaboration Methods
  • Programming
    • Program a small extension - Guided Activity
    • Demo one of the collaboration methods
  • Project
    • Students finish their project proposal presentation and present in class
    • Groups are chosen for the projects
Learning Objectives
  • Explain about challenges in software development
  • Understand the history of software and app development
  • Design and implement basic levels, models, and scripts for a program or app
  • Demonstrate an understanding of the overall software design process
Vocabulary

Agile model, cohesion, coupling, modularization, rapid application development, scrum, waterfall model

Resources

Unit 2

Lesson Summary
  • SE
    • Intro to documentation
      • For users and also other programmers
    • Specifications
    • Feature Prototyping
      • Given a mini project description, they need to work together as designers and developers to add missing features from client requests
      • Students take on one of multiple roles
        • Program manager - decompose the task into parallel, workable parts (ability to work simultaneously, and not be blocked or waiting on others)
        • Back-end Engineer: collision/interaction between sprites
        • Front-end Engineer: responsible for AI/programmed animations (e.g., asteroid collision animations)
  • Programming
    • Feature prototyping activity
      • Programmed animations
      • Collisions
      • Optionally include a brief programming lesson on how to do simple time-based animations
    • Clones - mob programming assignments with the teacher (teacher demo with student input)
  • Students begin design specification and interim reports
Learning Objectives
  • Demonstrate an understanding of the overall software design process
  • Design and implement basic levels, models, and scripts for a program or app
  • Describe CS concepts and how they are needed in programming (PRADA)
Resources

Unit 3

Lesson Summary
  • HCI and UX
    • Understanding community needs
    • Competitor analysis
    • Survey
    • Affordances and design
    • User testing and prototyping
      • Optionally lead a brief discussion of paper prototyping - prepare students for playtest
      • "The user is not like you"
        • Persona evaluation
    • Ethics
    • Accessibility
    • Who is the end user?
  • Finish design specification and interim report - present to class
  • Begin coding final project
Learning Objectives
  • Understand human-computer interaction (HCI)
  • Discuss ethics and entrepreneurship
  • Explain challenges in software development
  • Demonstrate an understanding of the overall software design process
Vocabulary

HCI, UX, accessibility

Activities
Resources

Unit 4

Lesson Summary
  • Guest Speaker (user design/research)
  • Potential impacts on users/ethics
  • unintended consequences of design
  • So you want to change something about your project (project management)
  • Work on the project and submit a minimum target report
Learning Objectives
  • Explain challenges in software development
  • Understand human-computer interaction (HCI)
  • Discuss ethics and entrepreneurship
Resources

Unit 5

Lesson Summary
  • SE
    • Revisit documentation
      • For users and also other programmers
      • Encourage students to include documentation in their projects
  • HCI
    • Formal ethics statement
  • Programming
    • Using libraries and advanced programming topics
  • Continue to work on the project and prepare for playtesting
Learning Objectives
  • Describe CS concepts and how they are needed in programming (PRADA)
  • Discuss ethics and entrepreneurship
  • Explain about challenges in software development
Resources

Unit 6

Lesson Summary
  • Project playtesting
  • Interviewing and affinity diagramming
    • Based on prototyping experience
Learning Objectives
  • Demonstrate an understanding of the overall software design process
  • Design and implement a complete program that solves a community problem

Unit 7

Lesson Summary
  • Make edits to project based on playtesting feedback
  • Work on project video, final presentation, and report
Learning Objectives
  • Design and implement a complete program that solves a community problem

Unit 8

Lesson Summary
  • Finish coding
  • Make presentations in class
  • Final presentation and report due
Learning Objectives
  • Design and implement a complete program that solves a community problem