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 |
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.
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.
The projects are supported by the lectures and the 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.
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:
You are responsible for understanding every word in this document.