CSCI
340
(W '14), Interactive Computer Graphics
Winter 2014
|
Dr. Joshua Stough , Parmly 408
|
MWF 2:30 - 3:25PM
Office Hours: tbd
|
stoughj@wlu.edu, x8811 or (919) 357-0604 (txt welcm) |
Parmly 405
|
http://www.eg.bucknell.edu/~jvs008/teaching/CS340W14/CS340W14.html
|
Course Schedule
Overview
Computer Graphics is virtually ubiquitous in
industries from entertainment to design to medicine. As an art or
science, graphics is concerned with the generation of synthetic
images. In this course we will study the most flexible means for
generating graphics, which involves mathematically modeling objects,
cameras, lights and their interactions. We will use C/C++ and the
OpenGL graphics API to create online (real-time) high-fidelity 3D
graphics applications. We will also cover ray tracing, an offline (more computationally expensive) process that
can allow for more physically accurate light models and material
properties. Toward the latter part of the term, you will work as
part of teams and individually on projects of your interest that extend
the common framework that we will develop, and you will present these
advanced topics to the class.
In order to get us started quickly, we will take a
top down approach. Initially we will develop applications taking
advantage of powerful OpenGL tools that perform the complicated
mathematical modeling. We will then look 'under the hood' and
implement some of this functionality ourselves.
Is CSCI 340 For You?
- This is an upper level CS elective, and as such you should expect
to spend at least 12 hours per week outside of class on everything from
reading to debugging. You are also expected to show considerable
agency in problem solving.
- This course requires CSCI 209 or instructor permission. I
will host occasional workshop sessions on C/C++ syntax.
- It would be helpful in this course
to have had some calculus and linear algebra (how to take a derivative
of a
simple function, matrix algebra).
- Mathematical and statistical entities like matrix transformation,
the Gaussian and other modeling hacks, and others will be developed in
class.
Textbooks
Required: Angel/Shreiner,
Interactive Computer Graphics: A Top-Down Approach with Shader-Based
OpenGL (6th Edition), see here.
Optional:
Shreiner et al., OpenGL Programming Guide (6th
edition) - aka the Redbook and available in the advanced lab, see here.
Attendance, Grading, Late
Assignments
- Attendance is required.
- Grading breakdown: Tests and
Quizes 45%, Projects
3x15%,
Attendance and Participation 10%.
- There will be two individual projects and one group (of three) project. Late submissions are not accepted.
- I will defer to
the Counseling Center (see here).
- If you have an athletic event and will not be able to make a
deadline, you should tell me within a day of an assignment being
posted.
- Accomodations for qualified disabilities requires written
notfication in conjunction with Dean Bell of Student Academic
Support (see here).
Assistance from others, group work,
etc.
Computer Science is a difficult subject to learn on your own (like many
others). Talking through problems with mentors and peers can be
an exceptional learning tool. However, this sort of collaboration
can also be quite dangerous, as you may be underprepared to be tested
on your own. Thus, here are my guidelines for appropriate
collaboration, in order to better help you learn. Conduct in
gross violation of these guidelines will be considered a breach of
trust. In the below, an implementation
refers to a detailed explanation (such as code) of the programming
structures and object interactions for solving a problem.
- Your only sources for this course should be the book, links I
provide to you through the schedule, others in the course with you, and
me.
- Do not use other online materials. It is likely that coded
solutions to many of the homeworks are readily available on the
web. However, this material obviously constitutes implementation
details.
- I encourage you to discuss with each other broad solutions to
problems on assignments. However, when you sit down to code your
solution, it should be your work. Please acknowledge aid received
from other students. It will have no effect on my grading, and it
is the honorable thing to do.
- Do not compare code or implementation details with other
students before you have completed and submitted your work.
Discuss such detailed information only with me--I
am happy to discuss details and look at your code, and I will not count
it against you at all. I have found that in the vast majority of
non-typo cases, the mental exercise of running sample data through your
code illuminates the issue and leads to better understanding on your
part. Ignoring this exercise for convenience will hurt you. I
will help you with this exercise.
- After completing the assignment, feel free to discuss any aspects
of the assignment, including implementation details.