Course Syllabus

The following is the course syllabus. Any significant updates to the below information will be announced on Piazza.

I. Course Lectures

The following is the breakdown of all the course lectures that will be covered this semester. We highly advise that you complete the lectures as suggested in the Course Schedule since most of the assignments are closely aligned with the lectures. Several of the lecture videos have quizzes, which will not be graded, but you should complete the quizzes in order to test your understanding of the material. You can also access the quizzes on Canvas → Quizzes → Practice Quizzes. Both required and optional readings related to the lectures are listed in the Course Schedule. Look for specific posts on Piazza to discuss each module/lecture.

You can view the lectures on Canvas → Modules. Under each module, there is the option to download a PDF copy of the slides or you can also download the slides on Canvas → Files → Slides. Having a local copy of the slides may be useful for studying later on. You can also find some sample lecture demo code on Canvas → Files → Lecture Code.

Module # # of Videos Total Duration (h:m:s)
Lesson 1: Introduction to Computational Photography
01-01 Introduction 14 00:16:30
01-02 What is Computational Photography? 11 00:18:54
01-03 Teaser Example 1: Dual Photography 9 00:13:36
01-04 Teaser Example 2: Panorama 13 00:15:01
01-05 Why Study Computational Photography? 19 00:28:13
Total 01:32:14
Lesson 2: Digital Imaging
02-01 Digital Image Representation 19 00:36:32
02-02 Point Processes 9 00:17:09
02-03 Blend Modes 10 00:12:18
02-04 Image Smoothing 14 00:27:54
02-05 Convolution and Cross Correlation 18 00:30:13
02-06 Computing Image Gradients 20 00:32:40
02-07 Image Edges 14 00:27:08
Total 03:01:56
Lesson 3: Cameras, Optics, Sensors
03-01 Cameras 17 00:33:54
03-02 Lenses 16 00:28:16
03-03 Exposure Triangle 16 00:27:50
03-04 Sensor 15 00:28:04
Total 01:58:04
Lesson 4: Image Analysis
04-01 Fourier Transform 19 00:28:43
04-02 Blending 10 00:19:30
04-03 Pyramids 15 00:20:34
04-04 Cuts 12 00:17:37
04-05 Features 18 00:30:28
04-06 Feature Detection and Matching (SIFT/Harris) 24 00:36:04
Total 02:32:56
Lesson 5: Applications
05-01 Image Transformations 28 00:43:17
05-02 Image Morphing 16 00:26:51
05-03 Panorama 18 00:28:05
05-04 High Dynamic Range 17 00:37:51
05-05 Stereo 28 00:43:40
05-06 Photosynth 17 00:33:37
05-07 Extrinsic Camera Parameters (Optional) 16
05-08 Intrinsic Camera Parameters (Optional) 10
05-09 Camera Calibration (Optional) 16
Total 03:33:21
Lesson 6: Video
06-01 Video Processing 11 00:17:00
06-02 Video Textures 18 00:24:00
06-03 Video Stabilization 25 00:37:30
06-04 Panoramic Video Textures 11 00:20:00
Total 01:38:30
Lesson 7: Computational Cameras
07-01 Light Fields 18 00:35:00
07-02 Projector-Camera Systems 14 00:31:00
07-03 Coded Photography 22 00:42:00
07-04 Closing 1 00:02:00
Total 01:50:00
Lesson 8: Additional Required Readings
08-01 Interactive Digital Photomontage
08-02 Accidental Pinhole and Pinspeck Cameras
08-03 Eulerian Video Magnification
08-04 Poisson Image Editing and Drag-and Drop Pasting
08-05 Patch Match and Content Aware Fill

II. Course Assessments

Your grade in this class will be made up of 5 assignments, 2 projects, 3 quizzes, 1 exam, 1 portfolio, and participation. This course does have deliverables almost weekly, so make sure that you pay close attention to the Course Schedule and manage your time accordingly so that you meet the deadlines.

This course is not graded on a curve. The grading scale will be as follows:

  • A = Above 90%
  • B = 80% – 89.99%
  • C = 70% – 79.99%
  • D = 60% – 69.99%
  • F = Below 60%

Assignments (50%)

There will be 5 assignments throughout the semester. Assignment 0 will be worth 2% and Assignments 1 through 4 will be worth 12% each. We suggest that you follow the Course Schedule for when modules and required readings should be covered because it will help you for the upcoming assignment. Each assignment will have a coding portion and a report. Students will be required to complete the provided LaTeX report template that comes with the assignment. Reports usually require students to present input images, final results, camera settings, and answers to discussion questions.

All assignments will be made available on our course GitHub repository. An announcement will be made on Piazza when an assignment is officially released.

Detailed submission instructions are given in the assignment’s README on GitHub, so please make sure you follow the instructions carefully. We will only grade reports, code, and/or other resources that are submitted on Gradescope. Submissions on Canvas/Piazza/email are not intended as backup in case something went wrong with your Gradescope submission. No exceptions.

Projects (30%)

There are two projects in this course – one mid semester and one at the end of the semester. Each project is worth 15% of the overall grade. Students will be required to replicate published results from research papers.

Students will have approximately 3 weeks to complete each project. All projects will include a coding portion and a report. Information about the projects will be officially announced later on in the semester.

Final Exam (10%)

There will be one final exam given towards the end of the semester that is worth 10% of the overall grade. You will have 1 attempt at the Final Exam, which will be open book/notes, cumulative, and online. Details on the exam will be released during the final month of class. The planned dates for the Final Exam window is given in the Course Schedule. If we need to make any changes to these dates, we will make an official announcement on Piazza as early as possible.

There is no study guide given in this course. We highly recommend that as you make your way through the course, keep good notes and organize them so you can study them later on.

Notebook Quizzes (6%)

There will be three Notebooks (i.e. Lab Exercises) in this course. Each notebook will have a corresponding quiz that is worth 2% of the overall grade. It is important that you complete the notebook before attempting the quiz. For each quiz, you will have 60 minutes to complete 5 questions.  You may discuss the notebook topics on Piazza, but you may NOT discuss quiz questions (this is an honor code violation). The quizzes are open notes/lectures/notebook/resources, etc. The questions are multiple choice, and the wording of the questions can be a bit tricky (so pay attention).

There are no questions on the quiz from the Challenge section of the notebook. Instead, we would like you to try those & discuss with peers on Piazza. We will  open up a separate thread where you can collaborate on the challenge problems. We advise that you participate in these discussions. You may learn something that can help you in your future assignments/projects!

Participation (3%)

The participation part of the course includes completing the Plagiarism Quiz at the start of the semester, and Peer Feedback for each assignment and project. Participation is worth 3% of the overall grade. Although we encourage all students to participate on Piazza and take part in discussions with their fellow classmates, Piazza participation does not count towards your participation grade.

Final Portfolio (1%)

The goal of the Final Portfolio is to showcase all the work you have done in this class in one final course portfolio. The Final Portfolio is worth 1% of the overall grade. You will create a PDF slide presentation of your class assignments and projects. We will share the portfolio template at the start of the semester so all you will need to do is just fill in each assignment/project as you go, or you can wait until the end of the semester to do it. The portfolio will be due at the end of the semester. You may share the portfolio with your friends and family so that they can see what kept you busy this term!

III. Course Policies

A. Assignments & Projects – Submission Policies

Submission deadlines for assignments and projects will be at 11:59pm AoE (Anywhere on Earth) on the specified day given in the Course Schedule. All assignments/projects (code/resources and report) must be submitted on Gradescope.

Assignments and projects in this course have two main components – resources and report. Resources include code, images, additional files, etc. Resources are submitted separately from your report. Your code will be scored by the Gradescope autograder upon submission. Assignments/projects  may have coding requirements that need to be graded manually by the TAs, which we will confirm at the time of an assignment/project’s release. All reports will be graded manually. It is important to keep in mind that the Gradescope autograder is NOT intended to be used as your test suite. You should be testing your own code, and using Gradescope for submission & verification — NOT as a replacement for your own testing. Please refer to the Collaboration policies below on what you can/cannot discuss with other students.

Keep in mind that for assignments/projects that require submission of images, txt files, etc., the autograder will only check that you submitted files with the correct name and an acceptable extension. The Instructors will still manually check all resources for correctness during grading and will deduct points if necessary.

Only your final submission to the autograder will be counted (even if you scored higher on an earlier submission).  You will receive immediate feedback on the score of your submission, some error tracebacks originating in your code, and (potentially) suggestions for test cases to consider writing on your own. When you are ready to submit your code, we will enforce the following penalties for excessive submissions:

    • <= 10 submissions → No penalty
    • <= 20 but >10 submissions → -5 penalty
    • <= 30 but >20 submissions → -10 penalty
    • more than 30 submissions → -20 penalty

We cannot selectively change the submission policy for individual students and we will NOT accept submissions outside of Gradescope, so you should carefully test your code before submitting it. If a mistake is uncovered in the autograder, we will rectify it by whatever means is appropriate under the circumstances (e.g., allow all students to resubmit, or manually fix the scores for affected students, etc.). The exact corrective action will depend on the nature of the error and the number of students who were affected.

You can re-submit your report for an assignment/project to Gradescope as often as you like up to the deadline, but your submission will be penalized if you submit or resubmit your report at any time past the deadline.

B. Late Submissions

Assignments & Projects

Late submissions will be accepted until 48 hours after the on-time deadline with a flat 10% penalty per 24 hours or fraction thereof that the submission is late. For example, if the assignment/project is due on Monday, 11:59pm AoE, any work submitted on Tuesday, 12am AoE – Tuesday, 11:59pm AoE is considered 1 day late and you will lose 10 points. Any work submitted on Wednesday, 12am AoE – Wednesday, 11:59pm AoE is considered 2 days late and you will lose 20 points. The penalty applies to the entirety of each assignment/project, even if a portion of the assignment/project was completed on time. Submissions after the end of the late period will not be graded and will receive an automatic score of ZERO.

We will only grade your LAST submission that is submitted on GRADESCOPE. Do NOT activate previous submissions to try and “backdate” your submission if you end up submitting late – we are able to catch when students do this and we will deduct points from your assignment/project grade. We will not accept submissions via email, Piazza, or Canvas. Make sure that you read the submission instructions for each assignment/project very carefully. It is YOUR responsibility to ensure that your work meets all requirements, and to avoid accidental re-submissions. If you realized a mistake(s) you made in your .py or .pdf files after the due date, please do not message us with an updated file or any images because we will not accept it.

There are several submission problems that occur due to file errors which may result in low assignment grades. All of these must be caught and resolved before the end of the late submission period, and will be subject to the late penalties. In Gradescope, it is very easy to review your submission and see exactly what the grading instructors will see. Verify that your submissions are complete and correct before moving on.

Peer Feedback

If you miss the on-time deadline, you will still have a chance to earn some points for submitting late feedback. There will be a 5 day late window after the due date to submit your assigned feedback, with a deduction of 10 pts per late day per required feedback task. Submissions after this window closes will earn a 0. Each of the 2 required Peer Feedback tasks is worth 50 points. Here are a few examples of how grading will work:

    • Example 1Submit feedback1 1 day late, and feedback2 3 days late, student will score a 60%. Earned 40pts for feedback1 and 20pts for feedback2.
    • Example 2: Submit feedback1 on-time, and feedback2 4 days late, student will score a 60%. Earned 50pts for feedback1 and 10pts for feedback2.
    • Example 3: Submit feedback1 4 days late, and feedback2 4 days late, student will score a 20%. Earned 10pts for feedback1 and 10pts for feedback2.

See here for more information on Peer Feedback in this course.

Notebook Quizzes

We will NOT accept late submissions for the notebook quizzes. If you miss the deadline given in the Course Schedule, you will automatically receive a 0 for that quiz, unless you were granted an extension (see Section D: Emergency Extensions).

C. Regrade Requests

After assignment/project grades have been returned, and you have had a chance to review the grading on Gradescope, there will be a period where we will accept regrade requests for that assignment/project. If you can document how the graders have graded your assignment incorrectly, you can submit a regrade request through Gradescope only.  DO NOT use Piazza to submit regrade requests because such requests will be automatically closed.

For each question that you want to submit a regrade request for, select the question, and at the bottom of the page click “Request Regrade”. You must provide a thorough explanation and specific reasons you disagree with the deduction you received for that question. “I worked very hard” or “this will hurt my grade” and other general statements are not actionable reasons, and such requests will be closed.

We understand that you may be frustrated/confused after receiving a grade and want immediate feedback, and sometimes the tone in the request can come across as rude. Please be respectful to the TAs when requesting a regrade. Innocent mistakes can happen during grading, and we are happy to review and make corrections to your grade if necessary.

After you submit a regrade request for each question, Gradescope sends a confirmation email to the email address that you listed in your account.

If you do not want a regrade on your assignment/project, but you want further feedback, you may message the Instructors on Piazza.


1) There is no guarantee that your grade will remain the same or change for the better if you submit a regrade request for an assignment or project. It is very possible that your grade may be reduced, depending what is found during the regrade process. For regrades, a TA will review your assignment/project and it is very possible that things are caught that were not initially caught during the original grading process, which may result in a lower score. This may include catching mistakes in other questions that were not asked by the student to be regraded. For example, for the Pyramid Blending assignment, if a student wants the Final Blended Image question (Question 3) to be regraded, but during regrading, the TA realizes that the student did not use original input images (Question 1), points will be deducted from Question 1 that were not originally deducted. 

Important Note: We will NOT keep the higher of the two grades – the grade you receive from the regrade will be your final grade for that assignment/project. Please keep all of this in mind before you submit a regrade request.

2) We do NOT accept regrade requests with the reason being that you re-submitted an old assignment and you did not receive the same grade as you did in a previous semester. Submitting old assignments does not guarantee you the same grade as the one you initially received in a previous semester. All assignments are reviewed each semester, and changes are made in questions asked, and grading rubrics are updated. If old assignments/projects are submitted, they will be graded as new assignments/projects using the rubric currently in effect. Repeating students should examine the assignments/projects closely to make sure they have fulfilled current requirements.

3) We will not accept regrade requests for the following issues:

    • Images in PDFs not loading properly or getting cut off the slide/page
    • Blank Python files or report templates being submitted instead of the completed one
    • Submitting the wrong assignment
    • Broken links
    • Missing files
    • Accidental re-submission during the late period

Expected turnaround time for regrade requests is approximately two weeks. Regrades are addressed in the middle of assignment/project grading, which take priority, so please be patient with us.

D. Emergency Extensions


You must notify us as early as possible in order to be considered for an extension. Do NOT message us weeks after the assignment/project is due or after your grade is returned to give an excuse. In order to request an extension, send a private note to the teaching staff (choose “Instructors” as the recipient so that we can all see it). Depending on your situation, you will either be asked to provide your substantiating documentation (e.g. verifiable doctor’s note), or we might direct you to the Office of the Dean of Students, who help assist students with medical and personal emergencies.

If you have received accommodation from the Office of Disability Services, please contact your Head TA immediately (see Section E below).

If, for whatever reason, you are unable to be active in the course for a long period of time, please message the Instructors so they are aware of your situation. For cases like these, we will ask you to contact the Office of the Dean of Students.


If you have a disability that requires accommodations, please contact the Office of Disability Services immediately since the process could take some time. To receive accommodations, ask Disability Services to forward Dr. Essa and the Head TA a letter specifying the accommodations you should receive. To make sure that accommodations are implemented right away, please email or send a private message to your Head TA on Piazza. We will be happy to work with you.

F. Official Course Communication

PIAZZA will serve as the PRIMARY source of communication in this course. All official announcements from the Instructors will be made on Piazza ONLY. Communication with the Professor and/or TA team should be exclusively through Piazza.

We understand Slack/Microsoft Teams are popular forums that students like to use to communicate with each other. Slack/Teams are NOT official forums for this course. If you need any TA guidance on any of the assignments or projects in this course, ask your questions on Piazza. The Professor and the TA team will NOT respond on Slack or any other forums.

Please DO NOT email (GT email or Canvas email) the Professor or TAs any course questions that can be answered on Piazza (e.g. questions about assignment/project, logistics questions). Only use GT email if there is an  emergency issue that needs immediate, private attention. DO NOT use Canvas email because it is rare that the teaching staff checks their Canvas inbox.  The TAs will do their best to respond to questions on Piazza in a timely manner, and will monitor it several times throughout the day and evening hours, but not continuously. Our goal is to read and respond to student questions within 24 hours, not instantly. Other students may answer your question as well; we also review those responses.

Please make your question(s) public so all students can benefit from the discussions. Sometimes, TAs will ask you to make a question public because we know others will ask the same thing. In classes with hundreds of students, we need to be efficient in our time and answers. You can help everyone by asking assignment/project questions in public. You have the option to post anonymously to the class, but your identities will be known by the Instructors. Remember to use the appropriate tag for the assignment/project so it’s easier to filter out questions. If you need to share your code or feel like you will give away an answer to an assignment/project question, please make your post PRIVATE to the Instructors only. Do NOT share your code, test cases, or solutions to questions in the public forum. Our team will be monitoring Piazza and will remove posts that should not be shared publicly. Please do not single out TAs when you create a private post. Sometimes, posts do get overlooked, so there is a better chance for your question to get answered in a timely manner if you include all of the Instructors.

Please remember that Piazza is our official classroom. Both the teaching staff and students are all required to maintain high standards of interaction. TAs will be monitoring Piazza and will make a post private and/or remove comments that are not seen as appropriate for the public forum. Piazza is for course related discussion and is NOT a forum to publicly raise issues about the class. If you have any issues that you want to share, please raise them PRIVATELY on Piazza with the Instructors. All Instructors are required to maintain the privacy of all students.

G. Office Hours

This course does not have any scheduled time for office hours. Please ask all of your questions on Piazza. If Dr. Essa decides to have office hours, an announcement will be made on Piazza.

H. Collaboration

While we encourage healthy discussions and shared learning among students, we require the following at all times throughout the term:

    • You may NOT copy code from any sources (students, online sources, books, etc). All code must be your own. 
    • If anyone helps you on an assignment/project (student or non-student), you are required to acknowledge any help you may have received in completing the work, even for a small task (e.g. holding a light, taking a picture), or suggesting a possible high-level path to a solution. Be explicit and provide details in your report.
    • Do NOT share test cases for assignments/projects. It is up to you to figure out the assignment/project coding requirements and how you should go about testing them.
    • All students must ensure that they do not make any of the code for assignments/projects publicly available now and in the future. You are required to take steps to prevent future students from having access to it. Consequently, if you are using any version control systems such as Git, please make sure that you mark your repositories as private.
    • You are, however, allowed to share snippets of your code on Piazza in specific threads created by the teaching staff AFTER the assignment/project is closed and only when the Instructors announce that it is okay to start discussing. We will create these threads after we make sure that everyone has submitted their work.
    • You may not generate images using third-party software (e.g., Photoshop) and pass these results off as your own. Doing so is considered an honor code violation in this class. You must explicitly credit all third-party software you use to generate or modify your images in the report for each assignment/project.
    • You may NOT collaborate at all on the Final Exam. Students are not to discuss any questions or answers from the actual exam with classmates or anyone else until after the testing period is complete.

We use automated plagiarism detection software that analyzes and cross-verifies every submission with others from present and previous offerings of this course as well as other external sources. We will be using this and seeking clarification from those identified by this system. Students who are suspected of plagiarism will be reported to Georgia Tech’s Office of Student Integrity.

I. Academic Honesty

This is a reminder about academic integrity and your duty as students to uphold the honor code. (See: Plagiarism is unethical, violates the Georgia Tech code of academic conduct, and hurts students who do their work fairly and professionally.
The definition of “plagiarism” is given in the official OSI policy on academic integrity. In this course, the definition includes copying code or text from anyone else or from a previously existing source. This includes, but not limited to: Wikipedia, published research papers, current and previous classmates’ assignments and projects, code through a public source such as GitHub, or your own past submitted work from previous terms in this or other classes. (You MAY reuse your own existing work, but you should indicate which parts are being reused.) “Clear” citations make the distinction between your own original work and any other sources unambiguous; you should specifically identify functions and other content that is not your original work for this class during this term.

That being said, there are ways in which you can utilize outside material without it being plagiarism. While you should cite the course lecture materials if you use them in your problem set report, we certainly do not consider this plagiarism. The same goes for figures/excerpts from recommended textbook sources (such as Forsyth and Ponce or Szeliski) as long as you properly attribute them by book title and page number. Any text, technical paper, or your own past classwork which is properly cited after being quoted is fine as well (such as through footnotes). Similarly, it is okay to share small bits of generic pseudocode on the Piazza forum. Again, if you use code or significant ideas from Piazza, please say so and provide the post number and follow up discussion (e.g. @123_f1).

Please note that Academic Integrity is taken very seriously here at Georgia Tech. Failure to uphold the honor code has severe consequences, including but not limited to receiving a “fail” grade on the assignment and severe disciplinary action from the Office of Student Integrity. We will continue to watch for instances unworthy of any student and hope that students follow both class and institute policy.

J. Concerns with the Class

Throughout the semester, some of you may have concerns or issues with this class. They may be minor issues such as feeling that some requirements were unclear, or that you have an objection to using a program or library that we require (or you prefer a specific version of some software you like), or even that you do not like the fonts we use. Or they may be more serious, such as a disagreement with the Instructors (Professor and the Teaching staff) on some issue or grade. In any case, we ask that you follow the guidelines here for reporting & addressing your concerns – If you disagree with a specific grade, please submit a regrade request (see Section C above). We will look at your work again from scratch and review it on its own merit (be warned, sometimes a complete re-grade has resulted in a lower score, as graders may find issues that were previously missed). The bottom-line goal of our grading system is to be fair and consistent. This is a large class, and we will treat everyone fairly.

We do request (well, more like require) that you NOT use Piazza to lodge major complaints in a public post. Instead, please send criticisms and suggestions via a private post to the Instructors. We prefer if Piazza is left to discussing course content and for learning.

If after contacting the teaching staff and you do not feel your issue has been resolved, you may escalate the issue by emailing and asking that your ticket be assigned to Jay Summet.