CSE 190D:
Game Design for Problem Solving with Python

University of Washington, Spring 2017


Overview

How can computers help people solve problems? There are courses on programming and courses on creating video games, but this is a course on creating games as tools for understanding and solving problems. Analyzing a problem is part of the job, and coming up with a workable formulation of a problem can sometimes be more difficult than solving the formulated problem. Although the main effort in the course will be on actual game design for interesting challenging problems, we will be covering a variety of concepts and techniques that help us with that main effort. These include some of the theory and history of problem solving, methods for formulating problems, characteristics of so-called "wicked problems," game structures, visualization techniques, psychology of game play and of learning, algorithms for analyzing problem spaces, game evaluation methods, and some of the details of selected tough problems. As a "special topics" course, it's new and has not been offered before, either at UW or anywhere else. It's experimental, and that's one reason the enrollment is limited to 24.

Lecture MWF 10:30-11:20; Mondays and Wednesdays in OUG 136; Fridays in OUG 141.
Instructor Steve Tanimoto (tanimoto@cs)
Tuesdays 10:00-11:00 CSE 624
TA Emilia Gan
Office hours: Fridays 11:30-12:30 in CSE 021
Resources Go Post
Background Questionnaire (Please answer these questions before Tuesday, March 28.)
Syllabus
Academic Integrity
Calendar
Catalyst CollectIt Dropbox
Gradebook

Lectures

For information about lectures in this class, refer to the class calendar.

Reading

The course notes provide the first level of readings for each topic. Additional readings will be indicated on the calendar, with links to the material itself.

Projects

There will be two warm-up projects and a main project in the class. The warm-up projects will be done individually by each student. However, the main project will be done in teams of 2 or 3 students. The main project will have several milestones when particular parts of the project are due. Turn in your project work at the CSE 190D Dropbox.

Monday, April 3
Wednesday, April 12
Friday, April 21
Monday, May 1
Friday, May 12
Wednesday, May 24
Wednesday, May 31
Sunday, June 4

The projects are supported by the lectures and the references.

Quizzes

Tentative schedule: The plan is to have no midterm or final exam, but to have two quizzes. In addition, the scheduled final-exam period will be used for a possible demonstration and game-play session at which projects may be presented to a wider audience than just the class.
Friday, April 14
Quiz 1 (covers the classical theory of problem solving as well as the characteristics of wicked problems and selected example problems)
Wednesday, May 10

References

Tools

When we are implementing games and problem formulations, our main tools will be the Python language, version 3.x, with 3.6 being the usual subversion. Almost any text editor or IDE that can work with Python code will be acceptable. Particularly encouraged is Sublime or if you are adventurous, Emacs. Windows 10 with IDLE is acceptable, as is Cygwin on Windows. Python with IDLE on the Mac is also fine. The Mac OSX's built-in Unix environment is another way to go. Linux is also fine.

For an introduction to Python use either a standard book or this tutorial.

When we need graphics, our preferred choice is SVG graphics rendered in the browser. We'll be using the Python module svgwrite to help create the graphics, and the games using such graphics will operate in our own client-server framework.

Some of our coding, such as graphics-related SVG work can be done using websites such as www.w3schools.com/graphics.

The use of version control at github.com is recommended for the team project.

Syllabus

Goals: Taking complex problems, analyzing them, pulling out key components and organizing them in ways that can support understanding and solutions is a valuable skill. The combination of abstract thinking about the problem and concrete implementation go hand in hand to achieve realistic and credible problem-solving capability. In addition to this analytical and synthetic knowledge, a goal of the course is to foster the honing of skills in design, collaboration, and coding. Further to that is gaining knowledge relevant to problem formulation, problem solving, Python coding, and game design and implementation. Yet another goal of the course is to gain insight about a set of very challenging "wicked" problems and identify and pursue "handles for understanding" them, through a particular problem-formulation methodology.

Prerequisite: The only formal prerequisite is CSE 143. We will very much rely on a thorough understanding of the concepts from CSE 143 as well as programming skills acquired through experience with Java.

Grading and Exams: Your overall grade will be determined as follows (subject to change as necessary, but substantial changes to the numbers below is unlikely):

Late Policy: Deadlines will be given with each assignment. These deadlines are strict. For the entire quarter, you may have four "late days". You are strongly advised to save them for emergencies. You may not use more than two for the same assignment. They must be used in 24-hour (integer) chunks. This policy may not be the same as in your other classes. You are responsible for understanding it if you choose to submit late work.

Academic Integrity: Any attempt to misrepresent the work you submit will be dealt with via the appropriate University mechanisms, and your instructor will make every attempt to ensure the harshest allowable penalty. The guidelines for this course and more information about academic integrity are below. You are responsible for knowing that information.

Texts: There are no required books for the course. Reading will be assigned from a combination of course notes, provided by the instructor, and miscellaneous online resources.

Advice:

Academic Integrity

You are responsible for understanding every word in this document.