Back to Prof. Calhoun's Homepage

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

Send me an e-mail

If you haven't already done so, please send me an e-mail at so that I can compile an e-mail 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:30-2: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

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.


Below are the slides from lecture material that I can make available online.

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

Multi-dimensional 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.

Homework #1

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 #2

Homework #3 Due March 20th.

Homework #3

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.

Homework #4

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 m-file 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.

Homework #5

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.

Homework #6

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


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 write-up due May 13th, 5PM

Final project description

You will also do an in-class presentation of your project, either during class on May 8th, or during our regularly scheduled final, on May 13th, 2:30 - 4:30.

The Boise State final exam calendar.


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)

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 ( 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