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 - MWF 9:10-10:05 in CL0220

Instructor: Justin Holewinski ( .5 )
Office hours: I will be around the classroom approximately half an hour before and after the scheduled meeting times. You can also make a Zoom appointment by emailing me. The Zoom meeting room information is available on Carmen.

Graders: Info will be posted on Carmen

Grading Policy: Grading plan and scale

Assignments submission and scores posted on Carmen

Online Q&A: Piazza, CSE 3902 AU22 HOLEWINSKI, refer to announcement sent to osu.edu email to opt-in

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.

This list is copied from Matt Boggus' course site. You may be able to find more up-to-date information by going here. Though please note that this is for a different session, so due dates and times may not match.

Supplemental Notes:

Tentative/Working Schedule Autumn 2022

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 catelog. 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 W 8/24 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 through other OOP reference material) Read course website and syllabus

Sprint 0 (C#, Monogame, sprites, and controllers) assigned
2 F 8/26 C# and object oriented programming concepts

Quiz/Recall Practice(3902 learning objectives; syllabus contents)
C#, .NET, and software design subpage

C# slides

personWithoutProperties.cs
personWithProperties.cs
(Reference) C# in a Nutshell by Albahari  
Week 2
3 M 8/29 Visual Studio and Monogame projects

User input in Monogame

Sprint 0
Game framework subpage (Required) Head First Design Patterns Ch. 1 CATME survey due ; optional additional survey questions due
4 W 8/31 2D coordinate systems, images, and sprites
Drawing sprites in Monogame

Quiz/Recall Practice(OOP; software quality)
2D drawing basics slides

Sprite atlas tutorial linked on Sprint0 page

ManualAnimatedSprite.cs

(Reference) Framework tutorials  
5 F 9/02 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

(Required) Head First Design Patterns Ch. 6 up to page 217 (where the undo functionality is introduced), or
Design Patterns: Elements ... Ch. 19
Sprint 0 (early bonus) deadline
Week 3
6 M 9/05 No class meeting - Labor Day      
7 W 9/07 Command pattern

Agile software development

Sprint 1

Quiz/Recall Practice (topic TBD; likely MonoGame, sprites)
Design pattern subpage
Command based keyboard controller
Command to change the current sprite to a dead player

Agile Manifesto
(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 F 9/09 Visual Studio Team Tab (Azure DevOps) and GitHub

Version control

Communication and teamwork topics

Version control slides
Team topics slides
GitHub notes slides
(Required if you've never used GIT before) MIT lecture content on GIT

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

Last day for Sprint 0 (re)submission is Sunday 9/11; No late penalty if turned in before 9/11, 5% late penalty if submitting on 9/11
Week 4
9 M 9/12 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

Meeting and coaching time (10 min)
Game resources subpage
List of recommended features for up through Sprint4 for teams of sized 4-6

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
Sprint 2 (game objects) assigned
10 W 9/14 Separation of Sprites from GameObjects Rain World GDC talk @ 8:19

State machines
State design pattern

Quiz/Recall Practice (topic tbd, command pattern)

Meeting and coaching time (5 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
 
11 F 9/16 Pieces of state logic for Link player character

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
 
Week 5
12 M 9/19 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
 
13 W 9/21 Motivating the need for assessment when improving a system - Amdahl's law

Code smells

Object diagrams related to Sprint 2, with focus on Link's state and sprites

Quiz/Recall Practice (topic tbd, concepts from required readings)

Meeting and coaching time (5 min)

Code quality subpage    
14 F 9/23 Brief look at Strategy and Null object patterns
Anti-patterns
Refactoring and Technical Debt (determining where to refactor proactively vs. reactively)

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

Code quality subpage
   
Week 6
15 M 9/26 code review     Sprint 2 functionality check-in due
16 W 9/28 code review      
17 F 9/30 code review      
Week 7
18 M 10/03 Sprint deliverables
Sprint 3
Levels and file loading
Format of in class code review meetings
Meeting and coaching time (25+ min)
Game framework subpage   Sprint 2 due today ; Sprint 2 CATME peer review due Tuesday

Sprint 3 (collision detection, level loading and segmentation into screens) assigned
19 W 10/05 Sprint 2 peer review reminder

Collisions and movement speed

Collision detection logic

Quiz/Recall Practice (topic tbd, concepts from required readings on specific design patterns)

Meeting and coaching time (10+ min)
2D collision detection slides    
20 F 10/07 Collision response software organization

Meeting and coaching time (15+ min)
2D collision response slides    
Week 8
21 M 10/10 Cameras and camera controllers
Quality assurance: unit testing and telemetry

Mid-semester keep, stop, start feedback

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

Software Testing slides
Visual Studio subpage
   
22 W 10/12 More on select topics: game physics, platforming logic, graphics transformations, etc.
(Types in Box2D, Unity2D)

OSU computer graphics and ai course information

Quiz/Recall Practice (code quality)

Meeting and coaching time (20+ min)
Box2D

Unity 2D physics and collisions

OSU graphics courses
Suggested courses for focus areas
   
23 F 10/14 No class meeting - Fall Break      
Week 9
24 M 10/17 code review     Sprint 3 functionality check-in due
25 W 10/19 code review      
26 F 10/21 code review      
Week 10
27 M 10/24 Sprint 4
Sound
Heads up display
Meeting and coaching time (25+ min)
Game framework subpage   Sprint 3 due today; Sprint 3 CATME peer review due Tuesday

Sprint 4 (finished framework - one level) assigned
28 W 10/26 Sprint 3 playtesting and additional Q&A for Sprint 4

Quiz/Recall Practice (topic tbd)

Meeting and coaching time (varies based on demo time; likely 10-15 min)
  StrategyWiki as a another requirements gathering resource  
29 F 10/28 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  
Week 11
30 M 10/31 Discussion of player code from Celeste
Discussion of Stardew Valley code
Sprint 5

Review of quizzes/recall practice thusfar

Meeting and coaching time
     
31 W 11/02 Additional design patterns (flyweight, object pool, builder, memento)
Entity-Component systems

Quiz/Recall Practice (cumulative, with topic) - cumulative, focus on concepts to be evaluated on take home final

Meeting and coaching time
Additional Design Patterns slides    
32 F 11/04 Notes/reminders on the take home final exam

Other misc. Q&A extending beyond the scope of 3902
     
Week 12
33 M 11/07 code review     Sprint 4 functionality check-in due
34 W 11/09 code review      
35 F 11/11 No class meeting - Veteran's day      
Week 13
36 M 11/14 code reviews or work period or TBD lecture/discussion     Sprint 4 due ; Sprint 4 CATME peer review due Tuesday
Sprint 5 (choose your features) assigned
37 W 11/16 Student presentation advice

Quiz/Recall Practice (topic tbd)

Meeting and coaching time
5912 webpage; presentation slides    
38 F 11/18 code reviews or work period or TBD lecture/discussion      
Week 14
39 M 11/21 code reviews or work period or TBD lecture/discussion      
40 W 11/23 No class meeting - Thanksgiving Break      
41 F 11/25 No class meeting - Thanksgiving Break      
Week 15
42 M 11/28 Overview of select topics in AI Misc. AI topics    
43 W 11/30 Overview of select topics in Graphics Misc. Graphics and Games topics  
44 F 12/02 code reviews or work period or TBD lecture/discussion      
Week 16
45 M 12/05 Course wrap up
Scheduling order of final project presentations

Review

Quiz/Recall Practice (topic tbd)

Meeting and coaching time
     
46 W 12/07 Early project presentations

Reminders

Free time
    Sprint 5 due; Sprint 5 CATME peer review open through the date of final project presentations

Final Exam
Take home exam due on Carmen by 11:59pm, on the date of the University's schedule for final exams:
Monday, Dec 12

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

Monday, Dec 12 10:00am-11:45am