Because there does not exist a single book that covers all the materials we will cover in this class, we will use a combination of class notes, class lecture slides, and books and other references. Here is a list of those additional books and on-line resources that cover many of the topics covered in CS 3200.

Please report broken links or new resources to teach-cs3200@sci.utah.edu.

- Numerical Computing with Matlab This book is a very nice overview of numerical analysis with several examples using Matlab. The book is available for free on-line. The Matlab codes used in the book are also available on-line.
- Scientific Computing: For Scientists and Engineers by Timo Heister and Leo G. Rebholz, De Gruyter, 2015.
- An Introduction to Scientific Computing with MATLAB and Python Tutorials by Sheng Xu, CRC Press, 2022.
- Introduction to Scientific Computing and Data Analysis by Mark Holmes, Springer, 2018.
- Introduction to the Tools of Scientific Computing by Einar Smith, Spring, 2021.
- Introduction to Scientific Computing: A Matrix-Vector Approach Using MATLAB by Charles Van Loan, Pearson, 1999.
- Scientific Computing: An Introductory Survey, Second Edition by Michael T. Heath, published by McGraw-Hill, New York, 2002.
- Guide To Scientific Computing, Second Edition by Peter R. Turner, published by CRC Press, 2000.
- Introduction to Computational Science: Modeling and Simulation for the Sciences by Angela B. Shiflet and George Shiflet, Princeton University Press, 2006.
- Scientific Computing with MATLAB by Alfio Quarteroni and Fausto Saleri, Springer, 2003.
- MATLAB Guide by Desmond J. Higham and Nicholas J. Higham, SIAM Press, 2005.
- Mastering MATLAB 7 by Duane C. Hanselman and Bruce L. Littlefield, Prentice Hall, 2004.
- Octave - an open source, freely available alternative to Matlab
- The Visualization Handbook. edited by Charles Hansen and Chris Johnson, Academic Press, 2004.
- Visualization Toolkit 4th Edition by Will Schroeder, Ken Martin and Bill Lorenson, Kitware, 2006.
- The Nature of Mathematical Modeling by Neil Gershenfeld, Cambridge University Press, 1998.
- Python Scripting for Computational Science by Hans Petter Langtangen, Springer, 2004.
- Python Essential Reference (3rd Edition) by David M. Beazley, Sams, 2006.
- SCIRun Software System: A scientific problem solving environment for modeling, simulation and visualization developed by the Scientific Computing and Imaging Institute at the University of Utah.
- Parallel Scientific Computing in C++ and MPI: A Seamless Approach to Parallel Algorithms and their Implementation by George Em Karniadakis and Robert M. Kirby, Cambridge University Press, 2003.
- Scientific Parallel Computing by L. Ridgway Scott, Terry Clark, Babak Bagheri, Princeton University Press, 2005.
- Introduction to High-Performance Scientific Computing by Lloyd D. Fosdick, Elizabeth R. Jessup, Carolyn J. C. Schauble, and Gitta Domik, MIT Press, 1996.

- gnuplot homepage:

http://www.gnuplot.info - Documentation on gnuplot site includes FAQ, manual (comprehensive
reference, but no tutorial), and reference card:

http://www.gnuplot.info/documentation.html

- MATLAB Help:

https://www.mathworks.com/help/matlab/ - Tutorials from MathWorks (developer of MATLAB), with links to
other tutorials:

http://www.mathworks.com/academia/student_center/tutorials/launchpad.html

- Enthought Python Distribution (EPD), which includes the NumPy,
SciPy, matplotlib, mlab, Mayavi2, and other libraries, plus useful
tools such as the IPython interpreter shell (with features such
as code completion). Free for academic use.

http://www.enthought.com/products/epd.php - SciPy Getting Started:

https://docs.scipy.org/doc/scipy/getting_started.html - NumPy tutorial:

https://numpy.org/numpy-tutorials/index.html - matplotlib tutorial (2D plots):

http://matplotlib.sourceforge.net/users/pyplot_tutorial.html - mlab documentation (3D plots):

http://code.enthought.com/projects/mayavi/docs/development/html/mayavi/mlab.html - Python documentation:

http://www.python.org/doc/

- A set of numerical analysis notes with a wealth of other
resources:

http://numericalmethods.eng.usf.edu/

- Wikipedia overview of random number generation:

http://en.wikipedia.org/wiki/Random_number_generator - Site providing an RNG, formerly using lava lamps:

http://www.lavarnd.org/what/index.html - Overview of RNG capabilities in MATLAB
- Reference material for the C libraries rand function

- Some disasters attributable to bad numerical computing
- The double pendulum - an example of a chaotic system
- Measuring errors:

http://numericalmethods.eng.usf.edu/mws/gen/01aae/mws_gen_aae_spe_measuringerror.pdf - Round-off and truncation error:

http://numericalmethods.eng.usf.edu/mws/gen/01aae/mws_gen_aae_spe_sourcesoferror.pdf - Floating-point representation:

http://numericalmethods.eng.usf.edu/mws/gen/01aae/mws_gen_aae_spe_floatingpoint.pdf

- BLAS - Basic Linear Algebra Subprograms
- MITs OpenCourseWare project—video lectures, assignments with
solutions, and other materials for their Linear Algebra course:

http://ocw.mit.edu/courses/mathematics/18-06-linear-algebra-spring-2010/

- An applet illustrating the beneﬁt of using splines instead of
a single polynomial:

http://terpconnect.umd.edu/~petersd/interp.html - A more full-featured applet, with a wider range of interpolations
methods but a little harder to use:

http://www.isaacdooley.com/java/ctd/index.html - Direct interpolation (linear, quadratic, cubic):

http://numericalmethods.eng.usf.edu/mws/gen/05inp/mws_gen_inp_txt_direct.pdf - Lagrange interpolation:

http://numericalmethods.eng.usf.edu/mws/gen/05inp/mws_gen_inp_txt_lagrange.pdf - Spline interpolation:

http://numericalmethods.eng.usf.edu/mws/gen/05inp/mws_gen_inp_txt_spline.pdf

- In-depth notes on Forward Euler. Focuses more on mathematical
than computational issues, but includes pseudocode:

http://tutorial.math.lamar.edu/Classes/DE/EulersMethod.aspx

- Demo of computing π by a Monte Carlo approximation:

http://polymer.bu.edu/java/java/montepi/ - Brief explanation of Forward Euler and other numerical methods
for solving ODEs, with a MATLAB example:

http://www.mccormick.northwestern.edu/docs/efirst/ode.pdf - Brief explanation of Forward Euler and other numerical methods
for solving ODEs, with a MATLAB example:

http://www.mccormick.northwestern.edu/docs/efirst/ode.pdf - Another set of overview slides for Monte Carlo integration,
with sample code in C (skip to page 5 for the relevant part):

http://www.sph.umich.edu/csg/abecasis/class/2006/615.22.pdf

- Trapezoidal rule:

http://numericalmethods.eng.usf.edu/mws/gen/07int/mws_gen_int_txt_trapcontinuous.pdf - Simpson's rule:

http://numericalmethods.eng.usf.edu/mws/gen/07int/mws_gen_int_txt_simpson13.pdf - Gaussian quadrature:

http://numericalmethods.eng.usf.edu/mws/gen/07int/mws_gen_int_txt_gaussquadrature.pdf - Another set of numerical analysis slides, including other topics
besides integration:

http://homedir.jct.ac.il/~naiman/nm/nm-slides-color.pdf#page=082

- Notes and other resources on the finite difference method, for
the ODE case:

http://numericalmethods.eng.usf.edu/mws/gen/08ode/mws_gen_ode_spe_finitedif.pdf

- Notes and MATLAB examples on applying the finite difference
method, for Poissons equation:

http://www.mathematik.uni-stuttgart.de/ians/nmh/teaching/projects/schmid/finite_difference_method.shtml

- Jacobi and Gauss-Seidel examples from the online chapters of
a linear algebra text:

http://college.cengage.com/mathematics/larson/elementary_linear/5e/students/ch08-10/chap_10_2.pdf - Another resource for the mathematical background, with pseudocode:

http://netlib.org/linalg/html_templates/node9.html - A good online text for iterative methods (see Chapter 4 for
Jacobi, Gauss-Seidel, and SOR):

http://www-users.cs.umn.edu/~saad/IterMethBook_2ndEd.pdf

- Shewchuks introduction to steepest descent and conjugate gradient:

http://www.cs.cmu.edu/~quake-papers/painless-conjugate-gradient.pdf - Another set of slides on CG, with information on preconditioners:

http://www.stanford.edu/class/ee364b/lectures/conj_grad_slides.pdf - A good online text for iterative methods (see section 5.3 for
steepest descent and 6.7 for CG):

http://www-users.cs.umn.edu/~saad/IterMethBook_2ndEd.pdf - Applets illustrating the steepest descent and CG methods:

- Wikipedia overview of quadtrees (very basic):

http://en.wikipedia.org/wiki/Quadtree - Jonathan Shewchuk –
*Triangle*(C):

Mesh generation tool freely available for non-commercial use.

http://www.cs.cmu.edu/~quake/triangle.html - Jonathan Shewchuk –
*ShowMe*(C):

Mesh visualization tool freely available for non-commercial use.

http://www.cs.cmu.edu/~quake/showme.html - Another look at meshing, from a topological viewpoint:

http://www.cs.mtu.edu/~shene/COURSES/cs3621/SLIDES/Mesh.pdf

- Jonathan Shewchuk –
*Triangle*(C):

Mesh generation tool freely available for non-commercial use.

http://www.cs.cmu.edu/~quake/triangle.html - Jonathan Shewchuk –
*ShowMe*(C):

Mesh visualization tool freely available for non-commercial use.

http://www.cs.cmu.edu/~quake/showme.html - Wikipedia overview of Voronoi diagrams:

http://en.wikipedia.org/wiki/Voronoi_diagram *QHull*– Another set of tools for computing Delaunay triangulations, Voronoi diagrams, and convex hulls:

http://www.qhull.org/- Two libraries with properties, algorithms, and representations
for Delaunay triangulations and Voronoi diagrams:

http://www.cgal.org/ http://www.algorithmic-solutions.info/leda_guide/geometryalgorithms.html - Repository of links to a variety of computational geometry algorithms,
including Delaunay triangulations, Voronoi diagrams, and convex
hulls:

http://www.cs.sunysb.edu/~algorith/major_section/1.6.shtml - Mathematical and formal material on Delaunay triangulations,
from an online chapter of a computational geometry text:

http://www.cs.uu.nl/geobook/interpolation.pdf

- Another look at the same-side and barycentric approaches, with
pseudocode for each:

http://www.blackpawn.com/texts/pointinpoly/default.html

- Wikipedia overview of scalar fields:

http://en.wikipedia.org/wiki/Scalar_field - Wikipedia overview of octrees (very basic):

http://en.wikipedia.org/wiki/Octree - Another introduction to the marching cubes algorithm:

http://users.polytech.unice.fr/~lingrand/MarchingCubes/accueil.html - Overview and C code for marching cubes:

http://paulbourke.net/geometry/polygonise/ *A Survey of Octree Volume Rendering Methods*, including the min-max ﬂavor. Can’t access directly via URL; Google “survey octree volume rendering methods”, first result points to correct PDF (as of December 22, 2011).- Wikipedia overviews of binary space
partitioning and another data structure used in visualization, the
kd-tree:

http://en.wikipedia.org/wiki/Binary_space_partitioning http://en.wikipedia.org/wiki/Kd-tree

- Wikipedia overview of volume rendering and various related topics
(ray casting, splatting, texture mapping):

http://en.wikipedia.org/wiki/Volume_rendering

http://en.wikipedia.org/wiki/Volume_ray_casting

http://en.wikipedia.org/wiki/Texture_splatting

http://en.wikipedia.org/wiki/Texture_mapping - Extensive background material on volume rendering (nothing on
transfer functions though):

http://www.byclb.com/TR/Tutorials/volume_rendering/Index.aspx - Volume rendering tutorial (specifically on ray casting),
with examples and code:

http://graphicsrunner.blogspot.com/2009/01/volume-rendering-101.html - Transfer functions:

http://graphicsrunner.blogspot.com/2009/01/volume-rendering-102-transfer-functions.html - Optimization:

http://graphicsrunner.blogspot.com/2009/02/volume-rendering-201-optimizations.html - Older but still useful material on the ray casting approach,
with theory, examples, and pseudocode:

http://web.cs.wpi.edu/~matt/courses/cs563/talks/powwie/p1/ray-cast.htm

- Wikipedia overview giving mathematical background on advection:

http://en.wikipedia.org/wiki/Advection - Wikipedia overview of metaballs:

http://en.wikipedia.org/wiki/Metaballs - Resources for image-based flow visualization:

http://www.win.tue.nl/~vanwijk/ibfv/ibfv.exe - Mathematical background and a basic applet illustrating the
differences among streamlines, streaklines, and pathlines:

http://web.mit.edu/fluids-modules/www/potential_flows/LecturesHTML/lec02/tutorial/tutorial-spsl.html - Examples and background for many flow visualization
techniques:

http://www.zhanpingliu.org/Research/FlowVis/FlowVis.htm - Line intregral convolution:

http://www.zhanpingliu.org/research/flowvis/LIC/LIC.htm - Many other examples there, including streamlines,
streaklines, etc. Series of tutorial videos on visualizing
volume data (both scalar and vector). Specific to MATLAB, but
illustrates useful concepts for any platform:

http://blogs.mathworks.com/videos/2009/10/23/basics-volume-visualization-19-defining-scalar-and-vector-fields/