Programming for Video Games
Instructor: Alex Kuhl
TA: Justine DiPrete
Required Text: Python Programming: An Introduction to Computer Science by John Zelle
Course Description and Objectives
The field of Computer Science is one of the few that is ubiquitous in everyone's daily life because it offers the rare ability to have applications in almost any other field, from medical imaging to decoding the human genome to world simulators. Computer programming is the theory put into action. At the most basic level it draws on skills and concepts from mathematics, engineering, and science in general. One must learn to think in an algorithmic (step-by-step) fashion and to use creative problem solving skills constantly. This course is intended to foster this learning and covers basic concepts of computer programming in the context of video game development. Game development is not only fun, but also a great learning tool because it is highly interdisciplinary and involves many important computer science topics.
The course covers topics including program control, object oriented programming, data structures, user interfaces, and event-driven programming. Using the Python programming language, students will learn to design, implement, and document programs. Basic game design concepts stemming from physics, economics (game theory), artificial intelligence, and graphics will be briefly covered. In addition to Python, the students will be learning and using PyGame, a popular 2D/3D gaming engine for Python.
Note that the ability to work and learn independently is important because students will be working individually most of the time and have some amount of freedom outside of lecture. This is to allow them to be creative and explore and absorb the difficult task of programming, a large part of which is experimentation ("what if I changed this...").
The objectives and goals are that each student will:
Primary
- Have fun making games!
- Follow the software design process from problem description to design to release
- Write interactive programs in the Python language
- Use modern programming concepts and paradigms such as object-oriented design
- Learn of game design and how to use the PyGame engine
- Perform basic debugging
- Use an Integrated Development Environment (IDE)
- Acquire improved problem solving, creative-, and algorithmic thinking
- Basic website creation
- Learn to work as part of a development team
- Communicate understanding of programming concepts through writing/documentation and presentations
- Discuss various game design ideas and how they affect gameplay balance and fun
- Learn about the Linux operating system and the Open Source paradigm
Assignments and Evaluation
Practice is the best way to become proficient at programming. To this end, the students will be jumping into code almost immediately. Small initial assignments will grow into longer, multi-day ones. Complimenting new assignments will be lecture topics, also growing from basic to more complex. The topics discussed will flow fairly linearly with small tangents to cover related topics where appropriate. The capstone of the course will be each student working individually or as part of a two person team to complete a game, from idea and design to implementation and presentation. Class is in the lab every day and, as stated above, will incorporate a lot of coding and students will be expected to document their code following standard practices. Group dynamic is extremely important, so participation in class discussions and activities will also be expected. Similarly, students with mastery of a concept may be asked to help other students.
Students will maintain their own publicly available website. Its main purpose is to display a daily journal (or blog) that records the student's progress. It will also serve as a place to post completed games for others to try and learn from. The website will serve as a clear indicator of student progress and be a primary evaluation mechanism. Students will also turn assignments and programs into the instructor and/or TA at times for review. Finally, several times in the term a student will present to the class, either as an individual or as part of a group.
Rules and Consequences
Rules
- Respect everyone at all times.
- Absolutely NO food or drink in class at any time.
- Unless approved by instructor or TA, no electronic devices of any sort.
- Computer use is restricted to the activity at hand or other approved use (by instructor or TA). This includes no e-mail, youtube, games, etc.
- No cheating, copying, plagiarism, or other "academic dishonesty"
Expectations
- Respect everyone at all times.
- Follow directions the FIRST time.
- Be in class on time and prepared.
Evaluation
Everyone will begin this course at a different place and, as a result, end at a different place. The class will move at a median pace but some students may move ahead or review as needed. Thus, your primary methods of evaulation will be the assignments and projects you turn in, your journals, and the reflections of the instructor and TA on your performance, behavior, and class participation (including asking questions!).