UoPeople Online Syllabus Repository (OSR)
Here you will find the syllabi and primary textbooks for all UoPeople courses. The Disclaimer for Use of the Repository can be found here.
Computer Science
CS 4406 Computer Graphics
CS 4406: Computer Graphics
Syllabus
Prerequisites:
CS 1103 Programming 2
Course Description: Computer graphics is used in diverse applications from the visualization of complex scientific data to the special effects in movies and the animated characters in computer games. The objective of this course is to introduce the programming principles of computer graphics. The course will provide practical application of concepts through assignments developed in Web GL. The course will also introduce examples in OpenGL. Students will have a broad knowledge of computer graphics and how to implement computer graphics using an API such as OpenGL and WebGL. Course topics will include:
- Fundamentals
- Geometric transformations, Matrices and vectors.
- The scene graph
- Introduction to Modeling
- Introduction to Rendering
- Shading, Color, anti-aliasing, texture mapping
Required Textbook and Materials: UoPeople courses use open educational resources (OER) and other materials specifically donated to the University with free permissions for educational use. Therefore, students are not required to purchase any textbooks or sign up for any websites that have a cost associated with them. The main required textbooks for this course are listed below and can be readily accessed using the provided links. There may be additional required/recommended readings, supplemental materials, or other resources and websites necessary for lessons; these will be provided for you in the course's General Information and Forums area, and throughout the term via the weekly course Unit areas and the Learning Guides.
- de Vries, J. (2015). Learn OpenGL. Creative Commons Attribution-NonCommercial 3.0 Unported License. https://learnopengl.com/book/learnopengl_book.pdf
- Eck, D. (2018). Introduction to Computer Graphics, v1.2. Licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 License. http://math.hws.edu/graphicsbook/ (PDF is available on course homepage.)
- Guha. S. (2019). Computer graphics through OpenGL: From theory to experiments, 3rd edition . To access this resource you will need to download the zip file by clicking on the Download link at the top of the page.
- Massachusetts Institute of Technology (MIT). Computer graphics lecture notes. Open Courseware - 2012. https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-837-computer-graphics-fall-2012/lecture-notes/
- Mbise, M. (2017). Computer graphics. African Virtual University (AVU). https://oer.avu.org/handle/123456789/673 or PDF
Software Requirements/Installation: Although much of the text will be using the OpenGL API for examples and assignments, this course will provide a series of comparable examples and Assignments that use the WebGL API. There are two reasons for this. First WebGL is an API that is based upon the OpenGL ES 2.0 API which is essentially a subset of OpenGL. As such all of the functionality required for assignments throughout the text is implemented in the OpenGL ES 2.0 specification. Second, it has been decided to leverage WebGL because of the ease of setting up a development environment. Most texts on Graphics programming take advantage of C or C++ as a programming language and as the curriculum at the University of the People is more focused on Python, Java, and JavaScript we have opted to continue to build on these skills by implementing all assignments and examples using JavaScript executed in an HTML5 environment. This both builds upon the knowledge that you have gained from previous courses and provides us with the ability to use browser-based, online development tools and environments.
To best represent our students’ needs, this course uses JavaScript (JS) for the programming language and an online IDE, Repl.it. You do not have to download and install anything. The assignments, examples, and samples for this course are designed based
on JS. However, you may also see samples of code in C++ in some of the reading resources. As you begin to write and run programs, you will see that JS is also a powerful language and is used in many real-world applications.
For the development of the assignments in this course, we recommend that you use repl.it. Repl.it is an online development environment that is designed for developing web-based applications. You can access https://repl.it/~ from a link in the course resources list. When you access the repl.it site, follow the instructions to create a free account, and then proceed to complete the first example in unit 1.
Learning Objectives and Outcomes:
By the end of this course students will be able to:
1. Understand basic concepts of computer graphics including such concepts as:
a. Graphics API’s (Application Programming Interface)
b. Principles of viewing, projections, and transformations
c. The coordinate system
d. Clipping
e. Graphics pipeline
2. Develop an understanding of computer graphics techniques focusing on:
a. 3D modeling
b. image synthesis and rendering
c. Geometric transformations
d.
API’s such as OpenGL, WebGL, Shaders
e. shading and mapping
f. ray casting and ray tracing
g. anti-aliasing
h. color, lighting, and illumination
3. Develop graphic models and implement them to present graphics scenes
Course Schedule and Topics: This course will cover the following topics in eight learning sessions, with one Unit per week. The Final Exam will take place during Week/Unit 9 (UoPeople time).
Week 1: Unit 1 - Introduction to Graphics
Week 2: Unit 2 - Principles of Graphics Modeling
Week 3: Unit 3 - Color and
Blending
Week 4: Unit 4 - Lighting, Shading and Texture Mapping
Week 5: Unit 5 - The Rendering Pipeline and Event Handling
Week 6: Unit 6 -Dynamics
and Animation
Week 7: Unit 7 -Interpolation and Spline Modeling
Week 8: Unit 8 -Per-Pixel
Operations
Week 9: Unit 9 -Final Exam
Learning Guide: The following is an outline of how this course will be conducted, with suggested best practices for students.
Unit 1: Introduction to Graphics
- Read the Learning Guide and Reading Assignments
- Participate in the Discussion Assignment (post, comment, and rate in the Discussion Forum)
- Make entries to the Learning Journal
- Take the Self-Quiz
Unit 2: Principles of Graphics Modeling
- Read the Learning Guide and Reading Assignments
- Participate in the Discussion Assignment (post, comment, and rate in the Discussion Forum)
- Complete and submit the Unit 2 Programming Assignment
- Make entries to the Learning Journal
- Take the Self-Quiz
Unit 3: Color and Blending
- Peer assess Unit 2 programming assignment
- Read the Learning Guide and Reading Assignments
- Participate in the Discussion Assignment (post, comment, and rate in the Discussion Forum)
- Complete and submit the Unit 3 Programming Assignment
- Make entries to the Learning Journal
- Take the Self-Quiz
- Take the Graded Quiz
Unit 4: Lighting, Shading and Texture Mapping
- Peer assess Unit 3 Programming Assignment
- Read the Learning Guide and Reading Assignments
- Participate in the Discussion Assignment (post, comment, and rate in the Discussion Forum)
- Complete and submit the Unit 4 Programming Assignment
- Make entries to the Learning Journal
- Take the Self-Quiz
Unit 5: The Rendering Pipeline and Event Handling
- Peer assess Unit 4 Programming Assignment
- Read the Learning Guide and Reading Assignments
- Participate in the Discussion Assignment (post, comment, and rate in the Discussion Forum)
- Complete and submit the Unit 5 Programming Assignment
- Make entries to the Learning Journal
- Take the Self-Quiz
Unit 6: Dynamics and Animation
- Peer assess Unit 5 Programming Assignment
- Read the Learning Guide and Reading Assignments
- Participate in the Discussion Assignment (post, comment, and rate in the Discussion Forum)
- Complete and submit the Unit 6 Programming Assignment
- Make entries to the Learning Journal
- Take the Self-Quiz
- Take the Graded Quiz
Unit 7: Interpolation and Spline Modeling
- Peer assess Unit 6 Programming Assignment
- Read the Learning Guide and Reading Assignments
- Participate in the Discussion Assignment (post, comment, and rate in the Discussion Forum)
- Complete and submit the Unit 7 Programming Assignment
- Make entries to the Learning Journal
- Take the Self-Quiz
Unit 8: Per-Pixel Operations
- Peer assess Unit 7 Programming Assignment
- Read the Learning Guide and Reading Assignments
- Participate in the Discussion Assignment (post, comment, and rate in the Discussion Forum)
- Make entries to the Learning Journal
- Take the Self-Quiz
- Read the Unit 9 Learning Guide carefully for instructions on the Final Exam
- Take the Review Quiz
Unit 9: Course Review and Final Exam
- Read the Learning Guide and take the Review Quiz, if you haven't already done so
- Prepare for, take, and submit the Final Exam
- The Final Exam will take place during the Thursday and Sunday of Week/Unit 9 (UoPeople time); exact dates, times, and other details will be provided accordingly by your instructor
Course Requirements:
Programming Assignments & Assessment Forms
This course will require each student to complete five graded programming assignments. These assignments are designed to help the student
bridge the gap between theory and practice. Each of the five will require that the student implement the topic being explored either in terms of a design or a working algorithm developed in the javascript language.
You will be required to
upload your assignments by the indicated deadline and, in addition, to assess three of your classmates’ assignments according to the instructions provided. Failure to submit programming assignments may result in failure of the course. Each assignment
will be peer assessed. This means that 3 of your peers will be asked to assess your assignment and your grade will the average of the scores of your peers. Every student that submits an assignment will also be required to assess the work of
at least 3 of their peers. As part of this assessment process you will be expected to provide details in the feedback section of the assignment assessment forms as to why you awarded the grade that you did to your peer. Providing fair
and carefully considered assessments during this process is extremely important to achieving a successful learning experience for you and your peers.
Discussion Assignments & Response Posts/Ratings
Some units in this course require that you complete a Discussion Assignment. You are required to develop and post a substantive response to
the Discussion Assignment in the Discussion Forum. A substantive response is one that fully answers the question that has been posed by the instructor. In addition, you must extend the discussion by responding to at least three (3) of your peers’
postings in the Discussion Forum and by rating their posts. Instructions for proper posting and rating are provided inside the Discussion Forum for each week. Discussion Forums are only active for each current and relevant learning week, so it is
not possible to contribute to the forum once the learning week has come to an end. Failure to participate in the Discussion Assignment by posting in the Discussion Forum and responding to peers as required may result in failure of the course.
Learning Journal
Your instructor may choose to assign specific topics and/or relevant questions as a weekly Learning Journal entry for you to complete, but you are still encouraged to also use
it to document your activities, record questions/problems you may have encountered, reflect on the learning process, and draft answers for other course assignments. The Learning Journal must be updated on a weekly basis, because its entries will be
assessed by your instructor directly as a part of your final grade. The Learning Journal will only be seen by your instructor.
Quizzes
This course will contain three types of quizzes – the Self-Quiz, the Graded Quiz, and the Review Quiz. These quizzes may contain multiple choice, true/false, or short answer questions.
The results of the Self-Quiz will not count towards your final grade. However, it is highly recommended that you complete the Self-Quiz to ensure that you have adequately understood the course materials. Along with the Reading Assignments, the results
of the Self-Quiz should be used as part of an iterative learning process, to thoroughly cover and test your understanding of course material. You should use the results of your Self-Quiz as a guide to go back and review relevant sections of the Reading
Assignments. Likewise, the Review Quiz will not count towards your final grade, but should also be used to assist you in a comprehensive review and full understanding of all course material, in preparation for your Final Exam. Lastly, the results
of the Graded Quiz will count towards your final grade.
Final Exam
The Final Exam will take place during the Thursday and Sunday of Week/Unit 9, following the completion of eight units of work. The format of the Final Exam is similar to that of the
quizzes, and may contain a combination of different question types. You will have one attempt to take the exam, and it will be graded electronically. Specific instructions on how to prepare for and take the Final Exam will be provided during Week
8 (located inside the Unit 9 Learning Guide). Final Exams must be taken without the use of course learning materials (both those inside and outside the course). If particular materials are allowed for use during the exam, these will be noted in the
exam’s instructions.
Course Forum
The Course Forum is the place to raise issues and questions relating to the course. It is regularly monitored by the instructors, and is a good place to meet fellow students taking
the same course. While it is not required to participate in the Course Forum, it is highly recommended.
Course Policies:
Grading Components and Weights
Each graded component of the course will contribute some percentage to the final grading scale, as indicated
here:
Discussion Assignments | 20% |
Programming Assignments | 20% |
Learning Journals | 10% |
Two Graded Quizzes | 20% |
Final Exam | 30% |
TOTAL | 100% |
Grading Scale
This course will follow the standard 100-point grading scale defined by the University of the People, as indicated here:
Letter Grade |
Grade Scale | Grade Points |
A+ | 98-100 | 4.00 |
A | 93-97 | 4.00 |
A- | 90-92 | 3.67 |
B+ | 88-89 | 3.33 |
B | 83-87 | 3.00 |
B- | 80-82 | 2.67 |
C+ | 78-79 | 2.33 |
C | 73-77 | 2.00 |
C- | 70-72 | 1.67 |
D+ | 68-69 | 1.33 |
D | 63-67 | 1.00 |
D- | 60-62 | 0.67 |
F | Under 60 | 0.00 |
Grade Appeal
If you believe that the final grade you received for a course is erroneous, unjust, or unfair, please contact your course instructor. This must be done within seven days of the posted
final grade. For more information on this topic, please review the Grade Appeal Procedure in the University Catalog.
Participation
Non-participation is characterized by lack of any assignment submissions, inadequate contributions to the Discussion Forums, and/or lack of peer feedback to Discussion/Written Assignments.
Also, please note the following important points about course participation:
- Assignments must be submitted on or before the specified deadline. A course timeline is provided in the course schedule, and the instructor will specify deadlines for each assignment.
- Any student showing non-participation for two weeks (consecutive or non-consecutive) is likely to automatically fail the course.
- Occasionally there may be a legitimate reason for submitting an assignment late. Most of the time, late assignments will not be accepted and there will be no make-up assignments.
- All students are obligated to inform their instructor in advance of any known absences which may result in their non-participation.
Academic Honesty and Integrity
When you submit any work that requires research and writing, it is essential to cite and reference all source material. Failure to properly acknowledge your sources
is known as “plagiarism” – which is effectively passing off an individual’s words or ideas as your own. University of the People adheres to a strict policy of academic honesty and integrity. Failure to comply with these guidelines may result in sanctions
by the University, including dismissal from the University or course failure. For more information on this topic, please review the Academic Integrity Policy in the University Catalog.
Unless otherwise stated, any materials cited in this course should be referenced using the style guidelines established by the American Psychological Association (APA). The APA format is widely used in colleges and universities across the world and is one of several style and citation formats required for publication in professional and academic journals. Purdue University’s Online Writing LAB (OWL) is a free website that provides excellent information and resources for understanding and using the APA format and style. The OWL website can be accessed here: https://owl.purdue.edu/owl/purdue_owl.html
Peer Feedback
This course will present fundamental concepts of graphics programming and will require students to put these concepts into practice through a series of development assignments in
which each student must complete a program using JavaScript and WebGL within a HTML 5 environment. This learning process is designed to be interactive and collaborative. Each student is expected to provide feedback and
coaching to other students through the peer assessment process in discussion questions and assignments as well as engaging in discussions to help peers who may be struggling with some of the course concepts. The unit forum can and should
be used by any student who is struggling with course assignments and needs assistance from either the instructor or other students. Questions, problems, and challenges should be posted by students here as early as possible in order to receive
feedback that can be used to meet assignment deadlines. Feedback is a component of the grading of this course and providing effective, constructive feedback in assessments and in responses to other students’ postings is required.
In addition to responding to requests for assistance, the course forum can be used to post items, tools, best practices, techniques, or articles that you have found valuable in completing your assignment that might be of value to your peers.
Code of Conduct
University of the People expects that students conduct themselves in a respectful, collaborative, and honest manner at all times. Harassment, threatening behavior, or deliberate
embarrassment of others will not be permitted. Any conduct that interferes with the quality of the educational experience is not allowed and may result in disciplinary action, such as course failure, probation, suspension, or dismissal. For more information
on this topic, please review the Code of Conduct Policy in the University Catalog.
Course Overview
Introduction to Graphics programming is not a programming class. This means that programming is not the focus of the class as our primary focus is to understand concepts
of computer graphics and the functioning of Graphics API’s. However, it is assumed that each student has already mastered some level of proficiency in the JavaScript language and has a basic understanding of Web Development.
This course
requires strong proficiency in the following foundational concepts.
A Mathematical foundation consisting of Algebra, Geometry, and Trigonometry. This course has been designed and is taught from an implementation perspective which
means that we have avoided much of the emphasis on the mathematical operations around graphical transformations and model development. However, we assume that each student has a basic grasp of such mathematical capabilities and there are some
aspects of the course that will require such understanding.
An understanding of the foundations of the JavaScript programming language. We use the JavaScript language to implement the graphics coding examples and assignments in the course.
Much of what we will do is directly related to the WebGL API but some experience in and knowledge of JavaScript is required.
Expectations
This course is designed to be collaborative. Your interaction with your peers (other students in the class) is not focused on providing an assessment of their work, but rather
to collaborate to improve our collective understanding of the course material.