CMSC 115, Introduction to Computing: Simulating Reality

Fall 2009 Syllabus


Instructor

Sven Anderson

Office

RKC 205

Phone

752-2322

Office Hours

TBA

Description

How do rumors and fashions spread in society?  Do ocean currents affect global climate change?  Do animal populations vary randomly?  In this course we will use computers to build virtual worlds that allow us to explore questions like these.  You will also have the chance to build models that answer questions that interest you.  Prerequisite: strong background in pre-calculus mathematics or its equivalent and eligibility for Q courses.

Objectives

By the end of this course you will know how to create a model for a problem like the following:

People often seem to desire to live with others of their own kind.  Under what conditions will this lead to the formation of stable ghettos?  What individual personality traits determine how much the residents of a ghetto integrate with other groups in the population?

As you can see, this course is about problem solving.  You will learn how to reduce complex real-world situations to a simplified mathematical model and then build a computer simulation based on your simplified model.  Finally, you will learn to analyze the simulation in order to learn about the original problem. In the process you will learn basic computer programming and elements of dynamics, probability, and statistics.

Materials

Web page

We will make extensive use of Web-based materials.  Our homepage is http://turing.bard.edu/~sven/115. You should check it frequently.

Assignments

Classes will be devoted to introducing material, posing problems, and beginning solutions. You will usually have to finish the solutions outside of class. There will be problems and programs to work on nearly every week.  You should complete these problems each week, since each week builds on the preceding weeks' ideas and skills.  If you conscientiously work on the assignments, you should do very well (and have fun while you are doing it). Very often I will require that you work in small groups during class. This is an essential, hands-on part of your learning. Part of your grade will be based on how well your group performs.

Grading

The development of scientific, mathematical, and computational topics will be based on a series of simulations that arise in response to questions we ask.  Most classes will involve both lecture and hands-on activities. Every student will also develop their own simulation over the course of the semester.

I encourage all students to collaborate; you should discuss coursework and programming problems. Copying code without attribution, however, is not permitted. Copied code will receive no credit and will be treated as scholastic dishonesty.

Attendance is extremely important, since there is no textbook for much of this course and new concepts will be introduced as the need for them arises. If you must miss class, please let me know prior to the class you miss. I am much more forgiving of absences that are explained before they occur. If you miss a class, please be sure to meet with me to learn what was missed.

Your final grade is calculated from the following weighting:

In-class assignments, quizzes and participation

20%

Homework

35%

Tests

30%

Project

15%

Schedule

The schedule of topics is not completely set. The topics we cover will be dictated by a sequence of increasingly complex modeling problems. For each general problem type, I will provide at least one concrete example. We may not choose to answer the problem posed by the example, but we will try to model and understand problems of the same type. When the solution to a problem requires some new idea or skill, we will pause to learn it before we can solve the problem.  A significant part of the class will involve figuring out what we need to know before we can simulate a system.

Model Type

Example

Programming Concepts

Mathematical Concepts

Using a model to understand a complex system.

Social mixing

None

None

Single variable dynamic system

Hawks and doves

Mass and spring

Methods, user interfaces, conditionals

Discrete dynamic systems

Linear dynamics

Stochastic system

Randomly moving robotic lawn mower

Waiting at the doctor's office

Random number generation

Variables

Random numbers

Discrete probability

Cellular automata

Game of life

The formation of ghettoes

Advanced methods, iteration


Agent-based systems

Groups of shoppers

Synchronously flashing fireflies

Multi-agent data structures in NetLogo

Basic statistical descriptors

Changing multi-agent systems

Evolution

Neural learning





    A more detailed schedule is available on the course website. This schedule will be updated as the semester progresses.