CSE 3902 Project: Design, Development, and Documentation of Interactive Systems

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.

Class meetings:
Section - MoWeFr 12:40pm - 1:35PM in Baker Systems Engineering (BE) 198
Section - MoWeFr 1:50pm - 2:45PM in Dreese Labs 264

Instructor: Matt Boggus
Office: DL279
Office hours: TBD and by appointment; during finals week office hours by appointment only (also available via zoom, url posted on our Carmen page ; send me an email ahead of time for a zoom appointment as I don't leave the room open all of the time)

Graders: Info will be posted on Carmen

Grading Policy: Grading plan and scale

Assignments submission and scores posted on Carmen

Quizzes issued online on your own time on Carmen, typically one per week with deadlines on Fridays
Team formation and peer reviewing: CATME

Project development stages - Sprint descriptions

List of recommended features to include based on differing team sizes
Documentation on challenging cases, those likely to be missed when requirements gathering
Broad notes on grading of sprints

Course Topics and Notes:

Most of the following links are to subpages with lists of individual articles or webpages, some of which we will discuss in class but others that you are expected to look into on your own. In some cases direct links are provided in the calender below, so you may find CTRL+F or "Find on Page" a useful alternative to the subpages.

Supplemental Notes:

Tentative/Working Schedule Spring 2024

Regarding book links in the schedule - they might not work for your setup and require you to search for them manually in the OSU library catalog. Some problems we've had over the years: links work for some but not all browsers (Au'22 worked for me on Chrome but not Firefox), links will work on campus but not off campus, and "permanent" library links changing in the system so the url here becomes flat out wrong.

Meeting Day Date Topic Notes/Slides Reading Work
Week 1
1 M 1/08 Class overview

Take home final exam distributed

Designing high quality software

Sprint 0 preparation
Software Quality slides

blockExample1.cs
blockExample2.cs
(Required) review object-oriented programming terms (in SW I&II course material and/or other OOP reference material) Read course website and syllabus

Sprint 0 (C#, Monogame, sprites, and controllers) assigned
2 W 1/10 C# and object oriented programming concepts C#, .NET, and software design subpage

C# slides

personWithoutProperties.cs
personWithProperties.cs
(Reference) C# in a Nutshell by Albahari  
3 F 1/12 Visual Studio and Monogame projects

User input in Monogame

Sprint 0
Game1.csfrom MonoGame template project, Visual Studio user interface

Game framework subpage
(Required) Head First Design Patterns Ch. 1 CATME survey due ; optional additional survey questions due
Week 2
4 M 1/15 No class meeting - MLK Day      
5 W 1/17 2D coordinate systems, images, and sprites
Drawing sprites in Monogame
2D drawing basics slides

Sprite atlas tutorial linked on Sprint0 page

ManualAnimatedSprite.cs

(Reference) Framework tutorials  
6 F 1/19 Sprint 0 design comparisons (code examples and object diagrams)

Example code using interfaces
Example code using objects but no interfaces
Example code using neither objects nor interfaces

(Reference) Head First Design Patterns

(Reference) Design Patterns: Elements of Reusable Object-Oriented Software (a.k.a. Gang of Four) by Gamma et al

Sprint 0 (early bonus) deadline
Week 3
7 M 1/22 Command pattern

Agile software development

Sprint 1
Design pattern subpage
Command based keyboard controller
Command to change the current sprite to a dead player

Agile Manifesto
(Required) Head First Design Patterns Ch. 6 up to page 217 (where the undo functionality is introduced), or
Design Patterns: Elements ... Ch. 19

(Reference) "Agile Methods The Good, the Hype and the Ugly," talk by Bertrand Meyer - video (watch on your own)
Work on Sprint 1 (project management and version control software) activity
8 W 1/24 Visual Studio Team Tab (Azure DevOps) and GitHub

Version control

Communication and teamwork topics

Version control slides
Team topics slides
Version control:
(Required if you've never used GIT before) MIT lecture content on GIT
(Reference) GitHub notes slides
(Reference) Visual Studio and Github integration
(Reference) Microsoft's documentation on version control within Visual Studio
(Reference) Collection of .gitignore files (use the visual studio one if your github repo didn't come with one)

Task tracking:
(Reference) Sprint task planning using Visual Studio Online article
(Reference) Agile project management using Visual Studio Online video
(Reference) Github Projects tool

 
9 F 1/26 Sprint 2 and long term aspirations - Mario Crossover, Baba is You
Requirements gathering for the project

Encapsulating Texture2Ds - static class or
Factory, Factory method, Singleton

Pieces of state logic for Link player character
Game resources subpage
List of recommended features for up through Sprint4 for teams of sized 4-6

Design pattern subpage
Static class example
Factory example
(Required) Head First Design Patterns Ch. 4 up to page 119 (stop after the Simple Factory example, when the text's example mentions franchising), or
Design Patterns: Elements ... Ch. 3

(Required) Head First Design Patterns Ch. 5, or
Design Patterns: Elements ... Ch. 2
Last day for Sprint 0 (re)submission is Sunday 1/28; No late penalty if turned in before 1/28, 5% late penalty if submitting on 1/28
Week 4
10 M 01/29 Separation of Sprites from GameObjects Rain World GDC talk @ 8:19

State machines
State design pattern
Meeting and coaching time (10 min)
Design pattern subpage

Goomba class using state machine which has one field
Goomba class using state machine which has multiple fields
Goomba class using state pattern
(Required) Head First Design Patterns Ch. 10, or
Design Patterns: Elements ... Ch. 20
Sprint 2 (game objects) assigned
11 W 01/31 Decorator pattern
Interaction between states and a decorator

Meeting and coaching time (10 min)
Design pattern subpage

Damaged Link decorator
(Required) Head First Design Patterns Ch. 3, or
Design Patterns: Elements ... Ch. 13
 
12 F 02/02 Code quality - code metrics for evaluating sprints
Code quality - cohesion and coupling

Peer reviewing discussion

Meeting and coaching time (10 min)
Code quality subpage (Reference) Code Complete by McConnell
(Reference) Refactoring by Fowler
 
Week 5
13 M 02/05 The importance of assessment - Amdahl's law and applying effort to the "worst" part of a system

Code smells and refactoring slides

Object diagrams related to Sprint 2, with focus on Link's state and sprites
Code quality subpage    
14 W 02/07 Brief look at Strategy and Null object patterns

Anti-patterns
Technical Debt (determining where to refactor proactively vs. reactively)

Meeting and coaching time (25+ min)
Design pattern subpage

Code quality subpage
   
15 F 02/09 12:40 section - Team 1 code review
1:50 section - work period
     
Week 6
16 M 02/12 12:40 section - Team 4 code review
1:50 section - Team 1 code review
    Sprint 2 functionality check-in due
17 W 02/14 12:40 section - ... code review
1:50 section - Team 4 code review
     
18 F 02/16 Sprint deliverables
Sprint 3
Levels and file loading
Meeting and coaching time (25+ min)
Game framework subpage    
Week 7
19 M 02/19 Sprint 2 peer review reminder

Collisions and movement speed

Collision detection logic
2D collision detection slides   Sprint 2 due today ; Sprint 2 CATME peer review due Tuesday

Sprint 3 (collision detection, level loading and segmentation into screens) assigned
20 W 02/21 Collision response software organization

Meeting and coaching time (25+ min)
2D collision response slides    
21 F 02/23 Cameras and camera controllers
Quality assurance: unit testing and telemetry

Meeting and coaching time (15+ min)
2D physics and coordinate systems.pptx

Software Testing slides
Visual Studio subpage
   
Week 8
22 M 02/26 More on select topics: game physics, platforming logic, graphics transformations, etc.
(Types in Box2D, Unity2D)

OSU Computer Graphics course information

Mid-semester keep, stop, start feedback

Meeting and coaching time (20+ min)
Box2D

Unity 2D physics and collisions

OSU graphics courses (list is slightly dated)
CSE course syllabi
Specialization areas (BS CIS) and
Specialization areas (BS CSE)
   
23 W 02/28 Sprint 4
Sound
Heads up display
Meeting and coaching time (25+ min)
Game framework subpage    
24 F 03/01 12:40 section - Team 1 code review
1:50 section - ... code review
    Sprint 3 functionality check-in due
Week 9
25 M 03/04 12:40 section - Team 4 The Win review
1:50 section - Team 5 code review
     
26 W 03/06 12:40 section - ... code review
1:50 section - Team 3 code review
     
27 F 03/08 12:40 section - ... code review
1:50 section - Team 2 code review
    Sprint 3 due today; Sprint 3 CATME peer review due Today
Week 10
28 M 03/11 No class meeting - Spring Break
     
29 W 03/13 No class meeting - Spring Break
     
30 F 03/15 No class meeting - Spring Break
     
Week 11
31 M 03/18 Sprint 3 playtesting and additional Q&A for Sprint 4

Meeting and coaching time (varies based on demo time; likely 10-15 min)
  StrategyWiki as a another requirements gathering resource Sprint 4 (finished framework - one level) assigned
32 W 03/20 Misc. topic: DeepCoder research (and Github copilot) + bloom's taxonomy
Misc. topic: Company consolidation, game and software industry project management practices (synthesis example)
Meeting and coaching time (30+ min)
deepcoder
consumer internet consolidation
Electronic Arts game studio purchases
MS mobile center code reviews  
33 F 03/22 [Sp'24 these topics covered earlier ; today is work period due to instructor absence to present at a CSE committee meeting]

Discussion of game source code samples: player class from Celeste, Game1 class from Stardew Valley, and InfiniminerGame from Infiniminer

Consider the context of the history of released games from the corresponding studios/developers: Maddy Makes Games, ConcernedApe, and Zachtronics

Forward planning on Sprint 5

Meeting and coaching time
     
Week 12
34 M 03/25 12:40 section - ... code review
1:50 section - ... code review
     
35 W 03/27 12:40 section - ... code review
1:50 section - ... code review
     
36 F 03/29 12:40 section - ... code review
1:50 section - ... code review
   
Week 13
37 M 04/01 Additional design patterns (flyweight, object pool, builder, memento)
Entity-Component systems

Meeting and coaching time
Additional Design Patterns slides   Sprint 4 functionality check-in due
38 W 04/03 Notes/reminders on the take home final exam

Other misc. Q&A extending beyond the scope of 3902
     
39 F 04/05 Student presentation advice

Meeting and coaching time
5912 webpage; presentation slides    
Week 14
40 M 04/08 Sp'24 class cancelled for sake of solar eclipse viewing     Sprint 4 due Tuesday 4/9;
Sprint 5 (choose your features) assigned
41 W 04/10 12:40 section - Team 4 The Win code review
1:50 section - ... code review
    Sprint 4 CATME peer review due
42 F 04/12 12:40 section - Team 2 code review
1:50 section - Team 6 code review
     
Week 15
43 M 04/15 Overview of select topics in Graphics Misc. Graphics and Games topics  
44 W 04/17 Overview of select topics in AI Misc. AI topics    
45 F 04/19 Course wrap up
Scheduling order of final project presentations

Review

Meeting and coaching time
     
Week 16
46 M 04/22 Early project presentations

Reminders

Free time
    Sprint 5 due; Sprint 5 CATME peer review due Tues 4/23

Final Exam
Take home exam due on Carmen by 11:59pm on Thursday, April 25th

Project demonstrations
University scheduled final exam time slots will be used for teams presenting projects

12:40 section - Tuesday April 30th, 12pm-1:45pm, in Baker Systems Engineering (BE) 198
1:50 section - Tuesday April 30th, 4-5:45pm, in Dreese Labs (DL) 264