CMSC 23710/33710 Scientific Visualization, Winter 2017

Instructor: Gordon Kindlmann
TAs: Kai Li, Nick Seltzer
Lectures: Tuesday & Thursday 1:30pm-2:50pm; Ryerson 251
Labs: Mondays 3pm-4:20pm (Sections 1 and 2), 4:30pm-5:50pm (Sections 3 and 4); CSIL 1 and 2
Office hours: 
Gordon Kindlmann (Ryerson 161-B): Mon 10am-11am, Thur 3pm-4pm
Kai Li (CSIL 2): Wed 6pm-7:30pm
Nick Seltzer (Ryerson 176): Tue 11:30-1pm


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. The mathematical and algorithmic foundations of scientific visualization (for example, scalar, vector, and tensor fields) will be explained in the context of real-world data from scientific and biomedical domains. The course is also intended for students outside computer science who are experienced with programming and computing with scientific data. Programming projects will be in C and C++.
[ Quick links: Piazza sign-up, Q&A  |  SVN for SciVis |  scivis-2017 on Phoenixforge]


Unless otherwise noted, projects are due at 9 PM (not midnight), and homeworks are due at 9 AM (so that even with an extension we can discuss answers in the next Thursday class). See this week-by-week diagram of the planned assignment dates so that you can plan your quarter accordingly. The pdf directory, for the Foundations of Scientific Visualization (FSV) class notes, other readings, and PDFs of slides, is password-protected (password given on Piazza).
Homeworks: Tue Feb 28Sun March 5 Homework 5: Jacobian Eigenvalues and decompositions
Thu Feb 16Wed Feb 22 Homework 4: Scatterplots, pthreads, tiling, streamline steps
Fri Jan 27Wed Feb 1 Homework 3: Tensor math and ingredients of 3D vis
Thu Jan 12Wed Jan 18 Homework 2: Homogeneous coordinates and transforms
Tue Jan 3Mon Jan 9 Homework 1: Math background, convolution intro
Projects: Wed March 8 Wed March 15 11:59pm Project 5 (p5tensr): 2D tensor vis
Mon Feb 20 Thu March 2 11:59pm Project 4 (p4vectr): 2D vector vis
Mon Jan 30 Thu Feb 14 11:59pm Project 3 (p3rendr): 3D volume rendering
Sun Jan 15 Thu Jan 26 Project 2 (p2mapr): 2D convolution, colormapping, and isocontours
Wed Jan 4 Thu Jan 12 Project 1 (p1plotr): Plotting convolution
Readings: (week 6) Feb 7, 9 Kindlmann, Durkin, "Semi-automatic Generation of Transfer Functions for Direct Volume Rendering" IEEE Symposium On Volume Visualization, pages 79-86,170, October 1998.
Bryant, O'Hallaron, "Computer Systems, A Programmer's Perspective" Chapters 6: The Memory Hierarchy (mainly 6.6), 12: Concurrent Programming (pthread-related info in 12.3 and later)
(week 5) Jan 31, Feb 2 Levoy. "Display of Surfaces from Volume Rendering", IEEE CG&A, May 1988, pp.29-37. (paper also has a web page)
Drebin, Carpenter, Hanrahan, "Volume Rendering", Computer Graphics (Proc. SIGGRAPH) 22(4):65-74
(week 4) Jan 24, 26 FSV v0.547: Chapter 5
(week 3) Jan 17, 19 FSV v0.547: Sections 1.{4,5,6,9,11} (about 6 pages), and review all FSV assigned so far.
Stevens. "On the Theory of Scales of Measurement", Science 103(2684):677--680 (1946)
Borland and Taylor, "Rainbow Color Map (Still) Considered Harmful", IEEE CG&A, March/April 2007, pp.14-17
(week 2) Jan 10, 12 FSV v0.547 (new version): Sections 1.{3,10,15}, 2.{0,1}, 3.{0,1,2,3,4,6,7}, 4.{5,6} (about 25 pages).
(week 1) Jan 3, 5 FSV v0.546: Chapter 0, 1.{0,1,2,7,8} and 4.{0,1,2,3,4} (about 20 pages). FSV will be updated throughout the quarter, but not in a way that changes numbering of sections already assigned.
Labs: (week 2) Jan 9 Lab 1: Project 1 help and intro to image raster structure


Content of future weeks may change. )
Week: Material
Week 1
(Jan 3, 5)
Introduction. Principles. Basic calculus. Linear interpolation. Convolution.
Week 2
(Jan 10, 12)
Raster Structure. Storing Values, Vectors, bases, transforms, and coordinates. Taylor expansions. Separable Convolution.
Week 3
(Jan 17, 19
Isocontours (Mathematica bilinear math .nb, .nb.pdf). Color: perception and representation. Colormaps.
Week 4
(Jan 24, 26)
3D Graphics Primer, Volume rendering ingredients.
Week 5
(Jan 31, Feb 2)
Volume rendering, Newton-Raphson root-finding.
Week 6
(Feb 7, 9)
Transfer functions, Memory Locality. Parallelization with Pthreads.
Week 7
(Feb 14, 16)
Vector fields, critical Points. Integrating paths through vector fields.
Week 8
(Feb 21, 23)
Derivatives of vector fields, Eigensystems (Mathematica notebook .nb, .nb.pdf )
Week 9
(Feb 28, March 2)
Tensor data and its sources; tensor visualization techniques and applications.
Week 10
(March 7)
In-class final.


CS154 is a prerequisite, because of the programming work in C, and the need to be aware of how things are actually working at the level of the CPU and its interaction with the memory heirarchy. Also, your math background should include basic linear algebra.

Grading and Assignments

The following items determine the class grade, according to their percentages: All HW deadlines are at 9am, and project deadlines at 9pm, unless otherwise noted, so that you can sleep at night. HWs are due on wednesdays, projects on thursdays, on alternate weeks. See this week-by-week diagram of the planned assignment dates so that you can plan your quarter accordingly. More work will sometimes be requested of students registered in 33710. For the projects, a 23710 student may pair with a 33710 student, but the work required will be that for 33710 students. Thoughtful class participation (such as asking and answering questions) may also influence your final grade.

Late Policy

Late work is not graded. However, throughout the quarter, you may get up to four 24-hour extensions (“late-chips”) on any of the assignments, except HW1 and Project 1 (not having extensions on these first two assignments helps grading and your judgement about whether this class is a good fit for you). Only one extension may be used per assignment. You request late-chips at, but must do so before the assignment deadline. In the case of two students working in a pair for a project, both students use their extension at the same time. Exceptional circumstances may warrant additional consideration, at the instructor's discretion (post a private question in the per-assignment folder on Piazza). It is hard to be generous with a student panicking near the deadline about a situation that could have been anticipated earlier.

Communication and Resources

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).