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.

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

Resources

Game Resources

MonoGame Resources

Examples