CSC-105: Game Development

Course Overview

An introduction to computer science and programming using computer game development as a theme.

Computer games are fun! But why? What distinguishes an engaging game from a boring one? And how do they work? How can we get the computer to create these moving images that react to our input and so capture our attention? This course invites you to explore these questions through learning how to create your own computer games.

You will learn how computer scientists think about and solve problems. If you're thinking about a CS major or minor, this course will give you a solid foundation to continue to data structures (CSC 150) and beyond. If you are majoring in another field that uses a lot of computational methods, this course will teach you the basic skills and knowledge necessary to understand how these methods work and how to use them more effectively. And if you're here just because you're curious, well, that's great since making your own games is a lot of fun!

By the end of the course, you should

Computing/programming topics we will cover include

Language & Resources

In class, you are required to use our lab iMacs. However, when working on your projects outside of class, you have a choice. If you'd like to continue using our iMacs, feel free! We have three spaces that you can use:

All of these labs are available to you 24/7 using your ID card, except when classes are being held in them.

Course Text

The Practice of Computing Using Python by Punch and Enbody, Addison-Wesley.

Assignments & Grades

The goal of formative assessment is to provide you with feedback that you can use to improve your learning. Furthermore, the assignments you complete for this purpose helps me get a sense of where you are struggling.

You will get lots of opportunity to practice what you learn in class and to receive formative feedback on your work. In particular, the following kinds of assignment are primarily for this purpose.

weekly homework problem sets:
You will typically have a week to work on each problem set. Use this time well. Start on the assignments early so that you have time to think about them thoroughly and to come see me if you run into any questions. Some of the homework assignments will just be exercises to repeat and reinforce what we covered in class, but some of the assignments will challenge you to go beyond what we have done in class, e.g. by asking you to apply a concept to a problem that is somewhat different from what we have seen in class or to use it in a new way to achieve a cool effect in a game.
codelab:
This is a Web-based set of exercises that will be assigned sporadically throughout the term. It will grade your submissions instantaneously, and you can keep submitting answers until you get it right. This is good way to practice the syntax and logic of Python, the language we'll be using in this course.
microquizzes:
To help everybody stay on track with their reviewing, we will start every class with a 2-minute microquiz.
While you will receive points for these assignments, they will only have a small impact on your final grade. Your main goal in completing these assignments should not be to get 100%, but to learn as much as possible from them. The goal of summative assessment is to evaluate your learning by comparing it against a standard to give you feedback on how well you have learned the things we think you should be learning in this course. In this course summative assessment will consist of:
2 pen and paper exams:
a midterm and a final exam.
2 programming exams:
These will be take home exams.
final project:
At the end of the term, you will design and develop a complete game of your own. This will be a team project.

Grade Allocation

The final grade will be based on the following components:

Schedule