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