Lecture: MW 11AM-12:15PM @ SENSQ 5502
Instructor: Nicholas Farnan (nlf4 [at] pitt.edu)
GitHub: nfarnan
Office: 6313 SENSQ
Office Hours:
MW 9:30-10:45; TH 11AM-12PM
10-2 The schedule for advanced topic presentations will be as follows:
  • OCT 22: Networking (CS1666RPG)
    • David Gorny
    • Ryan Killen
    • Jake Himes
  • OCT 24: Graphics (Spaceforce)
    • Luke Bergenthal
    • Kevin Wang
    • Dylan Umble
    • Zhisheng Xu
  • OCT 29: Physics (2D-Hockey)
    • Ethan DeFrunk
    • Devin Jones
    • Tim Ruppen
    • Harlie Curcio
  • OCT 31: AI (Bandcamp)
    • Ness Colihan
    • Graeme Rock
    • Christian Brill
  • NOV 5: Networking (2D-Hockey)
    • Owen Schaefer
    • Alex Drizos
    • Antonino Febbraro
  • NOV 7: Physics (Spaceforce)
    • Anthony Martrano
    • Ruth Dereje
    • Srilakshmi Sampath
  • NOV 12: AI (2D-Hockey)
    • Chihao Sun
    • Xiaotian Yang
    • Michael Hermenault
  • NOV 14: Procedural Generation (Bandcamp)
    • Brendan Valley
    • George Meisinger
    • Jacob Bader
    • Justin Budd
  • NOV 19: Graphics (CS1666RPG)
    • Brandon Badger
    • Mitchell Leng
    • Kexin Wang
    • Sanketh Kolli
  • NOV 26: Physics (Bandcamp)
    • Kyle Hartenstein
    • Tyler Thompson
    • Brad Munson
  • NOV 28: Networking (Spaceforce)
    • Zane Kharitonov
    • Ryan Kuhn
    • Carolyn Cole
    • Ling Yan
  • DEC 3: AI (CS1666RPG)
    • Senjun Fan
    • Austin Himler
    • James Finkel
9-26 As a note, lesson 1 of LazyFoo's SDL2.0 tutorials (01_hello_SDL) covers installation of SDL2.0 on Linux/Mac/Windows. The MinGW-based Windows approach would allow for the closest mirror to the SDL examples I've posted to the examples repository.
9-19 The second management week evaluation will be Wed. 9-26. For the second managment week, each team should add the following to their repository:
  • MANAGE.md
    • Should list the student who will be assigned to each of the management weeks throughout the term
    • The dates of potential management week evaluations for the term are as follows:
      1. 9-19
      2. 9-26
      3. 10-3
      4. 10-10
      5. 10-17
      6. 10-24
      7. 10-31
      8. 11-7
      9. 11-14
      10. 11-26
      11. 11-28
      12. 12-5

      Note that I have included both the date of the midterm (10-10), and the Monday immediately after Thanksgiving break (11-26, as we will not meet the day before Thanksgiving break 11-21). Also note that there are a total of 12 possible evaluation week points, the first of which was today. You are free to pick whichever 9 or 10 of the remaining weeks you like for use by your team. The only weeks that will be mandated for use are 9-26 and 12-5 (where the final game must be presented). Note that if your team chooses to use both 11-26 and 11-28 as management weeks, equally significant progress will need to be displayed on each of these two days.

  • One image created and added by each team member to be used in their portion of the credits for the game. This image should, at a minimum, contain the team member's name.
    • The resolution of these images should be decided by the team. This would be a good opportunity to decide on the overall resultion that you will want to use for the overall development of your game. Supporting multiple resolutions will be tricky, and is not required by this project.

  • A basic SDL application that will display each team members credits image one a time for 3 seconds each and then exit.
9-12 As we are wrapping up the game pitch presentations, you will need to form teams to work on the term projects. The class will need to divide into 3 teams of 10 and 1 team of 11. You can use the class-wide Slack to look for additional team members or to find yourself a team outside of class.

The first "management week" evaluation will be Wed. 9-19. To prepare for this, each team should email me as soon as possible to state which student will take on the first managment role, and to provide a link to their project repository on GitHub.

For the first management week evaluation, I will need to see the following in each Team's project repository:
  • README.md
    • Should describe the game being produced
    • Should state the goals for this game for the term (i.e., what criteria must be met for the term project to be complete)
    • Should describe the 3 advanced topics that will be implemented for the game
    • Should list which students are working on each advanced topic subteam
    • Should describe what organizational approaches the team will take over the term, e.g.:
      • Will Slack or equivalent be used for project discussion?
      • What development methodologies will be used (if any)?
      • What coding style will be followed?
  • TEAM.md
    • Should list each team member's full name and Pitt email address (e.g., nlf4@pitt.edu)
    • Should be editted/modified by each team member. Each team member should add their own name. This will ensure that everyone has at least 1 commit to the repository.
8-29 Be sure to have a 2 minute game pitch prepared for class on 9-10. You should be sure to mention 3 advanced topic ideas for your game, each requiring extended study in some topic that could be presented in a 15xx or 16xx CS course.
8-27 Welcome to CS 1666!
Class web site is up. Please look over the Course Information and Policies.
8-27 The midterm will be held in class on Wednesday Oct 10th.
8-27 All example code for the term will be posted to the following repository:
0 Introduction to the course
Goals of the course
Video game design examples
Miyamoto on World 1-1
Analysing Mario
1 Programming in C++ slides
2 2D graphics
Lazy Foo's SDL2 Tutorials
Lazy Foo 1, 2, 5, 6, 7
3 Event-driven programming
Basic motion
Lazy Foo 3, 4, 18, 26
4 Collision detection slides
Lazy Foo 27, 28, 29
5 Tiling
Lazy Foo 11, 14, 30, 31


Recommended C++ Books:

Grading Breakdown

Participation 5%
Game pitch 5%
Midterm exam 25%
Management week 5%
Advanced topic presentation 25%
Final game 35%

Tentative Syllabus

Course Policies

Course Communications

The instructor and TA will periodically post announcements to the course website. It is every student's responsibility to regularly monitor these announcements. The instructor and TA will periodically email enrolled students with announcements. Students must check their Pitt email at least once per day to ensure these announcements are received. When contacting the course staff via email, messages must be addressed to (or CC) both the instructor and the TA. Email subject should be prefaced with the appropriate prefix (e.g., "[CS15XX]").

Academic Integrity

All assignment submissions must be the sole work of each individual student. Students may not read or copy another student's solutions or share their own solutions with other students. Students may not review solutions from students who have taken the course in previous years. Submissions that are substantively similar will be considered cheating by all students involved, and as such, students must be mindful not to post their code publicly. The use of books and online resources is allowed, but must be credited in submissions, and material may not be copied verbatim. Any use of electronics or other resources during an examination will be considered cheating.

Cheating in this course will result in a grade of F for the course and may be subject to further disciplinary action.

Lecture Attendence

Students are encouraged to attend all lectures, which frequently include material that is not directly taken from the text. If a student misses a lecture, he/she is still responsible for the material covered and is advised to copy the notes from a classmate.

Respectful Discussion

This course may include open discussion or other interactions among students. To allow all participants to express their viewpoints, all discussion must remain civilized and respectful, and participants must avoid comments and behaviors that disparage others. A student who feels their viewpoints are not being respected is encouraged to contact the instructor, who will work to correct the situation without revealing the student's specific concerns to the rest of the class. A student in this situation who does not feel comfortable contacting the instructor directly is encouraged to contact the TA, who will uphold the same degree of confidence in relaying the issue to the instructor.

Audio/Video Recordings

To ensure the free and open discussion of ideas, students may not record lectures, discussion or other course activities without the advance written permission of the instructor. Any recording properly approved in advance can be used solely for the student's own personal use.

Copyrighted Materials

All course material is subject to copyright, including notes, slides, assignments, and solutions. Students are allowed to use the provided material only for personal use, and may not share the material with others, including posting the material on the Web or other file sharing venues.


We believe that students should be able to distinguish between helping one another understand the core concepts of the course material and cheating. We encourage students to discuss the content of the course in ways that will improve understanding without violating academic integrity, such as clarifying the objective of an assignment or discussing general solution tactics.

Late Assignments

All assignments specify a precise due date and time. Late assignments will not be accepted. Students must ensure they understand each assignment's submission procedure in advance of its deadline to ensure that submission difficulties do not cause an assignment to be rejected.

Grade Appeal

An assignment grade can be appealed up to two weeks after it has been returned. After this point, no appeals will be considered. When appealing a grade, attach a single-page cover sheet that provides a clear description of why you feel the assignment was graded unfairly; the entire assignment will be re-graded.

The goal of a grade appeal is to ensure a fair and consistent score. Thus, a score will not be adjusted on an issue of partial credit if the awarded points are consistent with the grading policy adopted for the problem for the class as a whole.

After grades have been posted at the end of the term, any further questions or concerns must be presented to the instructor in office hours at the beginning of the following term.

Make-up Exams

Students must be present for all exams. Make-up exams will be given only in the event of a documented emergency. The instructor must be informed of the emergency in advance of, or as soon as possible after, the missed exam. Missing an exam under any other circumstances will result in a score of 0 for the exam.

Grade Records

All graded materials that a student receives back should be saved in a safe place until after the term has ended and he/she has received and accepts his/her final grade. In this way, any grade discrepancies can be easily resolved.

Students with Disabilities

If you have a disability for which you are or may be requesting an accommodation, you are encouraged to contact both your instructor and Disability Resources and Services, 140 William Pitt Union, 412-648-7890, drsrecep@pitt.edu, as early as possible in the term. Disability Resources and Services will verify your disability and recommend reasonable accommodations for this course.

Religious Observances

In order to accommodate the observance of religious holidays, students should inform the instructor (by email, within the first two weeks of the term) of any such days which conflict with scheduled class activities.

git http://git-scm.com/
Pitt Academic Calendar http://www.provost.pitt.edu/information-on/calendar.html
Pitt Student Counseling Center http://www.studentaffairs.pitt.edu/cchome
Pitt Disability Resources http://www.studentaffairs.pitt.edu/drswelcome