CS 50100
Computing for Science and Engineering
Fall 2013

Purdue University

Course information 2012 version PDF
The fall evening exam schedule:
* Wed Oct 9, 8:00--9:30 pm, KRAN G016
* Wed Nov 13, 8:00--9:30 pm, KRAN G016

Class notes for Preface, Chapters 1 and 2 PDF draft

Instructor Robert Skeel

We are using Blackboard Learn.

Meets Monday, Wednesday, Friday, 12:30-1:20 pm in Haas G066.

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 50100 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 (MA 26500) and elementary probability (subset of STAT 35000).
* some programming experience in C, C++, Java, or Fortran or extensive scripting experience; also, commensurate computer skills.
* course is open to (a limited number of) undergraduates. See the instructor to override the restriction to graduate students.

Course topics:
There will be considerable computer use: ideally all of it on whatever computer the student intends to use for his/her research, but an ITaP multiprocessor will be made available. The student will be encouraged to install the necessary (free) software on his/her computer.

Part I: scripting to get things done
* Unix
* Python scripting     "Python Snakes Its Way Into HPC"
* files and text processing in Python, object-oriented programming
* mathematical computing in Python, including floating-point arithmetic, graphics, Numpy, computer algebra
Part II: programming for performance
* C programming, including data structures, interfacing to Python
* parallel programming, including computer organization, PBS, MPI, OpenMP
Part III: survey of other topics
* GUIs
* developing software: version control, automated builds
* regular expressions
Appendix: numerical computing: a selection of the following
* algorithms; error
* functions: polynomials, piecewise polynomials, trigonometric polynomials
* matrices: operations, factorizations, parallelism
The Appendix is a source of applications.

Python Documentation
Good books:

Another reference is Software Carpentry or Software Carpentry, version 4

  Last updated 2013-3-11