Course Description
CSE 481p: Capstone: Problem Solving for Global Challenges
The University of Washington, Seattle, Spring 2018
Students will work in teams of 3 to 4 to design and evaluate computational formulations of global problems such as achieving stability and sufficiency of the world food supply, managing the threats of nuclear war, ending homelessness, and minimizing the undesirable consequences of climate change. Each team will begin by selecting a problem in consultation with the teaching team, identifying and analyzing appropriate information resources, including possible consultations with outside experts. The team will propose one or more basic formulations, present them, and receive critiques from both the teaching team and the other teams. They will iteratively refine their formulations, moving towards working code that supports users in roles that engage them in understanding and perhaps even solving the problem.
 
During the first part of the course (3 weeks), the instructor will cover a set of topics intended to get student teams ready to pursue their main projects. Then, during the remainder of the quarter, each student group will develop a computational formulation of a global problem, using a set of provided tools, and according to the classical theory of problem solving.

The course's topical coverage begins with a short section on Python programming, during which students who already know Python can deepen their knowledge of the language and during which students new to the language can become familiar with it.

Next is a grounding in the classical theory of problem solving, taking ideas from state-space search. The focus soon shifts to a methodology for problem formulation and how to apply it to so-called "wicked" problems.

The final form of each group's problem formulation will be a piece of client-server software that provides online experiences for users; the experiences may either be collaborative problem-solving sessions or multi-player game sessions involving key elements of the global problem selected.

Additional topics related to problem solving and game design, such as Nash equilibria, mechanisms for increasing user engagement, and problem-state visualization will be addressed later in the course, while the projects are being developed.

The following technical tools and methodologies will be emphasized: Python 3.X, creating HTML5 graphics using svgwrite, client-server architecture, Git-Lab version control, Agile programming with Scrums, interative design with peer reviews, and frequent progress presentations.