Course Links

Resources

External

Course Description and Goals

In this course you will learn how to write programs that create 2D and 3D graphics, starting with their most basic units (called picture elements, or pixels for short). We will begin with algorithms for drawing lines and simple shapes, and build upon those methods little by little until by the end we are creating photorealistic images. Throughout the course, we will see how mathematics, algorithms, and programming can enable creativity and artistic expression. By the end of this course, you should be able to create a wide variety of images, explain and analyze algorithms for creating different features, and be aware of resources and options for pursuing computer graphics further.

We will be using WebGL as the primary vehicle for the course, with a Blender module during the last few weeks. WebGL is based in HTML and JavaScript, which are not the focus of study but will be explained enough to accomplish the assignments.

We will use as much class time as possible for interaction: questions, discussions, and interactive group work. Most days will center around a short lab or handout to be completed with assistance. To make room for these activities, the course will be taught in a flipped classroom mode when necessary. Asynchronous video recordings will be available to introduce the primary content. On flipped classroom days you should regard the recordings as integral parts of the class, to be completed in advance of each meeting. In this way you make first contact with material on your own, before coming together for discussion and practice.

Student Responsibilities

Successful learning is best motivated from within! The most important thing you can bring to the course is your engagement and genuine interest in exploration and discovery. Building a personal connection between professor and student, and from student to student, is also crucial. The people in this course are the ones who will help you succeed, and see you through to the end.

Expected course components include:

Most assignments will consist of a base assignment plus some number of extensions, some more programming intensive and some more artistic in nature. Students are encouraged to try out as many of these extensions as they wish. Successful completion of the base assignment ensures a passing grade, and an A grade can be achieved by completing some (but not necessarily all) extensions.

Instructor Responsibilities

As a professor, I aim to create an environment that is welcoming for all and as equitable as I can make it. My responsibilities to you center around ensuring that every student in my class has access to the full range of learning opportunities in this course. It is natural that needs may vary widely. If a particular aspect of the course isn't meeting your needs, or if there is anything I can do to better accommodate your learning, I would appreciate your feedback so that we can make the necessary adjustments. Certain accommodations require registration with Smith's Office of Disability Services; others can be implemented immediately.

Course Materials

Some course material will be taught using in-class lectures, and the slides for these will be available on Moodle. In addition, there are recorded course videos covering the bulk of the content for the course. Finally, a supplementary textbook with alternative description is available for free online: Introduction to Computer Graphics by David J. Eck. It covers modern graphics programming using OpenGL. For some material there will be additional supplemental readings, as listed in the calendar.

Requirements

This course assumes basic knowledge of programming, so CSC 110 or equivalent experience is a prerequisite. Additional programming background (e.g., CSC 120 and/or 210) is also beneficial, but not required. Experience with computer-based art will broaden your understanding of the potential applications for the techniques taught in this class.

Programming assignments will use the graphics scripting capabilities introduced with HTML5. Javascript is a versatile scripting language with a C-like syntax. Prior experience with the language is neither required nor assumed. Most assignments will focus on the graphics commands, and specific language constructs will be taught as necessary.

Collaboration

Peer collaboration is strongly encouraged during in-class exercises and labs. Conversely, homework assignments are designed to be worked independently or in fixed pairs. On homework, individuals and pairs must follow this guideline: nobody should see your code or written work on an assignment but yourself and the members of the course staff! By extension, you should not see anybody else's work either. With the sole exception of your partner on any pair programming assignments, sharing code or the final write-up of a homework assignment is a violation of course policy and may result in a referral to the Honor Board. Similarly, taking code or answers found from other sources (such as the internet) and representing it as your own is dishonest and therefore prohibited. (Use of small portions of found code is acceptable if you are scrupulous about documentation and attribution -- see below.) After an assignment has been graded students are free to compare their code with each other.

Many forms of collaboration that do not breach this restriction are specifically encouraged. On any assignment students may and should discuss algorithms, approaches, and issues that arise so long as they then compose their solutions separately. Students may also discuss any programs and code not directly related to the solution of a current or pending programming assignment. In this manner, students may assist each other while ensuring that each ultimately completes the assignments for themself. During in-class labs (as opposed to the homework assignments), students are encouraged to help each other work through problems, and may review each others' programs as necessary toward that goal. Finally, some assignments may be designated for pair programming; on these each pair may work together as one but should observe the usual restrictions above with regard to other pairs. Normally, pairs will change with each assignment -- you should not collaborate again with someone you have already worked with in the past.

Students who choose to work on assignments in pairs are expected to work collaboratively throughout the entire assignment, through live screen sharing or in person. It is not acceptable for one partner to work alone and let the other "catch up" later on. Usually one partner types while the other thinks, directs, and looks for errors. Try to switch roles regularly so that everyone gets a chance at both.

Use and Citation of Reference Materials or AI Assistance

Students may consult online or print references on all assignments and labs. Standard language references showing syntax, usage, class documentation, etc. need not be cited. (For example, the Three.js reference documents many of the objects we will use in the second half of the course.) If you use a fragment of code (more than a single line) from some source other than the designated course textbook, you should document and credit the source with a comment in the code. As noted above, you must write the bulk of your program yourself -- just as you may use short quotations in an essay, but would not copy paragraphs wholesale. When in doubt, err on the side of including a citation, and consult the professor if you think you might be in danger of leaning too heavily on a source. Note that when grading, we look at the value that you yourself have added, rather than what you have found elsewhere.

Any use of AI programming assistants should also be cited in a comment at the top of the script (or the relevant section), along with a note describing the type of assistance provided. Please keep in mind that using AI help is similar to copying someone else's code or asking another person for help: you may achieve more, yet learn less. We hope that you are in this course for the learning.

Electronic Device Policy

Used properly computers can serve as a learning tool. Students should bring a laptop to class if possible for use during lab activities. Many students also like to use their laptops to take notes, and perhaps to follow along during in-class demonstrations.

On the other hand, cell phones and at times laptops themselves can also serve as a source of distraction. Studies also show that the act of making handwritten notes brings cognitive benefits not seen with typing. Students are asked to be responsible in their use of electronic devices during class, and to ensure that they do not detract from their own educational experience or that of their fellow students. Activities such as email, text/chat, online shopping, etc. are not welcome during class time.

Grading

In-class lab work and handouts are not graded; instead they form part of the participation grade. If you are in class on the day they are assigned, you get full credit. In case you miss class, you should complete the lab or handout for that day on your own and submit it to me within one week. Participation also includes video responses, making valuable contributions on Slack and in class, etc.

Normally, homework submitted late will receive no credit. However, students may take some extensions on a limited basis by adhering to the extension policy. Extensions that have not been properly requested will result in assignments considered late and receiving no credit.

Students may also wish to view the instructor's policy for computing averaged grades.

A simple rubric guides the assignment of homework grades. Work that is incomplete or does not run due to errors will receive a low grade, possibly failing. Work that achieves the base ("bronze") objectives stated in the assignment will receive a passing grade (C at minimum and usually in the B range). Work that achieves one or more extensions (often designated "silver" or "gold") in addition to the base, or otherwise demonstrates mastery of the subject material, will receive higher grades. There is no fixed correspondence between these designations and letter grades, although silver will be higher than bronze, etc. For some (but not all) assignments silver solutions will earn an A.

Course Details

Professor:
Nick Howe
nhowe@smith.edu
Office hours
Teaching Assistants
Chris Zhang, [czhang@smith.edu]
Meetings:
Lecture: 9:25-10:40 AM Tuesdays & Thursdays, Ford 342
Study Session / TA Hours:
See the Spinelli website

Additional Considerations

Please read the list of frequently asked questions.

I strive to make this course welcoming to all. Mindful that privilege can leave blind spots, I humbly ask your help in realizing this goal if and when I might fall short. Feedback is always appreciated.

For accessibility reasons, we kindly ask that you refrain from wearing scented products in class or TA hours for this course.