Designing a Foundational Computer Science Game Development Curriculum
Introduction
This independent study explored how game development can be used as a framework for reinforcing foundational computer science concepts through interactive, project-based learning. Rather than treating game development as an isolated specialization, I wanted to investigate how the systems required to build games could become a practical way of teaching concepts that appear throughout computer science.
The original goal was to analyze existing university-level game development programs and use that research to design a curriculum that could introduce students with prior programming experience to interactive software development. The project eventually evolved beyond simply studying existing programs. Through prototyping, assignment design, debugging exercises, refactoring projects, and curriculum planning, I developed a complete framework for teaching computer science through game development.
The Core Idea
Students should learn computer science through game systems, rather than simply learning how to make visually impressive games.
Game development provides a practical environment where concepts such as object-oriented programming, modularity, state management, event-driven programming, debugging, and software architecture naturally become necessary.
Initial Goals of the Study
The project began with several specific goals. I wanted to create a foundational course for students who already understood basic programming but had little or no experience with game development.
- A foundational course for students already familiar with programming basics.
- A curriculum applicable across multiple game engines.
- Projects emphasizing transferable technical skills.
- Assignments that reinforce computer science concepts through game systems.
A major design principle was engine independence. Although Godot became the primary engine used for developing and testing the curriculum, the underlying concepts were intentionally designed to transfer to other engines and programming environments.
Programming Skills
Algorithmic Thinking
Game Development Skills
Researching Existing Game Development Programs
To understand how these concepts are currently taught, I examined university game development and computer science programs from several institutions.
- University of Utah — Entertainment Arts and Engineering Program
- USC — Interactive Media & Games Division
- DigiPen Institute of Technology
- University of Washington Bothell
- San José State University
- Union College
Across these programs, several strengths appeared repeatedly. Effective curricula tended to use milestone-based development, iterative prototyping, collaboration, and increasing project complexity.
I also identified several challenges. Some programs placed too much emphasis on visual polish, while others did not consistently emphasize computer science fundamentals. Team projects could also create uneven individual accountability.
A Different Approach
The curriculum I designed emphasizes the idea that the game is the environment for learning, not necessarily the final educational goal. The important outcome is understanding the underlying systems.
Designing Scaffolded Assignments
One of the most important parts of the independent study was developing assignments that gradually increase in complexity. Instead of asking students to immediately build a complete game, each project introduces another layer of software architecture.
Students learn game loops, object spawning, object destruction, real-time updates, player movement, and state tracking. The goal is to help students transition from thinking about linear programs to thinking about continuous interactive systems.
View Project 1 on GitHub →Students expand their systems by implementing autonomous enemy behavior, collision systems, camera systems, UI systems, and state transitions.
This introduces event-driven systems, AI logic, and the challenge of managing multiple interacting entities. These ideas begin to resemble the larger software architecture problems students will encounter in more advanced projects.
View Project 2 on GitHub →Godot Workshop: From Engine to Independent Development
A major component of the independent study was developing a Godot onboarding workshop. The workshop was designed to bridge the gap between learning an unfamiliar engine and being able to independently construct interactive systems.
Students work through scene creation, TileMaps, animation systems, collisions, platforming, top-down systems, combat, and UI systems. Rather than simply following tutorials, the workshop provides a foundation students can use to begin building their own projects.
Godot Workshop
The workshop introduces the engine while reinforcing broader concepts such as scene architecture, reusable systems, interactions, and debugging.
- Scene creation
- TileMaps
- Animation systems
- Collision systems
- Platforming
- Top-down systems
- Combat systems
- UI systems
The Anti-Lesson: Refactoring a Bad Project
One of the more unusual assignments I developed was intentionally designed around bad software architecture. Instead of only showing students what good code looks like, the project gives them a deliberately flawed game and asks them to identify and repair its problems.
Students examine giant scripts, hardcoded references, duplicated logic, poor scalability, and other architectural problems. They then refactor the project into a more maintainable structure.
Why Teach Through a Broken Project?
Real software engineering rarely involves building everything from scratch. Developers frequently inherit existing codebases, identify problems, and gradually improve systems. The anti-lesson introduces students to that reality earlier in their education.
- Maintainability
- Inheritance
- Debugging
- Scalability
- Testing
- Documentation
Incomplete Quest: Working Inside an Existing Codebase
Another assignment focuses on a partially completed project. Instead of creating everything themselves, students enter an existing codebase and finish missing systems.
Students complete player systems, bug systems, NPC interactions, door systems, UI systems, and GameManager integration.
Professional Development Through Game Development
This assignment addresses a skill that is especially important outside of the classroom: the ability to understand and modify software that someone else has already written.
Working inside an existing codebase gives students experience that more closely resembles collaborative development and professional software environments.
Collaborative Final Project
The final stage of the curriculum brings the individual systems together into a larger collaborative game project. Students combine the concepts introduced throughout the earlier assignments and begin working with a larger software architecture.
- Player systems
- Enemies
- Progression systems
- UI systems
- State transitions
- Reusable architecture
The goal is not simply to produce a finished game. The final project requires students to think about how multiple systems communicate and how a growing codebase can remain organized.
View the Final Project Framework on GitHub →The Personal Game Prototype
The curriculum was also informed by my own experience developing a game prototype. The original prototype included movement, rolling, combat, bug catching, bosses, doors, progression systems, UI systems, and exploration mechanics.
While developing the prototype, I encountered architectural problems that later inspired the anti-lesson assignment. This became an important part of the study because the curriculum was not designed entirely theoretically. Problems encountered during actual development directly influenced how I approached teaching software architecture.
From Building Games to Teaching Game Development
One of the biggest shifts during the independent study was realizing that my own development mistakes could become educational material. Instead of hiding architectural problems, I could turn them into exercises that teach students why certain approaches fail.
Technical Skills Developed
The independent study helped me develop skills across both software engineering and educational design.
Software Architecture
Debugging and Systems
Curriculum and Educational Design
Challenges
Designing the curriculum required balancing several competing goals. Game development naturally encourages creativity and experimentation, while a computer science course needs to maintain technical rigor.
Some of the biggest challenges involved determining the appropriate difficulty for each assignment, ensuring projects remained achievable, and figuring out how to intentionally teach debugging rather than treating it as something students would simply discover on their own.
The Central Design Problem
How do you give students enough freedom to be creative while still ensuring that every project reinforces meaningful computer science concepts?
Final Deliverables
By the end of the study, the project had developed into a substantial collection of curriculum materials and working prototypes.
- Course proposal
- University game development program analysis
- Project 1 assignment
- Project 2 assignment
- Godot onboarding workshop
- Anti-refactoring assignment
- Incomplete quest assignment
- Collaborative final project framework
- Playable prototypes
- GitHub repositories
Final Reflection
This study began as an exploration of game development education. It evolved into designing a full curriculum that teaches computer science principles through interactive systems.
I created a framework that helps students understand architecture, debugging, modular design, event systems, collaboration, and iterative development through projects that they can actually interact with and modify.
The experience also reinforced an important connection between computer science and game development. A game is ultimately a collection of interacting software systems. Movement, enemies, dialogue, UI, state transitions, input, and progression all require the same kinds of computational thinking that appear throughout computer science.
My goal going forward is to continue developing these ideas through Godot and other engines while exploring how the same foundational concepts can transfer across development environments. The work could realistically be adapted into an actual introductory game development course and provides a foundation for continuing to experiment with interactive computer science education.
Acknowledgements
This independent study was completed with Professor Toby Dragon at Ithaca College during Spring 2026. The project combined academic research, curriculum development, game programming, prototyping, debugging, and educational design.
The independent study's final report, Designing a Foundational Computer Science Game Development Curriculum, documents the research, assignments, prototypes, and curriculum framework developed throughout the project.