CMSC 23710/33710
Scientific Visualization

Instructor: Gordon Kindlmann
TA: Denis Pankratov
Lectures: Tuesday & Thursday 1:30pm -- 2:50pm
Ryerson 251
Office hours: 
Kindlmann (Ryerson 161-B): Mon 10am-11am, Thur 3pm-4pm
Pankratov (Ryerson 162-A): Mon 3pm-4pm


Scientific visualization combines computer graphics, numerical methods, and mathematical models of the physical world to create a visual framework for understanding and solving scientific problems. This class will describe the basic methods of modern scientific visualization (for scalar, vector, and tensor fields), drawing on real-world examples from various scientific and biomedical problems. Programming projects will use Python and its interface to C libraries. The course is also intended for students outside computer science who have experience with programming and algorithms.

[ Quick links: Class email List (Archives: Jan) |  SVN for SciVis |  scivis-2013 on Phoenixforge |  Software for SciVis ]


Homeworks and projects are due at 12 noon unless otherwise specified.
Homeworks: Assigned:Due:Description:
Wed Feb 20 Tue Feb 26 Homework 4: Asympototic Decider??
Tue Feb 5 Tue Feb 12 Homework 3: Raster image concepts
Wed Jan 23 Tue Jan 29 Homework 2: Proofs with tensor products
Tue Jan 8 Tue Jan 15 Homework 1: Math Background
Projects: Assigned:Due:Description:
Tue March 12 Noon Thu March 21 Project 4: Vector fields (tips)
Thu Feb 14 9pm Fri Feb 22 Project 3: 2D Isocontours (tips)
Tue Feb 12 Thu Feb 21 Project 2b: Finish Project 2, if you want.
Wed Jan 30 9pm Fri Feb 8 Project 2: Resampling (tips)
Tue Jan 15 Wed Jan 23 Project 1: Colormaps (tips)
Readings: Assigned:Due:Description:
Thu Feb 28 Thu March 7
  • Frits H. Post and Theo Van Walsum. "Fluid Flow Visualization". Focus on Scientific Visualization (H. Hagen, H. Müller, G.M. Nielson, ed.), pp. 1--40, Springer Verlag, Berlin, 1993.
  • On Chalk: Brian Cabral and Leith C Leedom. "Imaging Vector Fields Using Line Integral Convolution". Proc SIGGRAPH 1993 pp. 263-270
Tue Feb 19 Tue Feb 26
Tue Jan 15 Tue Jan 22
  • On Chalk: FSV Chapter 1 sections 1.5, 1.6, 1.8 (i.e. now all of 1.0 through 1.9)
  • On Chalk: Borland and Taylor, "Rainbow Color Map (Still) Considered Harmful", IEEE Computer Graphics and Applications, March/April 2007, pp.14-17
  • On Chalk: Ware, "Color Sequences for Univariate Maps: Theory, Experiments, and Principles", IEEE Computer Graphics and Applications, Sept 1988, pp.41-49
  • On Chalk: Rheingans, "Task-based Color Scale Design", Proc SPIE, Conference Volume 3905, 28th AIPR Workshop: 3D Visualization for Data Exploration and Decision Making (2000)
  • Optional: Kindlmann et al. "Face-based Luminance Matching for Perceptual Colormap Generation", Proc IEEE Vis'02 pp. 299--306 (2002)
Tue Jan 8 Tue Jan 15
  • On Chalk: Foundations of Scientific Visualization class notes ("FSV"): Chapter 0, Chapter 1 sections 1.0-1.4, 1.7, and 1.9
  • If you don't already know svn: SVN Book Chapter 1
  • Skim (to survey vis examples): The NIH/NSF Visualization Research Challenges Report (2006)
  • On Chalk: S. S. Stevens. "On the Theory of Scales of Measurement Science", Science 103(2684):677--680 (1946)
  • On Chalk: J. J. van Wijk. "The Value of Visualization", Proc. IEEE Visualization, pp.79-86 (2005)


No specific classes are prerequisites, but:
  1. You must know how to code. This means you can: use books and the web to learn a language and its features, reason about algorithms and their performance, create informative tests as you go, debug methodically, and build programs in pieces designed for re-use.
  2. Your math background must include linear algebra and calculus.

Communication and Resources


There will be five homework assignments and five programming projects spaced evenly throughout the quarter. There will be no exams. More work will sometimes be requested of students registered in 33710.

Homeworks will constitute roughly 30% of your grade. They are to be completed individually. Homeworks will mainly test knowledge of math and the readings. If written out by hand, they will have to be scanned or otherwise made into a PDF for handing in. PDF is the only acceptable format, not plain text .txt, not .rtf, not .odt, etc.

Programming projects will constitute roughly 70% of your grade. They will include a write-up (as a PDF) as well as code that will have to run or execute as requested. Projects can be done individually, or with a partner (i.e. a group of two, but not three or more), with the following restrictions:

Thoughtful class participation (such as asking and answering questions) will also be a factor in your final grade.

Late Policy

plot of lateness scaling factor The grade on homeworks and projects is scaled by a factor that starts at 1 for on-time hand-ins, and decreases with time after the deadline. Every 6 hours, 1/9 is subtracted from the scaling factor, until it gets to and stays zero. In other words, if something is late but by less than 6 hours, the highest grade it can get is 88.888%. Otherwise, if less than 12 hours late, the highest grade is 77.777%, etc. See the plot at right. The time that matters for this determination is the time of your last commit, as recorded by the Phoenixforge SVN server; see the SVN for SciVis page for details.

Generally speaking, handing things in on time is a necessary but not sufficient condition for getting an A in the class. If you can't finish something on time, it is better to finish it in some form, as soon as possible, rather than being a perfectionist and taking much longer.

In addition, each student is allotted one 24-hour extension on a homework or programming project. However, this extension is not applicable to the first homework or first project (to help speed their grading, so that you can make an informed decision to stay in the class before the end of the add/drop period). In the case of two students working in a pair for a project, both students use their extension at the same time. You must request the extension at least 24 hours before the deadline, by email to scivis-2013-teach (in the case of a pair project, CC the other student). Exceptional circumstances may warrant additional consideration, at the instructor's discretion. Keep in mind that it is hard to be generous with a student who is panicking within 24 hours of the deadline about a situation that could have been anticipated days earlier.

Academic Honesty

The University of Chicago is a community of scholars. Students must understand and internalize the ethics of their academic community. A good place to start is the Cadet Honor Code of the US Military Academy: "A Cadet will not lie, cheat, or steal, or tolerate those who do." The kind of property that matters most to academics is ideas, and to pass someone else's ideas off as your own is to lie, cheat, and steal. The University has a two-paragraph policy on Academic Honesty and Plagiarism, which you should read and understand.

Student interactions are an important and useful means to master course material. We recommend that you discuss the material in this class with other students, and that includes the homework and programming assignments. So what is the boundary between acceptable collaboration and academic misconduct? First, while it is acceptable to discuss homework, it is not acceptable to turn in someone else's work as your own. When the time comes to write down your answer, you should write it down yourself from your own understanding. Moreover, you should cite any material discussions, or written sources, e.g., "Note: I discussed this exercise with Jane Smith." You may feel there is a slippery slope from sanctioned discussions to cheating, but a basic principle holds: present only your ideas as yours and attribute all others.

The University's policy says less than it should regarding the culpability of those who know of misconduct by others, but do not report it. If one student "helps" another by giving them a copy of their assignment, only to have that other student copy it and turn it in, both students are culpable. If you have any questions about what is or is not proper academic conduct, please ask the instructor. (This description of Academic Honesty is derived from those of Stuart Kurtz and John Reppy).


Each weeks of the course are expected to cover the following material (schedule approximate):

Week: Material
Week 1
(Jan 8, 10)
Introduction; Survey of fields of visualization research; Types of numeric data and its computational representation (signed and unsigned types, floating point)
Week 2
(Jan 15, 17)
Color and quantities available for visualization; symmetry considerations; histograms and scatterplots; univariate and bivariate colormaps, vectors and bases
Week 3
(Jan 22, 24)
Working with data sampled on regular grids: convolution, resampling, smoothing, and differentiation.
Week 4
(Jan 29, 31)
Working with array representations: image orientation, index and world space, flow and slow axes, memory locality. Slicing, subsets, sampling, and projection as elements of visualization.
Week 5
(Feb 5, 7)
Visualizing scalar data: isocontours or isosurfaces and their properties, other scalar field features (edges and creases), visualization by direct volume rendering.
Week 6
(Feb 12, 15)
Scalar data: setting transfer functions for volume rendering. Vector data: glyphs and their placement, streamlines and other paths from integration, parallelization.
Week 7
(Feb 19, 21)
Vector data: Spot noise, line integral convolution and variants, derivatives in vector fields and classification of critical points, vector field topology.
Week 8
(Feb 16, 28)
Tensor data: Tensor eigensystems and their indication by glyphs and hyperstreamlines, texture-based methods.
Week 9
(March 5, 7)
Tensor data: tensor-field features and topology, applications of visualizing diffusion and stress tensor fields.
Week 10
(March 12, 14)
Uncertainty visualization; intercombinations of methods; intersections with information visualization; future research directions.