CPSC 599.82 - Retrogames
Course Description
This course will examine retrogames, from a game
design point of view – why are simple computer games still
popular? – but mostly from an implementation standpoint. For the
latter part, retrogames will be used as a vehicle to study techniques
for making programs small, fast, and in some cases simply
possible in highly-constrained computing platforms. Connections
to modern uses of these techniques will be made as appropriate,
e.g., mobile devices.
Topics that retrogames will be used to delve into may include
- interpreters
- code and data compression
- procedural content generation
- memory management
- managing slow, wildly incompatible I/O devices
- clever algorithm implementations (from a systems perspective)
- manual code optimization
- copy protection and code obfuscation
Students will create a new game for a retrogame system as a term project,
in addition to other forms of assessment.
So that there are no surprises,
this is a systems course and will involve low-level material up to
and including assembly language.
When is it?
The course is scheduled for fall 2024, MWF 1–1:50pm.
Who's teaching it?
John Aycock.
What are the prerequisites?
Officially, “permission of the department,” which is basically a
default setting for 599.xx courses. Practically, you'll need enough background
to make sense of the systems content. I'd strongly recommend having CPSC 457
for this reason (by extension, that means you'll have taken some low-level
assembly and architecture in first year and second year, and you'll have
seen a variety of data structures). However, I know
some people enter CPSC with a fairly advanced background, or have comparable
experience from other areas (e.g., engineering). Some people are just
terminally keen and will learn the necessary things themselves despite my
best attempts to thwart them. So, if you don't have CPSC 457 but are
still interested, send me an email.
How do I get permission to enroll in the course?
I've asked the USC to let students in
who have a passing grade in CPSC 457, which will cover most cases.