CSC-105: Game Development
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
By the end of the course, you should
- have a good understanding of the most important programming concepts (variables, functions, conditionals, loops, recursion)
- be able to read Python programs
- be able to write short Python programs that solve a given problem
- have developed good debugging skills
- understand some of the basic concepts upon which computer games are built
- appreciate the amount that making a game is a complex process that involves input from multiple disciplines
Computing/programming topics we will cover include
- file reading/writing
- binary numbers and ASCII
- strings and string methods
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.
- Olin 107 (where we have class)
- Pasta lab (N104 in the Science & Engineering building)
- CS Resource room (Steinmetz Hall, 209A, just down the hall from my office)
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.
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:
- 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.
- 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.
- To help everybody stay on track with their reviewing, we
will start every class with a 2-minute microquiz.
- 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.
The final grade will be based on the following components:
- participation: 5%
- codelab and microquizzes: 5%
- homework assignments and final project: 15%
- practical exam 1: 15%
- practical exam 2: 15%
- midterm exam: 20%
- final exam: 25%
- Week 1: Your first program! Drawing with turtles. Calling
functions. Variables. While-loops.
- Week 2: Your first game! (Not very interesting, yet.) Defining
functions. The game loop.
- Week 3: If-statements. Basic Python datatypes - working with
numbers, strings, and booleans.
- Week 4: Internal representation of data. Showing pictures and
- Week 5: Lists. Reacting to player input. (Finally an interactive game!)
- Week 6: More practice with lists.
- Week 7: Testing and debugging. Recursion.
- Week 8: Working with strings. Dictionaries.
- Week 9: File I/O
- Week 10: A little bit of networking. (We build an online