If your lab or research group has other machines, use them as well -
in the long run, those are the machines you want to
learn how to use effectively.
However, most assignments will require you to use either the nations or
scrap clusters so that we can have comparable results.
You will also have to use the clusters for electronic handin
of assignments.
Course Description
Open to students from all scientific, engineering, and mathematical disciplines,
this course provides an overview of computer hardware, software, and numerical
methods that are useful on scientific workstations and supercomputers.
Topics include high-performance computer architectures, software tools
and packages, characteristics of commonly used numerical methods, graphical
presentation of results, and performance analysis and improvement.
The course is not the same as numerical analysis, which concentrates
on the study of convergence, stability, and error analysis in numerical
methods. For that, students should take Math 571-572. Although numerical
analysis is an important component of scientific computing, it is only
a part of the field. Instead, this course concentrates on
-
practical implementation of solutions of scientific problems on computers
-
the efficient mapping of solution methods to modern architectures
-
software tools and methods useful in modern scientific computing.
-
the basic foundations of performance analysis, modeling,
and prediction (together, called performance engineering)
This course is not just parallel computing.
The second course, CSci
B673, concentrates on that aspect of scientific computing.
We will use the high-level problem solving environment
Matlab
in the course, as a rapid prototyping tool and for its easily-accessed
graphics. The needed skills in Matlab will be taught as part of the course,
but for those who would like a preview the
Matlab
Tutorial material prepared by Dave Hart is useful, and a good
Matlab
tutorial is at the University of Florida. Another tutorial, posted
on Sep 6, is at
Michigan
Technical University . However, all that is needed will be covered
in class, so don't go out and memorize Web pages ... yet.
Other courses at Indiana University which provide other important aspects
of computational science and engineering include
-
Chemistry C668 (physico-chemical modeling and nonlinear dynamics)
-
Computer
Science B443 (computer architecture)
-
Computer Science C481-C482 (computer graphics)
-
Computer Science
B673 (advanced scientific computing)
-
Computer
Science C689 (scientific visualization)
-
Geological Sciences G612 (inverse methods in geophysics)
-
Geological Sciences G514 (geophysical signal analysis)
-
Geological Sciences G614 (methods in exploration seismology)
-
Mathematics M571-M572 (numerical analyis),
-
Mathematics M441-M442 (partial differential equations),
-
Mathematics M447-M448 (mathematical models and applications)
-
Physics P410 (computing applications in physics)
-
Physics P609 (computational physics)
-
Physics P700 (Monte Carlo methods in physics)
Course Outline
The following outline is not chronological, and does not completely reflect
the emphasis given each topic.
-
Introduction
-
Course goals
-
Example problem
-
Characteristics of scientific and engineering computations
-
Software tools for scientific computing.
-
Timing things on computers.
-
Problem solving environments.
-
Unix tools.
-
Net-available software and effective use of the Web.
-
Language interoperability
-
Graphing and visualization.
-
High performance computer architectures.
-
Organization of computer memory systems.
-
Modern workstation processor features.
-
Load/store models and analyses.
-
Numerical computing
-
Floating point standard(s).
-
Common mathematical models and implications for computers.
-
Discretizations.
-
Data structures and their interactions.
-
Performance analysis and optimization
-
Benchmarking
-
Profiling
-
Analyzing and improving performance.
Class Web Board
This class will use the WWWBoard mechanism.
The
class home page is accessible from anywhere on the Internet,
using your UITS network password. The message board
will be used to post announcements, assignments, corrections, and exceptions
to office hours. Use it to post questions related to the course or
share related information with the class. You are responsible for checking
it frequently, since any changes or corrections to assignments
will appear there if not in class. A good policy is to check it
before starting on any assignment, and daily in general.
Another good policy is to use it for any question where you are
unsure about attribution.
Grading Policies
Grades are based on a final and several small projects. These
projects involve writing and/or analyzing computer programs. Written reports
are required. Each assignment will have questions intended
to begin your thinking process, not end it. Grading will also be based
on the questions you raise and answer in these projects. For example, if
the question is "Which of the methods A and B is faster," simply saying
"A" is not sufficient. You should also ask the underlying question "What
measure of fast is appropriate here?", "Why is A faster?", etc.
Some projects you can tackle in groups.
However,
you must give full attribution for any outside sources you use for ideas,
software, or help. Also, I reserve the right to call on any member of the
group to present/explain/defend/justify the group's work and to base the
entire group's grade on that member's performance. Just to make this even
more life-like, I will assign any teams. However, in the event that your
team cannot come to agreement about something, your report may include a
"dissenting opinion" section, the way Supreme Court decisions do.
The final exam is on 19 Dec, and you can turn it in anytime that day up
to midnight. The percentage 25% is for the final exam, and 75% for
the rest of the course work.
Attribution of Work
You can get away with virtually any lifting or scavenging of material,
provided that you cite the source. If your citation is "I photocopied another
student's write-up" then you may not get many points on the assignment, but
at least you won't be expelled for plagiarism.
Leveraging the existing base of tools, software, knowledge, and earlier
explorations is the only practical way to carry out science and engineering
via computational methods. Anyone who thinks otherwise should think about
writing their own Fortran 95 compiler, designing their own floating
point units, and to heat up a soldering iron to wire together their own
disk array. The distinction between plagiarism and leveraging is citation.
If in doubt, ask me. If I am not available, then give a citation for any
material or help you have received or given. Note that using the Web board is
an acceptable way to seek help - it's public to the entire class and hence the
questions and answers are available to everyone.
Changes to this page:
- 03 Dec 2008, fixing grade/final dates and methods.