Factsheet for Cos 323
COS 323 - COMPUTING FOR THE PHYSICAL AND SOCIAL SCIENCES
Schedule: Tues, Thur 1:30-2:50, Room 102 CS building;
plus one precept, Wed 4:00-5:00, MECA lab (IRIS classrooms,
E-417 and E-423 E-QUAD).
Instructor:
Ken Steiglitz,
Room 421 CS Building, email
ken@cs.princeton.edu,
phone 258-4629, office hours TBA
Graduate Teaching Assistant:
Michael Schneider
schneidr@cs.princeton.edu,
Undergraduate Assistants:
TBA
Undergraduate Course Designers:
Mike Carreno,
Niki Kittur,
J. Sheehan Maduraperuma (consultant).
Catalog Description:
COS 323 Computing for the Physical and Social Sciences
Principles of scientific computation, driven by current
applications in biology, physics, economics, engineering, etc.
Topics include: simulation, integration of differential
equations, iterative optimization algorithms, stability and
accuracy issues. Students will pursue projects in a variety
of fields, writing their own computer programs and also using
higher-level tools such as Mathematica.
QR Fall
Two lectures, one class.
Prerequisites: COS
126 and MAT 104. K. Steiglitz
Grading: Weekly 15-minute quizzes, regular programming assignments,
midterm project proposal, final project report
Text:
Numerical recipes in C : the art of scientific computing,
W. H. Press et al., Cambridge University Press, 1992. 2nd ed.
Don't panic! There will be regular assignments from various parts of this
compendium, but we won't be covering all or even a large part of it.
We'll also fill in details when it's too terse. But it
has lots of good descriptions of the most well known
and useful algorithms, plus code. You probably won't want to
sell it when you're done with the course.
By the way, the entire
book is online. We aren't going to get a license to download the software.
You're going to use it as a guide, but roll your own short programs,
which is much more instructive and satisfying.
Additional reading on applications will be handed out.
Guide for handing in homework assignments
You should hand in for each assignment:
- A short description of your code including what it does, a summary of the
control flow, and a summary of the major data structures. Your description
could be the comments of a well-documented program without the code itself.
It should make it clear what your model was and how you implemented it,
without going into the details of pointers and indices.
- The results of your computations. Use graphs, numerical tables and/or
statistical summaries, whatever you feel best communicates the behavior you
observed in your experimentation.
- A short analysis of your data. What conclusions can you draw from your
observations?
- In the case of the population genetics simulation (Assignment 1), do
your observations suggest new hypotheses that could be tested using
another simulation, another mathematical model or a laboratory or
field experiment? This can include qualitative statements (e.g.
``The data suggests one-legged robots are unstable.'') or quantitative
statements (e.g. ``The robot's speed decreases as 4.6 x^2, where x is
the slope of the hill it is climbing.'')
- In the case of simulations of physical systems, what evidence is there
that your results reflect reality? Which of the algorithms you used are
likely to most accurately reflect real behavior? How should your
model be changed to better reflect reality, and can you anticipate how
that would affect the algorithms and computational resources you use.
- In the case of any numerical computation, be sure to compare the
different algorithms you used on the basis of speed, storage, accuracy,
and ease of programming. Can you suggest guidelines about which algorithm
to use under which circumstances in the context you studied?
- Did any of the algorithms you used break? (That is, give nonsensical
answers or none at all.) If you can, explain why the algorithms broke
and what might be done to make them more robust.