<html>
<head>
<title>
Course outline
</title>
</head>
<body>

<h2>
Course outline
</h2>

<blockquote>
CS 348B - Computer Graphics: Image Synthesis Techniques
<br>
Spring Quarter, 1997
<br>
Marc Levoy
<br>
Handout #1
<br>
</blockquote>


<p>
<hr>

<h3>Table of contents:</h3>
<ul>
<li>	<a href="#personnel">Personnel</a>
<li>	<a href="#lectures">Schedule of lectures</a>
<li>	<a href="#textbooks">Textbooks</a>
<li>	<a href="#reader">Course reader</a>
<li>	<a href="#reserve">Reserve readings</a>
<li>	<a href="#prerequisites">Course prerequisites</a>
<li>	<a href="#programming">Programming assignments</a>
<li>	<a href="#written">Written assignments</a>
<li>	<a href="#grading">Grading policies</a>
<li>	<a href="#hardware">Hardware and software</a>
<li>	<a href="#online">Online services</a>
<li>	<a href="#competition">Rendering competition</a>
</ul>

<p>
<hr>

<a name="personnel"></a>
<h3>Personnel</h3>

<h4>Instructor</h4>
<blockquote>
<a href="http://www-graphics.stanford.edu/~levoy/">Marc Levoy</a>
<br>
Gates Computer Science Building, Room 366
<br>
levoy@blueridge.stanford.edu
<br>
http://www-graphics.stanford.edu/~levoy
<br>
(415) 725-4089
<br>
Office hours: Tue/Thu 11:00 - 12:15 and by appointment
</blockquote>

<h4>Teaching assistant</h4>

<blockquote>
<a href="http://www-graphics.stanford.edu/~lucasp/">Lucas Pereira</a>
<br>
Gates Computer Science Building, Room 360
<br>
lucasp@graphics.stanford.edu or
<br>
cs348btas@graphics.stanford.edu
<br>
http://www-graphics.stanford.edu/~lucasp
<br>
(415) 723-3154
<br>
Office hours: Mon/Wed 4:00 - 5:00 and by appointment

<p>
Project 2 Extra Office Hours (in the Sweet Hall graphics lab):<br>
        <dd>Friday, May 9, 8-10 pm   (TA) <br>
        <dd>Sunday, May 11, 8-10 pm   (TA)<br>


<p>
Note: on the weekends immediately preceeding the due dates of each programming
assignment, the instructor and teaching assistant will hold additional office
hours <em>in the Sweet Hall SGI lab</em>.  Hours TBA.  In addition, there
will be a televised help session (SITN channel E4) on the Friday 
of the week each programming assignment is assigned (April 11, May 2, 
and May 23), in Gates B01, 3:15-4:05.
</blockquote>

</ul>

<h4>Secretary</h4>
<blockquote>
<a href="http://www-graphics.stanford.edu/~ada/">Ada Glucksman</a>
<br>
Gates Computer Science Building, Room 368
<br>
ada@graphics.stanford.edu
<br>
(415) 725-3724
</blockquote>

</ul>

<p>
<hr>

<a name="lectures"></a>
<h3>Schedule of lectures</h3>

<p>
This course surveys the theory and algorithms of realistic image synthesis,
a.k.a. rendering.  There will be nineteen lectures.  The topics to be covered,
with approximate dates, are:

<p>
<blockquote>
April 1 - What is rendering?
<br>
April 3 - Basics of ray tracing
<br>
April 8 - Sampling theory
<br>
April 10 - Anti-aliasing I: regular and stochastic supersampling
<br>
April 15 - Anti-aliasing II: adaptive supersampling, analytical filtering
<br>
April 17 - Texture mapping I: synthesis, parameterization, resampling
<br>
April 22 - Texture mapping II: prefiltering, multipass algorithms
<br>
April 24 - Light transport and the rendering equation
<br>
April 29 - Texture synthesis (lecture by TA)
<br>
May 1 - Local illumination I: radiometry, illumination
<br>
May 6 - Local illumination II: analytical reflection models
<br>
May 8 - Local illumination III: empirical reflection models
<br>
May 13 - Image-based rendering (lecture by TA)
<br>
May 15 - Spectral representations
<br>
May 20 - Global illumination I: shadow algorithms, distribution ray tracing
<br>
May 22 - Global illumination II: radiosity formulation
<br>
May 27 - Global illumination III: radiosity solution methods
<br>
May 29 - Participating media, volume rendering
<br>
June 3 - Non-photorealistic rendering
</blockquote>

<p>
My handwritten notes for these lectures will be scanned and placed online the
evening before each lecture.  They will appear in a list on the
<a href="http://www-graphics.stanford.edu/courses/cs348b-97/">
course home page</a>.  I will also try to have them ready as xeroxed handouts
on the morning of the lecture.

<p>
<hr>

<a name="textbooks"></a>
<h3>Textbooks</h3>

<blockquote>
Michael Cohen and John Wallace,<br>
<em>Radiosity and Realistic Image Synthesis,</em><br>
Academic Press.
</blockquote>

<blockquote>
Andrew Glassner,<br>
<em>An Introduction to Ray Tracing,</em><br>
Academic Press.
</blockquote>

<blockquote>
Foley, van Dam, Feiner, and Hughes,<br>
<em>Computer Graphics: Principles and Practice,</em><br>
second edition in C, Addison-Wesley.
</blockquote>

<p>
The book by Cohen and Wallace is the best tutorial I've seen on the rendering
equation and its solutions.  The book by Glassner steps you through the basics
of writing a ray tracer, which is our project for the quarter.  The textbook by
Foley, van Dam, Feiner, and Hughes is required for CS 248, which covered
roughly the first half of the book.  In this course, we will cover chapters 13
through 20.  The book is encyclopedic but too superficial for this course,
hence my decision to augment it with other readings.

<p>
<hr>

<a name="reader"></a>
<h3>Course reader</h3>

<p>
We will also read chapters from research monographs, papers from current
journals and conference proceedings, and excerpts from conference tutorials.  A
course reader containing this material will be ready within a week.

<p>
<hr>

<a name="reserve"></a>
<h3>Reserve readings</h3>

<p>
I am placing the following materials on 2-hour reserve at the Stanford
Math/Computer Science Library.
<ol>
<li>	Michael Cohen and John Wallace,
	<em>Radiosity and Realistic Image Synthesis,</em>
	Academic Press.
<li>	Andrew Glassner,
	<em>An Introduction to Ray Tracing,</em>
	Academic Press.
<li>	Foley, van Dam, Feiner, and Hughes,
	<em>Computer Graphics: Principles and Practice,</em>
	second edition in C, Addison-Wesley.
<li>	Ronald Bracewell,
	<em>The Fourier Transform and Its Applications,</em>
	second edition, McGraw Hill.
<li>	George Wolberg,
	<em>Digital Image Warping,</em>
	IEEE Computer Society Press.
<li>	Robert Siegal and John Howell,
	<em>Thermal Radiation Heat Transfer,</em>
	second edition, Hemisphere Publishing.
<li>	Francois Sillion and Claude Puech,
	<em>Radiosity and Global Illumination,</em>
	Morgan Kaufman.
<li>	Andrew Glassner, <em>Graphics Gems,</em>Academic Press.
<li>	James Arvo, <em>Graphics Gems II,</em> Academic Press.
<li>	David Kirk, <em>Graphics Gems III,</em>	Academic Press.
<li>	Paul Heckbert, <em>Graphics Gems IV,</em> Academic Press.
<li>	Alan Paeth, <em>Graphics Gems V,</em> Academic Press.
</ol>

<p>
Numbers 1 through 3 are the textbooks for the course.  Numbers 4 through 7 are
textbooks and monographs that cover in depth the mathematical tools and
empirical results that I will use in class.  You are not expected to master
this material beyond the level I present in class.  I make these materials
available primarily for the curious.  Numbers 8 through 12 are compendiums of
graphics tricks, hacks, and useful algorithms.  These books are so popular that
if I don't place them on reserve, you'll have to buy them to read them - not a
bad idea in any case.
<p>
Also on reserve (permanently) are the proceedings of ACM Siggraph, the premiere
forum for publication of research results in the field of computer graphics.  I
will frequently reference Siggraph papers during my lectures.  I encourage you
to browse these books; you will find them inspirational in times of suffering
and a wellspring of good ideas for your final assignment.

<p>
<hr>

<a name="prerequisites"></a>
<h3>Course prerequisites</h3>

<p>
This course assumes familiarity with computer graphics at the level of CS 248.
In particular, I assume an understanding of the matrix representation of 3D
transformations (FvDFH, chapters 5 and 6), basic line and polygon scan
conversion methods (FvDFH, chapter 3), and commonly used hidden-surface
algorithms (e.g. Z-buffer, ray tracing) (FvDFH, chapter 15).  To make sure
everybody is up to speed, I will review the basics of ray tracing in my second
lecture.
<p>
I also assume knowledge of calculus and linear algebra (one college-level
course of each).  Knowledge of probability, statistics, and Fourier transforms
is helpful in certain parts of the course, but I do not require it.

<p>
<hr>

<a name="programming"></a>
<h3>Programming assignments</h3>

<p>
The project for this quarter is to write a ray tracer.  The project is divided
into three assignments.  In assignment #1, you will assemble the basic building
blocks for tracing rays through scenes composed of simple geometric primitives.
In assignment #2, you will implement some form of performance acceleration.  In
assignment #3, you will extend your ray tracer in a way of your own choosing.
Example extensions are adaptive stochastic supersampling, the rendering of
textures, a more sophisticated local illumination model, distribution ray
tracing, or volume ray tracing.  Due dates for each assignment will be as
follows:

<ol>
<li>	Basic ray tracer -
	assigned Tuesday April 8, due Monday, April 21
<li>	Accelerated ray tracer -
	assigned Tuesday April 29, due Monday, May 12
<li>	Extending your ray tracer -
	assigned Tuesday May 20, demos Thursday, June 5,<br>
	writeups due Monday, June 9
</ol>

<p>
<hr>

<a name="written"></a>
<h3>Written assignments</h3>

<p>
In addition to the programming assignments, there will be two written
assignments designed to test your command of the more theoretical aspects of
the course.  These will be interleaved with the programming assignments as
follows:

<ol>
<li>	Sampling, antialiasing, texturing -
	assigned April 22, due April 29
<li>	Light transport and illumination -
	Assigned May 13, due May 20
</ol>

<p>
<hr>

<a name="grading"></a>
<h3>Grading policies</h3>

<p>
<b>Evaluation criteria:</b>
The first two programming assignments will each count as 20% of your grade, the
written assignments will each count as 15%, and the last programming assignment
will count as 30%.  There will be no exams.
<p>
<b>Collaboration:</b>
You may discuss the first two programming assignments with friends, but you are
expected to implement your own solutions.  On the third programming assignment,
you are permitted (and encouraged) to form teams of two or three people and
partition your planned extensions among the team members.  Teams may discuss
this assignment with other teams, but each team is expected to implement the
extensions independently.  In particular, code must not be shared between
teams.  The written assignments must be individual efforts.
<p>
<b>Late assignments:</b>
Since each assignment builds on the previous one, it is important that
assignments be completed on time.  To allow for unforeseeable circumstances,
you will be allowed one weekday of grace during the quarter.  Beyond this, late
assignments will be penalized by 10% per weekday that they are late.  On
programming assignment #3, neither the demo nor the writeup may be late.

<p>
<hr>

<a name="hardware"></a>
<h3>Hardware and software</h3>

<p>
<b>Hardware:</b>
To do the assignments you will have access to the Stanford Graphics Laboratory.
The lab, located in two rooms in the basement of Sweet Hall, contains 14
Silicon Graphics Indigos XZs (100Mhz R4000 processor, 60K polygons/sec, 24-bit
frame buffer, and CD-quality digital stereo audio), and 18 Silicon Graphics
Indigo2 Extremes (250 Mhz R4400, 200K polygons/sec).  Students in
CS 348B have non-exclusive priority access to this laboratory, whose door is
protected by a combination lock.

<p>
<b>Software:</b>
To help focus your attention on the key ideas in each assignment, we will
provide an interactive Inventor-based front-end program that allows you to
assemble a scene from simple primitives, select viewing parameters, define
directional or point light sources, and specify reflectance properties for each
object in the scene.  We will also provide an X support package that allows you
to build a custom user interface for your ray tracer.

<p>
<b>Using other platforms:</b>
Our front end-program and X support library will be installed on the Stanford
Graphics Laboratory machines in Sweet Hall.  We may also provide one or more 3D
modeling programs.  If you prefer working in your dorm room or workplace, and
have access to a machine there, you are welcome to do the assignments on your
own machines.  We will make as many of these tools available via ftp as we are
permitted by the terms of our licensing agreements, but we will not support
them on any other platform.  Moreover, your code <em>must</em> run on the SGI
machines in Sweet Hall.  In particular, we will grade your projects by running
your programs on an SGI using our own test data files, and assignment #3 will
be graded face-to-face in the Sweet Hall laboratory.  It is your responsibility
to copy and test your code on the Sweet Hall SGI's.

<p>
<hr>

<a name="online"></a>
<h3>Online services</h3>

<p>
<b>Student accounts:</b>
The Sweet Hall SGI workstations share accounts and file servers with the Sweet
Hall machine cluster.  All students with leland accounts automatically have
accounts on these machines. Home directories on these machines are shared with
other Stanford Computing Clusters using AFS.  If you do not have a leland
account, surf to
<a HREF="http://consult.stanford.edu/accountinfo/">
http://consult.stanford.edu/accountinfo/</a>.
<p>
<b>Course directory:</b>
Once your account is active, log in to one of these workstations and browse
through the directory /usr/class/348b.  This will be your course directory.
All software and data relevant to the course will be placed here.  In
particular, this is where you will find the front-end program and X support
package for the programming assignments.  See the README file for more
information.  A copy of these tools will also be placed at the anonymous ftp
site
<a href="ftp://ftp.stanford.edu/class/cs348b">ftp.stanford.edu</a>
<p>
<b>World Wide Web:</b>
All class handouts, assignments, reading lists, and lecture
notes will be available via the Web at URL
<a href="http://www-graphics.stanford.edu/courses/cs348b-97">
http://www-graphics.stanford.edu/courses/cs348b-97</a>.  Hardcopy of all
materials will be made available in class and will be shipped by courier to
SITN students in the usual manner.  In the event that these hardcopies do not
arrive before class time, SITN students can find them on the Web, and early
birds can spool them to a printer before class starts.  Copies will also be
placed in the handout cabinet in Gates Hall, wing 3B, copy room, (room 377).
<p>
<b>Newsgroup:</b>
A newsgroup has been set up for this course.  It is called
<a href="news:su.class.cs348b">su.class.cs348b</a>.
Feel free to post news to this group.  It is intended for posting questions to
your fellow students, flaming at the professor (I may, however, read the
newsgroup on occasion!), looking for project partners, etc.
<p>
<b>Emailing addresses:</b>
To send email to the instructor or a particular TA (in the event we end up with
more than one TA), use the individual email addresses listed earlier in this
document.  For questions directed to the TAs jointly and for other purposes
that we will announce throughout the class, use
<a href="mailto:cs348btas@graphics.stanford.edu">
cs348btas@graphics.stanford.edu</a>.
<p>
<b>Class emailing list:</b>
For items of urgent and universal importance such as clarifications in the
assignments or bugfixes related to the support package, your instructors will
use an emailing list to contact you, so please make sure we know your email
address, i.e. <em>fill in the student questionnaire!</em>
<p>
<b>SITN broadcast and recording:</b>
To insure that I see the smiling faces of my on-campus students throughout the
quarter, I have decided to block on-campus broadcast of the course.  For those
who cannot attend a particular class, the lectures will be videotaped by SITN
and made available through the library system in the usual manner.  If this is
unworkable for you, let me know.
<p>
<hr>

<a name="competition"></a>
<h3>Rendering competition</h3>

<p>
In case the delight of learning does not sufficiently motivate you to exert
yourselves heroically on the programming assignments, there will also be a
rendering competition.  At 4:00pm on Thursday, June 5, a judging will be held
to select the best rendering made using the ray tracer you have written in the
course.  While grades for the projects are based solely on "technical merit",
the competition will be judged on both "technical merit" and "artistic
impression".  The jury, to be named later, will consist of computer graphics
experts from both industry and academia.  There will be several awards and one
grand prize - an all-expenses-paid trip to Siggraph '97 in Los Angeles.  Total
value: about $1,000.

<p>
<hr>
<address>
levoy@cs.stanford.edu
</address>
<b>Copyright &copy; 1997 Marc Levoy</b>
<br>
Last update:
Wednesday, 07-May-1997 17:04:31 PDT

</body>
</html>
