CS 430 Computer Graphics

If you send questions via e-mail, you should e-mail them to the TA and Professor Breen.

You can also get help with assignments in the Cyber Learning Center (10th floor of 3675 Market Street, inside CCI Commons).
Click here to see the TA hours. Click on "CS 430".

Course Page : http://www.cs.drexel.edu/~david/Classes/CS430

Recommended Textbooks:

  1. Computer Graphics: Principles and Practice (3rd Edition), John F. Hughes, et al., Addison-Wesley, 2014; ISBN 978-0-321-39952-6
  2. Introduction to Computer Graphics, by James D. Foley, Andries van Dam, et al. Addison-Wesley Pub Co, 1994; ISBN: 0201609215
Suggested Supplemental Texts:
  1. The Essentials of CAGD, by Gerald Farin and Dianne Hansford. AK Peters, 2000; ISBN: 978-1568811239

E-mail:
It is University policy that you read your official Drexel email; it is the course policy that you read it at least once per day.
I will regularly communicate to the class via e-mail.


Course Objective

Computer Graphics represents a vast technical field, ranging from mathematics and geometry topics to computer hardware and software engineering topics to rendering, animation and virtual reality, far more than can be comprehensively covered in a 10 week term. CS 430 Computer Graphics is designed to provide students with an introduction to the fundamental algorithms of computer graphics, as well as detailed coverage of the mathematics and implementation of 2D and 3D geometric transformations, line, curve and surface drawing. The course culminates with a focus on 3D viewing and visible surface algorithms.


Pre-Requisites

Students are required to have taken CS 260 (Data Structures), and (Math 201 (Linear Algebra) or Math 261 (Linear Algebra) or Engr 231 (Linear Engineering Systems)). You will find this course extremely difficult if you do not have strong (B or better) linear algebra and trigonometry skills. Minimal review of linear algebra will be given in this class. Students are assumed to have excellent knowledge of programming. Students can use whatever programming language they wish (C, C++, Java, Python, etc.) for the assignments in this class with the following caveat: you will need to turn in both source code and a makefile or a script for testing and evaluation. Code must run as a single command-line process on the CS Department's Linux (tux) computers, without needing special libraries. Arguments passed to the command-line will parameterize assignments; hence you'll need to read command-line arguments (argc, argv) in arbitrary order and parse input files. This course is mathematically intense and implementationally challenging. You will be required to implement complex data structures and mathematical calculations as a regular part of your assignments.


Course Grading Scheme
  • Assignments (75%)
  • Quizzes (10%)
  • Final exam (15%)
I intend to use the standard grading scale of 100→ 90 (A), 89→ 80 (B), 79→ 70 (C), 69→ 60 (D), else (F).
Also note that incompletes will not be given for this course.



Assignments

You can write your programs using whatever language you would like, as long as they run on tux, the department's Linux cluster.

The output of your programs will be represented with a number of different formats.
You should use Postscript for assignments 1, 2 and 4, and the Extra Credit assignment.
You should use ASCII Plain PBM for assignment 3 and Plain PPM for assignment 5 for your output images.

Here is description of how to draw 2D lines in Postscript.
Here is a Postscript file that draws several lines, using the default page size.
The description of the PBM format can be found here.
The description of the PPM format can be found here.
Here are a PBM file (gear.pbm) and a PPM file (texture.ppm).

You should be able to view PBM and PPM in standard image display programs, e.g. 'Preview' in MacOS and 'display' (PBM and PPM) on tux.
Postscript has become trickier. Preview in MacOS no longer supports Postscript. And other viewers are not supported in the latest versions of Windows.
You should be able to view Postscript files with 'gs' on tux.
If you have ps2pdf installed on your Apple computer you can create a script to view Postscript files with
            ps2pdf $1 - | open -f -a Preview.app       # in tcsh

One OS-independent way to view Postscript is to install the "PostScript Viewer" extension in Chrome. Once installed, go to extension management and enable "Allow access to file URLs" under the permissions section. Chrome should then be able to open and display .ps files.

Students must work on the assignments individually. No geometry or graphics libraries may be used in the homework assignments.
You may use math libraries to represent and manipulate vectors and matrices, command line option processing libraries, and libraries to write PBM/PPM and Postscript files.
But they must be installed on tux!

Assignments that do not meet the program specifications EXACTLY will not be graded!
Any assignments that are returned to students because they do not meet the assignment specifications will be penalized with late points.

Assignment results will be assessed visually. I am not looking for any specific file output.

1 point per day (max of 5 points) will be deducted from late assignments.

The deadline for turning in all assignments is December 13. I cannot guarantee that anything turned in after this date will be graded.

You will be given a grade of 0 if an assignment is not turned in by this date.

The programming assignments should be submitted on the class Bb Learn page before 11:59 PM on the due date.



Academic Honesty

You must be the sole original author of all assignments and examination solutions in their entirety, unless the instructor explicitly instructs you otherwise in written directions on an assignment or exam.
Collaborative work is a violation of academic honesty in this course.
You are not to examine or use code belonging to someone else, nor may you let anyone else examine or copy your code.
You may not use generative tools to produce your programs.

Students found in violation of the Academic Honesty policy will receive an 'F' in the class.
In the case of plagiarism, all parties involved will be equally penalized.

The description of the department's Academic Integrity Policy can be found here. If a student violates this policy, an Alleged Academic Misconduct Report will be filed with the college.

It is your responsibility to avoid violating the university's policy. If you are unclear as to what the policy means in a particular situation, ask the instructor for clarification before you hand anything in.

See the examples below for clarification of this policy.

Examples

The following are acceptable:
  • Using code provided in lecture: include comments that cite the source.
  • Using code provided in the class textbook: include comments that cite the source.
  • Code developed jointly with instructor or teaching assistants assigned to this course.
  • Discussing algorithms or possible approaches to writing your program, WITHOUT discussing particulars of the code.
  • Discussing how to resolve errors, WITHOUT discussing particulars of the code.
These are NOT acceptable:
  • You borrow a printed or electronic copy of a friend's assignment, and use it for "inspiration".
  • You give a printed or electronic copy of your assignment to somebody else.
  • You "find" a copy of somebody's program in the trash, on a lab machine, on their hard drive, on the web, etc., and use it for "inspiration".
  • You pay a "tutor" who writes the assignment for you.
  • You download code from the Web, and turn in some or all of it as your own assignment.
  • You use generative tools to create portions of your assignments.
  • You and a friend together write one assignment, then create separate modifications to be handed in.
  • You and a friend write certain portions of the assignment individually, but collaborate on other portions of the assignment.
  • You work in a group that works out the detailed structure of the assignment and you turn it into a specific program.

Your source code for all programming assignments will be run through a plagiarism detection system. This program uses compiler techniques, which are invariant of syntax and style. If you are sharing/borrowing code with other classmates (from this or previous years), you will get caught.



Examinations

There will be weekly online quizzes starting in Week 3.

The lowest quiz grade will be dropped.

There will be a final exam on the material from class that is not covered by the regular assignments.

The final exam will be held on Tuesday, December 12, 2023, 10:30 AM to 12:30 PM in 3675 Market Street, Room 1054-1055.

Final Exam Topics



Lectures Are Recorded

Recorded lectures can be viewed via the class Bb Learn page by following the "Echo Video Class Recordings" link.

The class Discord channel is CS430-FA23.


Calendar

Week 1 (September 25 - 29)
  • Reading Assignment
    • Hughes et al.: Chapters 1 & 3
    • Foley et al.: Chapter 1
  • September 27 - Lecture : Introduction 6 per page

Week 2 (October 2 - 6)

  • Reading Assignment
    • Hughes et al.: Sections 7.1→7.7, 14.1→14.3; Chapter 10; Chapter 11
    • Foley et al.: Section 3.9; Chapter 5
    • Farin and Hansford: Chapters 1; Sections 2.1, 2.2
  • October 2 - Lecture: Line Clipping / 2D-Transformations 6 per page
  • October 4 - Lecture: 3D-Transformations 6 per page

Week 3 (October 9 - 13)

Week 4 (October 16 - 20)

Week 5 (October 23 - 27)

Week 6 (October 30 - November 3)

  • Reading Assignment
    • Hughes et al.: Sections 22.5→22.7
    • Farin and Hansford: Chapters 10 & 11; Sections 13.1→13.6
  • October 30 - Lecture: B-splines and NURBS 6 per page
  • November 1 - Lecture: Drawing NURBS 6 per page

Week 7 (November 6 - 10)

Week 8 (November 13 - 17)

  • Reading Assignment
    • Hughes et al.: Sections 8.3, 8.4, 14.5, 23.1, 23.2, Chapters 5, 25, 26 & 28
    • Foley et al.: Sections 9.1, 9.3, 9.4; Chapter 11
    • Farin and Hansford: Chapters 6 & 7; Sections 2.3→2.6, 12.1→12.4, 13.7, 13.8
  • November 13 - Lecture: Surfaces 6 per page
  • November 15 - Lecture: Color 6 per page

Week 9 (November 20 - 24)

  • Reading Assignment
    • Hughes et al.: Chapter 15; Sections 7.8, 14.4, 36.1→36.6
    • Foley et al.: Chapter 13; Sections 12.3.3, 12.4, 14.4→14.9
  • November 20 - Lecture: Culling, Z-Buffering and Ray Tracing 6 per page
  • Plain PPM format description
  • November 22 - No class. Drexel is closed for the holiday.
  • November 26 - Assignment 4 Due

Week 10 (November 27 - December 1)

  • Reading Assignment
    • Hughes et al.: Chapter 18; Sections 14.6.1, 22.6, 23.3→23.5, 36.9
    • Foley et al.: Sections 3.7, 3.14, 7.1, 7.4, 7.6; Chapter 10
    • Farin and Hansford: Sections 12.5, 12.6
  • November 27 - Lecture: Thick Primitives 6 per page
  • November 29 - Lecture: Subdivision Surfaces and Solid Modeling

Week 11 (December 4 - 8)

 

CCI's Commitment to Diversity, Equity, and Inclusion (DEI)

The College of Computing & Informatics commits to creating a positive and safe learning environment for everyone - instructors, professional staff, and students - both inside and outside of the classroom. We embrace the diversity of thoughts, perspectives, and experiences that each community member brings, and we honor everyone's identity (including, but not limited to, race, ethnicity, age, gender, socioeconomic status, sexuality, religion, veteran status, and disability). We encourage each community member to share information regarding pronouns, religious and cultural holidays, accommodations, and any other information that will assist instructors in fostering a supportive and inclusive community environment. For more information about CCI's commitment to DEI, visit Diversity, Equity & Inclusion Council | Drexel CCI, https://drexel.edu/cci/about/diversity-equity-and-inclusion-council.

Initial Course Participation (ICP):

Class attendance is critical to your success as a student. Missing classes may impact your class success and your federal financial aid.

 

File last modified on December 4, 2023.