CSC133: Object-Oriented Computer Graphics

Shankar N Swamy


Course Information & Policies (Fall 2026)

Welcome to the course! I want you to succeed here. Please read items 1 through 7 completely before registering to ensure this class is a good fit for you.

Course Syllabus is here. This is the fullest I have covered when the class size is the smallest I have had, which is about 30 students. I tend to cover less material with larger classes because the number of questions asked during lectures are higher in larger classes and that takes up some of the time.

Important note on vibe coding/using AI in assignments 

This course actively teaches and supports vibe coding: using natural language prompts to generate code using AI models. However using it outside of the imposed restrictions is considered cheating. In particular, you should:

  • include with each submission, very prompt and every improvement to the prompts used in generating the code snippets in a single file as detailed in the instructions.
    • Inside the file, each prompt should be an exact cut-paste of the issued prompt without editing.
    • Each prompt should be separated by a single line.
    • The prompts file should be checked into git as if it is a file containing the code.
  • within your submitted code, the segments of code should be enclosed between markers //<generated>  and //</generated>. This is needed to support good software engineering practice, in addition for grading.

You should NOT:

  • load the entire assignment description to an AI agent, generate the code. That is consdiered cheating - even if it generates code that does something. In particular ANY CODE PROVIDED BY THE INSTRUCTOR SHOULD NOT BE LOADED TO OR EXPOSED TO ANY AI AGENT.

1. Enrollment and Course Capacity

  • If the registration system shows the class is full, it is full.
  • No Class Crashing: Section capacities have already been more than doubled for Fall 2026. Regretfully, there is no scope for crashing or adding students over the limit.
  • Each section runs independently with its own unique quizzes, tests, and finals. Section switches must be processed through official departmental procedures at the start of the semester.

2. Attendance and Lecture Policy

  • In-Person Only: All lectures and office hours are strictly face-to-face. Lectures will not be recorded.
  • Personal Responsibility: Attendance is strongly suggested. I do not track attendance, and you do not need to email me if you miss a class. If you miss a lecture, you are entirely responsible for mastering the missed content.

3. Strict Electronic Device Ban

To maintain an environment focused on learning, electronic devices are strictly prohibited from being visible in the classroom.
  • Prohibited Items: Cellphones, laptops, and tablets (including for digital note-taking).
  • Storage: All devices must be turned off and tucked away inside a bag or backpack before the lecture begins. They may not be placed on your desk or held in your hand.
  • Enforcement: These terms are completely non-negotiable. Do not ask for exemptions.

4. Course Notes and Learning Approach

  • No Distributed Notes: I do not lecture from scripts or provide slide decks. I teach directly from my live industry experience and preparation.
  • Handwritten Notes Only: You must take your own notes by hand. Research shows handwriting concepts significantly improves retention over digital copying.
  • Much of what we discuss reflects modern industry trends and cannot be found in a single or a small number of textbooks.
  • This course actively promotes the use of vibe coding: the AI-assisted development. Part of vibe coding is writing the specs. That is part of the assignments. Because of that, there won't be written specs provided for the Assignments. The specifications will be discussed in the lectures and you will have to write your own specs as part of the assignments. 

5. Academic Integrity and Individual Assignments

  • Independent Work: This is a hands-on, project-oriented course featuring 9 to 12 programming assignments. Every assignment must be completed 100% individually.
  • Malpractice: Collaboration, code-sharing, or utilizing outside help (including paid or unpaid tutors) is strictly forbidden and prosecuted to the fullest extent.
  • Integrity Interviews: To combat academic dishonesty, the instructional team reserves the right to conduct live interviews with selected students regarding their code before code grades are finalized.

6. Course Communication

  • All out-of-class course discussions must take place on the  Course Canvas, and the sponsored course Discord server.
  • In-person questions should be saved for live lectures and scheduled office hours.

7. Course Architecture, Tools, and Environment

  • Core Philosophy: This course covers advanced Software Engineering principles by combining Object-Oriented Software Development with Data-Oriented Design (DOD)—the exact framework used for high-performance, mega-scale software like modern gaming engines.
  • Tech Stack: We will use OpenGL with Java via the LWJGL (Lightweight Java Game Library) interface and GLFW windowing options. Development will take place in IntelliJ and Git.
  • Prerequisites: A strong foundation in Java programming is required. No prior graphics or OpenGL experience is necessary.
  • Vibe Coding: We will learn how to properly leverage LLMs/Generative AI as inference and productivity engines rather than blindly trusting them as error-free oracles.
  • OS Support: We officially support Windows 11 and Linux. Because Apple systems run OpenGL simulated over the Metal API, the instructor cannot commit to troubleshooting macOS technical issues.

Course Syllabus & Key Concepts

If you choose a career in software engineering, this course aims to leave you with the following core industry fluencies:
New for fall of 2026, the course will actively promote vibe coding & Context Driven Software Development. Companies are encouraging the use of AI tools in development. We will focus on the knowledgeable use of LLM-RAG engines. We will learn how the LLM/RAG Inference Engines for Coding work, and how to use them effectively to work cooperatively.
  • Concepts: Vibe Coding, Context-Driven Engineering, Systems Thinking Architecture, and the "M-E-S-S" requirements of Software.
  • Design Principles: Dry, EVP, SRP, OCP, LSP, ISP, DIP, and managing "Is-A" / "Has-A" relationships.
  • Design Patterns: Singleton, Factory/Prototype/Builder, Composition, Initializer, and Composite.
  • Introduction Game Engine Architecture: It is a vast topic to attempt in one semester - even for a 2D game engine. We will develop a bare-bones engine by the end of the semester. It will support user interaction, tiles rednering, texture mapping. In the process you will be exposed to how to model interactions, architect the game flow within levels using state machines, how to derive classes, packages from state machines and, more importantly how to implement the resulting architecture.

More detailed syllabus here!


Grading and Exam Policies

Your final course grade is a direct average of two separately tracked metrics: Written Assessments (Quizzes, Midterm, Finals) and Programming Assignments
  • Passing Requirement: You must earn a grade higher than a D+ in both categories independently to pass the course. If either category falls at or below a D+, your final course grade will default to the lower of the two individual scores. Otherwise, you grade will be the average of the two letter grades averaged.
  • Grading Scale: Course grades are calculated on a curve. The distribution will be such that
  • top 20%  A to A-
    next 50%  B+ to B-
    lowest 30%  with >= 60% in raw score either in Assignments or in midterm + finals C+ to C-
    lowest 30% with < 60% in raw score either in Assignments or in miderm + finals D+ or lower.
  • Midterm Exam: Held between Week 6 and Week 8.
  • Final Exam: As scheduled by the university. Consult the schedule on the Intranet.
  • Exam Sheet Cheat Sheet: For the Midterm and Final, you may bring one sheet of A4 paper. It can be double-sided but must be entirely filled with your own physical handwriting. No photocopies or printed materials allowed.
  • Programming Assignments: Some of them may include a written part to be submitted. Assignment points range from 50 to 100, depending on the complexity. Only Assignments submitted through course Canvas are accepted. We accept late submissions up to 5 days at a penalty of 20% per day. 

All Assignments are individual assignments and should be done without collaborations. We accepts Assignments up to five dyas late at a 20% penalty per day.

Lateness/Absence/Drops:


It is very important for students to attend all classes and to be on time. Students who miss a class are responsible for all material discussed or handed out in the class. A list of topics covered and the raw notes from which the instuctor lectures are often provided. Sharing notes from each other or publishing it are considered malpractice and will be dealt with appropriate punishment.

Please inform yourself of the Department, College, and University policies on dropping courses. Policy information is available in the Computer Science Department office, Riverside Hall 3018. Ethics:
When a student submits work to the instructor, it constitutes a contractual agreement that the work is solely that of the student. Further, submitted work carries with it an implicit agreement that the instructor may quiz the student in detail about the work.

Since the class is graded on a curve, if a student attempts to raise their grade through unethical means it is in essence causing a lowering of the grades of other students in the class. Further, any student who gives such help is equally guilty of unethical behavior for the same reasons. Therefore, all students are hereby notified that this course is being taught by instructors who will pursue attempts at cheating, since students who are cheating are cheating on you.
The minimum penalty for even a single incident of cheating in this course is automatic failure of the course; additional more severe penalties may also be applied. Note that cheating is grounds for dismissal from the University.
Please refer to the instructors’ policy on academic integrity entitled “Ethics in Computer Science Classes”, to the Computer Science Department’s document entitled “Policy on Academic Integrity”, and to the University’s document entitled “Policy Manual section on Academic Honesty”, which are all available online via the “Home → Ethics” section of Canvas, for additional information. It is the responsibility of each student to be familiar with, and to comply with, the policies stated in these documents.

Exceptions: We provide reasonable exceptions to some rules but only under medical grounds. In such cases, requests including extensions to submissions, make-up's etc. should be accompanied with a valid doctor's letter and should be made ahead of the event. If you opt for a makeup midter or fianals on valid grounds, be aware that the version of midter/finals you get may not be at the same level of difficulty or same format as the regularly administred midter/finals.