P573: Introduction to Scientific Computing

Introduction to Scientific Computing - Spring 2008
P573, Section 3574
8:00 to 9:15 PM, Monday and Wednesday
102 Lindley Hall

Quick Links:

(not all of these are yet posted)

General Information

Instructor:

Prerequisites:

Mathematics M343 and one of M303 or M301, and a working knowledge of Fortran, C, or C++. Students should be able to write and run programs under a UNIX operating system. You will receive an assignment the first day or two of classes, which will help you decide if you belong in the course or not.

Textbook:

The following may be useful references, but only for small parts of the course material. Don't go out and buy them, and don't use them as a measure of what is going to be in the course. Everything you need will be presented in class, is available via the Web, or (in the case of Matlab) through Matlab's help, lookfor, and other commands.

Introduction to Matrix Computations by G.W. Stewart is just what the name says.

Matrix Computations by Golub and van Loan is a more definitive but higher-level reference work, with numerical linear algebra algorithms clearly stated in an implementable form.

High Performance Computing by Kevin Dowd covers some performance optimization and measurement techniques.

Mastering Matlab by Hanselman and Littlefield is one of the more definitive reference books for Matlab.

Matlab Guide by Higham and Higham is an extremely good starting book to learn Matlab.

Office Hours:

  • To be set in second week of class. Watch for announcements of changes in those hours in class or in the course wwwboard
  • Because I travel a great deal, it will often be necessary to shift those times around. You can always make an appointment to meet with me at another day or time.

    Computer Accounts:

    You don't have to physically sit at the console of a machine running Matlab, and instead you can login to them remotely via ssh, which provides for secure login and file transfer. ssh is available (through UITS's IUWare) for Windows platforms and is on all IU Unix machines. If you use a Windows-based machine you may also need to install and use hummingbird, which allows graphics windows from a remote Unix-based machine to be opened on your local Windows machine.

    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

    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


    Course Outline

    The following outline is not chronological, and does not completely reflect the emphasis given each topic.
    1. Introduction
      1. Course goals
      2. Example problem
      3. Characteristics of scientific and engineering computations
    2. Software tools for scientific computing.
      1. Timing things on computers.
      2. Problem solving environments.
      3. Unix tools.
      4. Net-available software and effective use of the Web.
      5. Language interoperability
      6. Graphing and visualization.
    3. High performance computer architectures.
      1. Organization of computer memory systems.
      2. Modern workstation processor features.
      3. Load/store models and analyses.
    4. Numerical computing
      1. Floating point standard(s).
      2. Common mathematical models and implications for computers.
      3. Discretizations.
      4. Data structures and their interactions.
    5. Performance analysis and optimization
      1. Benchmarking
      2. Profiling
      3. 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:
    1. 03 Dec 2008, fixing grade/final dates and methods.