Resources |
More
Resources |
Home
Works |
Announcements |
·
Introduction to Computer Graphics 2.
Example 2 ·
Texture |
Sample example-Menu using GLUT For
instructions on how to install OpenGL with devcpp (Click Here) Tutorials: |
|
|
|
|
|
|
Graphics is a flourishing field within computer science. Driven by the tremendous increase in speed and quality of hardware and software, it has rapidly gained popularity among a wide variety of users. With applications as far-reaching as special effects, graphical user interfaces, information visualization, art, industrial design, education, computer games ranging from Doom 3 to The Sims, virtual reality, and the Internet, computer graphics plays an increasingly important role in our lives, both practically and culturally. This course aims to be a comprehensive introduction to basic concepts and algorithms in this field, and topics covered will include the fundamentals of rendering geometric primitives, 2D and 3D transformations, color theory, 2D image filtering, simple illumination models, and GPU shaders.
The official prerequisites for CS480 is CS284. Though some introduction to linear algebra will prove to be helpful, none is required or assumed. In addition to learning about computer graphics, CS480 is a great way to familiarize yourself with C/C++ and systems level programming.
Lectures:
Sunday, Tuesday, Thursday, 1:15 PM-02:15 PM in PH6 102, See map
Instructor: Dr. Yaser Khamayseh
Office: D1 L0
Office
Hours: 10:15 to 11:15 working days
Labs: TBD
TA: Miss Enas
TA Office Hours: By appointment only
Syllabus: get a copy
Description: The goal of this class is to learn
essential computer graphics concepts and to learn how to write computer
graphics applications in OpenGL. We will cover graphics processor unit (GPU)
programming using the OpenGL
Shading Language (GLSL). GPUs are widely used today to drive cutting-edge
3D game engines, virtual reality simulations, and film pre-production. GPUs have
changed computer graphics and how we teach it. Students will learn how to
program GPUs to perform a variety of tasks, such as 3D lighting, animation,
image processing, and special effects.
Grading: Students will be graded on weekly homework assignments, in-class
participation, and a final project and presentation. There will be no exams.
The final grade will be composed as follows:
First
Exam............................................................................
15%
Second Exam........................................................................
15%
Final
Exam............................................................................
40%
Homeworks...........................................................................
15%
Final Project..........................................................................
15%
The professor for CS480 is Yaser Khamayseh. The Head TA this year is Miss Enas.
Topic 1: Introduction. Course overview. What is computer graphics? GPU overview.
Lecture and section material:
·
Photo
Tourism Preview (QuickTime video)
·
Complex city environment demo (WMV
video)
·
I-8 game trailer (WMV video)
· Multi-Touch Interaction Research (link and video)
Topic 2: Drawing Figures
Lecture and section material:
You will start with a warm-up assignment. Next, you will start a series of assignments that are an important part of the 2D and 3D rendering pipeline. The course will end with you writing a working 3D modeler/renderer using the code you have written in the previous assignments. You should note that each assignment builds on the others, and you are expected to reuse what you wrote in previous programs.
Hence, design your programs in as modular a fashion as possible, allowing for extensibility. It should be clear that falling behind is not a good idea for this course, so start early. If part of a program is broken, you may need to fix it before you can continue in order for the next program to work. Why did we decide to make the assignments build upon one another like this? Because you couldn't finish the last assignments in two weeks, so we give you [your own] code as support. This is also a perhaps painfully realistic development situation, where good design early on will pay for itself many times over when extended. An interactive 3D modeler, the culmination of your work, is a complex application (and is really neat to play with). By the time you're done with 123, you will have built and will know each component piece of the modeler backwards and forwards, and will be using no support code (save for some very thin wrappers around OpenGL and QT).
Grading for CS480 will include optional interactive grading sessions. Basically, this means you will have an option to be present when TAs grade your program.
Some assignment will include a separate written algorithm component. The algorithm will be a paper handin you will need to submit a few days after the assignment is given out. In the algorithm handin, you will answer questions that are designed to lead you through the tricky portions of the given assignment. It is in your best interest to fully understand the answers before you try writing any code.
The primary text for this course (and for CS224) is:
F.S.
Hill, Jr. and S.M. Kelley, Computer Graphics Using OpenGL: International
Edition. 3rd Ed. Prentice Hall publishers. 2008. ISBN13: 9780131362628, ISBN10:
0131362623.
Prerequisites: You will get the most out of this course
if you:
We
will review linear algebra concepts as needed throughout the course, so don't
worry if you're rusty in these areas. If you haven't seen C/C++ at all, you may
have trouble keeping up in the course unless you pick it up quickly in the
first few weeks.
We
recommend (but do not require) the following books:
Required Hardware: You
will need a DirectX 9-class graphics card (about 2002 or later) to complete the
homeworks. Please ask us if you're uncertain if your graphics card has the
features needed for the course. The computers in our labs should be good enough
for the assignments and example programs throughout the semester, but I am not
sure of the status of installing the required libraries and packages, so you
will need your own graphics card in the meantime.
Required Software: All software that you write
for your homeworks will have to compile under Microsoft Visual C++ 2005 and run
under Windows 2000/XP. Instructions for obtaining this compiler are given
below. You are welcome to develop on Linux or Mac OS X, but it is your
responsibility to make sure that we can compile and run your code on Windows.
Homework starter code will be given out as Visual C++ 2005 projects. Details on
submitting homeworks will be given in each homework assignment description.
Microsoft Visual C++ 2005: Microsoft offers a free
version of its C/C++ compiler called Microsoft Visual C++
2005 Express Edition. This version contains a compiler (with an optimizer),
debugger, and a graphical integrated development environment (IDE) --
everything you need to complete the homeworks. Instructions on getting started:
OpenGL: A tutorial
on setting up GLUT and freeGLUT on the different Visual Studio .NET compilers.
Alternatively, you can read Appendix 1 in Hill's book.
Class will meet on Sunday, Tuesday, and Thursday from 11:15 to 12:15 in PH2 106. Lecture slides will be available for viewing and/or printing on-line from the CS480 Web page.
The TAs will arrange help sessions for each of the assignments and more difficult topics, if necessary; these will be announced on the CS480 Web page. Stay tuned! If you feel a help session would be useful to clarify a topic, feel free to contact the Head TA by mailing. Assignment-based help sessions will take place around the algorithm handin deadline, in order to help you think about and work out the design issues. Help sessions will be question-driven, so be sure to write down any questions you have and bring them with you. You will have access to interactive educational java applets ("exploratories") specifically designed for CS480 and implemented mostly by undergraduates.
For many years, CS480 has been offered exclusively in C++. Knowledge of the principles of object-oriented programming (OOP) is a prerequisite for this course. If you are unfamiliar with OOP, CS480 may not yet be the course for you.
A note to those of you who don't yet know C++: highly motivated and capable students are allowed to take the course without knowing C++ or C. However, you must spend extra time at the beginning of the course teaching yourself C++. A Java to C++ transition document as well as a list of recommended C++ books are available on-line on the CS480 home page. Also, there will be a C++ mini-course running early in the semester. Check the website for times and location. If you don't have C++ experience, attendance at the mini-course is mandatory.
While the TAs are willing to answer a few C++ language questions, TA hours are a valuable student resource that we have to devote to teaching graphics, not teaching languages. There will be no special provisions built into the curriculum for students learning C++. Programs will be due at the same time for everyone as well as graded on the same scale.
CS480 does not support any integrated development environment. We expect that you will be writing, compiling, and testing your programs using whatever your favorite tools happen to be.
In addition, we will be requiring a paper algorithm handin with some assignment. Check the course syllabus online for algorithm worksheet due dates, and turn your completed algo into the handin bin marked CS480 on the second floor of the CIT.
You will be expected to hand in all your source code using the CS480_handin script and your algorithm on paper. Your working source code should be handed in on-line by 11:59 PM on the due date, or the deadline announced; exact handin procedure will be in the assignment handout.
Grades will be determined based on the exams, and programming assignments and the algorithm handins. However, to get credit for the course, you must complete all the assignments. As in all other computer science courses at Brown, you have to hand in a working solution for all programming assignments in order to be eligible for a passing grade. Please note the adjective working: if you receive a grade of NC (no credit) on any of the assignments (before late penalties are deducted), you will be expected to revise your program and hand in an acceptable version if you want to pass the course. Also note that the reverse implication is not intended: handing in all assignments does not guarantee that you will pass the course; your accumulated points will determine that. And as an example, handing everything in on the last day of classes will not be looked upon favorably.
The algorithm handins are a great way to get started thinking about how to approach an assignment. For each assignment there will be a sheet with specific questions for you to answer. The algorithm question sheet will be handed out with along with each assignment. You should write your responses to the questions in the space provided on the algorithm handout (neatly, please!) or feel free to type up answers. Algorithms will not be graded if they cannot be read. Hand in the completed handout to the CS480 handin bin located next to the TA room. As mentioned above, the algorithm handin will constitute 10% of the corresponding assignment's grade.
Algorithm answers should be clear and succinct. Don't just start writing. Think about it first. The intention of the algorithms is to give students a place to clearly describe the concepts. If we have to stop and try to figure out what you're saying, you're not saying it clearly enough. If we ask you to describe a section of code, you should probably go with a description, or pseudocode, rather than actual C++ (unless there are parts that are incredibly simple, such as loops, which are almost easier to read in actual code).
We highly recommend that you make a copy of this handin for yourself to reference when you actually start coding. You cannot apply any late days to these handins, since the solutions will be handed out immediately after the deadline. If you are sick or have another legitimate excuse approved by the department, your assignment grade will be purely based on your program. No other exceptions will be made.
We will be offering students the option of having their assignments graded interactively with a TA. Once each assignment has been handed in, each TA will hold grading hours on demand. We highly recommend that you come to observe and answer questions although it is not mandatory (it will only work in your favor). The TAs will go over the assignment rubric with you and address any concerns or questions you may have at that time. Actual grades may be assigned either at the end of the interactive grading session or at a later time, per the TA's judgement. To avoid misunderstanding and to ensure swift, painless grading, the following rules will be strictly enforced:
1. During the session, students should only answer questions asked by the TA. Students will be given the opportunity to volunteer information in the beginning and at the end of the grading session.
2. If there is a disagreement between the student and the TA regarding a point deduction, the argument should wait until the end of the grading session. If the disagreement cannot be settled, then the student may choose to contact the Head TA. If the student still disagrees with the Head TA's judgment, an appeal can be made to Andy directly.
3. TAs will explain why each deduction is made verbally as they grade.
4. TAs may ask any questions regarding the assignment.
5. All grading is based largely on functionality, but TAs may choose to look at any of your code.
6. Students are encouraged to bring printed source code with them so that they may answer questions more effectively.
7. You cannot change which TA grades your assignment.
If you cannot make a particular TA's grading hours, your assignment will be graded normally.
We expect that at this point you have all had a thorough grounding in the principles of good software design. Most of the programs are relatively small, and shouldn't require hours and hours of design work. While grading, we will be looking mostly at the functionality, stability, and speed of your implementation. However, if a program is clearly poorly designed, it will affect your grade. But for the most part we are trusting your maturity as software engineers. The things we care the most about are that you 1) avoid repeated code by thinking about good class design in advance, and 2) don't do anything grossly inefficient. These engineering concepts are very basic.
Here are the relative weights of the assignments, subject to change with notice on the CS480 home page:
There is ample room for bells, whistles, and other credit-garnering efforts on the part of ambitious programmers. You are invited to get creative, as long as it does not make you late. Rewarding bells and whistles with extra credit is left to the discretion of the instructor and the TAs, so we strongly encourage you to discuss your creative plans with a TA before you forge ahead to make sure that they are considered appropriate for credit. Also, keep in mind that bells and whistles should only be done after the standard assignment is fully working since they won't count in lieu of missing or buggy features! CS480 is a great vehicle for extra credit: if you finish a program a little early, seek appropriate inspiration and add something fancy.
This set of assignments probably looks like a burden, but in fact, if approached sensibly (i.e., working steadily), you will have sufficient time for each and every one. The normal load is about 15 hours per week. By the time you take CS480 you are expected to be a competent OOP programmer in C++, with good design and debugging habits, and able to turn assignments in on time. Good time management will make this course much more enjoyable.
Your TAs realize that sometimes you may have schedule conflicts -- an exam on the day your program is due, etc. Unfortunately, we can't give extensions for academic overload, but you do have the option of handing your program in late
If you are forced to hand an assignment in after the due date, your grade will then be subject to a penalty, depending on the lateness of your handin. For every day your handin is late, you will lose 10% off of your grade for that assignment. No credit will be given for any assignment which is handed in more than four days after than original assignment due date.
Please be aware that assignment deadlines are strict: a handin that's ten minutes late is still late. Plan accordingly, especially when the lab is full and the server is heavily loaded.
Algorithms are graded and returned soon after the handin date along with the answers. Therefore, they cannot be accepted late.
Extensions can be granted for medical reasons if you present the Head TA with a note from Health Services, or for other reasons with a note from a dean. Other extensions will be granted extremely rarely and only at the discretion of the Head TA.
You have three late days which you can use over the course of the semester to accommodate schedule crunches. Your late days will be optimally assigned by us at the end of the semester.
There are two ways of getting questions answered and problems solved. You can talk to a TA during TA hours. You may not ask TAs questions when they are not on hours or call the TAs at home. Also, you should not e-mail the TAs with questions specific to your implementation of the assignment -- those kind of questions should be brought to a TA on hours. However, if there are no TA hours which you can attend, let the Head TA know about this and we will try our best to accommodate you.
The TA hour listing will be available from the CS480 home page and TA hours will be held in the TA room. When TA hours are rescheduled or exceptions are made, these will be announced on the CS480 web page and/or on the Google Group. Do not expect TAs to bring up your code on screen and help you debug problems. This is left up to their discretion, and is not part of their job description.
If you have a graphics question that won't be of interest to the class at large, you can mail the TAs about it by sending mail to the alias. Please use good judgment when doing this and consider how urgent your problem is so that the TAs won't be swamped
If you have administrative questions, or if you disagree with a TA's grading, discuss this with the Head TA. You can either show up for TA hours.
The CS480 web page (https://www.cs.just.edu.jo/~yaser/courses/cs480/cs480.htm) is a great source of on-line course material. A wide variety of things like lectures, handouts, the syllabus, TA hours, and software guides can be found on this site.
As we mentioned before, CS480 is a continually evolving course which has been updated again this year. Most of the changes were made in response to comments from last year's students. As such we are bound to have our own `bugs' hiding in the corners. Please read everything we hand out very carefully. If there is something which you do not understand, or which is not stated very clearly, please let us know so we can fix it right away.
This applies to the material discussed in lecture as well. Give us constructive criticism on all aspects of the course. The more feedback there is, the better we can make this course for you as the semester progresses, and the better we can make it for the next twenty-five years of Brown computer graphics students!
We just went through a lot of heavy talk. Please take all of it seriously, but also remember that we're not trying to scare you: the TAs are here to help you! We're just clearing preliminaries and establishing the ground rules. With that done, we hope you'll have as much fun as we did in CS480.