CS 50100
Computing for Science and Engineering
Fall 2016

Purdue University

Course information 2016 PDF

2016 Slides for Chapter 0 PDF

2016 Slides for Chapter 1 PDF

2016 Class notes, revised through Chapter 6 PDF

Instructor Robert Skeel

We are using Blackboard Learn for homework submission and grade records and 2016 Piazza for handouts, announcements, and discussion.

Meets Monday, Wednesday, Friday, 12:30-1:20 in Forney B124.
Evening exams are given Thursdays October 6 and November 10 from 8:00-9:30 pm.

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) is expected.
* {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    
* 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, MPI, OpenMP
Part III: survey of other topics
* GUIs
* developing software: version control, automated builds
* regular expressions
Appendix: numerical computing: a minimal selection of the following
* functions: polynomials, piecewise polynomials, trigonometric polynomials
* matrices: operations, factorizations, parallelism
The Appendix is a source of applications.

There is an optional textbook:

Other useful books: Another reference is Software Carpentry.
Python Documentation

  Last updated 2016-8-22