CSE 3902: Spring 2023
Introduction
This is a Junior-level (or advanced Sophomore) course on professional software development. Our goals are to craft high-quality software, understand the process of Agile software development, survey design patterns, become familiar with advanced tools for software development and project management, and experience working in a small team (sized 4-6). To facilitate reaching these goals, you will work on developing and refining a 2D game application over the course of the semester. There will be a large amount of critiquing of code and interactive feedback. This will lead to refinement and improvement of your software for future expansion and maintenance.
Grading Plan
- Lab/Project/Sprints - 65%
- Sprint 0 - 10%
- Sprint 1 - 0%
- Sprints 2 through 5 - 55%
- Quizzes - 15%
- Final Exam - 20%
Sprints
The following sprints comprise the project work for this course:
- Sprint 0: Introduction to MonoGame; Sprite Drawing; User Input
- Assigned: Jan 11
- Functionality Check-In: Jan 22 at 11:59pm
- Due: Jan 29 at 11:59pm
- Sprint 1: Group Introduction and Project Setup
- Assigned: Jan 23
- Functionality Check-In: N/A
- Due: Jan 27
- Sprint 2: Game Objects and Sprites
- Assigned: Jan 27
- Functionality Check-In: Feb 12 at 11:59pm
- Due: Feb 19 at 11:59pm
- Sprint 3: Level as Segmented Screens and Collision Handling
- Assigned: Feb 20
- Functionality Check-In: Mar 5 at 11:59pm
- Due: Mar 19 at 11:59pm
- Sprint 4: Finished Framework and First Level
- Assigned: Mar 20
- Functionality Check-In: Apr 2 at 11:59pm
- Due: Apr 9 at 11:59pm
- Sprint 5: Extra Features
- Assigned: Apr 10
- Functionality Check-In: N/A
- Due: Apr 24 at 11:59pm
Reference Material
The following are the required textbooks for this course and should be used through-out for reference. All are available online through the campus library.
- Head-First Design Patterns
- Required Reading:
- Chapter 3: Decorator
- Chapter 4: Factory
- Chapter 5: Singleton
- Chapter 6: Command
- Chapter 10: State
- Required Reading:
- Design Patterns: Elements of Reusable Object-Oriented Software (a.k.a. Gang of Four) by Gamma et al
- C# in a Nutshell
- Recommended Reading:
- Chapter 1: Introducing C#
- Chapter 2: C# Basics
- Chapter 3: Creating Types
- Chapter 7: Collections
- Recommended Reading:
Class Schedule
Date | Lecture Topic | Reading | Assignment |
---|---|---|---|
Week 1 | |||
Jan 9 | Class Introduction; High-Quality Software | Sprint 0 Start | |
Jan 11 | High-Quality Software; C# and Object-Oriented Programming | (Reference) C# in a Nutshell | Sprint 0 |
Jan 13 | Visual Studio; MonoGame; User Input Handling | (Reference) C# in a Nutshell; (Required) Head-First Design Patterns Ch. 1 | Sprint 0 |
Week 2 | |||
Jan 16 | No Class | Sprint 0 | |
Jan 18 | 2D Coordinate Systems; Textures and Sprites | MonoGame Tutorials (start here) | Sprint 0 |
Jan 20 | Sprint 0 Design Comparisons | Head-First Design Patterns (Ch 1); or Gang of Four (Ch 1) | Sprint 0 Early Deadline on Sun Jan 22 at 11:59pm |
Week 3 | |||
Jan 23 | Command Pattern; Agile Development | Head First Design Patterns (Ch 6); or Gang of Four (Ch 19) | Sprints 0 And 1 |
Jan 25 | Version Control; Git and GitHub | Sprints 0 And 1 | |
Jan 27 | Group Project Aspirations; Requirements Gathering; Texture2D Encapsulation | Sprint 0 Due on Sun Jan 29 at 11:59pm; Sprint 1 Wrap-Up; Sprint 2 Start | |
Week 4 | |||
Jan 30 | State Machine; State Design Pattern; Separation of Sprites from Game Objects | Head-First Design Patterns (Ch 10); or Gang of Four (Ch 20) | Sprint 2 |
Feb 1 | Decorator Pattern; Interaction Between Decorators and States; Link Decorator for Zelda | Head-First Design Patterns (Ch 3); or Gang of Four (Ch 13) | Sprint 2 |
Feb 3 | Sprint Evaluation; Peer Review / Team Topics; Factory; Singleton | Head-First Design Patterns (Ch 4/5); or Gang of Four (Ch 2/3) | Sprint 2 |
Week 5 | |||
Feb 6 | Amdahl's Law; Code Smells; Sprint 2 Object Diagrams | Sprint 2 | |
Feb 8 | Strategy Pattern; Null Pattern; Anti-Patterns; Refactoring; Technical Debt | Head-First Design Patterns; Gang of Four | Sprint 2 |
Feb 10 | Sprint Deliverables; In-Class Code Review Meetings; Levels; File I/O | Sprint 2 Functionality Check-In due on Feb 12 at 11:59pm | |
Week 6 | |||
Feb 13 | Code Reviews (Group Schedule TBD) | Sprint 2 | |
Feb 15 | Code Reviews (Group Schedule TBD) | Sprint 2 | |
Feb 17 | Code Reviews (Group Schedule TBD) | Sprint 2 Due on Feb 19 at 11:59pm | |
Week 7 | |||
Feb 20 | CATME Peer Reviews; Sprint 3 Q&A; Collision Detection; Movement | Sprint 3 Start; CATME Peer Reviews for Sprint 2 | |
Feb 22 | Collision Detection; Movement; Collision Response; Software Organization for Game Physics | Sprint 3 | |
Feb 24 | Cameras; Camera Controls; Quality Assurance (QA); Unit Testing | Sprint 3 | |
Week 8 | |||
Feb 27 | OSU Graphics Courses; Mid-Semester Feedback | Sprint 3 | |
Mar 1 | Playtesting; Planning For End Product | Sprint 3 | |
Mar 3 | Code Reviews and Group Meeting Time | Sprint 3 Functionality Check-In due on Mar 5 at 11:59pm | |
Week 9 | |||
Mar 6 | Code Reviews (Group Schedule TBD) | Sprint 3 | |
Mar 8 | Code Reviews (Group Schedule TBD) | Sprint 3 | |
Mar 10 | Code Reviews (Group Schedule TBD) | Sprint 3 due on Mar 19 at 11:59pm | |
Week 10 | |||
Mar 13 | No Class | ||
Mar 15 | No Class | ||
Mar 17 | No Class | ||
Week 11 | |||
Mar 20 | Sprint 4 Q&A; Audio; Heads-Up Display | Sprint 4 Start; CATME Peer Reviews for Sprint 3 | |
Mar 22 | Entity Component Systems | Sprint 4 | |
Mar 24 | Flyweight Pattern; Object Pools; Build Pattern; Memento Pattern | Head-First Design Patterns; Gang of Four | Sprint 4 |
Week 12 | |||
Mar 27 | Under The Hood of SpriteBatch | Sprint 4 | |
Mar 29 | Primer on Real-Time 3D Graphics | Sprint 4 | |
Mar 31 | Looking Towards Sprint 5 | Sprint 4 Functionality Check-In due on Apr 2 at 11:59pm | |
Week 13 | |||
Apr 3 | Code Reviews (Group Schedule TBD) | Sprint 4 | |
Apr 5 | Code Reviews (Group Schedule TBD) | Sprint 4 | |
Apr 7 | Code Reviews (Group Schedule TBD) | Sprint 4 due on Apr 9 at 11:59pm | |
Week 14 | |||
Apr 10 | Sprint 5 Q&A; Code Reviews and Group Meeting Time | Sprint 5 Start; CATME Peer Reviews for Sprint 4 | |
Apr 12 | TBD; Code Reviews and Group Meeting Time | Sprint 5 | |
Apr 14 | TBD; Code Reviews and Group Meeting Time | Sprint 5 | |
Week 15 | |||
Apr 17 | Code Reviews and Group Meeting Time | Sprint 5 | |
Apr 19 | Code Reviews and Group Meeting Time | Sprint 5 | |
Apr 21 | Code Reviews and Group Meeting Time | Sprint 5 | |
Week 16 | |||
Apr 24 | Early Project Presentations; Course Wrap-Up | Sprint 5 Due at 11:59pm; CATME Peer Reviews for Sprint 5 |