CMSC 23710/33710
Scientific Visualization, Winter 2015

Instructor: Gordon Kindlmann
TAs: Denis Pankratov, Sean Laguna
Lectures: Tuesday & Thursday 1:30pm-2:50pm; Ryerson 251
Labs: Mondays 2:00pm-3:20pm (Sections 1 and 2), 3:30pm-4:50pm (Sections 3 and 4); CSIL 1 and 2
Office hours: 
Kindlmann (Ryerson 161-B): Mon 10am-11am, Thur 3pm-4pm
Pankratov (CSIL 1): Tue 6pm-7pm
Laguna (CSIL 1): Wed 7pm-8pm


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 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 scientific computing on scientific data. Programming projects will be in C.
[ Quick links: Piazza Q&A  |  SVN for SciVis |  scivis-2015 on Phoenixforge |  Software for SciVis ]


Homeworks and projects are due at 11:59pm unless otherwise noted.
Homeworks: Mon Feb 9 Mon Feb 16 Homework 4: Volume rendering
(Homework 3 cancelled)
Sat Jan 17 Thu Jan 22 Homework 2: Vectors, Bases, and unu
Tue Jan 6 Mon Jan 12 Homework 1: Math Background
Projects: Fri March 13 Wed March 18 Project 4 (p4vectr): Vector field visualization by LIC
Tue Feb 17 Thu Feb 26 Project 3 (p3rendr): Volume rendering with 3D convolution
Mon Jan 26 Wed Feb 4 Project 2 (p2mapr): Colormapping 2D convolution, marching squares (See Lab2)
Thu Jan 8 4:59pm Fri Jan 16 Project 1 (p1plotr): Plotting convolution
Readings: Mon Feb 9 Tue Feb 17
Thu Jan 22 Thu Jan 29
Tue Jan 15 Tue Jan 22 FSV sections 1.10, 1.11, (plus for 33710 students: 1.13), 2.0, 2.1
Tue Jan 13 Tue Jan 20 FSV sections 1.0 through 1.9
Tue Jan 13 Thu Jan 15 FSV sections 3.0 and 3.1
Thu Jan 8 Mon Jan 12 Chapter 0, and Sections 4.1 and 4.2 of the Foundations of Scientific Visualization (FSV) class notes (v0.50). The pdf directory is password-protected (given in class). The FSV notes will be updated throughout the quarter, but not in a way that changes section numbering.
Labs: Mon Feb 23 Mon Feb 23 Lab 3: Project 3 work, now with iso
Mon Jan 26 Mon Jan 26 Lab 2: getting going on Project 2
Mon Jan 12 Mon Jan 12 Lab 1: getting going on Project 1


Content of future weeks may change.
Week: Material
Week 1
(Jan 6, 8)
Introduction. Principles. Basic calculus. Linear interpolation. Convolution. Raster Structure
Week 2
(Jan 13, 15)
Vectors, bases, transforms, and coordinates. Tensors. Derivatives.
Week 3
(Jan 20, 22)
Color: its perception and representation. Colormaps. Taylor Series. Isocontours and Implicit Surfaces. Homogenous coordinates.
Week 4
(Jan 27, 29)
(Analysis of bilinear interpolation isocontours in Mathematica .nb .pdf) Scalar field structure from derivatives and topology. Graphics primer. Direct volume rendering basics.
Week 5
(Feb 3, 5)
Transfer functions for direct volume rendering.
Week 6
(Feb 10, 12)
Vector data and visualization.
Week 7
(Feb 17, 19)
Vector data and visualization.
Week 8
(Feb 24, 26)
Streamline integration, vector field Jacobian and critical point characterization (Mathematica nb pdf)
Week 9
(March 3, 5)
Project 3 discussion, Intro tensors.
Week 10
(March 10)
Tensor glyph design (see also this paper's slides)


In this offering of SciVis programming projects will be completed in C, whereas past offerings have used Python. The nature of the programming projects will be more technical and low-level than in the past (more like a “systems“ class). Therefore, cs154 is a prerequisite. Also, your math background must include basic linear algebra.

Grading and Assignments

The following items determine the class grade, according to their percentages: All HW and Project deadlines are 11:59pm, unless otherwise noted. The Thursday deadlines alternate between HWs and Projects. 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

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 3 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 3 hours, the highest grade it can get is 88.888%. Otherwise, if less than 6 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.

If you can't finish something on time, it is far better to finish it in some form, as soon as possible, rather than being a perfectionist and taking much longer. You don't want to have a zero grade for any assignment.

In addition, each student is allotted three 24-hour extensions (“late-chips”), to be applied to any homework or programming project, except the first homework and the first project (this speeds their grading, to help you make an informed decision about staying in the class). You can't use multiple late-chips for a single assignment. 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 before the assignment deadline, via the work-group server. 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).