Spring 2000

Department of Computer Science


Contents


What's New?

April 26: WebCT now includes your semester grade so far. This includes everything except the final project, which is 25% of your grade.

April 18: rotatebox.c now includes comments at the top showing how to compile this on one of our Suns or Linux boxes.

to Contents


Weekly Schedule and Assignments

The assignment descriptions are available by clicking on the assignments in this table.
Homework
Programming
Dates
Topics
Read
Exercises
Assignments
Jan 18, Jan 20 Graphics Applications, Hardware Chap. 1-2
Jan 25, Jan 27 Lines, circles, polygon-fill Chap. 3 Hw 1, Due Jan 25
Feb 1, Feb 3 polygon filling Lab 1, Due Feb 3
Feb 8, Feb 10 2-D transforms Chap. 5 Hw 1 Redo, Due Feb 10
Feb 15, Feb 17 3-D transforms Chap. 11 Lab2, Due Feb 15th
Feb 22, Feb 24 3-D concepts and viewing Chap. 9, 12 Hw 2, Due Feb 22
Feb 29, Mar 2 Normal to a polygon; Basic lighting Chap. 10.1, 14.1 Hw 2 Redo, Due March 3, 5:00PM, under my office door
Mar 6 - Mar 10 Spring Break
Mar 14, Mar 16 visible surfaces Chap. 13 Lab 3, Due March 17th
Mar 20 "W" drop ends
Mar 21, Mar 23 Gouraud and Phong Shading Project Proposal Due March 23rd
Mar 28, Mar 30 Gouraud and Phong Shading
Apr 4, Apr 6 Depth Buffer, OpenGL
Apr 11, Apr 13 OpenGL Lab 4, Due April 11th, midnight
Apr 18, Apr 20 Quadrics and Superquadrics Chap. 10.3-10.4
Apr 25, Apr 27 OpenGL Textures, Smooth Curves Chap. 10.6-10.8 Apr 27, Present Project Progress Report
May 2, May 4
May 11 Project Presentations, 3:40-7:00PM, HP Classroom Project Written Reports due 3:40PM May 11th

to Contents


Semester Project Information

You will be required to design and complete a project. Projects may consist of just library work researching a graphics technique, the implementation and use of a graphics algorithm not covered in our assignments, or some combination of library and computer work. The purpose of the project is to give you a chance to learn more about an aspect of computer graphics that you are very curious about.

You must discuss what you plan to do with the instructor. Mid-semester you will be required to submit a short, three to four page written proposal of what you plan to do. You may be asked to modify the plan by the instructor. You plan must include a tentative timeline of at least five milestones.

This is a great chance to learn how to use LaTeX, a high-quality text formatting tool. As an example, here is a LaTeX file that produces this postscript file, from which you can produce this Adobe Acrobat PDF file. You may use this file as a start for your proposal.

At the end of the semester, you must submit a written report of at least ten pages, covering what your objective was, why it interested you, how you accomplished your objective, what you learned as a result, and the list of references and resources that you used. You will also present your project orally to the class with the aid of overhead transparencies or with a laptop and data projector.

Here is a list of project proposal titles for this semester. If you see someone else's project that sounds very similar to yours, you may discuss a team project with them and with the instructor. If you decide to work together, you must submit a new, joint proposal clearly stating what the responsibilities will be of each team member. Your team will be expected to produce much more than an individual project. Do not feel obligated to work with someone if they ask you to be on a team. The decision is yours.


Course Description

The goal of this course is to convey understanding of the process of modeling and generating images of 3D objects. We will start by studying the basic process of drawing primitive objects on a display (lines, circles, polygons). We will then look at the process of building two and three dimensional mathematical models of more complex objects, manipulating and combining these models, and projecting the models onto a two dimensional image space. Along the way we'll also spend some time on windowing systems and on drawing more complex primitive objects such as curves and surfaces.

Course work will involve reading the assigned textbook chapters, participating in discussions of the material in class, completing homework exercises, four to six programming assignments, and a semester project. Students will be required to write fairly complex C, C++, or Java programs involving matrix calculations and linked lists. The project will be of each student's own design, approved by the instructor. At the end of the semester, a written report must be turned in describe the methods followed and the results, and each student will present their project orally to the class. Projects may be based on library and web research with no programming effort, or they may be primarily a programming effort, perhaps implementing an algorithm not assigned in class, or they may be a combination of library research and implementation.

Prerequisites for this course are a good working knowledge of data structures such as linked lists, trees, symbol tables, and dynamically allocated structures. You will need to know how to implement these data structures in C, C++, or Java. Experience with debugging tools, such as gdb and ddd will be very helpful. This course will also draw on knowledge of 2D and 3D geometry of vectors and coordinate systems, and on the use of matrix algebra for coordinate transformations. To successfully complete this course, you should be familiar with material related to the above topics covered in M229 (Matrices and Linear Equations), CS200 (Algorithms and Data Structures), and CS314 (Software Development Methods).

to Contents


Time and Place

to Contents

Instructor and Graduate Teaching Assistant

Instructor: Graduate Teaching Assistant: to Contents

Text Books

The textbooks for this course are: The OpenGL Guide will be very handy for the second half of the course, but it is not required.

Students are responsible for doing the assigned reading prior to the lecture for which the reading assignment is indicated in the course schedule.

to Contents


Grading and Late Assignments

Grades will be based on approximately six homework exercises, five programming assignments, and the semester project. There will be no exams. Each contributes to the final semester grade by the following percentages:
Homework Exercises  20 % 
Programming Assignments  50 % 
Semester Project  30 %

For homework and programming assignments, the due date will be noted on the assignment sheet; assignments are due at the start of the class period on the due date. Assignments turned in after the start of the class in which they are due will be considered late. Assignments which are one class period late will be penalized by 10%. Assignments which are two class periods late will be penalized by 30%. After two class periods, late assignments will not be accepted.

Students are encouraged to talk with each other in general terms about what you are learning in this course. However, the work you turn in must be your own. Make sure that you write your own programs and assignments unless you are working as part of a team approved by the instructor. Do not copy another student's program (neither with nor without their knowledge) or write code for another student. When two programs are found to be substantially the same, cheating will be suspected and the parties involved will be asked to explain. The result could be zero credit for all parties. Additional guidelines related to academic integrity (cheating), incompletes and class attendance can be found in the department policy statement. The guidelines outlined in these documents will be followed in this course.

to Contents


Lab submission

  1. Create a directory with the name <your last name>_<SSN>_Lab#. For example
    mkdir Robert_123456789_Lab1       or
    mkdir Tom_987766666_Lab4
    
  2. Copy your programs into this directory (including Makefile and data). Make sure that your program can be compiled and run in this directory. For example,
    cp Makefile Robert_123456789_Lab1
    cp lab1.c Robert_123456789_Lab1
    cd Robert_123456789_Lab1
    make lab1  (checking to see if it compiles)
    lab1       (checking to see if it runs)
    rm *.o
    rm lab1    (delete the executable and obj files)
    
  3. Change directory to upper directory:
    cd ..
    
  4. Archive the directory in a tar file named lab#.tar, where # is the lab number:
    tar cvf lab1.tar Robert_123456789_Lab1
    
  5. Run the CS410 checkin program to check in your tar file:
    ~cs410/bin/checkin410 lab1.tar    (if running on a Sun)
    ~cs410/bin/checkin410hp lab1.tar  (if running on an HP)
    

    If your submission succeeds, you will find a file <your unix account name>-lab#.tar in directory ~cs410/Checkin:

    ls ~cs410/Checkin
    
      robert_lab1.tar
    

to Contents


On-Line Resources

E-mail others you find to the instructor and they will be added here.

to Contents