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
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
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.
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