CS 501 / CS 590C
Computing for Science and Engineering /
Computing for Life Sciences
Fall 2008

Purdue University

CS 590C is the first 5 weeks of CS 501. More detail is in the information handout.

We are using Blackboard Vista *NOW*.

Updated versions of the following 4 handouts are there.
Except that the due date of Assignment #1 is Tuesday 6 am.

Assignment #2 PDF

Course information PDF

Class notes for Preface, chapters 1-3 PDF draft

Assignment #1 PDF

Instructor Robert Skeel

Meets Monday, Wednesday, Friday, 1:30-2:20pm in Potter 268.
This course has both on-campus and off-campus students.

This is a core course in the CS&E Program .

Purpose of course:
to expose students to computational concepts, tools, and skills useful for research in computational science and engineering, beyond what is learned in a first programming course (and basic mathematics courses). A related aim is to prepare students for other courses in CSE core by teaching CS material mostly unavailable in existing graduate level courses.

CS 501 Prerequisites:
* mathematical knowledge and maturity of an MS student in the physical sciences. (It is not assumed that the student is in the physical sciences only that he/she has this level of mathematics.) In particular, some familiarity with matrix algebra and elementary probability.
* some programming experience in C, C++, Java, or Fortran or extensive scripting experience; also, commensurate computer skills.

Following are the plans; they may be slightly dated.

Course topics:
There will be consider computer use: ideally all of it on whatever computer the student intends to use for his+ research, but an ITaP multiprocessor will be made available. The student will be expected to install the necessary (free) software on his/her computer.
Included in the topics below will be (mostly numerical) algorithms to illustrate the computing concepts.
Theme I: scripting to get things done
* CSE concepts, e.g., validation and verification
* scripting language for computation: Python(+numpy)
* scripting language for file processing: Python and a little Unix, regular expressions
* floating-point arithmetic (functionality not representation)
* matrix factorizations
* piecewise polynomials
* discrete Fourier transforms
Theme II: programming for performance
* compiled language, including interfacing to the scripting-language-for-computation [We will use C, the lowest common denominator.]
* data structures: tree, hash table, stack
* computer organization, e.g., memory hierarchy
* parallel programming including - PBS (job submission) - MPI and possibly UPC - pthreads and/or OpenMP - examples of parallel algorithms
Theme III: developing software
* object-oriented programming
* software engineering: make, version control, debugging
* GUIs

Text Book:
Somewhat detailed class notes will be made available.
Here is the table of contents from 2007.

Programming:
"objects don't improve productivity in the dramatic way that scripting does"
We will use some Python and C.
Python Documentation
Good books:

Another reference is Software Carpentry

  Last updated 2008-8-10