Design, analysis, and implementation of numerical algorithms for solving problems in science and engineering. Emphasis on program design, data structures, computational complexity, scientific computing environments, and high performance software packages. 3 hour lab required.
The course covers some basics of numerical techniques in scientific computing. This section will emphasize MATLAB as a scientific computing environment. You will use MATLAB version 7.2.0 and a couple of its specialized toolboxes. {\em All assignments and labs must use MATLAB,} so one of your first jobs will be to start MATLAB and learn some basics. At least one of the labs will use high performance package(s) called from MATLAB, at least one will use the Profiler with the \verb+profile+ function for performance evaluation, and at least one will use \verb+mex+ to compile C code into a MATLAB-external file which MATLAB itself can execute. (Plain-text MATLAB script and function files are called M-files. MATLAB-external files are called MEX-files.)
The text is {\em Scientific Computing: An Introductory Survey}, Michael T. Heath, McGraw-Hill, 2002. Tentatively, we will cover subsets in the topics below. Note that there is some reordering of chapters in the text. There will also be hard-copy handouts in class. You are responsible for all assignments in the text, all handouts, and all labs.
Tentative Outline (some adjustments are likely):}
MATLAB (handout and on-line documentation) [Labs 1-2]
Computer arithmetic (chap. 1)
Linear systems and linear least-squares (chaps. 2 and 3) [Labs 3-4-5]
Quiz 1
Eigenvalues and eigenvectors (chap. 4) [Lab 6]
Optimization (chap. 6) [Lab 7]
Random numbers and simulation (chap. 13) [Lab 8]
Quiz 2
FFT (chap. 12) [Lab 9]
Interpolation (chap. 7) [Lab 10]
Numerical integration and differentiation (chap. 8 as time permits)
ODEs (chaps. 9 and 10 as time permits)
Quiz 3 in alternatives period
Scientific computing environments these days have good tools for plotting and visualizing data. The figures here are two examples. The color figure at the top is MATLAB plotting of a function called banana used to test optimization code for multidimensional minimization. The figure on the last page is a visual example of eigenvectors in digital imaging. A subset of the eigenvectors can be used to represent the original image with less data, but at the cost of introducing visual distortion. The upper left (a) is the original image, a 256 X 256 matrix of 8-bit gray-level pixels; (b) is the image recovered from processing based on the first 4 eigenvectors; (c) is from the first 16 eigenvectors; and (d) is from the first 64 eigenvectors.
Prereq: CS140, M241, and M251.
Grading: There will be three, 50-minute, closed book, in-class quizzes for 100 points each. The quizzes will be roughly evenly spaced through the semester. Your lab average will be equivalent to a fourth 100-point quiz; however, if you fail to complete three or more labs, your lab average will be assigned a 0 no matter what the other lab grades are. There will be 8 to 10 labs, allowing some flexibility in covering material.
With the instructor's permission, you can carry out your own project in a relevant application or technique {\em in detail} and give a demo to the class in lieu of the last quiz. If you want to do this, contact the instructor ASAP with your proposal. This could be some feature of MATLAB or some relevant area like a statistical analysis method or an optimization method.
Students who have a disability that requires accomodation should make an appointment with the Office of Disability Services (974-6087) to discuss specific needs; also schedule an appointment with the Administrative Services Assistant, College of Arts and Sciences (974-4161) during her/his office hours.