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.
Unit 0: Framing and Intro to Software Engineering and Game Design Lesson Summary Unit IntroductionWhat topics are we covering? Guest Speaker on Meaningful Impact project Talk about SE projectsProject 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 SEBreaking into phases - what functionality is most essential Project management Collaboration Methods ProgrammingProgram a small extension - Guided Activity Demo one of the collaboration methods ProjectStudents 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 SEIntro to documentationFor users and also other programmers Specifications Feature PrototypingGiven 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 rolesProgram 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) ProgrammingFeature prototyping activityProgrammed 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 UXUnderstanding community needs Competitor analysis Survey Affordances and design User testing and prototypingOptionally lead a brief discussion of paper prototyping - prepare students for playtest "The user is not like you" 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 SERevisit documentationFor users and also other programmers Encourage students to include documentation in their projects HCI ProgrammingUsing 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 diagrammingBased 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