CSCS 530: Agent-Based Modeling of Complex (Adaptive) Systems
Wed,Fri 1.00 - 2.30 pm
Rick Riolo (http://cscs.umich.edu/~rlr)
rlriolo at umich
First class and Lab sessions will be in the CSCS computer lab, 120 W. Hall.
Some classes will meet in the CSCS commons, 317a West Hall.
Important note regarding registration:
The course is currently listed with a cap of 12 students. The final size will be in the 18-20 range.
If you are interested in registering, please just get on the waitlist.
We will be give priority in this order:
- CSCS/IGERT students
- CSCS undergraduate minors,
- other graduate students
- undergraduates (within undergrads, some priority to seniors)
with first-come-first serve within each category.
In past years, everyone who has wanted to stay in the course has been able to, even when the waiting list
starts out fairly large, as people sign up early but drop before the term starts, or drop after they find
out how hard the course is going to be (! ;-)). So if you are interested, I recommend you get on the
waitlist, come to the first class or two, and then we can see what shakes out.
If you have questions, feel free to contact me.
Goals of CSCS 530
The purpose of this course is to introduce students to the basic concepts, tools and issues which arise when
using computers to model complex (adaptive) systems (CAS). The emphasis will be on agent-based, bottom-up
computer models. (We will only briefly look at other approaches.) The bulk of the course will involve
"learning by example", i.e., students will:
- read, discuss, evaluate a number of models from a variety of disciplines.
- Modify and run experiments with existing models.
- Design, implement, run, write-up results from their own models.
The course will cover all aspects of the modeling process itself, from model design through implementation
to analyzing, documenting and communicating results. NOT focus on the approach/topics covered in typical
IOE/OR courses, using DES, etc, to model queues, etc, and it will NOT cover "systems dynamics" approaches,
which use equation-based approaches to model "stocks and flows".
The emphasis in CSCS 530 is on "Exploratory Models" of more generic complex (adaptive) systems and/or
phenomena (vs. "predictive" models for specific situations), but we will cover issues relevant to both types
of models, in particular, model verification and validation.
The course assumes no background in Complex Systems Studies (e.g., CSCS 501 is 'not a pre-requisite), but of course I do assume everyone taking CSCS530 is
interested (no, fascinated) by complex (adaptive) systems of many (or all) kinds.
A beginning knowledge of programming is assumed. The course will begin with
a quick introduction to three approaches to writing ABMs: (1) Netlogo, a package with its own language (tho it is written in and users can extend it
in java, (2) Mason, a moderately complicated system which uses java, and
(3) writing an ABM in Python--"rolling your own" so to speak. The course will start with a very
brief/rapid introduction to programming in those three languages,
so students who know some other programming language and can learn them quickly will be able
to pick up what they need.
If you need an introduction to programming in general, to working in the linux/unix environment, to
programming in the Java/Repast, please consider this short (1 credit) course:
CSCS 531 - Short Workshop Series: Basic Computing Skills for Programming Agent Based Models,
offered in fall terms. You also can brush up on Java by going through the programs and assignments listed
off the CSCS 531 web pages.
Classwork and Grades for CSCS 530:
0. CLass discussion 25%
(An incentive to read and discuss!)
1. Short Project #1 10%
1. Short Project #2 15%
3. Short paper/Project Proposal 15%
2. Short Project #2 15% (Milestone toward term project completion)
4. Term project 40%
Yes, it has not escaped my notice that it adds to more than 100%!
Project Due Dates -- all projects
NOTE -- the Syllabus and other pages are underconstruction for 2013
The course will be similar, but some things will change, depending
on student backgrounds and interests.
something important to remember;
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are,
by definition, not smart enough to debug it."