Scientific Computing (Math 365), Spring 2013
Course description
In this course, we will learn how to use Matlab for applying computational methods to solving problems from science and engineering. We learn basic numerical methods, including solving linear systems, interpolation, quadrature rules, and solving ordinary differential equations. We also learn about visualizing output using Matlab graphing tools, programming concepts, and how to develop numerically efficient codes.
Course details
 Basic course information, including office hours
 Text book
 Lectures
 Labs exercises
 Homework projects
 Quizzes
 Final project
 Grading
 Grading policy (to come)
 Amusing quotes, new items, etc
Send me an email
If you haven't already done so, please send me an email at donnacalhoun@boisestate.edu so that I can compile an email list for the class. At the very least, include a subject header that says "Math 365". You may leave the message area blank, if you wish, or send me a short note about what you hope to get out of this course.
Basic course information
Instructor  Prof. Donna Calhoun 
Time  MW 1:302:45 
Place  Business Building 210 
Office Hours  Tuesdays, 11:00  3:00, or by special appt. 
Prerequisites  Math 175 (Calculus II) 
Course textbooks
For this course, I am recommending the following textbooks
 Numerical Computing with Matlab, by Cleve Moler (Mathworks, Inc) (required)
 Learning Matlab, by Toby A. Driscoll (published by the Society for Industrial and Applied Mathematics). You can purchase this directly from SIAM, or you can check out the electronic version from the BSU library (recommended).
By all means, please use any other resources that you find useful. In fact, if you find an online resource that you find particularly useful, please let me know.
Lectures
Below are the slides from lecture material that I can make available online.
 (1/23/13) Introduction to Computational Science (.pdf, .html). Also see Lab #1
 (1/28/13) Using Matlab as a Graphing Calculator (cont). See Lab #2
 (1/30/13) Using interactive features in Matlab (Lab #3 ).
 (2/11/13) Gaussian elimination and the LU decomposition (.html, .m4v, .pdf)
 (3/6/13) Numerical conditioning and sensitivity. (.html, .pdf)
 (3/11/13) Linear least squares. (.html, .pdf)
 (3/13/13) Fitting parabolic and exponential curves using linear least squares. (.html, .pdf)
 (3/18/13) Polynomial interpolation (.html, .pdf)
 (3/20/13) Lagrange interpolation and Barycentric Interpolation (.html, .pdf) (Final)
 (4/10/13) Bisection and fixed point iteration; also includes a discussion of the Lambert W function available in Matlab. (.html, .pdf) (Final)
Lab exercises
The links below are to exercises that are to be done primarly in the lab during class time.
Lab #1  Wednesday, Jan 23
How can Matlab be used as a graphing calculator? 
Lab #2  Monday, Jan 28
How can Matlab be used as a graphing calculator? 
Lab #3  Wednesday, Jan 30
Writing scripts and interacting with the user 
Lab #4  Monday, Feb. 4
Using 'fprintf' and conditional statements. 
Lab #5  Wednesday, Feb. 6
Multidimensional arrays; Matrices in Matlab 
Lab #6  Monday, Feb. 11
Solving square linear systems 
Lab #7  Wednesday, Feb. 13
Timing linear solves 
Holiday  Monday, Feb. 18
President's Day Holiday 
Lab #8  Monday, Feb. 20
Time made available for homework questions. 
No Lab  Monday, March 4 
No Lab  Wednesday, March 6 
No Lab  Monday, March 11 
No Lab  Wednesday, March 13 
Lab #9  Monday, March 18
Solving the Vandermonde system and using polyfit 
Lab #10  Wednesday, March 20
Lagrange polynomials 
Lab #11  Monday, April 3
The Runge Phenomenon 
Lab #12  Monday, May 6th
Solving ODEs 
Homework projects
Homework projects are designed to enforce mathematical concepts and to build and improve Matlab programming skills. Homeworks will be due roughly every two weeks.
Homework #1  Due February 6th.
I encourage you to use the Publish feature in Matlab to write up your homework and turn in the results. I have a sample homework you can try out. Download the Matlab file hmwk1_sample.m. At Matlab command prompt, enter >> publish('hmwk1_sample.m','pdf') This will run the .m file and create a .pdf document of the results. By default, the .pdf is stored in the html directory under your working directory. Here is the sample hmwk1_sample.pdf. Load the .m file into your Matlab Editor, and look at how it is formatted. There are several menu items (look under the "Cell" menu item) that you can use to insert formatting statements. We discuss this in more detail on Monday. 
Homework #2  Due February 27th. 
Homework #3  Due March 20th.
Data sets for this assignment : monkey1.dat, monkey2.dat, poly1.dat, poly2.dat, poly3.dat. Link to Science article for Problem 2 : DOI: 10.1126/science.1144735, .pdf 
Homework #4  Due April 10th.
Sample codes for Problem 3. To learn about nested functions in Matlab, check this webpage. You can download the sample code for this problem here. Data sets and mfile for Problem 4 (dq1.dat, dq2.dat, plot_drawing.m). The image file on which this problem is based is here. How close do you get with your spline interpolation? 
Homework #5  Due April 24th.
Link to article about the history of the inverse square function in computer graphics and video games. Sample code for problem (4).

Homework #6  Due May 10th.
Problem 2 Start with the sample code quad_sample.m. Problem 3 (volcano rendering) Rendering code plot_msh.m and data file msh.region. Problem 3 (shapes rendering) Rendering code plot_shapes.m. A demonstration problem for problem #4 ode_demo_systems Also see the the code we wrote in class on Monday ode_demo 
Quizzes
We will have short quizzes designed to test your knowledge on particular aspects of using Matlab. You will not be asked to write any code in a quiz, but you may be asked to find porgramming mistakes in a code fragment, comment on coding style, show that you understand what error messages mean, and so on.
Homework Quiz #1  Wednesday February 20th 
Homework Quiz #2  Wednesday March 13th
The quiz will be on material related to Homework #3. 
Homework Quiz #3  Wednesday April 8rd
The quiz will be on material related to Homework #4. 
Final project
In lieu of a final, you will have a final project due, on the day of our scheduled exam.
Final project  Final writeup due May 13th, 5PM
Final project description You will also do an inclass presentation of your project, either during class on May 8th, or during our regularly scheduled final, on May 13th, 2:30  4:30. 
Grading
Homework projects will count for 70% of your final grade, quizzes will count towards 10% of your grade, and the final project will be 20% of your final grade. All homeworks will be equally weighted.
Other useful and amusing information
Top 10 Algorithms of the 20th Century (2/16/2013)
The LU decomposition is listed as one of the top 10 algorithms of the 20th century. Read about the other 9 here.
Famous programming quotes (1/22/2013)
 "There are only two kinds of programming languages: those people always [complain] about and those nobody uses." (Bjarne Stroustrup, developer of C++)
 "Should array indices start at 0 or 1? My compromise of 0.5 was rejected without, I thought, proper consideration." (Stan KellyBootle, author, songwriter, and notable for achieving the first postgraduate degree in computer science)
 "The first 90% of the code accounts for the first 90% of the development time. The remaining 10% of the code accounts for the other 90% of the development time." (Tom Cargill, Bell Labs, the 9090 rule)
 "There is no reason for any individual to have a computer in his home." (Ken Olson, President, Digital Equipment Corporation, 1977)
Importance of Computational Science (posted 1/22/2013)
Report to the President : Computational Science : Ensuring America's Competitiveness (June, 2005).
GEMRES : Gem State Research in Computational Science and Engineering
GEMRES (www.gemres.org) is a virtual network of Idaho researchers interested computational science and engineering. Our aim is to increase the visibility and importance of computational science to Idaho researchers.
Finite element design, and the auto industry (posted 1/21/2013)
Finite element design is a computational tool widely used in the auto industry to optimize the design of cars. A key feature in making finite element analysis a feasible tool is advanced techniques for solving large linear systems (millions of equations). In a recent radio interview, a Wall Street journalist talks about his impressions of a recent (2011) auto show, and mentions "finite element design" and computational advances in general as the key to the latest design innovations in the car industry. Listen to the podcast here.
One of the most widely used finite element analysis (FEA) packages in the automotive industry is NASTRAN. They advertise "direct solvers" (such as LU factorization we will learn in class) and "iterative solvers" (e.g. Conjugate Gradient) for linear systems which can handle up to 25 million "degrees of freedom", i.e. number of equations, or number of unknowns. Read about the solvers in NASTRAN here.
Last modified: Mon Aug 5 10:33:49 PDT 2013