- Lecture Notes
- Instructor and Course Assistant
- Class Information
- Description
- Objectives
- Course Structure
- Computer/Software Requirements
- Readings
- Grading Scheme
- Deadlines, Extensions, and Late Work Policy
- Getting Help and Slack
- Attendance
- Moses Center Statement of Disability
- Office of Student Advocacy
- Academic Integrity
- Inclusion
Released the day before each class (Mondays for Tuesday sessions, Wednesdays for Thursday sessions).
-
Sebastián Romero Cruz (They / Them)
E-Mail Office Hours sebastian.romerocruz@nyu.edu calendly
- Dates: May 19, 2026 – June 30, 2026
- Meeting Times: Tuesdays and Thursdays, 1:00 PM – 5:10 PM
- Location: Jacobs Hall, 6 Metrotech, Room 203 (Brooklyn Campus)
- Pre-Requisites: CS-UY 2124 Object-Oriented Programming (dē factō) (C- or better)
- Credits: 3
A programming intensive introduction to the creation of computer games. Using mostly two-dimensional sprite-based programming, we examine and experiment with animation, physics, artificial intelligence and audio. In addition, the course explores the mathematics of transformations (both 2D and 3D) and the ways they may be represented.
You will learn about vector, coordinate systems, sprites, animation, collisions, physics, map-building, simple enemy AI, audio and handling user input. This will all be done with C++ programming and utilizing the raylib library, itself a cross-platform OpenGL wrapper. You will be able to create simple 2D games in your engine as well as gain exposure into 3D game programming.
Each class session consists of a lecture followed by a classwork assignment completed in small groups. Lecture notes are released the day before class and serve as the primary reference material for both the assignments and the projects.
You need to use either a Mac, Linux, or Windows computer. You do not need a powerful machine as we are not implementing anything super complicated. While I recommend the use of Visual Studio Code (VSCode), you can use whatever you're most comfortable with.
You will also need a Github account!
There is no required textbook for this course. All lecture notes and materials are provided in this repository and released the day before each class.
The following are optional references you may find useful:
- learncpp.com: a free, thorough guide to modern C++
- raylib cheatsheet: quick reference for all raylib functions
| Item | Percentage |
|---|---|
| Project 1: Draw a Simple 2D Scene | 8% |
| Project 2: Pong | 8% |
| Project 3: Lunar Lander | 13% |
| Project 4: Rise of The AI | 23% |
| Project 5: Students' Choice | 28% |
| Classwork | 20% |
-
Projects (80%)
- Assigned roughly every week, these are programming projects based on class material. The use of AI coding agents is permitted for this summer section; see the Generative AI section for the full policy.
- As you can see, this class is very project-heavy. What this means is that, while there are no exams nor quizzes, the grade of each of the projects has a relatively large impact on your overall course grade.
- This class assumes a solid understanding of the C++ language, including syntax, control flow, functional decomposition, and object-oriented programming. For this reason, we will not be grading you on the quality of your code.
- You are expected to only use structures that we have learned in class. If you wish to use something outside of what has been covered (e.g. a third-party path-finding library), you must get explicit approval from Prof. Romero Cruz first. Using unapproved structures will result in a grade of 50 on that project, regardless of how well everything else works.
- Of course, you are free to make your own modifications and create any auxiliary functions/classes/libraries to best suit your programming style. If you are ever unsure of whether you are allowed to use something in a homework project, please ask us first.
- For each project, 2 students will be selected at random to give a brief presentation of their submission. You may be asked to walk through any part of your code and explain how it works. An inability to explain your own code will result in a 20-point deduction. This applies whether or not AI was used in writing it. You are responsible for understanding everything you submit.
- Every assignment will have an "extra credit" portion. This will add 5% to your final grade at the end of the semester if you complete the extra credit portion of at least 3 of the projects. While 5% may not seem like a lot, it can mean the difference between two letter grades. This can be especially helpful later in the semester, when the projects become longer and more complex.
-
Classwork (20%) is based on 5-7 group assignments to be completed, as the name implies, during class. In order to get credit for these, you will need to:
- Be there.
- Complete the assignment with your team before the end of class.
- Complete the assignment using only structures learned in class.
- Ensure that at least one person in your team shows the finished solution to the professor.
As for your final letter grade, the following scale will be used:
| Letter Grade | A | A- | B+ | B | B- | C+ | C | C- | D+ | D | F |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Range | ≥95 | ≥90 | ≥87 | ≥83 | ≥80 | ≥77 | ≥73 | ≥70 | ≥67 | ≥60 | ≥0 |
There is no additional extra credit in this course and the grades are not curved.
-
All projects are due at 11:59pm on Saturdays.
- Late projects will have 10 points deducted per day.
- Late projects will not be accepted after 2 days.
- Due by 11:59pm means your project was successfully pushed to GitHub by that time. This means that the version to be graded must be uploaded in both Brightspace and GitHub at that time. Start pushing your project at least an hour before the deadline.
- Projects received 1 minute late are considered to be a day late.
-
If there are any issues with uploading your project, you must email me 24 hours prior to the due date.
- While I check email regularly, do not expect a response over the weekend or close to deadlines.
- Your code must compile. Code that does not compile will receive a grade of 0.
-
You may ask for an extension for any 2 of your 5 projects. The extension policy varies per project:
- Projects 1-3: You may ask for an informal extension by asking Prof. Romero Cruz at least 72 hours (3 days) before the deadline. The exact length of the extension will be assigned on a case-by-case basis.
- Project 4: You must contact the Office of Student Advocacy in order to request an extension for this project, since its deadline coincides with the start of your work on your final project. If they approve it, then I will grant it with no problem at all.
- Project 5: Your final project is graded during the last day of lecture, when you will present it to the class. This means that no extensions are, in theory, possible. However, should an emergency arise, I can grant you an incomplete grade (
I) for the time being and give you a short extension. This really is a last-resort option, so try to avoid it as best as possible.
| Project | Release Date | Due Date |
|---|---|---|
| Simple Scene | Tuesday, May 26 | Saturday, May 30, 11:59 PM |
| Pong | Thursday, May 28 | Saturday, June 6, 11:59 PM |
| Lunar Lander | Thursday, June 4 | Saturday, June 13, 11:59 PM |
| Rise of the AI | Tuesday, June 9 | Saturday, June 20, 11:59 PM |
| Students' Choice | Tuesday, June 16 | Tuesday, June 30 (in class) |
If you are emailing me for help with your projects, upload your entire project to github and email me with the link (I need to see everything so I can help you). Do not email screenshots of your code.
Slack Server: We will be using Slack to answer quick questions that you may have about the course throughout the semester; the join link will be provided during the first day of class. While I’m usually pretty lax in terms of behavior in our server, this server is still a university environment and should be treated as such. Be respectful to me, your course assistant, and to your fellow students. Please adhere to the following rules:
-
Do not post your homework assignment code, or anybody else's, on this server. Doing so will have you automatically banned and flagged for plagiarism. You may, however, share small code blocks that don’t give away your implementation in order to ask questions.
-
Please use your real first and last name as your name for easy identification.
-
While we aim to be as active as possible on this server, we may not always have time to respond to a question. Please respect the team’s time as you wait for somebody to answer your question. As a student of this class, you should aim to try to answer your classmates' questions as well, instead of waiting for me to answer them every single time.
-
This is a productivity server. While we encourage a relaxed atmosphere, let's stay on topic. For absolutely necessary off-topic content (it happens), post in
#off-topic. -
Use
#concepts-helpto ask questions that pertain to the lecture material in general (i.e. not specific to a project). -
Use
#projectsto ask questions that pertain to the project concepts in general. -
Do NOT use this server to rant about your performance in the class. This is a professional environment, and so such behavior will result in a ban. If you would like to discuss your grades, schedule office hours with me.
-
You may not invite any people outside of our class into this server.
A student must attend, and be marked present for, at least 80% of the scheduled lectures for this course. Failure to do so may result in a failing grade.
Given the accelerated pace of this summer session, falling behind is very difficult to recover from. If you know you will be absent, please let Prof. Romero Cruz know in advance.
If you are a student with a disability who is requesting accommodations, please contact New York University’s Moses Center for Students with Disabilities (CSD) at 212-998-4980 or mosescsd@nyu.edu. You must be registered with CSD to receive accommodations. Information about the Moses Center can be found at Moses Center for Accessibility and Inclusive Culture. The Moses Center is located at 726 Broadway on the 3rd floor.
Accommodations matter a lot for this class, so please don't hesitate.
If medical, mental health, or personal circumstances are affecting your ability to keep up with the course, please reach out to the NYU Tandon Office of Student Advocacy sooner rather than later—they exist for exactly this kind of situation, and early communication makes a real difference. They can be reached at advocacy.tandonstudentlife@nyu.edu and are located in 5 MetroTech Center, LC240.
NYU School of Engineering Policies and Procedures on Academic Misconduct Student Code of Conduct.
-
Introduction: The Tandon School of Engineering encourages academic excellence in an environment that promotes honesty, integrity, and fairness, and students at the Tandon School of Engineering are expected to exhibit those qualities in their academic work. It is through the process of submitting their own work and receiving honest feedback on that work that students may progress academically. Any act of academic dishonesty is seen as an attack upon the School and will not be tolerated. Furthermore, those who breach the School’s rules on academic integrity will be sanctioned under this Policy. Students are responsible for familiarizing themselves with the School’s Policy on Academic Misconduct.
-
Definition: Academic dishonesty may include misrepresentation, deception, dishonesty, or any act of falsification committed by a student to influence a grade or other academic evaluation. Academic dishonesty also includes intentionally damaging the academic work of others or assisting other students in acts of dishonesty. Common examples of academically dishonest behavior include, but are not limited to, the following:
-
Cheating: intentionally using or attempting to use unauthorized notes, books, electronic media, or electronic communications in an exam; talking with fellow students or looking at another person’s work during an exam; submitting work prepared in advance for an in-class examination; having someone take an exam for you or taking an exam for someone else; violating other rules governing the administration of examinations.
-
Fabrication: including but not limited to, falsifying experimental data and/or citations.
-
Plagiarism: intentionally or knowingly representing the words or ideas of another as one’s own in any academic exercise; failure to attribute direct quotations, paraphrases, or borrowed facts or information.
-
Unauthorized collaboration: working together on work that was meant to be done individually.
-
Duplicating work: presenting for grading the same work for more than one project or in more than one class, unless express and prior permission has been received from the course instructor(s) or research adviser involved.
-
Forgery: altering any academic document, including, but not limited to, academic records, admissions materials, or medical excuses.
-
This summer section has a revised AI policy, given the accelerated pace of the course. The use of AI coding agents (e.g. GitHub Copilot, Cursor, Claude Code, ChatGPT) is permitted when working on your projects. That said, this is not a free pass; the following rules apply without exception:
-
You are still responsible for every line of code you submit. For each project, 2 students will be selected at random to present their work. You may be asked to explain any part of your code on the spot. If you cannot, 20 points will be deducted from your project grade. AI is a tool, not a co-author. Make sure you understand what it helped you write.
-
You must still only use structures taught in class. AI agents will happily generate code using libraries, patterns, and abstractions we have never covered. It is your responsibility to ensure that everything in your submission falls within what we have learned. If you would like to use something outside of that scope, ask Prof. Romero Cruz first. Unapproved structures will result in a grade of 50 on that project, regardless of functionality.
-
Do not enter project prompts, class notes, or my code into any AI engine. This is unauthorized use of university and course materials, regardless of intent.
-
Cite your AI use. Anywhere AI generated or significantly shaped a block of code, add a brief comment:
// Generated with [tool]—prompt: "..."This is not punished. Hiding it is.
The goal of this policy is to encourage the kind of AI-assisted coding that is increasingly normal in professional settings: where you direct the agent, review its output critically, and own the result. Use it as a collaborator, not a crutch.
It's also worth remembering that a single 100-word ChatGPT-4 response uses the equivalent of a whole 500ml bottle of water, with ChatGPT-3 not doing much better. This may or may not sound like a lot, but with a quarter of the world's population having no access to potable water, it might be worth reserving the use of generative AI for things that actually need it and not to generate code that will give you an F in this class.
This class is for everybody, regardless of background, identity, or where you're coming from—and I take that seriously. You should feel comfortable asking questions, disagreeing, and being yourself here. That's what makes the class better for everyone.
If at any point you feel the environment isn't living up to that, please come talk to me.