CS-6475 - Computational Photography

Search for a Course:

    CP
    Toggle to Select Spcific Semesters

    Reviews


    Semester:

    Once of the worst course I’ve done during my life.

    Super lazy TA’s always mentioning they have life and other work to do. If you don’t have a time and should constantly cry about it, just don’t be TA.

    No recurring office hours.

    Very boring homework. Everything is super strict.

    • Function names, arguments.
    • If something is wrong by 10^-9, it’s marked as wrong.
    • Limited submissions, that don’t increase even when it’s a mistake on TA’s side. I think, they do their best to hide their mistakes
    • Can not import simple things

    Professor and lectures look fine. Though, I think, course would benefit from major refresh in TAs and homeworks


    Semester:

    Overall great class, HWs are hard but doable and the class is more than JUST a coding class.

    I was able to get an A in it and my undergrad is NOT in CS so it is doable. Great course to take before taking Computer Vision.

    to see my full review on the course, check out my youtube channel: https://www.youtube.com/watch?v=ob1kSNGmv48


    Semester:

    The class overall was difficult but very rewarding. I thought each assignment did a good job of relating back to the lectures in the course.

    Overall 5 assignments which varied in difficulty. Some were much easier than others but each assignment came with detailed docstrings on the logic that needed to be implemented. The instructors were willing to help through ED as people reached out as well

    There were 2 projects which were the hardest portion of the class in my opinion. These provided no clear instructions other than implementing an algorithm directly from a published paper and asking questions through ED. There were about 2-3 weeks allotted for these projects and you definitely needed at least a full week of work to create something meaningful.

    The final exam as open everything and drew a lot of content directly from the lectures and the assigned reading that supplemented the lectures towards the end of the course.

    This has been my 6th class in the program and overall probably my favorite. I’ve also taken HCI, SAD, AI4T, AI and ML4T. This had a similar difficulty to AI in my opinion.


    Semester:

    This course is less linear algebra intense than Computer Vision but has a lot of overlap both in code and lectures in the beginning. Prof. Bobicks lectures are more math heavy while Prof. Essa’s are more conceptual, and since I’ve already taken Computer Vision, I did not find it necessary to watch the lectures for this course except for some later lessons when taking the final exam (2x speed). If you feel you are struggling during this course, I would recommend you watch Bobicks lectures, esp around Laplacian pyramids and homography.

    However, the course is more time consuming than Computer Vision because of the addition of reports and the fact that after the 2nd assignment, with the exception of an additional week for each project, you will have something big due every week. This contributes the majority of the stress of the class if you’re trying to get an A, as assignments past the first 2 count 10% and projects count 15%. Similarly, peer feedback and the notebook quizzes are weighted heavily enough that they matter. Getting a B, however, is much more achievable and with less stress.

    Some overall positives:

    I do like the fact everything you do creates interesting results / outputs that you can then show off.

    I thought that this class was well run, esp thanks to Bob and Kimberly.

    I also really enjoyed both Projects where you implement algorithms from research papers. If you struggle here be sure to brush up on vectorization in order to debug much more quickly and definitely attend office hours.

    Overall though, I am neutral / liked just because of the early overlap with CV, and the amount of stress and time consumed. I think Essa’s lectures really shine in the later lessons and wish there was more focus on this.


    Semester:

    This course was much harder than it should be. Glad I dropped to preserve my emotional health; this course isn’t worth the stress and work. But I’m sad because I actually enjoy the subject matter and wanted to learn more about it.

    Here are some specific criticisms. Note that I dropped after the second project, so things may have changed later on (although I can’t imagine things got significantly better).

    • The professor of record (Dr. Essa) was non-existent – didn’t even say hello to the class. The TAs run the show.

    • Lectures were mostly surface-level discussions and oftentimes irrelevant. Sometimes interesting, but I didn’t like the lecture style.

    • Assignments were fair. Bits of coding in Jupyter notebooks.

    • Projects were awful and the reason why I dropped.

      • The TAs offered no help. Every TA answer to a question was a variation of this:

        Please reread the project instructions – all the hints and help you need are there.

        Sounds fair, except that those “hints” were sometimes cryptic and were spread out in any of 10 different files/places:

        • some were in the project announcement/”help” posts on Ed
        • some were scattered throughout the project files
        • several were random comments spread throughout the 5+ files of the LaTeX report template
      • There are no office hours. Not even ones recorded from previous semesters were made available.

      • You are penalized for checking code against the auto-grader – points are deducted after X submissions. Other courses use velocity thresholds (X submissions allowed every Y hours), so not sure why that’s not implemented here (should be a OMSCS standard at this point).

      • They are very strict about no code sharing, yet they are extremely specific about what your functions need to return – and because the projects are basically one long pipeline, simple errors in an early function are devastating.

      • But you can’t share any code, even the most simple test cases – they are very strict about that. Yet the tests they provide are useless.

      • So you are left to code your own, with no collaboration, no help from the TAs, no way to check against the auto-grader, no useful lectures.


    Semester:

    Before I started this course, I read the reviews here and while reviewers said it becomes hard and you need to put more hours into it later, it’s manageable. After I took the course, the best decision I had is I dropped out, seeing that the project’s requirements can be unnecessarily ambigious and later on you realize the lectures will be useless apart from basic knowledge.

    The TAs don’t help much with this nightmare and while I am all into pushing students into learning by themselves, I don’t know why we should be going in circles when asking questions on Piazza.

    It’s a shame because I was interested in the course material. But this doesn’t mean I have to torture myself for 3 months.


    Semester:

    bob is a good responsible man if you like bob marley you’ll like bob

    not much to add to the negative reviews. quizzes are unreasonably difficult given the baisc nature of the lectures. final exam is mostly ‘choose all that applies’ did not bother studying at all ctrl + f will get you at least a 60

    assignments were fair. projects were the main source of psychological torture. “here’s a hammer and a blueprint build me a pyramid in 2 weeks.” there were silly moments when i reread the papers in vain and regret taking this class. in hindsight it dont matter whether you could come up with a perfect implementation of the algorithms. what they really want to see is a genuine documentation of your efforts - the final result is somewhat irrelevant. explaining your failure thoroughly > talking about your success succinctly. my project2 results were garbage yet my report allowed me to escape with a B

    knowing linear programming is not a must. not sure things will change but they were lenient with my alternative method for p2. for p1 i worried too much about implementating the algo rather than writing a thoughtful report. in summary this class is focused on doing research, coding, and journalism

    if you enjoy perusing papers in search of the truth if you’re confident in your algo skills then go for it otherwise avoid


    Semester:

    I loved this class, even with some of its weak qualities.

    Math

    Early on, I had some extreme math-phobia but it wasn’t as heavy in the mathematics as it seemed. In particular, I freaked about not really understanding the Fourier Transform. It didn’t matter & a high level understanding was enough. It did, however, do an exceptional job of demonstrating applied mathematics. If you understand a derivative you will be fine.

    Homework

    I found the assignments to be extremely easy to write the code for. They basically gave you a template with a ton of docstrings that spell the whole thing out for you. They were enjoyable to do since you got to see some outputs quickly, and I actually really enjoyed taking my own pictures.

    The first project (seam carving) was awesome. I wish my code was faster, but otherwise it was a super fun experience. It really made me feel like I accomplished something.

    The second project was brutal for me. I did not get the linear programming part right. I also ended up editing my test harness for the TAs incorrectly, and had to submit after the due date to avoid losing tons of points by having something that “didn’t run” given the instructions in my readme. That 10% one day deduction cost me, but without it (and a poor LP solver) I still had an 89. I spent nearly 100 hours on this project beating my head against the LP solver. I’d probably estimate it as a weekend project if I just knew what I was doing in CVXPY.

    Exam

    There was no midterm exam and the final was cumulative (open notes/book/internet). I think it was actually easy given that format but I probably wouldn’t have even passed without the notes/internet.

    Class Experience

    A few brave souls had no fear about posting questions to Piazza and they are probably the biggest reason why I didn’t have many problems. Answers were prompt (though sometimes insultingly phrased).

    Dr. Essa hosted an office hours every week. This is my first class where that’s happened. The TAs also held office hours as needed. This also made a huge difference to me. Instead of feeling completely alone, they helped me feel like they really were there to help. Truly, a great instructional team giving the best student experience they could.

    Workload

    I feel like 14-15 hours / week is accurate on this due to the many papers, lots of lecture material, and homework that didn’t stop. During the last three weeks, I took multiple days off work, pulled all-nighters, and worked 12+ hour days on the weekends. I wouldn’t pair this with anything else.

    Final Thoughts

    Implementing papers and writing reports both sound like they suck but they turn out to be huge strengths of the class.

    Writing the reports forces you to understand what you did. All you need to do is answer the questions posed in the latex templates without being lazy. The templates are provided, the questions to answer are there. You just type. The hardest part of the reports was editing my answer to be small enough to fit the amount of exposition they wanted.

    Implementing the papers was challenging because it forced me to really read them and deal with some confusing stuff I normally would gloss over. It was super rewarding in the end, though.


    Semester:

    Grade Earned: C
    Learned Cool Stuff: Yes

    The difficulty of this class was not set up to let you earn a decent letter grade but rather to get some exposure and experience to practical uses for OpenCV + Python. I work 50 hrs/wk as a SWE and was bothered the projects were not released early enough to have time to do properly. I put the same amount of effort into the Midterm and the Final Project and almost got a zero on the midterm while acing the final. A TA suggested I should drop out of OMSCS and instead join the on-campus Master’s program.

    I failed the OMSCS Computer Vision course last semester and found it to be equal in difficulty when it comes to assignments. The only reason I passed this course this semester was because I now had more experience with the tools and course setup. All I could manage was to start projects as soon as they dropped and to understand the project whitepapers as much as possible.

    This course and CV gave me great exposure to concepts I would not encounter in my industry or in undergrad so I am very grateful for that. The difficulty of the course did not ruin my enjoyment of the subject but it did give me lots of stress and poor physical/mental health for the duration of the semester.

    Don’t watch the lectures unless you have free time after doing the readings. They didn’t help me except for on the final as a source for questions. I recommend you convert the lectures playlist from YouTube into a searchable transcript since it’s hundreds of short videos.

    If you have personal or career interest in computational photography as a subject, take this course. Otherwise, it is not worth it. Do not bundle it with other courses.

    To get an A, you have to focus on being perfect at coding for the midterm project and write extensive amounts for the reports on all other assignments.


    Semester:

    As mentioned in the previous reviews, this is a gruelling course and ideally should not be paired with another. This course just introduces you to a topic at a high level and then you are thrown at the deep end trying to implement algorithms and understand the intuition behind it. The lectures are absolutely useless from my perspective and are just a basic intro. The TA’s were more or less absent with the exception of Bob. The lab notebooks were extremely shallow to build any concepts and overall the whole course is just poorly structured and executed. I got a good grade by just writing absolutely redundant stuff in the reports to make it lengthy and was surprisingly rewarded for it. The final exams questions are all from the lectures so a basic review of a couple of hours will be enough to get a good score.


    Semester:

    I am an MIT grad, Course 6-3 undergrad degree. I had the opportunity to get my master’s at MIT, but I didn’t take it, because I didn’t want to do that. I was hoping that Georgia Tech would offer a more reasonable level of challenge for me. My first class in OMSCS did challenge me at the level I was comfortable with, but this, my second class, was more MIT-style. In other words, this class offered me the chance once again to drink water from a firehose. Another metaphor: teach students to swim by tossing them in the pool and then refusing to help them out. (Students don’t already know how to swim in that metaphor.)

    To be fair, the early assignments were pretty easy and hand-holdy. However, the later assignments and especially the second project really tested me. I was disappointed with my result in the second project, but I got an okay grade. The second project literally had us trying to reproduce state-of-the-art results in a space of three weeks.

    If the instructors want to improve this class, or if you want to take my advice, learn linear programming before taking the class. That was a significant component of the second project that they didn’t tell us we had to know. All we had to do was do the tutorial (very easy) from CVXPY, but still, I think there should have been more signage that we had to do that.

    Also, I think they should have motivated pyramid blending some more. It’s interesting to blend an image of an apple and an orange together, but why bother doing that?

    Bob is kind of weird but at least he’ll quickly respond to the students…one way or another.

    I liked the course but the irritation and stress I got over the second project and the fourth assignment downgrades my feeling to “neutral.”

    At one point we had to read a blurb about Marvin Minsky (famous AI guy from MIT) which cast him in a slightly negative light, which I greatly liked. The blurb was in the course book, I believe.

    I put 10 hrs/week for my workload but I really didn’t keep track of how much I was working on this.

    My strategy for the reports was just to make every report as long and as detailed as possible, and that strategy got me good grades.


    Semester:

    The course is easy if your have the base knowledge about CV and Python. The assignments are easy if you read the docstring carefully. However, the projects are hard because some parts of the projects are irrelevant about what you have learned.

    The TAs work pretty well and give much helpful information, especially Bob. Some students may think TAs always give useless information because TAs want you to think and solve it by yourself. However, for the most of students who take this online course, they just need to be taught and they don’t have much time to be creative.

    The most frustrating thing is the report. You need to write it as long as possible to get the high credit even though the answer is just 1-2 sentences.

    If you have enough time and would like to think deeply about what you have learned from the easy lectures, this course will be a good option. If you don’t have much time and just want to learn without thinking deep, please avoid the course.


    Semester:

    The avg workload of 15-16 hrs is inaccurate. I knew that reading the more recent reviews before I signed up. Abt me, 1st semester, no prior experience in Python. I have nothing more to add to what has already been highlighted in some recent feedback on how one needs to focus on assignments and projects as early as possible. You will learn a lot in this class and importantly you shall know there is so much more out there that is beyond this class course work.

    TAs care about students when we get stuck on some problem or issue, through hints. If one is expert in Python - numpy,CV etc, you can get away with less effort but again one can spend that saved time on optional reading materials. Every week, after first 2 weeks, got some deliverable or the other. There are regular office hours to go over open questions, which I believe is a must offering for every class in OMSCS (if it’s not already)


    Semester:

    Learnt nothing in the course and just as a feedback point when everyone is looking at Piazza to solve doubts or to just make some progress on an assignment, it’s an indicator that the course needs to be restructured. The lectures are just high level and seems the only teaching this course has is that you need to teach yourself. Hopefully people will stay away from this till the recent feedback is actioned.


    Semester:

    Taking this course now. It starts off easy enough, lots of reading and lectures though. Assignments are in the 20hr/week range. First quiz is super easy, free points. After the the first 3 assignments the project hits. Project is ambiguous, and the TA’s are barely there to help. Hours sky rocket to 80hr/week. The help that is given is terrible. They ask for feedback to improve the next semester but what about this semester? Several of the students are suffering in this course right now, due to the ambiguousness of assignments. If students have to CONSTANTLY ask for help and are constantly lost, that means something is wrong. Project 2 is garbage busy work…its expected to be more lie real world work. But most of the course has been write an algorithm although the algorithm and libraries already except. Using those libraries would result in deductions or even complete failure. That is not real world. Lets touch on the tools, there is canvas, piazza, peer review, overleaf and gradescope. You do assignments and submit to gradescope. You write assignments in overleaf and submit to gradescope. Then canvas. Then peer review on peerfeedback…blah blah blah. Lots of sites and cognitive load. At the end of the day its meant to help TAs, except grades come back 4+ weeks later, and if you forget to submit somewhere or your a touch late, forget it, you lost a grade or two already.

    TA’s want review: Make the assignments easier to execute. If thats not viable, remove the restrictions on the assignments. There is a desired output, let us achieve it however we can with all the tools we have available.

    I feel like I have struggled terribly and have been trying really hard to follow. People say this course is easy and that those that struggle are just whining, but that people that say that are the ones that understand what they are doing. The <10% of the class. I spend 80+hrs a week trying to understand and working hard, and that effort currently has me at a low B.


    Semester:

    Background: I have decades of experience as SWE and BS in CS. This is my 4th course.

    This course is 50+ h/week.

    First 3 assignments are easy/medium. 2 Projects and 4th assignment are about reproducing results from scientific papers without any help. Extremely hard.

    TAs (Bob and Vicky) are not helpful. Often giving misleading clues. Don’t belive everything they say. Grading was fair.

    Biggest takeaway: in the midterm project I was able to practice and implement dynamic programing solution. I think it will be useful for GA.


    Semester:

    I’m taking the course now but in light of reading the recent reviews, just want to say that this course is not bad at all and some people just really love to complain. The reports are not bad and if it takes you 7 hours to learn how to use LaTeX to write up a report you should probably not be in the program. There are some minor issues here and there but I feel like I am learning a lot and the TAs are responsive.

    There are a LOT of readings and papers assigned but TBH I haven’t looked at the textbook once and am still doing fine. If the material seems interesting I would say definitely take this class.


    Semester:

    First of all, the recent reviews here about the course are not incorrect. I read all of them and decided that it still seems like an interesting course where I could learn something new. Oh the folly !! I don’t know how this course was a couple of years back but it is not worth taking in it’s current format. Some context: Took this course with another one while working a full-time job (working as software dev for a while now).

    • The video lectures are awful. Just high level content and introduction. No mathematical equations explained, no intuition of how the technique actually works, and neither any kind of code that demonstrates the code. Everything is look at the topic name in lectures and then Google the hell out of it.
    • The TA’s are very responsive but they try to slow walk you to an epiphany regarding every question. They are more intent on you stumbling upon the answer by reading over and over the cryptic clues they leave. As an online course with no human interaction endless thread are probably not conducive to engaged learning.
    • On top of that we have the plagiarism comments, which seem a bit condescending and also since the whole course revolves around using OpenCV/numpy how many different ways are there to code what’s required for assignments. Additionally sometimes the answers are exceedingly condescending/threatening although I am sure they did not mean it to sound that way. The assignments need to be designed in a better way. If everyone flocks to Piazza for clearing their doubts, it just means that the requirements were not explained properly.
    • Then you have the tedious, mind-numbing reports. After running the code this exercise will try to eat away at 6-7 hours as you fight with LaTex and doing retrospective questions such as “What could have gone better”. Open-ended and pointless. No learning comes from writing these reports and it takes the TA’s an eternity to grade them (again they might be overworked but the structure of this course is the reason).

    The course doesn’t help you learn any thing. If you are working full-time mostly you’ll be scrambling to get the through the next assignment. No understanding as to how the whole thing works, because using libraries does not make you understand the subject or the maths.

    TL;DR: Would strongly suggest to not opt for this course unless you are willing to find the time to go through the core material and linear algebra in depth. From my perspective that’s the only way to learning the building blocks of the image processing pipeline. Otherwise these projects are basically stringing together a bunch of methods from the open-source libraries and then trying to find what might work through trial and error. Do not expect too much support and prepare to waste a lot of time building reports.


    Semester:

    Background: BA in Computer Science and Astrophysics, minimal Python experience, tons of experience with the three Cs (C#, C++, and C), my first class in OMSCS

    I’m writing a review because I just took this course and in taking the course I found that a LOT of students came in believing this course would be a “breeze” course. There were lots of discussions at the end of the course about how this course didn’t meet that expectation. I too was under the impression that this course would be easy and had planned on taking it with a second course - ultimately I took this course on it’s own and managed to get an A (mostly from good grades on projects and assignments).

    As I am writing this review, the course is current marked for an average of 15.24 hrs/week work load. This, for me, was a pretty terrible estimate for how much work you’d need to put into this course to get something out of it (and for those who care, in order to get an A). A typical week in this course took me 25+ hours/week and I easily spent 30-35 hrs/week on the midterm/finals. In total, midterms and finals took a total of 60-80 hours for each one. I’m not positive why the average work load changed so much (perhaps old versions of the class were easier?) but it’s reasonable to ask the question “15+/week to get what out of the course?” If I spent 15 hours/week on the course, in the end I wouldn’t have gotten an A in the course, I would have maybe read 1 or 2 papers, and I wouldn’t have spent nearly as much time on the open ended questions in the assignments nor would I have spent as much time as I did on the reports. IMHO, the meat of this course and where most of the learning happens is when you implement the papers and you do the research for the open ended questions. Papers and research take time. Lots of it. If you want anything less than what I described above, it’s likely that you could get away with 15+ hrs/wk in this course (except perhaps the midterm and final) but don’t expect to come out with an A or to have learned very much.

    Here’s my thoughts on everything else:

    • Assignments: The assignments are split into three parts: the first portion of the assignment requires that you implement some function that is heavily documented and is graded by an autograder, the second portion is usually some open ended research problem, and the last portion is the Latex/PowerPoint report. The first portion of the assignments very much turned into “let’s fight with the autograder” to see what’s up because there were often minor things that didn’t make a huge difference in the output that the autograder would pick up on. I have a pretty big vendetta with the autograder at this point and I’m hoping future courses don’t take advantage of autograders too much (I might not have any hair left otherwise). The open ended question was often the question that made the assignment fun for me - expect this question to be vague (things like create a “better” composite image, etc) and purposefully so. Be very careful how far down the research rabbit hole you go - the very first open ended question I worked on I ended up with 3 or 4 different solutions and I didn’t like a single one of them but I had spent all my time trying to get 1 solution to work that I ultimately couldn’t figure out. Make sure you leave ample time to work on the reports - they often took me 4-6 hours.

    • Quizzes: The quizzes in this class were mostly easy. Generally you have ample time to do some research but I would heavily suggest not ‘winging’ it. The best way to do well on the quizzes is to do the optional labs. I unfortunately fell behind and never got the time to go back to one of the labs. Subsequently, I did very poorly on one quiz.

    • Midterm Project: The midterm required you to take a research paper, replicate image results for the paper, and then write a thorough report. This was made additionally more difficult because we had to research our own similarity metrics (we couldn’t use OpenCV libraries). Disclaimer: The report is a huge portion of the grade here. You need the code to create the report (and it does count for points) but lots of people took big hits on their report because they didn’t follow the instructions to a T. If the midterm assignment says to explain results quantitatively and qualitatively for each image - do exactly that even if it means repeating yourself. There was a small video recording portion for this assignment that I thought was largely silly and should probably be removed.

    • Final Project: The final project was similar to the midterm but required you “design your own pipeline” based on a paper. Picking a paper where you think you could achieve good results in the allotted time is a big part of the assignment. I ended up with a paper I didn’t really enjoy but I did ultimately do well on the assignment. Many of the points that I made about the midterm apply here.

    • Final Exam: The final exam was mostly easy. I didn’t do great on the final but spent probably 3 days reviewing for it (not much ‘hard studying’). Basically you have 1 attempt and 3 hours to complete all the questions which was super reasonable - I finished in about half that time and did well enough to get an A in the course. If you’ve done well on assignments and projects, I wouldn’t sweat the final too much.

    The TAs in the course really want to be helpful and really seemed to care about students doing well although I think they tried to help students in ways that turned out not to be so helpful. The biggest problem was that most answers to questions were cryptic and didn’t help students (and in some cases were left in the air with no response although that was pretty rare). I also found that Piazza being the only way to realistically communicate with TAs didn’t work out very well. It’s generally hard to look for posts, the tagging system was largely useless, please look into a better system! I’d also make two other amendments to this course. The first thing I’d do is I’d get rid of the quizzes and make the notebooks required and teach some of the material in them. They had a lot of interesting and useful information that could make for some interesting assignments. The second thing I’d say is to fix the abhorrent Gradescope system. Gradescope is, frankly, terrible - or at least the way they used it in this class it was terrible. Stop requiring students to turn in assignments to two places (Canvas and Gradescope) and lock old assignments on Gradescope after the due date (it should be impossible to accidently turn in current assignments into old assignments slots when the due date is past). The number of grading problems that came up after each and every assignment was borderline ridiculous. Claiming that we are in a masters program and masters students should be able to turn in assignments correctly isn’t a real excuse for a poor system.

    In summary, this course was hard but I got a lot out of the course by putting some serious time into learning the material - although I have to admit that there are still topics in this course where I left not having a full grasp of the material. To be fair, this is an introduction course and the topic is a cross section of so many other fields that it’s hard to grasp it all. I would definitely recommend this course for people just getting into their first semester but I’d recommend only taking this course (and not taking 2 courses). It’s probably doable to take this course along side another course but expect to make some serious trade offs in what you take out of the course.


    Semester:

    Background: BS in mechanical engineering, basic Python experience, and this was my first semester in OMSCS (took this along with AI4R)

    To preface anything negative I have to say, I ended up with almost a 97% in the class so it wasn’t a bad grade that caused any dissatisfaction.

    “Medium” difficulty is purely because there is so much busy work involved with writing the reports, so the course is difficult in that it’s a time suck. I found none of the assignments difficult with respect to the code - they practically write the code for you via the docstrings. If someone like me - with zero SWE experience - navigated NumPy and OpenCV without hiccups, I truly believe anyone with minimal experience will be fine. I didn’t write what I would consider excessive reports (they were never one of the “exemplary” reports), but made sure to write enough to satisfy the TAs. I scored 100s on all except the first assignment, where I lost one point to image quality.

    The midterm project took me around 60-75hrs to complete - 10 of those hours (a full day) was purely dedicated to the LaTex report. The remaining ~60hrs were spread over the course of a week or so, so definitely start early. I took everything the TAs wrote in the instructions seriously - so if they said “one sentence to describe the visual differences between your results and the papers’ results” I literally did it, even if it just meant stating the obvious. I somehow ended up with a 97 on the midterm despite the nightmare grading so many experienced. I’m suspicious that perhaps I slipped through the cracks simply because the TAs were dealing with such a large volume of work to grade, that they couldn’t devote the same time to every paper.

    For the final project, I did video stabilization, which took me 5 days (~50hrs) to get working code. The subsequent days spent on the project were largely due to report writing (as usual). I think your success on the final project is really dependent on what paper you pick, so be sure to read through all the options carefully and decide on something that you think you are capable of pulling off.

    The quizzes increase in difficulty, and are worth just enough of your grade that you really do need to pay attention to them. The same goes for the final exam - it’s worth 15% of your grade, so you can’t just blow it off.

    Overall, the only reason why I gave this a “neutral” review is because I did learn quite a bit, and by the time I exited the course felt pretty happy with the amount of practice I’d gotten with NumPy and OpenCV. Otherwise, I highly disliked the way the class was run by the TAs and their grading scheme. Although I scored well on everything, I hate the “more is better” mentality, and felt that I walked away with a better grade than some people not necessarily because I did better or learned more, but simply because I happened to write enough to satisfy the TAs, or hit the right keywords they were looking for.

    Regarding the TAs - they should head over to AI4R and see what a really helpful teaching staff is like. I think my negativity is directed mostly at the head TA and a select few others, who seemed to want to make things tricky, or more difficult for students in a noble effort to “help you learn”. Maybe I’m being naïve, but I’m pretty sure the vast majority of us are in this program because we want to learn. We don’t need the TA to withhold answering questions clearly in an attempt to have us “discover” the answer ourselves. If anything, giving students clear information and direction might just invoke more useful, deep discussions.

    If any of the teaching staff is reading this and wants ways to improve the course:

    • Make the assignments more challenging by toning down the handholding in the docstrings; simultaneously, the final project should have slightly more guidance from the instructors with respect to requirements/scope, or with questions students might have with the higher level math that is involved. In other words, distribute the difficulty across assignments more evenly. Then maybe you won’t have so many people caught by surprise by the midterm/final.

    • Get rid of the quizzes and final exam, or at the very least don’t make these worth 20% of the grade. The notebooks are actually very nice learning tools, but the quizzes and exam (in my opinion) are not good evaluations for learning. The bulk of learning came from actually coding up the assignments, not from being asked about some detail from a research paper that you would just google and parse for quickly.

    • Either get rid of the video requirement for the midterm, or at least give some structure to what is expected to be covered in it. I think it’s ridiculous that people lost points on this when it was so open-ended.

    • Have a grading rubric for the students to follow. I got off lucky, but the number of people complaining about this makes it VERY obvious that this is a problem. Especially with respect to the midterm.

    • TAs: please stop with the cryptic answers. It’s not helping anyone. There are times for ambiguity, but you guys almost never got that timing down right.

    To summarize, I have a love-hate relationship with this course. I thought the content was pretty good, and actually very interesting at times. The teaching staff really dragged down the experience. If they do an overhaul on how the TAs run the course, then I think this could be a good class.


    Semester:

    I had almost zero Python and OpenCV experience but I managed to get an A (94%). I would say, students are graded based on their WRITING SKILLS because the coding part is very easy and almost everybody gets near 100%. I got deducted in my assignments and the final project because my writings were “weak”, “not enough”, or “too short”. My advice is to take more time on your report. TAs have a shared rubric table for grading. Your choice of words and expressions should tick all the boxes in the grading rubric they have. 

    Assignments: Very easy. Earn points as much as possible because you’ll lose points in the midterm project and the final exam. Don’t underestimate the report. Take time on writing.

    Midterm and Final Projects: Don’t overdo with the coding part. They don’t expect you to do 100% correct math (in the final) or 100% perfect images (in the midterm). Describing how you proceeded with the project is more important. Again, take time on writing. Many students failed to write good reports.

    Final Exam:   This was tough. Even the top student could get only 95%, and the average was barely above 70. (This class is not curved. 90 for A, 80 for B.)  I prepared for a week before the exam, but it was not necessary in the hindsight. In GIOS and SAT, I practiced with flashcards and given sample exams, which certainly helped. In this class, I don’t think you’ll ever need to do that. It’s a tough exam but studying longer won’t improve your score. The exam mainly tests your reading skills. Read the questions carefully and search the class materials carefully. 


    Plagiarism Check: Apparently, they use an automated tool to check the plagiarism and send students emails telling them to admit their plagiarism, without TAs carefully inspecting them. This practice helps reducing TAs’ workload but causes unnecessary stress on students. Some students here and Slack complain about this practice and I think they should resolve it in the future semesters.


    Semester:

    Overall this is a interesting course and if you like photography and how the inside of a camera works and how the mathematical side works then it is worth taking.

    The assignments are straight forward but the midterm and final projects are the most time consuming. Start on those as soon as they are released.

    One last thing, this class has many issues with plagiarism in the past. I unfortunately was one of those cases. I passed the class and received credit for it but it was not fun at the end of the semester because of it and I could have done better. Read the instructions carefully for the assignments, especially for the midterm and final projects.


    Semester:

    Just to re-iterate what others have said:

    • Don’t base your assumptions about the necessary time commitment off of older reviews, this is a very time intensive course
    • Start everything early. You should probably watch all the lectures before the class starts. Or maybe just binge them in the first week, before you start getting overwhelmed with assignments.
    • Start the mid-term as soon as it is released.
    • Don’t forget to do your quizzes
    • You don’t have to be a super-ninja-expert at linear algebra or Numpy or Python, but it really helps to have at least some proficiency at these.
    • The reports will take time. You need to factor in that time and write them reasonably well. Make sure you cover the important things really well.
    • Slack is where it’s at. Piazza is a lot of noise, so is Slack, but in Slack you can make it a conversation. Bob and Diego are on Slack frequently.
    • Seriously, start reading the mid-term paper, like, right now.

    Overall, this is a really interesting, rewarding class. I think what you get out of it will largely depend on what you put into it. Make this a central part of your life while you’re in it. Check Slack instead of Twitter or Reddit. Think about how light is bouncing off of objects and traveling to your retina’s while you’re taking a walk. The assignments are very hand-holdy, but taking time to think through the concepts and then getting your results out of struggling through the projects is where the real value of this class is.


    Semester:

    Overall, I liked the course material, but disliked how it was ran. I felt like I learned a lot about a subject that I was very interested in learning.

    That said, this course way much more time consuming and difficult than I expected.

    The course prerequisites list certain math subjects (notably linear algebra). The heavy math background is not really needed throughout the course but comes into play for the final project. The final project was extremely difficult, with little direction to guide the students. There are others who have elaborated more with better writing, so I won’t go too much into it.

    The midterm project was more difficult than the weekly/biweekly assignments (which wre more like mini-projects with a lot of handholding in the code with docstrings), but it didn’t feel too out of whack. The main thing with the midterm project is the grading. My results were not perfect, but I thought I had done an OK job on the midterm project report. My grade on that report was a 56. I definitely did not expect a 90+, but the fact that we had no rubric to write towards and that individual sections of the report were graded by different TAs definitely affected how I wrote the report, and I handled the final project report differently due to that. If the weekly assignments were graded the same way as the midterm, then it might not be as bad.

    The TAs were overall pretty decent. In particular, Bob Kerner was great, active in Piazza and Slack, and did a good job guiding us with the assignments.


    Semester:

    I entered this course with no background in CV domain and no experience with NumPy or OpenCV. I do have quite a lot of professional programming experience, but generally not in Python which I mostly studied during OMSCS. I’ve learned a lot of new concepts in image processing and related algorithms and I’m happy I took this course. This was my 4th class in OMSCS.

    I liked the assignments and projects and generally enjoyed working on those. They exercised some of the material or extended on top of it, like the midterm project, were interesting to accomplish (the final project had some reservations, which I will cover). I’ve improved my NumPy experience substantially (well, it was almost zero beforehand). The course also carried some artistic properties related to photography and result manipulations, which I liked, including working on our own images or videos.

    Judging the course difficulty by how hard it was to get an A - for me it was very intensive in terms of both time and mental effort commitment and also hard in math background level. The math is mostly skimmed during the course material presentation (as it is for many others in OMSCS), and for some papers to reproduce it was just there to be understood (or skimmed), as it was mentioned previously, but for proper understanding I did feel I had a shallow background on more than one occasion (including intuition behind some more advanced linear algebra and calculus concepts including Poisson and Laplace equations).

    If someone wants numbers, my A was not a comfortable one - I had 89.99 average, due to low hits in the second quiz and the final exam, before getting the full credit on the final project and portfolio, which pulled it up to 91+ (I later learned that 89.5 was curved up as an A - that’s not guaranteed for future, I believe). My poor performance on the exam (apart from obviously being my own fault), which basically matched the class average (around 76), was partly due to being exhausted following the the final project completion, and also not being able to fully dedicate myself to get to the bottom of some theoretical aspects during the course, due to the ongoing conveyor belt of assignments, which consumed all of the available time. I had to invest a lot of time in studying numpy during the assignments, to do things well, which was a great outcome for me, but overall it also took its time toll. At the end, I think the grade I got, numerically, was not less than what I deserved.

    I wouldn’t like to repeat a lot of what has already been said for our term - I may not agree with everything in the scathing assessments in some of the reviews, but as a reference I would side with the review which was posted two reviews back (the one that starts with “This was my 4th class in the program”). I’ll give some personal observations.

    Teaching - indeed zero prof. involvement, apart from an elaborate set of recorded videos, which, as mentioned, did not go into any depth of theoretical details, but did cover a lot of material with sometimes useful visualizations. A lot of effort was invested by prof. Essa into those lectures, but apart from that - no inspiration, no office hours, not a single email on the course progress. Everything was run by the TA-s. I found the TA staff as solid (I’ll touch on some grading thoughts further below). Some of the TA-s posted useful CV and numpy related extras, some were also very much involved on the Piazza and slack. It felt that some TA-s were interested in students’ success. Bob Kerner and some others deserve the praise for that. The Head TA? She was ok, with occasional helpful answers and support (all polite), and likely also overloaded, but it didn’t feel like we had an active head instructor in the course.

    The TA-s (those few who were highly visible, but most likely others as well) invested a lot of their time into the course. My feeling was that they were overworked purely by the magnitude of the material to grade, which contributed to more limited and less efficient instructional support than what could have been achieved with more balanced assignment load. Such overload could be the reason for occasional avoidable slip-ups, like throwing “okey-dokey, I’ll make sure not to answer your questions” to someone who struggled with Fourier Transforms and politely asked if some other TA with less related background could help in approaching the knowledge gap (maybe it was sarcasm as the question was posted anonymously - still out of place), or, suggesting those who expect “super individual” treatment to seek “more expensive” options than OMSCS (that was in one of the discussion threads where students expressed opinions about the midterm grading philosophy missing some marks). There was an occasional feeling that because the TA-s were overworked (although there were 11 of them), they were sometimes annoyed. They also mentioned more than once the point (most likely valid) about this course term having a lot of program newcomers who were accepted based on reduced acceptance quality criteria (which by itself is obviously unhealthy), which might have contributed to the noise they were getting - don’t know. But again, while probably not hitting the high bar of all-round instructional professionalism set by, say, HPCA staff (Nolan et al.), all in all the TA-s were solid and generally helpful.

    The midterm project grading indeed turned out to be a hot point to some - I personally think the grading missed some marks in how it was articulated on picky details. For instance, losing 4 out of 10 points on a full-page algorithm section in the report because of something was mentioned not significantly “enough” (“only” in the pseudo-code and then in the ambiguities section which was graded separately and by a different person, apparently), or exact expectation on how one would describe visually identical results with imprecise references to compare with. All that replaced some of high-level evaluation on how the student got to the bottom of the aspects in relation to the work to be reproduced, which was the stated main objective. Some people hit the expectations apparently differently than others, especially, as it was noted, the report had a strict page number limit. We can only hope some points in related follow-up discussions would lead to some thoughts from the instruction staff.

    Discussion wise, for the midterm, I found that a lot was tolerated on Piazza and Slack (so much noise that I barely looked there while working on the project), couldn’t be further from “radio silence” as was suggested at the beginning, so technically I don’t think it was a substantially difficult task for someone with programming experience, in case they were lost in some details of the reference papers.

    The final project had issues, I would say, in educational outcome. In many cases, people struggled with the math theory in the papers they had to reproduce, and there was zero instructional input, by definition of the assignment. Some corners I cut were due to not getting fully up to speed with the math, which I would consider as not the best educational result. I knew I had to write an extensive report (this time with no description stones left unturned), and I knew (following the midterm) that the sections would be graded individually, thus, I had “as described in section X” being present frequently. Also, the grading was less picky on small details. So, full credit it was. Could I learn more in CP concepts with more proactive instruction for that research reproduction work? Surely. Did I feel I’d done a much more comprehensively understood work on the midterm project (where I lost almost a full letter grade of points) than on the final? Yes again. Was it related to the fact that the final project was required to be graded faster by the TA-s as it was at the very end? Most likely yes again.

    BTW, for the final project I worked on drag-and-drop which I found a very friendly paper to work on, learned quite a bit even with cutting some corners, got nice results, and even enjoyed it (still, was exhausted at the end as it was all constant load for me). It was also one of the “module 8” required papers, as part of the exam material as well.

    All in all, to reiterate, I liked the course. With all the reports grind, I do think I benefited from experience of working on them. Still, the course could definitely benefit from some better balance of the load to improve the educational experience. The atmosphere was generally nice during the course, not much of patronizing showing-off or telling this was a master degree etc., mostly professional feeling among the TA-s and students. Good Luck!


    Semester:

    Overall the class has great content and well organized lecture modules. Assignments are short projects that could be done in a weekend or so. Reports are quite tedious and comprise an unusually large component of your final grade. Lots of busywork as well - peer feedbacks, final portfolio, notebook quizzes, etc. which I personally think we didn’t need. Then you get to the midterm. Both the midterm and final are substantially larger in scope, but you also get much more interesting results. To be successful make sure to follow the threads on Piazza and watch videos/presentations in addition to reading the papers thoroughly. Start early. I do wish the course staff handled the midterm and final differently - they did not provide any help in understanding the papers, and all you can do is rely on your classmates and yourself. Also, a ton of people got flagged for plagiarism. Though I’m not sure how legitimate these are overall, some of these flagged changes were for provided pseudocode of which there was very little room for interpretation.


    Semester:

    NOTE: this review was edited after Fall 2021 with further reflections and data.

    This was my 4th class in the program. Coming into the class, I was comfortable with Python and had no experience with NumPy or OpenCV. To be transparent, I received an A in the class, so this review is not written from animosity.

    By the Numbers

    By the numbers, this class had the lowest proportion of A in all of OMSCS for Fall 2020. The withdraw rate is also program-leading at 39.6% for Fall 2021, easily beating classes like CS7641: ML (32.6% W).

    These trends are killing enthusiasm for the class: numbers from OSCAR show enrollment for Fall 2021 ended at 106 students, a dramatic decline from 442 in Fall 2020. This redistribution is detrimental to the program as students create additional unmet demand for classes with consistent positive feedback.

    I respect that the professor has the prerogative to grade as he wants, but most other rigorous and/or time-consuming OMSCS classes have generous grading policies. I urge the teaching staff to reconsider the course structure. Most of these issues can be addressed without compromising the quality or rigor of the course content by using slightly more generous grading (e.g. curve, extra-credit) and a little direction on the projects.

    TL;DR

    This is an interesting course that I would describe as an image processing class that builds on the fundamentals of photography. The class contains two very different types of assignments: 1) easy, polished, guided assignments, and 2) challenging, unguided, open-ended research replication projects. Students aiming for an A may find this class stressful & time-consuming due to the lack of grading transparency, difficulty of the research replication projects, emphasis on comprehensive reports, and lack of grading buffers (no curve, no extra credit).

    I learned a ton about image processing, research paper comprehension, and writing reports with LaTeX, but the class required thesis-level effort for the two projects. The research replication projects were some of the most challenging academic assignments I’ve ever completed (well beyond GIOS & AI in difficulty). This is probably not the fun or relaxed elective you’re expecting.

    Student Recommendations

    • Get a tripod/mount. This isn’t explicitly required, but it will greatly improve the quality of results on several assignments, and subjective quality counts for some portion of the grade.
    • Don’t underestimate the assignment questions. Many of the questions seem simplistic, but the grading rubric often requires specific keywords or more detail than implied. It’s almost always better to over-deliver on details (the common feature for “exemplary” reports was excessive content). As one Redditor wrote, it “comes down to overdoing the absolute fuck out of literally literally [sic] everything.”
    • Get active on Piazza. On the projects, the hivemind of the students is the only direct help you’re allowed to have. The TAs seem to tolerate detailed discussion as long as no code or direct assignment answers are involved. I personally hate Slack for OMSCS classes because it’s noisy, frequently off-topic, and usually dominated by a few voices, but it might be necessary because it’s one of the only places you can get personal help/discussion.

    Grading

    Thanks to the removal of “above & beyond” from previous semesters, the grading is overall more predictable. However, there’s a disconnect between the specificity of the discussion questions and the specificity of the grading rubric where it was very easy to lose nitpick points (I had ≥95% on all 5 assignments but 100% on only 1). Assignments were worth 50% of the final grade, so this eroded the possibility of a comfortable A.

    For the 5 assignments, the grading was split between the code (up to 10 submissions to the autograder without penalty) and the written report. For the projects, the whole grade comes from the reports, so you need to absolutely overdo them. The subjective standard for “graduate level work” is higher in this class than other OMSCS classes and makes Dr. Joyner reports seem like overspecified undergraduate standards by comparison (to be clear, I prefer Dr. Joyner writing assignments as the gold standard for the program; open-ended questions & requirements do not lead to better learning outcomes). Deductions hit harder on the midterm & final projects because nobody cares about the accuracy of your code.

    Tasks

    Assignments

    Most of these assignments were straightforward: review the corresponding lectures & papers, fill out the predefined functions based on the README & Docstrings, capture original photos/videos, generate the results, and write the PowerPoint→PDF report. I spent way more time (12-15 hours ea.) assembling results, writing the report, and scouring the README & Piazza for subtle details/clarifications than coding (2-5 hours ea.). A “great” result generally doesn’t receive more credit than a “good” result, so it’s worthwhile to focus on elaborate report answers rather than incrementally improving results.

    Midterm Project

    Despite the warnings from previous semesters, this project still surprised me. The issue is the sharp contrast from the guidance provided on the first few assignments. The TAs only address logistical questions, so the students were required to work out a solution amongst themselves. The algorithm is a simple dynamic programming problem, so this might not be too bad if the class has enough active/proactive students.

    After working through the algorithms, students still needed to implement 1+ quantitative metrics from scratch, write a 4-page LaTeX report, record a 3-minute video presentation, and create a README with detailed environment setup instructions. (NOTE: I believe this workload has been reduced in subsequent semesters.)

    The grading surprised many students. The TAs wrote a ~15-paragraph post-mortem on Piazza explaining all the ways students didn’t provide enough detail in the report which ironically validated the concerns that the instructions were ambiguous. It’s easy to make the wrong compromises with the strict 4-page limit.

    Final Project

    This was a choice among 5 predetermined papers. The TAs dramatically increased the minimum difficulty by replacing the most popular paper from Spring 2020, Criminisi 2003, with a paper on animating pictures which uses Criminisi’s algorithm as 1 of 4 parts. Only one paper (video stabilization) had direct connection to the lectures, so that was the popular choice for minimizing confusion & frustration (>50% of the class chose this paper). The crux of that paper was an advanced linear programming optimization problem, a topic advanced enough to get a dedicated lecture in CS6515: Graduate Algorithms. Other papers involved advanced math like this frequency space equation. Understanding this level of advanced math with no prior introduction and without any personal assistance was excessively challenging & unrealistic, in my opinion.

    The final project doesn’t require a presentation or quantitative metrics, but all of the final project choices were more challenging. It was also hard to determine what’s considered a sufficient scope of implementation because the TAs equivocated on specific inclusions/exclusions. The message I perceived was “do as much as you think we think is sufficient”, which I found inconsiderate because it prevents students from properly timeboxing & prioritizing the effort spent on the class, especially with an upcoming final exam.

    The median grade was relatively high at 87.5%, which implies to me that the grading was more holistic than the midterm project (82% median). I implemented just the core pieces of the paper, produced decent results, and wrote an exhaustive 7-page LaTeX report for full credit, which validated my “excessive content” theory.

    Final Exam

    Unlike previous semesters, we only had 1 attempt. The format was 32 multiple-choice & multi-choice, multi-answer questions, unproctored, open everything, 3 hours. Unlike other exams I took in the program (CN, GIOS), I actually thought this exam was very fair: most of the answers were pulled directly from the required lecture & reading material. If you prepare by creating an organized system for quickly browsing/searching the PDF lecture slides & research papers, you should perform well.

    Quizzes

    The mistake many students make is forgetting these exist since the deadlines don’t match any other deadlines in the class. These are pulled directly from the “lab exercises” (curated Jupyter notebooks). Only the first quiz is free points: the class average dropped from 93% on Q1 to 72% & 55% on Q2 & Q3. I thought these were too tricky (worse than the Final Exam questions), but they’re only worth 2% each. Still, another source of frustration for A students: with 5 questions per quiz, that means 2 wrong answers will cost a massive 0.8% of the final grade.


    Semester:

    Summary:

    This is a great class to take if you want to challenge yourself in both theory and coding skills. The regular homework assignments are very easy, but still provide an interesting view into the world of Computational Photography. The midterm and final project will challenge you, but anyone with experience in coding, algorithms, and reading research papers should not have serious issues. Final exam was entirely multiple choice and a fair test of students’ knowledge (even if it is open book - searching for answers won’t help you the whole way!). TAs are incredible from start to end.

    Pro tips for an A: start everything early, listen to your TAs, be thorough in your reports.

    Detail:

    Lecture Modules:

    Honestly, I did not enjoy the structure of the lecture modules whatsoever. Each topic contains a handful of modules. The modules could have over 20 individual 1-3 minute long lecture videos. Dr. Essa goes through content so quickly and at such a high level there doesn’t feel like any teaching is happening. The videos (and some associated lecture quizzes) are littered with minor errors that TAs have to continuously correct to ensure no one learns the wrong information. It’s a shame really as the topics are incredibly interesting - just poorly delivered.

    Homework:

    Homework assignments are a walk in the park. Code templates are provided to you and the docstrings are very, very thorough since they can be translated directly from English to python and get you full marks on the code. The corresponding reports are where other students tend to slip up (and is honestly why you see so many complaints below from people too focused on the code aspect of the course). TAs consistently convey the message that discussion is important in READMEs, Piazza, and Slack, and as long as you’re thorough in your reports, you’ll come out with full marks.

    Midterm:

    The midterm was a challenge, but not overly difficult. It was a challenge simply because students went from having their hand held through homework assignment docstrings to being left completely alone to solve a problem. The directions were essentially all there in the assigned papers, and yes there were ambiguities, but that was the point of the midterm (there’s a report section dedicated to it!). A lot of people complained about the rubric out the back of the MT due to their grades suffering from lack of discussion and it not being clear that discussion was important, but it was stated numerous times that this was important for the midterm. Report sections had advised lengths to indicate how important sections were. We also knew from every homework assignment that the split is AT LEAST 50/50 between code and report. Why would the midterm be any different? Advice to future students: get basic code running and decent results, write a thorough report, then refine your code (this is exactly what the TAs tell you to do).

    Final Project:

    The last major assignment and challenge was the final project. I will not argue that this was an incredibly difficult task in comparison to the midterm. We were given a selection of 5 papers and had to implement one ourselves. This seemed to require reading around 5 other papers that supported the one you selected, but that was the point of this project - a research project. You weren’t expected to understand all concepts without further self-guided learning / research. The TAs did not expect us to complete a 100% end-to-end solution of the paper, but instead, show what we were capable of with personally-chosen scope changes. As you can see in below reviews, a lot of students were seriously unhappy with the idea of a true challenge and the idea that they might not be able to implement a paper 100%. They missed the point. Everyone will have performed just fine as long as they - wait for it - discussed their research, pipeline, and results in the associated report. Don’t listen to the people whining about unfairness. They simply did not listen to the README instructions and continuous guidance from the TAs. Again, this is 100% a difficult project, but not an impossible one. It will separate the A’s from the B’s (and if you spend more time complaining than working / start late - I guess the C’s).

    Final Exam:

    The final exam is a multiple-choice format with only a single attempt allowed. It challenges students on their understanding of ALL non-optional content from the course and is open-everything. Don’t take this for granted though, the quiz will definitely challenge you.

    Time Commitment:

    The lecture modules and homework result in a consistent 10-15 hours a week workload (more closer to the 10 side). However, given the difficulty and time-consuming nature of the midterm and final project, I left 15 hours a week to spread out the general time commitment. The MT and FP will consume closer to 25 hours a week as long as you START EARLY. I repeat - don’t start these later than you have to. Better to finish early than to rush through the final weekend.


    Semester:

    This was easily one of the best courses I’ve ever taken. While it was an incredible amount of work, the projects were engaging and worthwhile. I actually switched to the Computational Perception and Robotics track because of this class.

    The assignments aren’t bad. They do take time, but they are not overly difficult, especially if you keep up with the lectures. The most difficult parts of this course are the midterm and final project. I spent nearly 80 hours just on the midterm and probably 50 hours on the final project.

    These projects were still very interesting and fun to work with. I didn’t find anything unfair about the workload. This class also taught me how to work with numpy which has been an incredible benefit with other classes and my job.

    Take this class, then take CV. You won’t regret it.


    Semester:

    As other reviewers have said it seems like this class has undergone some changes. There were many aspects of this class that I enjoyed but some aspects that make this class terrible. The good is that the lectures are pretty good and easy to follow and many of the assignments are interesting. The problem is the reports. They add all of these dumb “busy work” questions that end up being worth more than your code actually was and there are a lot of them. The deadlines seem to be appropriate for the first half of the semester but once the midterm hit I have had no life.

    The midterm project is awful. I spent over 100 hours on it but I actually ended up with a pretty good grade. The problem is that grade is now in jeopardy. I was one of the people “flagged” for supposed plagiarism. The similarity they flagged me for is like 5 lines of code in a function that was created based off of an equation from the research paper. I honestly did not use outside sources or even talk to any other students so the fact that I have to go through this makes me furious. The final project was equally hard in my mind and the day before it was due I spent an all nighter finishing most of it up. The day the final project was due, which is the same week the final exam is and the same week the final portfolio was due was the day that they sent me an email saying that I have to fight my case on why I did not plagiarize and trying to explain my whole thought process out for code that was written 7 weeks ago.
    So overall I would say that the topics are interesting in this class but I don’t know if I would recommend it with all the extra busy work that they add and with my current experience with the midterm and final projects. Especially if you don’t like not getting credit for the 100 hours of honest work that you put into a midterm project.

    Edit: 6 weeks ago I was cleared from my plagiarism charge from my OSI review. Unfortunately though I need to get the instructor to update my grade now. I have sent so many emails in the last 6 weeks but have heard absolutely nothing from them. Their incompetence has added so much stress in my life and even cost me my company’s tuition reimbursement for last semester. Had an instructor or TA taken just a few minutes to evaluate my code it would have been obvious that I did not cheat but instead they decided to be lazy and just let OSI to deal with it. They need to be held accountable.


    Semester:

    Background – current SWE with a BSCS. Advanced python skills but no experience with numpy/opencv coming into this class.

    I want to preface my thoughts below by saying that I finished the class with a comfortable A, but the scars I elaborate on below still remain. I think my thoughts below tell a solid story about what all it takes (time commitment, keeping on top of deadlines, etc) to get an A in this class versus a B or C.

    Preamble

    I wanted to like this class – photography is one of my passions and I enjoy photo editing. I thought that taking this class would help me understand better the computational aspect of processing images and teach me something new. Based on previous reviews of this class, I anticipated a moderate workload (~15 hours a week) while being able to learn about cool things. I wasn’t too concerned about the coding portion of the class given my experience in other classes and my background with undergrad CS + current SWE. Seemed reasonable. Unfortunately, this class was torture and became a horror show in terms of time commitment and effort. I recommend considering reviews before Fall 2020 as outdated.

    As stated in previous reviews below from this semester, this class is a never-ending merry go round that becomes an extremely terrifying roller coaster ride at the end. I’m honestly really happy reading the reviews below because it makes me feel like my overall sentiments are shared with others.

    Assignments

    Let’s start with the assignments – the class has five assignments that are mild-moderate difficulty. Most of the coding is pretty straightforward because the coding follows the docstrings, but some assignments take more time than others. Each assignment includes writing a program and creating a report. The reports do sometimes take a surprising amount of time. The grading is a little bit haphazard because the instructors look for literal explanations of every single bullet point, even though they tell you not to follow the bullet points exactly. Overall, the assignments were fine and probably are not what you should be worrying about. They still took between 10-20 hours to complete and are due every 1-3 weeks. Each assignment has two peer feedbacks associated with them, which are due one week after the assignment is due. So the flow is; assignment due, peer feedback due during the window of another assignment being released, rinse and repeat. It’s just deadlines on deadlines on deadlines. There’s literally at least one thing due per week. Also, there are Jupyter notebooks with quizzes associated with them sprinkled in there. Those are not easy but are a really small portion of your grade.

    Midterm

    The midterm – this was simply getting thrown into the deep end. This involved replicating algorithms from two really vague papers. You weren’t allowed to look anything up, or discuss code pointers with other classmates. It’s branded as a research project, but I believe that it’s hard to do the “research” part if you aren’t allowed to actually research online. I started the midterm immediately when it was released, but it still took be ~100 hours to complete it. I did well on the midterm, because my results were good (not perfect) and I spent a lot of time on my report. I think I was an outlier though, because most of my classmates who I know are smart and put the work in were pretty shocked by their midterm grade. The reason for the shock is that the assignments are graded very generously (average score is a high-B or low-A), but the midterm was graded very meticulously specifically on the quality and detail of the 4-page LaTeX report. Therefore, there was no baseline for what the instructors expected, and there was a lot of backlash on Piazza and Slack over this. The average on the midterm was a 76% with a median score of an 82%.

    I want to point out one thing about the Midterm that really bothered me. The TAs, right after the midterm got graded, started a plagiarism man-hunt. My issue with this was not that they were trying to catch plagiarism, it was that they kept posting in Slack channels and on Piazza, real time, that “so many people” (direct quote) were going to get flagged for cheating. At one point they said the plagiarism rate was “10% and growing”. These posts by the staff happened more times than it should have, honestly. I was a TA during my CS undergrad and I would never have done this. I thought it was pretty unprofessional, and it also added a lot of anxiety and added stress during the final project window time. This completely deflated my morale and increased my anxiety unnecessarily, because they made it sound like if you did so much as look up a function on Google without putting a citation, you were going to be flagged and thrown at OSI. I don’t know what they ended up flagging over not flagging, but this added a lot of anxiety for me personally because I started second guessing my citations and if I had accidentally not put all of them in. My suggestion to the staff, if they are reading this: please think about what you should share with students. I understand that you want to be transparent, but there is a better way to go about it and your language really makes a difference. On top of everything, this happened during the time that all of us were working on the final project, which deserves its own paragraph.

    Final Deliverables

    Here’s the deal with the last one month of the term – you have a huge final project due, a final exam, a portfolio to put together, and two peer feedbacks to finish. For the final project, we had to choose a paper out of a list of five options to implement. Again, the papers on the list were extremely vague. Same for the midterm – no looking up anything or discussing with anyone. It seems previously, based on past reviews, that the final project was supposed to be “alright”. The problem with this semester is that the TAs removed some of the “easier” papers, probably in attempt to standardize the difficulty of the options. I think this is a fair thing to do – I will give them credit for that. The final project took me over 120 hours to complete, and I did not procrastinate on it. Started it a few days after it was released, giving me a little over 3 weeks to complete it. I didn’t even get to finish one part because it took me two full days to finish my report. Again, nothing that we learned or implemented throughout the semester helped on the final project. Sure, we were more skilled in python/numpy/opencv, but the papers were not straightforward or easy to understand by any means. If you choose to take this class, PLEASE be very mindful on which paper you choose. I know some folks needed to switch their paper decision halfway through, and they got burned on time lost. I was not one of these people, but I cannot imagine what this would be like.

    My biggest qualm with this class, by far, is that it has two final assessments. We have a very difficult final project (120+ hours with 3 weeks to complete), and also a final exam that is to be taken during the week IMMEDIATELY after the project is due. Before, this exam was two attempts. As of this semester, it is only one attempt. Sure, it’s open book. But, really? I am halfway through the OMSCS program and haven’t taken a single class with two final assessments. You basically have to start studying immediately after you submit your final project that you just got annihilated by. My mental health has really suffered because of this class. Felt no motivation at some points to finish the project or even study for the final. In fact, I would rather write this cathartic review than spend time right now studying for it. It’s just gotten to that point.

    Advice

    My advice for anyone who wants to take this class: know what you’re getting yourself into. I will admit that my expectations were off going into this class based on previous reviews, so that could be contributing to me being caught off guard with the time commitment that was needed. Expect to spend at least 30-40 hours a week (MINIMUM) starting from the middle of the term to the end of the term on the midterm, final project, various assignments, and final exam. You might have a couple days downtime based on scheduling of deadlines, but I would mentally buffer that much just to be safe. Do not take this class with another class, under any circumstances, if you are also working full time. Cite sources like your life depends on it to give yourself a peace of mind. Good luck.


    Semester:

    Background : SWE, no BSCS, first semester student

    I had a very love/hate relationship with this class. I agree with the majority of the Fall 2020 posters so far–it was intense. I, too, expected it to be a moderate workload and do-able for a first semester class. However, I had a 97% going into the final project and now hope to emerge with an 80%, because i couldn’t finish it. I spent over 100 hours on it to no avail.

    The most frustrating part of this class is the inconsistency with assignment difficulty level and the lack of transparency about grading. The first assignments have detailed information about how to complete the code and even the reports aren’t too bad, but the midterm comes out of left field compared to the previous three. As other posters mentioned, you are on your own for this and it is not an easy project. The final project is just brutal. It severely impacted my mental health and I considered dropping out of the program after this semester because of the burnout. I think it would be less of a struggle if the first assignments weren’t so simple and the workload was more evenly distributed. There is also no indication of how the reports will be graded, so you have to guess as to what to focus on. These are time-consuming and are done in a format that is really irritating. I spent more time formatting powerpoint slides than writing code for most assignments. The lectures were so-so, and didn’t really prepare me for the midterm or final project. There are a small amount of readings that were more useful, but also only semi-related to what we were working on. A lot of this class was teaching yourself with some guidance.

    The pros of this class were the TAs and how active they were on Slack and Piazza, the highly interesting material, and the amount you learn from the assignments. The interesting material is what got me through the burnout and kept me motivated to try to finish the class. I would take this class again, but I would not do it in my first semester, and I would have liked to know in advance how time-consuming it would be. It was hard to surrender my entire life outside of work to this class.


    Semester:

    I’ll go ahead and echo a lot of what I’m seeing on here. I went into this semester expecting a fairly easy workload having already done Computer Vision. This class isn’t crazy difficult, but it’s no KBAI or ML4T. The midterm and final projects alone ratchet up the difficulty. Both of them require 50-100 hours of work.

    Pros

    • The projects and homeworks often produce some very cool output. Usually in this program, the output is so esoteric or non-visual as to be meaningless to most third party observers. This class does a great job of producing some truly interesting and fun results (seam carving, final project output, panoramas, HDR images…)
    • The homeworks are a reasonable workload, especially if you’re coming from Computer Vision or KBAI and are familiar with OpenCV. I found them pretty straightforward and the provided code framework often walks you directly through what you need to do.
    • The TAs (not Professors!) are available on Slack and Piazza. They don’t often coordinate their responses or provide good answers, but they are there to provide some response.

    Cons

    • The midterm requires an enormous amount of work. Dozens of hours of coding upfront, then you need to write a detailed tech report in under 4 pages that addresses every aspect of the project. On top of the coding and the report, you have to produce a SIGGRAPH style video. The grading structure is never made clear. I think every student was confused about how the project was graded, so much so that there were several threads dedicated to explaining the grades. If you need to make a thread called, Midterm Grading - Some Explanation, you’ve already screwed up as a teaching staff.
    • I found the TAs to be pretty below-average, in general. If you complaining about something - like confusions in what is expected for an upcoming assignment, frustrations with the auto-grader not working, opaque grading schemes - more often than not you’d get a flippant response in the vein of, “When I took this class it was WAY worse.”
    • Grading response times were really long. Even though half the grade for the assignments comes from the auto-grader, it still took weeks to get a finalized grade. Midterm grades are STILL BEING FINALIZED (6+ weeks later!). This is insane. If we comment on how long it’s taking, the TAs will say, “Well, every report takes 1+ hour x 300 students…” You assigned the work?!? You don’t get to complain about how long it takes to grade all the work that you assigned, if it’s too much work, assign less! This isn’t rocket science.
    • 90% of the grades were screwed up when they were ported to Canvas. The grades were either out of zero points or out of too many points. After the second or third time it’s not really funny. Just do it right, every other class can get it right the first time. This isn’t a big deal, just seems like a lot of the staff were pretty new to the job.

    Overall, a lot more work than I counted on. If you’ve taken CV, there’s a big advantage to being familiar with Numpy and OpenCV but there’s very little overlap between the content. I spent probably 10-25 hours per assignment and ~100 hours on the midterm/final. I’d say easier than the content of CS 6601 AI, about the same as Computer Vision, but substantially harder than KBAI.


    Semester:

    HOLY HELL. This course is NOT easy… Maybe it used to be??

    I just want to say THANK YOU to whoever wrote the review directly beneath mine. I had an identical experience. I honestly went into this course thinking I’d get a nice little break, that it would be “easy” like AI4R or KBAI. This course was absolutely gruelling. Each of the assignments were relatively challenging - I would say they get progressively harder and they build upon one another - aside from the last assignment, which was the easiest.

    The instructors put a HEAVY EMPHASIS on writing and discussion. DO NOT make the same mistake as me, and shirk your writing responsibilities. Writing and discussing your results is possibly more important than getting good results in the first place. There is a TON of report writing, report creation, etc etc etc. On top of immense amounts of programming to implement complicated algorithms, trust me you will be exhausted. Try to dedicate an entire day to completing your report. Don’t just treat it like a secondary task to fulfill requirements. This course is freaking exhausting. I spent countless all-nighters getting things done on time.

    The Final Report absolutely annhiliated me. I basically could not implement like 10% of it. My average before the Final Report was in the high 80’s, and now I’m expecting to walk out of this class with a C.

    I think to successfully complete the Final project implementation would have taken me around 120 hours, which unless I want to quit my job, is simply not enough time. AAAAAHHHH.

    That being said, I learned a TON. I don’t care if I get a bad grade, because I have come out of this course smarter than when I was when I entered it.


    Semester:

    Take my review for whats it’s worth as one voice among many even though I voice strong opinions.

    I had a 92% in the class after the mid term. I have a background in CS and CE and consider myself a very solid programmer after a decade as a research engineer in the field of robotics. I just submitted the final project and am resigned to getting what I’d conservatively estimate is around a 70% if the TAs are merciful.

    Most important take away: DO NOT TRUST EARLIER REVIEWS FROM MORE THAN ONE OR TWO SEMESTERS BACK THAT SAY THIS COURSE IS EASY OR “a 3 out of 5”. AND “15 hours week”. Either those people are incredibly talented and would rate anything as easy, the course changed, the TAs are harder, or some combination of everything because it’s just not true.

    The second most important take away: You will learn nearly nothing from the course material itself in order to help you get the through the mid term and final projects which make up the bulk of the class. You are entirely on your own, cannot collaborate, and if you have never encountered , too bad. This course also had what I consider to be the worst textbook I've ever encountered by Szeliski, just straight up awful to read and no help at all. There's even a guy who hangs out in the Slack channel selling a book he wrote to paraphrase Szeliski's book because it's that bad. I bet people buy it too.

    Back to the class - it starts out being straightforward conceptually and moderate from a workload perspective. The projects are long and have many requirements, I’d say plan on 20 hours per assignment to be safe if you are already a solid programmer. You just need to power through the first couple and go over and above what you think they’re asking for in order to get A’s.

    Then you get hit with the mid term and BOOM…rug pull. Replicate this paper. This is where the class went from like a 6 to an 8/9. difficulty. You have to figure out what you don’t know and then teach yourself how to do it. This project is probably 40ish hours of work over 2 - 3 weeks if you don’t get lucky and google the magic words.

    The final project - cranks the pain up to 11 and rips off the knob. Pick your poison - choose a paper to replicate. No discussion of any specifics with peers, no help whatsoever from TAs. No relevant course material and just straight up agony. You get 3 weeks (including Thanksgiving) basically immediately following the mid-term to do this project, which took me I’d say around 60 hours to implement about 50% of the project scope.

    I am actually taking a semester off after this to do some soul searching because I’m so burnt out and wondering if all the other classes are like this.

    Bottom line - if you’re not already incredibly comfortable with Python, Linear Algebra, Numpy and OpenCV, do not take this course until you are. If you’re going to take it in your free time after work or in between homeschooling your kids or whatever, I wish you good luck with that.

    Also - if you took AI4R and thought that was hard, then you’ll probably find this class to be impossible.


    Semester:

    Agree with the previous author that prior reviews are now outdated. I created this account cause I feel i need to tell everyone to stay away from this course until they change the amount of workload required and do some soul searching.

    Firstly, the rubics of the course is unclear. Scores seems very arbitrary and hence even if you won’t know if you should seek a regrade.

    The assignments are barely doable with the little guidance given and well, i have learnt nothing from it. Basically creating Laplacian pyramid and other blending techniques are something you can just do with the libraries. Doing these assignments are generally zero value. Unless you are interested into going to research. Maybe outside firms like facebook or tiktok might employ you.

    Then there is the mid and final projects. Instructor throws you a paper, then tells you to go replicate the paper, without much guidance. What kind of learning can you gain from this? Its a steep self-learning curve that position you to fail for some pple who struggles with their day jobs. I spend a good 40-60 hours on mid terms to get an average results and 80-100 hours on final to get a bad result. You maybe smarter or lucky to be able produce the good results. To add, papers do not have step by step instructions, everything is a big vague.


    Semester:

    Adding it here for people considering this for Spring ‘21.

    This is my first class in OMSCS. All the old reviews, that led me to believe that this class is just 13-15 hrs/week are from old semesters.

    This class has undergone a revamp and the assignments, reports, MT projects and the lectures are really time consuming anywhere between 28-30 hrs a week. MT itself took me more than 80 hours and i was not able to finish it completely. So do not think that it’s an easy course with smaller time commitment.

    If you are from a Non-CS background, or if you have no experience working with Numpy, Scipy, OpenCV, Python then it’s going to be a lot more time-consuming to finish assignments and projects. For me it was like digesting concepts and understanding which function does what in numpy and how can that be applied for a particular situation. Almost all the assignments require to implement your own version of some function from the OpenCV library.

    You need to do

    • 5 assignments with report
    • 2 Projects ( Mid Term and Final)
    • 3 Notebook quizzes
    • peer reviews for each assignment
    • Final Portfolio ( 1% of grade)
    • Final Exam

    All these are counted towards the final grade, there is no curve so what you score is what you get. Also, there are no 2 attempts at quizzes and Final exam, which was the case in prior semesters.

    The MT and Final Project are tough [80-100 hrs] especially because you don’t get any response or help from the TA’s. And you get to replicate results from some research paper which has lot of unexplained things and mathematical equations, most of the times without any details/clarity. MT also needs you to finish the code, create a Latex report with comparison between your result and author’s with supporting data/metric and create a SIGGRAPH style video describing what you have done which takes hell lot of time. you can’t just do it in a week unless you are extremely talented and you work in the same domain.

    For MT: since the entire class works on implementing the same paper, there is some discussion on slack and piazza and you can get some hints from there but FP is different. You pick your own paper from given list and work on it. Even the discussion of Equations in the paper is not allowed which makes it more difficult. Also, the paper you chose may not have any relation with any of the modules covered in the class. So basically you are on your own trying to figure out a not so well written paper and struggling to replicate the result.

    To understand the difficulty, i would say that the class average in mid term was 76% and i scored below that even though i was scoring 90+ before MT.

    Now, i am in a state that i would be lucky to get a C after final.

    DO NOT TRUST REVIEWS suggesting 10hr/week workload from spring 2020, it’s misleading and complete BS. This is not a beginner’s course in the program, It needs you to be an expert in linear algebra, Numpy, python,OpenCV, and ton of report writing.

    For every assignment putting the report together with explanation and pictures and code explanation itself will take you a day easily.


    Semester:

    My first OMSCS class and I got burned out by the final project. (My background: non-CS degree, 2 years programming experience)

    Most of the assignments are not hard to follow because TA gives a ton of instructions.

    Midterm and final projects are reading papers and replicating the results. I feel midterm project is ok level to handle because everyone works on the same paper and you will eventually figure it out base on people’s discussion. Final project could be hard because you pick one of the several papers and with limited information it could be really frustrating.

    There are 2 open book exams and you are allow to take each one twice.


    Semester:

    This is my first course in the OMSCS journey, before that I am totally new to Python, though I am experienced in most other computing languages.

    As a newbie to Python, I think this course allows a nice learning curve to Python, which I as a beginning can follow, esp. on the different kinds of Python syntax. The other courses that I took (e.g. Computer Vision) is not so friendly to Python newbies.

    Meanwhile, though this course is not so hard core on mathematics or programming, some developers who are thirsty on computing or mathematical knowledge may be disappointed by this course. Frankly I think this course is for those who want to join a digital camera company e.g. Canon, Nikon, or even Apple, and to work on different camera internal configurations. This course really tells you different methods to make the digital photo to look better and more informative.

    Nevertheless, the more peculiar homework of this course is the camera obscura, which is a taking photo via a pin hole in a dark room. I personally think that homework is totally unrelated to computational photography, and should be one of the homework in an art class, but weird enough that is the 1st or 2nd homework of this course… The most difficult part is to shield every single bit of light in the room (not even a single LED on a wall A/C switch) while the day light outside the room window must be very bright! I almost took two days to shield every single corner in my room, and it was totally tiring for nothing…. Sorry professor, I really hate that homework.

    Other than that Camera Obscura homework, I like most other parts of the course. The video lectures are simple but informative. Not bad for a newcomer to OMSCS.


    Semester:

    TLDR:

    • very interesting topics
    • fairly easy and not time consuming
    • good as something to warm back up to coding if it’s been a while
    • recommend taking for both generally interest and as way to develop discipline as a student in the program

    I picked the course because the reviews said it was a fairly easy course and I needed to ease in to learning some time management for this program.

    This course is great to start out with: it gets you into the groove coding with python, and the topics are not complex but VERY interesting, and were generally new as somebody who is neither a photography buff or who had prior computer vision / image processing experience.


    Semester:

    See “Difficulty” and “Workload”.


    Semester:

    They redesigned this course for Spring 2020. They took away the “above and beyond” requirements from previous semesters and instead added additional requirements into each of the assignments.

    The course is largely project based - the projects are satisfying. I have an interest in photography and as a result of the class I now have a much better idea how some parts of Adobe Photoshop that previously felt like “magic” to me work.

    There are two major projects - the midterm and the final. Of the two, the midterm was the more time consuming one. (I believe I spent more than forty hours on the midterm alone spread out over several weeks)

    I learned a lot and enjoyed the class, but I wouldn’t recommend pairing it with another class.


    Semester:

    I like this course material. However, I feel that I spent too much time writing report. I did not come here to learn how to write reports. I already do that in my daily work.

    While it is nice to organize our understanding and documenting design trade-offs, that should come later as we become experts in the field. Graduate courses should be teaching focused and should maximize learning.

    Instead of current format, I would prefer having 10 assignments graded by autograder, with test cases that have full coverage and assignment grades purely derived from autograder. We will probably end up spending similar amount of time as current format, but at least with more assignments, we can implement other important topics which are not covered in detail in this class: such as possion image editing, texture synthesis and face/image morphing etc.


    Semester:

    I came from a non-CS engineering background with a good amount of image processing experience. This class could be so much more fun but I didn’t enjoy it too much.

    This class uses python for the entire semester. Five projects plus an open-book final exam. Coding isn’t really too hard in this class. Most of my time has been spent on writing report.

    If you are new to this topic, this could be a good place to start. The assignments could get you up to speed nicely. Topics are pretty basic and each assignment has nicely structured template for you to start with.

    If you know this filed already, this class will be an easy A but the time it takes you won’t be much shorter as a good amount of the workload comes from finishing the report of each assignment.


    Semester:

    STEM background (non-CS major). First OMSCS class and liked it.

    Pros: Very responsive and knowledgeable TA’s, generous grading, and well designed assignments and midterm project. Really liked the camera obscura assignment where we were asked to convert a room into a pinhole camera. It took a lot of work but was a very pleasant learning.

    Cons: Lots of work and time spent in report writing. Assignments were relatively easy but the final project was disproportionately more difficult than everything combined. Within the last week we needed to review the whole semester’s knowledge and complete the final exam (2.5 hrs x 2 times), complete the final portfolio, and the peer feedback for the final project. So yes, lots of work towards the end.


    Semester:

    You will use python, numpy, and opencv to implement many techniques for computational photography. You don’t need previous numpy and opencv experience, this class will teach you the basics.

    Pros:

    • Material and assignments are interesting and useful
    • You’ll end up with a portfolio project that you can share
    • No “above and beyond” requirements as from previous semesters

    Cons:

    • Midterm and final project are very time consuming
    • Instructions for assignments and projects are very long, confusing, and sometimes missing detail.

    Takeaways:

    • I recommend the class, it is interesting
    • Ive not taken CV, but my understanding is it can be a good primer for it
    • Instructions could use some revising, given that was the biggest pain.


    Semester:

    This was my 6th course in OMSCS so I’ve been around the block. From that experience, I can say with confidence that this course was just an annoying practice in tedium. The assignments are relatively difficult with the midterm and final projects being particularly brutal, which if you’re in OMSCS probably won’t bother you. What will bother you is the bugginess of the auto-grader, which is far and away the most brittle I’ve seen in OMSCS, how tedious the assignment reports are (which will take you several hours to complete after you’ve just spent 20-30 hours on the assignment). And the dripping level of condescension you’ll read from the assignments and the assignment templates. The work for this class never seems to let up as there are 7 total assignments not to mention the final, 7 peer feedbacks, and the 3 notebook quizzes - which even though they are only 3 questions I would recommend you not take lightly.

    The workload for this class needs to be re-thought out. The assignments can be kept - but the report templates - particularly the LaTeX report for the midterm should be trashed in favor of something more objective - it should use the ‘your assignment worked or it didn’t’ approach that OMSCS generally takes. I’d also drop the peer feedbacks which just encourages click-through completion.

    The content was very interesting but I was extremely disappointed by this class - I thought this would be a practical set of applications of computer vision - instead, it ended up being a harsh instruction in just how tedious a poorly designed class can be.


    Semester:

    Overview. This is course is about image processing, not photography. Every assignment centered on replicating certain features of photoshop using your own code, then writing a report about it. There was very little on the math, science and technology of digital image capture. I spent 30-50 hours per week: 70%+ coding related, 25% reading/videos/writing, <5% actual photography. Course started out interesting and fun, but later felt like a burden. Loathed the course in the end.

    Pros.

    -Opportunity to learn or practice Python, Numpy and a little OpenCV (albeit any learning is on your own).

    -TAs are very responsive, a few were a little arrogant at times, but all were generally helpful.

    -You will learn some of what’s under the hood in Photoshop (or similar) software.

    -No more above and beyond.

    Cons.

    -Course description doesn’t match assignment requirements. Felt more like a software development class at times. Coding dominates assignment workload. Because of all other course requirements, actual picture taking gets in the way of the assignment (and this comes from an avid photographer).

    -Assignments were repetitive: code some functions > apply functions to some pictures > write a report about it > repeat

    -You must be strong in DP/Algorithms coding in Python and Numpy or you will struggle.

    -The course was a work in progress, and apparently very different (and harder) vs prior semesters. Each assignment was being updated during the assignment period. Felt like a lab mouse at times.

    -Buggy auto grader. Code that passes auto grader may not produce correct output, or vice versa. Debugging distracts from learning the course content. Multiple times had to write two programs for the same assignment as a result (which was encouraged by the TAs – poor solution to a ridiculous problem).

    -Too many systems, assignment types and rules to follow – canvas, piazza, github, gradescope, course webpage, Latex/Overleaf, your virtual environment, slack (optional), peer reviews, notebooks, plus all the assignments and related rules and specifications to follow. Way too many antiplagiarism / honor code threats. Felt like I was back in undergrad.

    -Instructor/TA’s weekly updates seemed to be a week behind each time. I ignored them as a result.

    -Lecture videos are too high level for assignments. I got more from youtube or google. I felt I paid GA Tech for me to teach myself the course content.

    -Is there an instructor for the course? If so, he didn’t show up.

    Ways to Improve.

    -A weekly office hour. Piazza or slack shouldn’t be a replacement for this.

    -Add (or recommend) an optional mini video lecture series on Numpy and OpenCV covering specific content, tricks and tips relevant to the class. Get rid of the notebook quizes.

    -Diversify the assignments. Perhaps have a least one assignment that doesn’t involve code - e.g., a detailed multipage critique of one or more seminal academic papers in the computer vision space.


    Semester:

    If you don’t have a background in python or digesting scholarly papers this class is really difficult to just jump into.

    For the assignments, there tends to be enough guidance around each function to make up for a lack of experience, however, the midterm and final projects are brutal. When I was doing them, they took over every moment of my day.

    Whatever you do, schedule enough time to debug against the auto-grader before doing anything else. One minute late is treated the same as a day late and you will loose 10% on your assignment, so unless you need another 24 hours it might not be worth those final tweaks.

    While I feel like I learned a lot in this course, I wish I had known beforehand how difficult it was going to be.


    Semester:

    This class has undergone a major overhaul this semester, for the better. The A&B requirement, a constant gripe in past semesters is gone, so you get full credit for delivering what is being asked.

    The number of homeworks was trimmed to 5, each worth 9% - Camera Obscura (with some coding on basic filtering); Pyramid Blending, Panoramas, HDR, and Video Textures (gif). From what I understand, they were made harder compared to their past iterations. All of them come with not-so-insignificant report/discussions. I find the middle 3 assignments to be medium difficulty, while the first and last are easy.

    The midterm project(15%) is far and away the hardest part of the project. You basically have to replicate the results from the Seam Carving paper (Content Aware Resizing) from scratch. I think most of us spent an enormous amount of time with the coding and the report part. Despite that, I consider it the most satisfying part of the class.

    For the final project (15%), you get to pick a paper from a list of papers provided, and then implement it. I think majority selected the Object Removal paper as it seemed to be the easiest from the bunch.

    There is a final exam that’s worth 15% of the grade, but you get 2 attempts and only the highest counts. I took it once, got the median and didn’t use my 2nd attempt as I thought I was comfortably sitting on an A (the final project was ungraded at that point but felt confident that I did well enough).

    I rated this as hard - especially if it’s one of the first classes in the program and not yet familiar with openCV - mainly because of the midterm project and depending on the final project selected. Some of the HWs could also be challenging, but they come with code templates and you basically need to complete the functions by following the docstring instructions.

    The professor was a no-show, but the TAs more than made up for it. They were very active, responsive and helpful, a really exemplar group.

    As in most classes, start early as soon as the projects are released. The Slack channel was super helpful this semester, so find time to participate or at least lurk as despite the chatter, there’s plenty of useful things to pick-up.

    I really liked this class and I actually think the HWs/projects were cool. Some of the reports could be trimmed as some questions are repetitive, but I expect that to improve as the team fine-tunes the HWs. I initially took this as a 2nd class as I thought it was ‘easy’, but that impression quickly changed as the midterm approached. I would recommend it to anyone as a preparation for CV. I’d pair it with an easy class, but not with a harder class.


    Semester:

    Intellectually the class is easy. What makes this hard is the process. The class is like a meat grinder/conveyor belt. You’re always turning something in like peer feed back, exam, assignment resources, assignment report, and notebook quizzes. You’ll get worn down by submission anxiety. It’s a steady conveyor belt of “give graduate answer to…” From my point of view I would have rather done more difficult but interesting assignments, and just been assigned a pass fail grade. I would have learned more than just writing reports. It’s pretty clear if you did something wrong - you don’t need to write about it..

    To me you can’t study for the final, you can take it twice. Notebook quizzes you can take twice. I spent maybe 16 hours on the mid term, and 16 on the final project. Writing the report, of course, takes longer than the code itself. Just be aware that you’ll be juggling a lot. That said, I think this is the the first non A&B course, so it’s a great improvement. You’ll get full credit for the work that you do.

    There’s something about the curriculum when students like my self start to disengage from the material because of the conveyor belt nature of the course. I literally tuned out after A4 and just gamed my grades to get an A. I no longer wanted to learn about CP. In my heart of hearts, I did the minimal work for the final project, expecting an 70-80 (all I neededd for an A) but ended up getting 100% for only 14-16 hours of work. I don’t think I’m the only one. I don’t think Essa wants this either.

    No sour grapes, I got an A - near 100% - in the class. This class needs more refinement but I think they’re on the right track. May be this class can be made harder - by doing more interesting mathematically involved material - and just give A’s to people over the median. Less report writing and more “doing”.

    Make no mistake, I’m glad this course is over. The notebooks are pretty handy reference material.


    Semester:

    Very fun and challening class or not, it depends on your investment in the A&B section. Lectures are the best, many different topics, well explained maths and extra content if you still curious. For the assigments the most important element is the report, even if your A&B is quality, a weak report won’t give you the score. The midterm is a challenge, you will expend a lot of time with all the ambiguities but the satisfaction at the end has no price. For the final project don’t look for anything super difficult or new, it will waste your time. Also check if possible the computational requirements to execute the algorithm. The final exam is tough to score a 90+, but with luck you wouldn’t need so much for an A.


    Semester:

    Assignments were relatively simple. And the TA or Assistant professor ‘Kim’ was fantastic at answering questions and helping. I would recommend this course for anyone who wants to dive more deeply into the ways images are processed.

    One aspect of the assignments I felt was annoying, was the ‘Above and Beyond’ segment for each assignment. This was worth 10% of each assignment, meaning if you do just what is assigned you can get only a 90%. I had to switch mentality from ‘Above and Beyond’ to just another part of the assignment. Some of the ‘Above and Beyond’ segments were not well defined and I actually lost points on one assignment because I had not specified a segment of work was part of ‘Above and Beyond’. I assumed that if the work I was doing was not part of the general assignment it would be considered ‘Above and Beyond’. From then on, I made certain to label segments with ‘Above and Beyond’ to avoid confusion later.


    Semester:

    This was my first course taken along with KBAI. Assignments and projects are well designed get easier after midterm project. One thing I did’t like about the course was there are 6 assignments, and each assignments had above & beyond section to get 10%. It’s very difficult to score more than 90% in assignments. Overall I learned a lot and looking forward to take computer vision course to build on it


    Semester:

    An earlier review described this course as a photography class with some computer science added in. I think that is accurate. While a few of the projects were interesting I didn’t feel like I got much computer science knowledge out of the course. Several projects were very basic, and the ones that weren’t had a lot of starter code and pseudocode to pretty much give the answer. The exception to this was the midterm, which was challenging but a great project.

    Many in the class, myself included, were frustrated by the above and beyond grading. I really wish they would consider changing from a 90 to a 95 for projects that meet all requirements. Or make the projects more challenging and do away with above and beyond completely…

    If you need a B then you can do 7-8 hours a week on this class and get by just fine (with the exception of the midterm week, I would set aside at least 15 hours for that project). If you need an A it will take more hours.

    Notebook quizzes get progressively harder. The final exam is open note/internet, but still not easy to do well on because some questions are on obscure information, and lots of ‘choose all that apply’.

    Some reviews complain the class has a lot of busy work. Not sure I would call it that, just a lot of moving parts to keep track of with lectures, papers, projects, peer feedback, notebook quizzes, final exam, and portfolio. For two of the projects (4 and 6 I think) we only had a week to complete them, which is frustrating when you are juggling work, outside responsibilities, and perhaps another class.

    I wish I could give a better review, and if you need an easier B then this class works, but overall I don’t recommend.


    Semester:

    Computational Photography is an interesting class. Overall, it is a “Neutral” class to me, but I ended up giving it a “Liked” rating because the TA team was so responsive and helpful on Piazza. That being said, I would only really consider taking this class if you are taking it with / before Computer Vision (since there is a lot of overlap) or if you are really interested in photography. Because the class ended up feeling more like a photography class with some coding than a computer science class with photography. And while the class was not the most difficult class I took in this program so far (in fact, I think it would make a decent first course), it involved a lot of work each week with many assignments and due dates to keep track of. More specifically, aside from the 6 homework assignments, there were 2 peer feedback assignments that needed to be completed after each homework assignment, 3 notebook quizzes that needed to be completed on Canvas (though you had 2 attempts to take each), a midterm project and final project, a final exam to be completed on Canvas (open notes and Internet with 2 attempts to take it), and a final portfolio.

    To be honest, by the end of the class, I was proud of my final portfolio, but it required a lot of work to get there. And ultimately, I would not recommend taking the class purely because of the grading structure. Currently, completing each assignment in its entirety only awards 90 points out of 100 with the remaining 10 points coming from the “Above and Beyond” sections, which have no instructions or guidance. Instead, the goal is for you to expand on the assignment and try new or different things with the topics being reviewed. This meant that my average grade for each assignment was either high 80s or low 90s. So, it is very easy to get a B in the class, but incredibly difficult to get an A in the class (hence the “Hard” difficulty). My biggest recommendation would be to keep the “Above and Beyond” sections, but have them go above a 100% for extra credit. This would most likely bring the whole class grade average up more (since there is no curve), although I do not think that would necessarily be a bad thing.

    Overall, I liked the class mostly because of the TA’s and the midterm and final projects, which were super interesting! This has the potential to be a good first course and prerequisite to Computer Vision or a good option if you are interested in working with photography in Python (think panoramas, HDR, image blending, etc.) using NumPy and OpenCV.


    Semester:

    tldr: Fun class if you like photography, decent otherwise. Hard to get an A, easy to get a B. I got a 91% with about 15-20 hrs/week. Decent TAs.

    Overall:

    This is a very well organized class with fun material and great pacing. It never really feels like too much is being concentrated on any particular week (especially if you follow their schedule) and it also doesn’t let up at all so you end up staying engaged throughout.

    Lectures:

    An obviously passionate technologist talking about his area of specialty - can’t get much better than that. The material is very well articulated and paced, Professor Essa does a great job.

    Homeworks:

    6 homeworks, each one very different. Coding was a little too hand-holdy for most of them (to the point where it’s hard to remember exactly what you did) and report templates were a little disruptive of a natural thought process. That being said, they were really interesting and if you go beyond the idea of “if i use photoshop, i don’t need to know this” you can really learn a lot that you can maybe even apply in other domains.

    The Above & Beyond concept is awesome. It forces you to think of creative ways to interact with the subject matter without being pigeonholed into exactly what you have learned. It is the freedom afforded every grad student that takes this class and although it can be subjective at times (in terms of grading), it is probably most representative of a top 10 CS masters degree. Creative and passionate students SHINED with this component. I had about a 92% homework average with about 3-5 points on average just from A&B.

    Quizzes:

    Quizzes started off easy, got a little more involved, and then finally got pretty tricky. I really enjoyed all the jupyter notebooks corresponding to the quizzes and the quizzes themselves gave you multiple tries so it really wasnt that hard to do well on them. However, it did enforce the application of theoretical concepts learned in the lectures and papers. I had a 93% quiz average.

    Midterm:

    The research replication project is excellent. I thoroughly enjoyed the paper itself, the process of replicating results, and even navigating the ambiguity between the replicated results and the original. I got a 100% on this.

    Final:

    You get to choose your own project in the realm of computational photography and then execute on it. Pretty cool concept but the line between “in-scope” and “out-of-scope” seemed blurry and subjective. That being said, I ended up going with a relatively simple concept that I just continued to build on until I felt like it was “enough.” I got a 95% on this with a few points off for minor things.

    Final Exam:

    Open everything and you get 2 tries. Come on guys, this really isn’t that hard. Review the lecture notes (or steal them) and then take the exam. I got a 72% on my first try and didn’t bother going for a second. The overall average on this was a 78%.

    Community:

    Slack is excellent, piazza is okay. I’d only resort to Piazza for the official announcements and perhaps for some of the final project proposal ideas. The class has its own slack channel which is nice since it’s not limited by the free plan.


    Semester:

    This class was OK. I thought the weekly assignments were a lot of busy work. They baby step you through the assignment - I think the majority of the time I spent on assignments was how to use numpy rather than understanding concepts. The midterm research project was the most rewarding, and you can choose how difficult you want your final research project to be so I liked that flexibility. Overall, this course was decent. I did not notice the professor at all which starkly contrasts with AI4R where professor constantly monitors Piazza. However, student engagement was high.


    Semester:

    I took this as my first course in OMSCS, and enjoyed it, although I feel like it’s a little bloated and could be improved a lot with some trimming. For reference, I have a non-CS background, with one term of undergrad Linear Algebra, Calculus and about 6 years of experience programming (primarily in python which is used fairly heavily in my industry for numerical simulation, data analysis, and geometry manipulation). I ended up with an 89% which is just below an A).

    The course is structured primarily around 6 assignments, a midterm and final project, and a final exam. There’s a lot of work, and I found myself constantly working on CP, especially during the middle of the semester. We had a conversation about this on the CS6475 Slack and all agreed that the OMSCentral average for this course doesn’t do this course justice, I found myself working 20+ hours on CP at times. Not all of it was difficult, but there was a LOT of it.

    Assignments

    Each assignment is created to provide a detailed investigation of a CP technique, like camera optic and sensor systems, or manipulation of image projections. It ramps up quickly. The first two assignments are relatively easy, and I was able to complete effectively in a weekend. The third one (Blending) had a significant jump in difficulty, and kind of took me by surprise. However, once I learned to use Bonnie effectively to test my code throughout the project, and forced myself not to wait until the weekend to start the project, I found the subsequent projects were challenging, but not difficult to get an A/high B if you put in the effort.

    The effort however, is not necessarily proportional to the value of the knowledge acquired. Specifically, while in general I found the code, and most of the questions in the accompanying report did a good job of forcing me to grok the material, the reports tend to belabor simple questions far to much, and were more of a frustrating hassle then it was worth. Furthermore, the report templates are all done in powerpoint, which is the single worst document type to try and do any serious writing in. I spent the majority of my time fighting powerpoint’s idiosyncratic auto-formatting rules, and manually resizing text boxes and images to accommodate my material. Transitioning to LaTeX or Word would have made this part significantly easier and done a lot to reduce hours spent per assignment.

    The only other complaint about the assignments I have is that the later ones begin to cover extremely complex topics in a high-level, superficial way. Writing the code consisted of somewhat blindly implementing the instructions of the assignments, without any real understanding of what you are doing. I would have preferred to have reduced the scope of these assignments to focus on a single key concept. The bloat also applies to the lectures, which near the end are just high-level introductions to different state of the art techniques in CP. I think one lecture dedicated to the SOTA is interesting, but dedicating two weeks of lessons on the topic was pointless.

    Midterm and Final Project

    The midterm and final project require you to replicate a research paper. For the midterm the class is provided two research papers on seam-carving to implement. This seemed almost impossible the first time I read it, but by starting early, and writing extremely clean code (with unit tests every step of the way) I was able to replicate the paper almost exactly. Since the entire class is working on it, there are tons of useful discussions on Piazza, and Slack. The paper is difficult enough that it requires the collective intelligence of the class to resolve some of the trickier algorithms.

    The final project is another research paper replication, but this time you are required to select a paper yourself. This makes this project significantly more challenging, since you will need to gauge the technical difficulty of the paper, as well as identify the appropriate level of scope to tackle. This is all compounded by the fact research papers aren’t necessarily written for replication, and will provide only a cursory overview of their implementation. Many people in the class messed up by taking on a paper that was too difficult, or required reading multiple sub-papers to implement correctly, and ended up having to switch papers halfway through. My advice here is to find papers where the initial steps can act as a deliverable on it’s own. You will not get penalized for only implementing a subset of the paper.

    Final Exam

    The final exam is an easy B, and a hard A. The questions on the exam have multiple correct answers which depends on very precisely parsing the question. Getting perfect on a question is very difficult for this reason, and will require you to really search through your lecture notes and prior videos to bang on the phrasing or terminology used in the question. Studying won’t help.

    Other thoughts

    • TA and Prof interaction was very poor. I posted a number of questions about some of the concepts in the lectures, or particular techniques used in the quizzes, and got no response from the TAs or the Prof. I ended up just posting my questions on Stack Overflow. where I would get an answer in a couple of hours. I wish this course had office hours for this reason.
    • Definitely get a tripod. Most of the projects will require you to take multiple photos of a scene while perfectly still, or moving in a controlled manner, and trying to do it without a tripod will make it take 10 times as long, and your results will be inferior. There are also easy A&B marks you can get if you take your own photos for some of the assignments, which will be impossible without a tripod.
    • Read through assignment requirements carefully. They’re bureaucratic, but strictly enforced. Some students got penalized very heavily for trivial errors.
    • For this reason, always keep an eye on piazza, any major changes will be announced there, and will sometimes contradict official instructions in the assignment.
    • The CS6475 Slack channel is great. There were many times I saved myself hours of work by checking the Slack channel, and this term all the students were very helpful as we struggled collectively through the assignments.
    • Use Bonnie early and often. With judicious use of Bonnie and Slack, you should easily be able to get 100% on the code component of the assignments.

    I complain a lot, but despite the bloat, I found this to be a fun but challenging course. I definitely upped my Linear Algebra, and numpy game, and am fairly confident in tackling somewhat advanced image processing tasks. This course was actually my third choice during registration, and I didn’t really think it would be applicable to my career at first. This course made me do a complete 180 on that. It’s fascinating to learn how to derive 3D geometry from 2D photos, or to represent images as frequencies and apply fourier transforms to it. I am planning on taking Computer Vision to learn more.


    Semester:

    My background is relevant to this review: I have been a software engineer for 8 years with two years experience with OpenCV for image processing. I have used C++ extensively. This was my first class in the OMSCS program.

    This class contained 6 projects with the dreaded Above & Beyond, meaning you get 90% for doing all the required work and you have to expand in some area for more credit. I did not find it to be that bad. I always did something for A&B even if it was simply repeating the project with an additional picture - it doesn’t have to be that much. I would also use that section to explain my process sometimes if the report didn’t call for it already. The midterm was a lot of fun, but also very, very time consuming to get it right. Start as soon as you can! The final project is open ended, so this will be as difficult as you make it.

    The final exam is open notes, book, etc… but it is tricky to get right. Make sure you have a good grade going into the final because it will more likely lower your grade than raise it.

    This class took way more time than I expected. The average on here was around 12 hours/week when I took this class, but it was double that for me - around 25 hours/week. I was trying for an A in the course which added more time. I also do not use Python very often, so it took me time to write code. If you don’t know OpenCV or Python this could get really difficult. Otherwise it is a nice class. I would recommend it; it makes a good first course as well.


    Semester:

    I enjoyed the subject matter and thought it was a good class overall. The TAs were responsive on Piazza but very slow graders, about 1 month lag time on the assignments.

    The work is not very difficult but it is hard to get an A, which is >90% average. Figuring out an “above and beyond” to work on for each assignment is necessary since scores are otherwise capped at 90% and it’s easy to lose a few points here and there.

    For reference here are the class averages for Fall 2019: Assignments 1-6 (42% of grade): 86.3% average Midterm project (15% of grade): 77.9% Final project (13% of grade): 80% Final exam (15% of grade): 78.2%

    Total class average: 83.5%

    I liked the class more than others seemed to (probably because I barely managed an A). I would say if you are going to take this, be prepared for a possible B even if you do all the A&B work.


    Semester:

    I would only take this course if you have to for your specialization, or if you are interested in photography or digital art. There is a large overlap with Computer Vision (some are the lectures are actually just links to the Computer Vision lectures). The homework assigments have trivial programming with most of your time spent compiling power point reports answering questions about what your biggest challenges and regrets are “but at a graduate level, though”.

    This class would be fine for a first semester, and it would be a gentle introduction to Python, Numpy, and OpenCV before taking Computer Vision. Just watch out for the midterm project. It’s more work than all the homeworks combined. Get started right away.


    Semester:

    The class is harder or at least more time consuming than it looks. Some things to consider.

    • You really need a tripod. A solid cellphone that shoots video might suffice instead of a DSLR, but the tripod is indispensible. A DSLR camera with remote shutter control and manual mode settings would be even better.
    • Photograpy, as in designing, composing, arranging, and lighting interesting scenes for your own images, is a component of the class. Amazing coding skills and precise, fluent writeups will not suffice to get full credit.
    • Lectures are interesting but high-level. The hardware/math/theory gets introduced but there is little to no discussion or explanation of algroithms.
    • If you enjoy reading computational photography papers and extracting algorithms from those, then you should take this class.
    • Most assignments only give a 90 for completing the standard rubric. To get above a 90, you have to do “above and beyond” work. The line between the standard assignment and “above and beyond” is unclear about half the time.
    • As with most OMSCS classes, rules for turning in the 6 assignments and 2 projects were bureaucratic, but fair. Remember to include all files on all resubmissions.
    • Most coding is in Python/OpenCV/NumPy except the final project allowed us to choose the platform.
    • Our semester had peer feedback assignments which I think is standard for this class.
    • There is some truth to the complaints in the other reviews regarding busywork, murky instructions/rubric and overly tricky final.


    Semester:

    This is my tenth and last class. Objectively speaking, this is the best course in all of OMSCS. Here’s why:

    • Responsive Piazza. The TA's are well-trained, responsive, don't shame you, and don't guess.
    • Fun assignments. Computational photography is an emerging field with some very exciting new technologies out there, and you get to learn about them, and make pretty pictures in the process.
    • Well-organized. It's clear what you are learning and why.
    • Understandable lectures. They actually match the assignments.
    • Well-paced. Not too much work but not too little. It starts easy and ends hard.
    • Open ended project. You pick whatever you want. Who doesn't love that?
    • Above and Beyond. I loved the challenge to get that last 10% for an A.
    • Easy B

    Note that I say ‘objectively’. While I personally loved this class, it’s not my favorite class. (AI4R was the best). Why? Well, photography might not be people’s thing. It’s also kind of easy. It’s an introductory class and sometimes you feel like this should be an undergrad class, and they just threw in the Above and Beyond to make it hard.

    CONS:

    • Above and Beyond. Getting that last 10% is borderline impossible. You will spend more time on that last 10% than you do the entire rest of the assignment. There's no curve. I personally think every class should be like this, but I know a lot of people will hate this concept. (Guaranteed every 'strongly disliked' on this page is complaining that they had to work to get an A)
    • Hard A. Like, really hard. (See above and beyond).
    • They don't release the rubric. This means some of your grades will be a mystery. The grading is generous but when there is a page limit you have to choose what to cut, and since you don't know what's important, you end up losing 15 points on the 30 point section, when you could have just cut the 2-point section altogether. The midterm has a 3 page limit, so absolutely everyone got dinged for 'not enough detail'. Much rage.
    • They took off 10 points for not putting an image in the resources.zip even though they never said it was required.
    • The final had some ambiguous questions/answers.
    • </ul> EDIT: I've read the other reviews - people are complaining about busy work. Obviously they haven't taken many OMSCS courses. This course does not have busy work, not compared to KBAI, or Compilers, or Software anything. Yes, the grading is ambiguous, but that's every class that isn't based on pure code. CP is a lot better than other classes I've taken. Comparision with computer vision. (I have taken both). Computer vision is about taking information from pictures. Computational photography is about putting information into pictures. One is about creating pictures. One is about creating code. Yes, there is overlap in information, but the concepts and focus are completely different. I'd much rather spend my time applying code to pictures than just extracting information from pictures.


    Semester:

    The other reviews are accurate in that there is a lot of busy work that add little value to the learning aspect with regards to computer science. It would have been better if they featured one research paper per module, focused on the math and programming aspects of it (say for seam carving, focus on different energy maps using a variety of filters and how they affect the result) and then say have us implement a paper that extends those ideas. Some of the stuff like feature detection used in the panorama assignment, response curve for HDR and Laplacian pyramids were definitely worthwhile but assignments epsilon photography and pinhole camera were kind of a waste of time and yes there are too many photography concepts being taught vs. CS concepts. It would have been better to learn about the actual implementation of sensors and how RGB values are calculated but nope, none of that. There are loads of errata in the lecture videos and the TAs will not always be helpful here except one or two who are superb. This opened up a new sort of hobby for me and perhaps avenues to pursue in terms of writing my own research paper. However, if CV is more rigorous in terms of math and concepts but less busy work, I would say take that. If your programming skills are not that good, take this because you’ll have a lot of time and starter code to guide you along in learning Python, Numpy, OpenCV and other libraries. It would have been better if they just gave the pseudocode and had us implement from scratch with less busy work reporting. Others are right about A&B extra credit, just do something, anything and hand it in for a few extra points.
    Finally the professor not being present at all feels like a slight and a bit too ivory-towerish. I know he gets invited to conferences here and there but combined with the lecture content where he sounds unsure explaining math concepts, the presence of uncorrected errata and the awkward presentation of some concepts, picking a course with a more enthusiastic instructor would be more motivating.


    Semester:

    The good:

    • The lectures provide great background on computational photography, and a grounded introduction to computer vision.
    • The template slides included for creating presentations of your work are organized well.
    • The first and last assignment (final project) are up to the student’s discretion.
    • The head TA has been exceptionally engaged and responsive in the course forum.
    • The quizzes seem like reasonable tests of knowledge.

    The bad:

    • Due dates for various things fall on different days of the week, rather than consistently at the same day and time per week. The lack of consistency is annoying and lends well to mixing up due dates.
    • The lectures have little to no bearing on any of the coursework, which is unfortunate.
    • Peer Feedback is not helpful (for this or any course in the program); most students put zero effort into reviewing others’ work.
    • The grading is inconsistent; sometimes I was docked an absurd number of points for debatable, petty criticisms. I also noticed that the grader(s) tend to abscond with your criticisms of your own work in your accompanying report—if you’re honest about your work’s shortcomings, they dock more points than if you just say something along the lines of, “wish I had more time so I could add some unnecessary, supplementary feature.”
    • Getting an A is dependent on doing what is called “above & beyond” work—in most assignments, this is 10% of your grade that is only possible to attain by either BSing extra work or fruitlessly spending tens of hours going nowhere. What is especially irritating about this is that many students do de facto “above & beyond” work, but don’t explicitly report on it just because their work is of higher quality than others. Those students aren’t recognized for their effort, and that’s why this entire grading paradigm is nonsensical.
    • The course is laughably unbalanced: for instance, the midterm is far more demanding than any other work in the class, including the final project. You can’t expect a constant amount of work every week—one assignment will be easy, and the next will have some arbitrary stipulation in the requirements that is disproportionately emphasized in terms of effort and grading.
    • The requirements across assignments are entirely inconsistent. One week you’re told to set up an assignment one way, and the next the requirements contradict the previous as if the purpose is to trick students as opposed to facilitating a smooth operating cadence.
    • The order of the assignments is weird.
    • For some reason you have to make a final portfolio, a presentation of your previous work, which makes no sense since we already presented it.

    tl;dr: I wouldn’t recommend this course unless it underwent major structural changes.


    Semester:

    Do you like busy work? If so, take this course. If you value your time; don’t take this course.

    The course is a hybrid CS and photography course which means it does neither subject well. The CS portion of the class is diluted and unsubstantial. There is a bit of programming and some algorithms presented. But, I don’t think I learned too much. The photography aspects of the course really dilutes down any value you may get from the material. =

    The assignments are basically busy work. They are not hard, but it is next to impossible to get A because of the worst of all of this class’s policies – the Above and Beyond policy. The assignments for this class isn’t hard enough on its own; so, you must come up some way to impress them to get the 10% of your grade (which rarely happens). If you do not, the highest grade you can get on an individual assignment is a 90% before grading for the correctness of your work.

    On top of this, it takes more time to put together the material to submit the assignments than to complete the algorithmic portions of the course. This is driven by the fact that you have to aggressively compress all of your submissions and answer an elementary school style report for each assignments.

    To add insult to injury, you also have to take a few random quizzes and perform peer feedback assignments which are largely orthogonal to the material we are learning.

    The upside is that the research replication component of the class, the final project and midterm project, are really cool.


    Semester:

    I’ve loved most of my classes in OMSCS, but this is not one of them. I would only take this if you have to for your specialization. I thought of it as a much worse version of Computer Vision (amazing class) with photography mixed in. The Midterm was a great project at least. It was new and interesting.

    The Assignments were terrible. They were not very difficult, but time consuming if you want to get an A. You could put a lot less effort into them if you are happy with a B. I spent most of the time putting together slides and answering 3rd grade questions. For example, “what are 2 obstacles you encountered and how did you overcome them.” They repeatedly mention they expect graduate level answers, probably because people read the questions and don’t take them seriously. I expect graduate level questions from this program. In addition, the above & beyond requirement is a waste of time as well. You can submit junk and get a 93/100, which I highly recommend to get an A. Putting significantly more effort into it may only get you a 95/100 so don’t waste time unless you have done it before, or have time to waste. In my opinion, their attempts to make this a research class failed and I think it was a waste of effort. I’d rather spend more time coding.

    I even petitioned a dean about the duplication between CV and CP. They acknowledged it and offered no solutions or alternatives. I was told me they don’t allow substitute classes, but I am too far along in the Computational Perception Specialization to switch and honestly I’m not sure I would for one bad apple. This class isn’t a total waste, again, look forward to a challenging & interesting midterm.


    Semester:

    This was my first OMSCS course. I’m an experienced python programmer, but had zero experience with numpy, openCV, and very very rusty linear algebra skills. I did have past photography experience and that helped a tiny bit.

    Getting a B is very doable if you put the effort in, but an A would be challenging). There is no curve and for most assignments to get a grade higher than 90, you need to do what they call “Above and Beyond” work.

    Quizzes were open book and you could take them twice, but they were also not a big portion of the grade.

    My biggest advice for anyone taking this class, as in many others is start projects early. Turning in a day late drops you a letter grade. I ended up turning in too many projects a day (or two) late.

    Most of the projects are not all that difficult, but the mid-term assignment is very challenging and time-consuming. And the end of semester project can be as well, depending on what you pick (it has to be deemed appropriate to the subject and of sufficient difficulty). The most successful folks largely chose a very doable project rather than trying to stretch very far. I was in the latter group. :(

    Lectures are good, but don’t expect to have any interaction with the professor. As with most other courses I’ve seen, the TAs completely run the course. They were excellent and this class was very well run/organized though. I’ve heard that it’s one of the best run courses in the program and I believe it.

    While you can work ahead a bit, they release the assignments officially on a schedule. They are subject to change although I don’t think we really had significant changes. I found that I needed the time allotted for each project so I was very rarely getting even a day’s head start on the next project.


    Semester:

    Cool course! you learn a lot and have fun in the process. It is not an easy course but it won’t consume all your time. No group projects. Open-book exams.


    Semester:

    After having to drop CP in Fall of 18, I made it through it in the Spring of 19. Class was difficult, especially the midterm project and final project. Python was used exclusively, especially numpy. Give yourself extra time to understand numpy at the beginning of the course if you’ve never used it. There’s several easier assignments, but definitely a couple harder projects towards the end and the midterm and final projects were the hardest in my opinion. This course also involves several assignments where you have to take photographs that include some planning. Overall I enjoyed the course, but make sure you devout plenty of time to it.

    I didn’t find the textbook to really be beneficial at all.


    Semester:

    Take Computer Vision instead – it’s simply a better class. Here’s why:

    1) Computational Photography is only partially a CS course. It’s more like half photography and half CS. I’m not sure why this course really exists when there is already Computer Vision, which is more mathematical, rigorous, and relevant to CS students. You will learn more in that course, and if you have already taken it this one will feel like a repeat with only half of the material covered. None of the programming in this course is hard or even stimulating.

    2) To make up for the lack of difficulty in course content, the instructor uses subjective grading schemes for the “Above And Beyond” sections on assignments as well as the midterm and final. They emphasize that students provide “graduate-level answers” which is code for “this assignment isn’t hard enough so we’re going to grade you on secret criteria only available to TA’s.” The instructor and TA are also generally unhelpful.

    If you’re just looking for another course to pad your list, then it’s not the worst thing that could happen. But you should take Computer Vision instead.


    Semester:

    This course has a large amount of busywork. The udacity lectures are somewhat bombastic. The phrases “in essence”, “showcase” and “each and every” occur very frequently in each and every lecture :-)


    Semester:

    I really enjoyed this course! It’s not quite as math heavy as the Computer Vision course seems to be. There is a steady stream of homework assignments (roughly 1 every other week or so), most of which have an implementation component, and then a report component. I found most of them took 2-4 hours of work for implementation, and 1 hour for the report.

    The mid term project (Seam Carving) was challenging, but very interesting in my opinion. The algorithm is one of the cooler applications of dynamic programming I’ve seen, and the results are visual and therefore pretty satisfying.

    I will say that I found many of the assignments easier to do with a DSLR (or any camera with a full Manual mode) with a small tripod. If you don’t have those materials, you can probably get by fine with a smart phone and some kind of tripod for it. You will need to be able to modify exposure settings for many of the projects to get the full effect.

    If you are an amateur photographer, I’d highly recommend this class. I learned a ton about cameras and camera systems, and the projects do a very good job of giving you practical first hand experience with the concepts in both physical space with your camera, as well as cyber space with the coding components.


    Semester:

    Really hard course - lots of work/hours to be put into assignments. Gets difficult and tougher per week. There was a submission almost every week. Really tedious. Every assignment would guarantee only 90% and the rest 10% was AB (above and beyond) - I would say no way to score that 10%.


    Semester:

    This is a great class - a gentle introduction to the program and to python, if you’re a bit rusty. The lectures are interesting, the assignments are of appropriate difficulty, due every 2 weeks. They have helper code to get you started. The midterm is a very difficult project, same with the final project. But you learn a lot and get a chance to be creative. It’s a great first class - you can take two light classes your first semester and come out ok. I wouldn’t pair it with a hard class until you know how you work, especially when the hours ramp up during the projects.


    Semester:

    If you want a B, you can probably get away with 5-10 hours worth of work in this class. Start relatively early in the week on homework assignments and make small corrections to quality check your work and you have a B. If you do exactly this, there is a very, very small pathway for you to get an A, but I doubt anyone will really be able to thread that hole.

    If you instead are looking for a challenge and a better chance of an A, the time investment can grow dramatically higher. There’s no specification for what counts best for Above and Beyond and if you like to have a preset template with clear directions on how to get an A, you will surely hate this class.

    If you are curious about what “works” for above and beyond, I have some insights from my experience: 0 points for an attempt at something that doesn’t work, 3 points for additional photography with some degree of prettiness or interest, 9 points for substantial effort in replicating research and capturing additional photographs. I’m sure there’s a middle ground and a higher max as well.

    I would recommend strategically doing research replication for the A&B only for a few assignments, it’s probably a good idea to work ahead on these weeks, trying to do this in just a week span is pretty arduous.


    Semester:

    This course was much more difficult than I expected. However, this was a course outside of my specialization.

    The first few projects are odd but pretty simple. But it goes from very simple python skills needed to very complex image manipulation in the projects to follow.

    The midterm project was very difficult and took an incredible amount of time. It is very ambiguous and I spent hours trying to figure out several things that ended up being trivial. But apparently this “ambiguity” is what they were going for. Do not be like me and spend 40+ hours the weekend it’s due to complete it.

    The final project is not terrible as long as you don’t pick too hard of a topic.

    There was a lot more writing required for this course than expected, lots of reports and talking about your experiences, especially with the final project which has a very long template.

    The “Above and Beyond” rule is ridiculous and makes it incredibly hard to get an A. The TAs were a broken record saying “A&B is always optional,” but it’s really not, if you want an A.

    To end on a good note, I really enjoyed the subject matter and really pushed the limits of my creativity and learned a lot of image processing programming. I’ve actually already used a good bit of it in my job.


    Semester:

    I took this class in Fall 2018. It was my first in the program, and it was a gentle introduction to it. Video-lectures are excellent and engaging, the course is perfectly organized and paced, the homework is interesting and, if you come from a CS background, not so demanding, it also has an artsy component that personally I liked a lot, although other folks hated it.

    Regarding programming, you will get exposed to OpenCV, Numpy and Python, and will work with currently used techniques as HDR, Panoramas, features detection… Also, you will learn the basic of photography and will be introduced to some state-of-the-art techniques. Some assignments will make you think that you are not in a CS class anymore (camera obscura) but if you have a minimum interest in photography, you will love them!

    The most difficult part of the class was the midterm project, where you will be requested to implement a given paper. Although it was difficult, I enjoyed it a lot. My advice, and I can’t stress it enough, is: start early and hand it in before the deadline, even if it is not 100% working. I sent it one day late and I got a 10p deduction because I wanted to brush up a minor detail that after all, it wasn’t that important (grading rules are not released in advance, so you really don’t know what is worth each part of the project).

    Regarding the final project, it’s again the implementation of a paper, but this time you should choose the paper to implement. Selecting an appropriate paper is more difficult than it seems, you should not overshoot the difficulty but at the same time, it should be something worthy of a graduate level. The TAs set a thread where they listened to proposals and also gave some suggestions. In my case, I implemented a paper based on deblurring techniques.

    A negative aspect was the poor TA feedback in the scores. Yes, you get the score and a couple of pointers, but some more information will be appreciated, especially in the two big projects (midterm and final). The A&B part of the assignments can be also annoying, but in the last assignments you can get easy extra points just using your own picture sets, those easy points could give you an A (I got a 91% thanks to that!).

    Overall, a great first class. Also, if you like photography and already know some basics, you will love it and it will make your journey much pleasant. I would highly recommend it to everybody regardless of the specialization.


    Semester:

    Assignment breakdown: 7 projects, each with a peer feedback; 1 midterm project with a peer feedback; 1 final project (can be done solo or in a pair, but if you do it in a pair then you’ll be expected to do something more difficult) with a peer feedback; 3 notebook quizzes; a plagiarism quiz; 1 final exam. For the most part the work in this class is not very difficult, but it can be time consuming and it’s likely you’ll always have another thing to do when you finished something else. For this reason I rate this medium difficulty and I think this is a bad class to pair. Not a lot of time left for another one, even an easy one.

    You can kind of work ahead, although I don’t recommend it. The entire github repo with all the assignments in it is available to you in advance, but the assignments are subject to change until they’re officially released. The midterm project was a ton of fun and the main reason I took this class. Almost every assignment has that above & beyond portion that so many others have already mentioned, and it’s a bit annoying, but if you expect it going in then it’s not so bad. This is another reason why it’s good to take this class alone – more time to dive deep into projects and get the A&B done.

    I found the material very interesting for the most part and I generally don’t care about photography. I’m more interested in image processing and manipulation, and this was a good class for that as well. I also took CV and I recommend taking CP first if you want to do both, since CP is a gentler introduction to the technologies used. There is a bit of overlap but not as much as there used to be.

    Class was well run for the most part, up until the final project. At that point the TAs really dropped the ball. For the final project we’re supposed to pick a topic with an associated research paper, post it on Piazza, and hope a TA approves it. (There’s no penalty for no approval, it just means we need to expand the scope or pick something else.) This is a big plus because there are so many interesting topics out there and a lot of people’s projects turned out really awesome. The huge problem with this is some people could end up doing significantly more work than others for the same project. One of the final project requirements was that it required “significant original code,” i.e., a non-trivial and large chunk of original code that isn’t copied from a source.

    A lot of people chose a “painterly rendering” project that makes photos look like paintings. One of the TAs approved this project by literally saying “yes go for it” and nothing else. Since some TA responses to other project choices were along the lines of “no, the scope of this is too small” or “no, this is too simple for a final project,” everyone doing the painterly rendering project should have been able to reasonably conclude that “yes go for it” means the scope is acceptable.

    Well, come to find out 2.5 weeks after the project starts (about 4 days before it’s due), one of the head TAs said offhandedly in a Slack conversation that the painterly rendering scope is too small and needs to have stuff added to it. This was never mentioned on Piazza until a student brought it up there. Thank god for him, since not everyone likes to use Slack. The TA tried to defend this (still only on Slack) by saying the painterly rendering paper includes pseudocode, and using the pseudocode doesn’t count as significant original code, and the students should’ve known this. The paper does include a lot of pseudocode, but once you actually get down to the details and start implementing it, you’ll quickly find that there are a ton of gaps that need to be filled in, and those gaps do require “significant original code.” It’s completely unacceptable for a TA to just assume every student has the same definition of a vague term like “significant original code” that he does. Worse, it’s asinine to assume that every student will know that a different TA saying “yes go for it” actually means “yes go for it but the scope is too small so make sure to do something extra,” especially when many other TA responses were explicit about scope being too small. This is just plain irresponsible. (This isn’t a bitter rant fueled by a bad grade; I ended up with an A in this class. I just get extremely annoyed by irresponsible teachers and TAs. I teach and I know what I’m talking about.) Get your shit together, TAs, and this class can be really great.

    There is no curve in this class, but I think that’s a good thing since if you get an A then you really feel like you earned it. Overall I do recommend this class. Don’t pair it with anything if you’re also working, and make sure you get explicit confirmation about your final project scope.


    Semester:

    SPRING 2019 – Content was not as interesting as I would have thought. The course will give you good experience with Python, Numpy, and OpenCV. Grading consistency is a large problem with the course. Rubrics are not given beforehand and are not followed strictly in hindsight. Also annoying is that you are supposed to be fine with just a phone camera (stated in the syllabus), yet I was given point deductions for blurry photos when using an iPhone 6. I don’t think I can recommend this course to others, but perhaps different TAs would help.


    Semester:

    Not happy with the lectures. Love the projects

    The lectures in this course are so vaguely worded. It felt like the professor has been using cute words to introduce high school kids into the CP world instead of giving serious, graduate-level lectures. He says “Congrats! Now you know how to do XYZ”, where XYZ being something really achievable. I can’t believe the lecturer broke “degree of freedom of image transformations” into 8 videos?! In a real graduate class in top-notch schools, that would be squeezed into just one single PowerPoint slide. I mean it is nothing wrong to encourage people, but grad students don’t need to be patronized. We are here with a motivation to learn hardcore concepts — Just overwhelm me with those equations! Bring it on! The lecturer doesn’t seem to care to elaborate on algebraic details behind the CP techniques. Overall I feel like the lectures are a “knockoff” version of a real on-campus CP class.

    I love the designs of of the projects. The midterm and final projects can be a lot of fun if one takes them seriously. I like the idea of implementing the CP techniques mentioned in vaguely-worded research papers in Python. Most assignments are a combination of coding (mostly array manipulations with NumPy) and writing up a report. Some assignments could be a hassle sometimes. For example, that pinhole camera project (Camera Obscura) was really unnecessarily troublesome. You tape out your window to create a darkroom for what? Woohoo! I know my middle school optics physics? Or, woohoo thank god I bought a Nikon DSLR camera instead of a $100 Android phone with a bad camera?

    Final exam was not designed to test your knowledge of the course. Refer to other students’ reviews.

    By the way, a few tips to get an A: (I got an A with 93%, 3% above the cutoff of 90%)

    1. It helps a lot to get a high score in assignments + midterm + final projects if you show that you took time to write up the report. Don’t assume good coding guarantees a success. Presentation is a major part in this course.
    2. Try Above & Beyond every time if you want an A. You only get at most 90% on assignments if you don’t do A&B. How can you be sure you can get 100% of that 90%? Yes it might be time-consuming, but you need to be creative and devoted to get that extra 10%. In case you don’t well later in the final exam or you make a mistake in your next assignment, your A grade might not be reachable any more.
    3. Therefore, you want to start your projects early. Better one week earlier than the deadlines.
    4. Use Cmd/Ctrl+F in the final exam. Going over the lectures won’t help. lol.
    5. Always get full marks (100%) on Notebook Quizzes, Peer Feedbacks and Final Portfolio. The course designer must have put these “free perks” as part of your total score calculation to help you get a 90+% weighted average eventually. So grab all those points when you simply need to remember to evaluate fellow students’ reports in time.


    Semester:

    This course is very interesting. The course is made up of 7 HW assignments, 3 notebook quizzes, a midterm project, a final project, a final exam, and a final portfolio.

    Pros:

    1. Interesting material and lectures
    2. Course contains both programming and physical work for homework and projects

    Cons:

    1. HW only allows 90/100 with an “Above & Beyond” section that allows you to get some of the remaining 10 points. This does make it hard to get an “A” in the course.
    2. There is only one test, the final, so you never really learn the testing format until you are taking the test. You do get 2 tries for the final though which helps.
    3. time commitment varies, not too bad except during the final and midterm project in which, unless you are extremely talented with python, you will spend 18+ hours a week.

    Overall, I would recommend this course as a first course, it’s hard but interesting.


    Semester:

    I liked this course, i did teach me some very useful techniques that i can easily use outside of course or my current job. Lovely concepts on photography, camera and the vision ahead. Overall a very nice investment of time spent. Loved the course. The TAs are very active, every question gets answered in a short while, the piazza community for this course is very vibrant and creative.


    Semester:

    This was my first course in the program and at first I thought I would not enjoy it. At points it does feel more like a photography class than a CS one but after taken more classes the following spring, I realize how grateful I am for this class. It’s a terrific class that introduced NumPy and how to more efficiently vectorize it’s use. This fed directly into ML4T with it’s time requirements.

    I am looking forward to taking CV in the future and hoping I can bring more value from this course.

    Overall, challenging assignments, straightforward exams. No complaints.


    Semester:

    Overall, I will say this is a very good course. It’s tedious, somewhat vague, and frustrating at times. However, I feel it largely depends on the effort you put into it. You’ll learn Python, Numpy, OpenCV, matrix manipulation, calculus and computational photography techniques.

    There are 7 assignments, a midterm project, a final project, and a final exam. These make up the bulk of the course work. In addition to this, there are notebook quizzes, peer feedback, and a final portfolio. It is a lot to juggle, so it’s definitely worth importing the Canvas calendar to your personal calendar and making sure you get notified when things are due.

    It’s typically an assignment due every Monday, with peer feedback for that due the following Wednesday. My typical method for the normal assignments was to read the assignment ahead of time, spend the week tinkering with code, preparing any photos I needed to take myself, and then churning out the final code on the weekend. The submissions steps are very particular, but honestly it only takes a few minutes to read through the GitHub summary and make sure you do everything right. It’s the same for all the assignments, so missing points here is just lazy. Pictures, code, other things get zipped into a resources.zip. Your report.pdf gets zipped with resources.zip into the .zip file you submit – easy. Take one second to ensure you’re under the submission size (not sure why this is a thing).

    The notebooks are simply Jupyter notebooks you can work through alongside the material for practical examples. I made it through 1.5 of the 3. The quizzes over these can largely be done with a live notebook open and a little searching.

    As far as the above and beyond goes, it is true that you will get a 90 for doing exactly what the assignment states. However, I will say that I didn’t put in any crazy amount of effort, and I got above a 90 on every single assignment. On one occasion, I got extra points simply because my report was well done, despite only doing the bare minimum code. The one thing I did throughout the course was simply work to ensure that my submissions were well done, and I only explored further within reason.

    For example, on the Camera Obscura, I was able to get fairly good photographic results. My above and beyond was to simply leave the camera on and capture a timelapse video. While, yes, that was technically above and beyond, it took zero effort on my part to do – it was simply a natural extension of the assignment. “Well if I can get this cool picture, can I leave my camera in the room and get a picture every 5 minutes?” Having this mindset with every assignment makes it very easy to get 90+ on the work.

    The midterm is brutal, but very rewarding. Do not put this assignment off, as it is very complex at the start and will end up taking a lot of computational time to finish in some instances.

    The final totally depends on what you choose to implement. Read the Canvas papers to try and get some ideas. Either choose one of those or get something else approved from the TAs. What helped me here was researching what already existed as Python libraries for the papers I was interested in. For example, if your paper isn’t about blending, but they implemented blending on their own, see if there’s something out there you can use as a compromise. I believe the goal of the final is to show a deep understanding of the paper and be able to generate your own results. Not necessarily the detailed implementation like the midterm was.

    In summary, I’d say if you put in the effort to ensure you follow the guidelines (which are all spoon fed to you), and make sure your code and report are well done and presentable, you will do well. In all, I felt what was asked was largely aligned with expectations as a graduate student.


    Semester:

    I liked the video lectures and how well this course is executed in general. Like a well-oiled machine. Photography is a hobby of mine - so playing around with these novel ways of working with photos was exciting.

    As many mentioned, doing everything in scope of an assignment, will get you just 90%. I will admit, if you want an A in this class, it is a bit stressful as you always have to try to do “more”. There were 7 assignments, 2 projects and one cumulative final exam.

    The professor was not present at all, which I didn’t like initially - but the TAs are pretty knowledgeable and eventually it wasn’t a problem.

    If you like photography and want to get a fun intro to python, openCV and numpy… this could be your course.


    Semester:

    Generally speaking, I’m not sure I would recommend this course unless you want a good primer to Computer Vision and working with images. This was my first course in OMSCS, and I frankly found it to be a little boring and bloated with unnecessary work. On the plus side, you will get good exposure to Python, Numpy and OpenCV.

    First, there are many lectures which can be skipped entirely, and also some readings which could also simply be skimmed over. There are some very good ones(Convolution, Gradients), some lectures that are too vague (RANSAC, SIFT), and others which seem to serve no purpose at all (Projector Camera Systems).

    Throughout the course, there were 7 assignments and 2 major projects (midterm and final). The first three assignments are pretty light. (The third is the pinhole camera assignment, where you will spend more time taping cardboard to block out a window in your house than you will using any valuable skills). The fourth will surprise you with actual coding, but it will prepare you for the midterm project. The rest of the assignments, besides the midterm and final, have a little too much hand holding. They give you the high level functions and step by step instructions on what the algorithm should produce. While this gets you the solutions to the code quickly, I am now looking back and wondering if I learned anything.

    Each of the assignments also has a PowerPoint report you must fill out in addition to your code, which is tedious and frankly will waste hours of your time. These are coupled with steps and rules for submitting your code that could fill up the pages of a small textbook. I once lost points for not putting one of my images in a resources.zip.

    You can only get higher than a 90 on most of the assignments by completing an Above and Beyond section. This section can easily absorb hours of your time. Even if you complete this, you will likely only see 1-3 extra points.

    The midterm was the best project, the hardest, and most time consuming. You will be asked to read, understand, and implement a research paper. The math isn’t terrible, but come prepared to understand linear algebra and calculus 3. I easily spent 40 hours on this project, this mostly related to coding purposes.

    The final is really up to you since they let you pick a research paper and replicate the results. Although others claimed the requirements were vague, they did give the opportunity to present your idea to ensure the scope was appropriate. I have similar feelings on this project as I do the midterm, although I ended up not really liking what I picked (thats my fault).

    The final exam is the worst exam I’ve ever taken. It’s a “select all that apply” type exam, and they will do everything in their power to trick you into selecting answers that seem right at a first and second glance. You cannot study for this exam as it is all about hitting Ctrl+F on your keyboard and ensuring word by word the phrase makes sense. Read some of the other reviews for more one this. If I had just one suggestion, please replace this terrible exam.

    You will also be expected to review a series of Jupyter Notebooks and complete notebook quizzes. You will have time to get through the first one, but the second and third notebooks need to be completed alongside some of the more difficult projects. I wish there was less focus on written reports and more focus on these notebooks since they have some of the most practical content of the class. Again though, they hand you the coding solutions and your opportunity to apply knowledge hands on is lost.

    In summary, there is a lot of work, but a lot of it is busywork. There are many quizzes, notebooks, projects, and lectures that will keep you plenty busy. Even though you may well understand the material, expect to get a B due to the final exam and Above and Beyond. Honestly, I feel like I’m coming out of this course without feeling like I learned much, and feeling a little like I wasted my time.


    Semester:

    This is a good intro class to CP and CV concepts. It can be a bit tedious, with a lot of reports to do, but overall it is alright.


    Semester:

    Interesting material and projects. Professor is too focused on grading, you have to work extra hard to get an A and its hard to get.


    Semester:

    I found the class very frustrating. Assignments require reading abundant walls of text to avoid missing grading details and grades are deducted for things like upload size being too big (it sure would be nice if Canvas at least had this feature to warn you). The subjective grading overall is my biggest complaint with the course. I wish they would overhaul their approach and make it more rigorous.


    Semester:

    (Reviewing for Fall 2018 which isn’t available as an option).

    This was my first course in the program. I came in with a decent knowledge of Python but little formal education in CS. This course was great in helping me get really fluent with NumPy/OpenCV and concepts like convolutions and matrix operations as applied in CS generally.

    The content is a good intro to image and video analysis and manipulation, but you have to be interested in the subject for it to feel really rewarding. The regular assignments are capped at 90% with the remaining 10% being discretionary “above and beyond” points for doing extra work related to the assignment. These assignments vary from interesting to feeling like busy work unrelated to CS at times; there’s a lot of text you have to write interpreting your results, and often you have to take your own photos for full “above and beyond” points. The 15 hours I listed are more accurate if you aim for all of the above and beyond points, less so if you do not.

    The midterm and final together make up a significant portion of your grade. The midterm requires you replicate a paper without much guidance; I personally loved it and wished more of the class was like this, but lots of classmates found it both too open-ended and much harder than the regular assignments, so YMMV.

    The final exam was really bad in some places. It’s multiple choice and open book, not using ProctorTrack, so overall it wasn’t hard but whoever designed some of the questions is really doing this program a massive disservice. Some of the questions required you interpret the question as “Does this sentence exist word for word, literally, in the source material?” rather than “Is this assertion true?” So if a source paper says “cats are felines” and somewhere else in the paper they say “felines are mammals”, selecting “cats are mammals” as a statement that is true would be marked false and docked points because that exact sentence does not appear in the source text verbatim.

    Note that Professor Essa isn’t involved in the day-to-day at all. There are some courses in this program where the professor participates on Piazza, hosts office hours, and actively works to provide opportunities to students in this program. This isn’t one of them and you’ll be working with TAs the entire time.

    Overall I liked it given my personal interests and learned a lot, but I would take this course either as a gentle intro to the program or if you are actually interested in these topic areas, with the above considerations in mind.


    Semester:

    Great for first course. Good python exercise. Easy and less time consuming. Bit more load on midterm project and Final project but assignments and quiz would not take much time. (I start learning python with this course. C/Java experience in the past.)


    Semester:

    Pros: Interesting information. Video lectures are good. Assignments help reinforce the information well.

    Cons: Class is run by TAs with no presence from the professor. Trick questions in the quiz and tests that focus less on validating understanding than outwitting the student.

    TAs provided minimal assistance during the class, so understand you will have to figure most everything out by yourself or with class-mate help. Additionally, the guidance on what is a good final project was vague, leading people to lose points on the final because it wasn’t hard enough or the right type of project. Proposals for final projects were submitted, but no feedback was ever given on those.


    Semester:

    Have fun computing with photographs! The projects are neat, you basically create your own photoshop lite over the course of the semester. I’d recommend spending some time getting to know numpy and vectorization before taking.


    Semester:

    Badly executed course. Has a deeply flawed evaluation of projects via a method called Above and Beyond. My sense is grading a course should be straightforward in computer science and not something based on subjectivity. The projects are mostly good, some are off the beaten path of a computer science course and not related to computer photography but more photography as it’s trying to be an art class. Not really sure it’s staffed appropriately for that component.


    Semester:

    This class had a great mix of coding, application of theory/concepts, and hands on work such as taking your own pictures to use for the assignments. One of the best projects was related to seam carving, where we were simply given a paper and asked to replicated several of the images within it. Used python/numpy/opencv. Not as hard as CV.


    Semester:

    • a&b is pain
    • final exam is tricky
    • grading is subjective
    • but the projects are really cool


    Semester:

    Projects take a significant amount of time in comparison to homeworks. Homeworks are “fine” and generally don’t take too long. Final exam was a bit hard in my opinion, but wasn’t weighted heavily enough to matter too much.


    Semester:

    A few disclaimers: first, I took this class concurrently with KBAI, and this was my first semester in the OMSCS program so my view on the class has very little reference to other classes in the program; second, I did receive an ‘A’ in the course, so I’ll try to not let that color my opinion of it; finally, reading past reviews indicates to me that this class has undergone a fairly large transformation in the past two semesters, be careful making expectations about the course from older reviews.

    Now for the review: Overall, the course was interesting and fun, and I feel I learned quite a bit. However, there were a few things that bothered me while I was taking the course, and I wanted to wait until it was 100% over to write them up to give others a fair warning about these aspects of the course:

    First, the open-note final exam did not feel like a good test of the things I had learned watching the lectures and doing the assignments throughout the semester. Another reviewer mentioned it felt like “finding a needle in a haystack”, but I wanted to expand on this further. Some of the material on the exam did not come from any of the class material. Most of the exam required finding keywords in PDFs, or a specific sentence mentioned in a lecture. Many of the questions relied on wordplay to attempt to fool the test taker (similar to the lab notebooks).

    Second, the midterm, which I believe was indeed a fair assessment, should have included the grading rubric when it was released. A number of students wasted a lot of time on a portion of it that ultimately was worth much less than the other portions of the exam. Ultimately I believe this contributed to that assessment being the lowest grade overall for the class project-wise.

    Third, it appears reviews of the Above and Beyond portion of the assignments were mixed. You really need to attempt to do all of these if you want an ‘A’ in the course. Personally, I was not really a fan. I thought that while the Above and Beyond sections could produce very excellent work, grading of the sections was too subjective. These Above and Beyond sections count for about 4% of your overall grade, and getting more than half of these points seemed almost unfeasible sometimes. I understand the intention to make the course more fun and produce original pieces of work, but I think more guidelines need to be set for both the students and the graders about what qualifies as an appropriate Above and Beyond.

    I do not mean to dissuade others from taking this class. I really did enjoy it (doing the final project and seeing others’ results was AMAZING, and all of the assignments were very well-made and fun to do). The TA’s were extremely knowledgeable, active and helpful. And I’ve never felt so much pride in the work I’ve done for a class. Mostly, I just wanted to make the above writeup as a refresher to the reviews from previous semesters.

    P.S. Buy a tripod for your phone, and start the midterm early.


    Semester:

    I took this course after Computer Vision. It is not as well organized as CV, and the videos are more annoying than educational, but it’s a good course to take if you’re interested in photography and manipulating images.

    The mid-term project could potentially be very difficult if you go in without python & numpy experience. In my case, CV provided the background to make CP only medium difficulty.

    Tips to get an A:

    1. Always try for A&B: The above and beyond grading scheme on the assignments is a strange beast. On one hand, you have absolutely no clue how to get that final 10% of your grade. On the other hand, it encourages you to just try something - just use your wild imagination and creativity - and you are rewarded by the fair and generous grading.

    2. The assignments, projects and exams get progressively harder and trickier towards the end of the course, so work hard at the beginning and don’t procrastinate.
    3. You’re generally graded on the quality of the report and not the code, so have fun coding and all, but to get full marks, make sure you answer all the questions and follow all the guidelines in the report. In fact, if your code fails or you run out of time, you can still get a good grade by describing what you did and didn’t do.


    Semester:

    Good course. Interesting topic. Cover a lot of material. Assignments ramp up pretty quick, but lots of online resources to help get through them. Midterm project was replicating a research paper and took considerable amount of time. Final project is open-ended and up to the student, which was cool. The final exam wasn’t necessarily hard (open note and can take two times) but some of the questions are tricky and poorly worded. Overall I would recommend the course (especially if you are interested in photography/computer vision), but encourage students to not let themselves fall behind.


    Semester:

    This class starts slow at first not quite feeling like a CS class, but by the end you’re replicating research from the mid 2000’s. The final project was choose your own adventure…


    Semester:

    This is an interesting elective course that uses primarily Python and OpenCV. There are relevant and cool topics you learn about in the lectures related to how computations/programming have enhanced the photography process. It isn’t too math heavy or difficult programming. A good well balance course. Just wish the instructor was more active in Piazza.


    Semester:

    This was my first class in the program and a great introduction. The material wasn’t particularly difficult, but there is room to go as deep as you like with the above and beyond portion of the assignments. I would recommend getting practice with Numpy if you are not familiar with it. A cheap tripod was very useful for some of the assignments and I borrowed a DSLR for the camera obscura, which would have been much more difficult with a smartphone camera. It was well organized and the assignments were fun. I would recommend taking this course if you have any interest in photography or working with images.


    Semester:

    The course begins deceptively slowly, then accelerates without remorse. Definitely start (and finish) all assignments as early as possible. In comparison to other courses, the lectures are of marginal learning value, so count on having to complete the readings and probably do some extra learning on your own. Prof Issa had only one office hour session, to my knowledge, but the TAs and Slack channel were reasonably helpful. In general, this course was easier than ML, RL, and CV, about on par with AI, AI4R, and Data Viz, and more difficult than KBAI.


    Semester:

    I took this course during Spring 2018 and paired it with HCI. This was my first semester in OMSCS. Overall, the course was good. As many mentioned, you can only make a 90% for most assignments without doing Above and Beyond work. This work isn’t impossible, but even then you most likely won’t get higher than a 95.

    If you aren’t an amazing programmer, I would highly suggest you start on the projects well before they are due. Don’t procrastinate. The TA’s will not help on the projects in any way. You will run into issues. Start early on everything. Before the midterm project, there is only one assignment that requires any coding at all, so the difficulty jump here is terrible. You need to brush up on your python and numpy skills well before you get to this point.

    The notebook quizzes are terrible. There is no other way to describe them. They are only worth a tiny portion of your grade, though, so not too big of a problem.

    The assignments are pretty fun, but you don’t code until about 1/3 of the way in as I mentioned before.

    The final project is student choice. I didn’t find this project as hard, but I had also gotten used to Numpy by this time.

    The final exam is hard, but you get two chances. Study and you will get a good grade.

    The slack channel is your friend. Seriously. Bookmark this channel. It is incredibly active and is probably the easiest way to get your questions answered. One of the TA’s is involved there and he is incredibly helpful. You can also get great ideas for Above and Beyond in this channel.

    Overall, I liked this course a lot. I definitely recommend it and can easily be paired with a second course if you have the time. Just make sure to get ahead on that midterm.


    Semester:

    This was my first class in OMSCS and overall I enjoyed it! I am a hobby photographer myself so it was really cool being able to see how photography techniques were implemented on the backend, like panoramas and HDR.

    Technically, the class was medium difficulty. There were assignments every few weeks, along with a midterm project and final project. There were also a few quizzes and a final test. You’ll notice in a lot of the other reviews they mention the “above and beyond” aspect of a lot of assignments. The vast majority of assignments were “above and beyond”, meaning that if you fulfilled all the requirements, the highest grade you could get was a 90%, and the rest of the 10% comes from going above and beyond the original requirements. Getting all of this 10% was pretty tricky. Some assignments, like the midterm and final projects, were not subject to this rule.

    Because of the A&B rule, it was relatively straight forward to get a B in the class, but difficult to get an A.

    The class is done mainly using Python and Numpy - would recommend getting familiar with those tools to have an easier time in the class


    Semester:

    The class is what you make of it - if you do the bare minimum on each assignment you can get out without too much difficulty, but there is a lot of opportunity to dive deeper into the topics and engage with your classmates and instructors. I liked it a lot.


    Semester:

    This was my first class in the OMSCS program, and I would recommend it to other students as a first class. TA involvement was high throughout the class, and assignments / feedback was given quickly and with clarity. A few elements felt shaky (peer reviews) due to growing pains with switching to Canvas.

    The grading scheme for most of the glass was to allow between 10-20 ‘easy’ points, and 10-20 ‘hard’ points per assignment. Most of the homework was subject to an Above and Beyond rule limiting the grade to a 90 without extra effort. The best approach to get full credit was to find a research paper related to the assignment and implement. The grading scheme makes a B average fairly straight forward to obtain, but requires significant extra effort throughout the semester for an A. The final exam was full of ‘trick’ questions and no curve, so it was important to go in with a high average if shooting for an A.


    Semester:

    Interesting material but it’s full on, you can’t catch a break


    Semester:

    Class is all about TAs, no professor interaction. Not an issue, but set expectations accordingly.

    Good to have some idea of linear algebra and calculus. Not a must, but helpful. Also, Python programming experience, particularly with numpy, will give you big head start. If you are not comfortable with those the optional programming work leading up to your first quiz is a good way to ramp on the Python & numpy piece.

    In terms of difficulty, my understanding is this class became more difficult starting Fall 2017. As a consequence, instead of being a likely A with relatively low effort it’s a likely B. I expect an A, but have done a lot of work to secure as explained next.

    Of the course’s 7 assignments, 6 are setup that you can reach a maximum of 90% following directions. The remaining 10% - referred to as Above & Beyond (A&B) - requires that you do something else of your own invention related to the assignment. TAs will give suggestions or hints, but this is where you can easily spend 90% of your time and learn the most. Meanwhile keep in mind it’s only worth 10% of the assignment grade.

    Midterm was difficult and saw 10-15% of the class drop. Implement a selected research paper. Took me more than ~ 60/hrs to do it. Very interesting work however, the sort of thing you’ll probably want to share with prospective employers for instance. Mean average was a high C and counts for 12% of your overall grade. Final Project is expected to be of a similar level of difficultly - excepting you choose your research paper to implement for better or worse.

    Final exam is a pain. You get two attempts, 2.5 hours per, and will need all of it. And Notebook quizzes are hard. I expect the Notebook quizzes to improve next semester. The Final Exam however is something that’s been used for several semesters running so prepare for aggravation there.

    The Slack channel for the class is very active and was by far the best part of the class. Piazza meanwhile got very noisy with repeat questions.

    Finally, get a tripod for your phone or camera if you don’t have one. You can get a cheap one for ~ $20. Makes a big difference on several of the assignments.


    Semester:

    This was my 6th class. I was somewhat prepared to take this class. I took this class purely out of my interest and for fun. Experience in KBAI from last summer helped me wee little. Looking back, I should have taken CP class before KBAI. exam. My only criticism, is this class seems to bite more than we can chew at times, lectures are over-packed and at times. Video lectures sometimes become too much “illustrative”, and some of the useful details seem to get left out, when the lectures say this is just for the illustrative purposes. And because of this, you might understand how something works, but might not always understand why something works. I loved the idea of Above and Beyond (A&B) in the assignment, it did seem to align well with the spirits of the masters’ degree. If you are planning to go with CP&R specialization, definitely take CP before CV. I am coming from 6+ yrs of professional C# and .NET experience, but regardless, I definitely would recommend some good practice with Python, NumPy and OpenCV, bring down your workload. The assignments are not that hard, but they might seem challenging at times. I found the midterm project (Seam Carving) challenging. The class let’s you pick your own final project, so you can truly make the most out of this class. Final exam was neither too hard nor too easy. Do read the question twice, in the final test. I expect them to lower the velocity. I did not always appreciate when the videos ignore some of the necessary details. Overall, stay consistent, do the the exercises, spend time reading the white papers. Take the time to read the white papers. there are a TON OF WHITE PAPERS TO READ, which might seem overwhelming, but do not forget you are a graduate student, at Georgia Tech. Fun fact: in the Udacity video lectures, the processor utters the word “of course” 1395 times.


    Semester:

    This semester saw a reworking of the course projects, with a reduction in the amount from something like 11 down to 7, with an added new midterm project. The first run of this midterm project I feel did not provide sufficient time or feedback, which will hopefully be improved on in the future. Make sure you get started on it as soon as it is released. There is an ‘artsy’ component to this class, where you have to deal with taking good pictures and then talking about how you took them well in the reports. Personally, I didn’t like the subjectivity of it. The most disheartening aspect of this course is that you must make up something to get more than 90% on any given assignment. What must you make up, you ask? That’s a good question, as I am done with the course and still haven’t figured it out. The final exam was open book with two attempts, however it doesn’t test that you actually know something. It’s more of a needle in haystack search where you have to ‘select all correct choices’. TAs were quite helpful throughout. Video lectures were pretty high level and didn’t get into the meat of the algorithms, which made them relatively poor in my opinion. If you are doing the Computational Perception specialization, you have no choice but to take this. If you have decided on any other specialization, just take Computer Vision and you would have covered a large majority of this course, with a much greater depth of understanding of the math and algorithms as well. You will learn more in depth, you won’t have to make up things to get a solid A on any given assignment, and you can avoid the subjective artsy experience if that’s not your thing.


    Semester:

    This class is not terribly hard mathematically/conceptually, but the assignments can be very time consuming and are not always well-designed. Still, I overall found the course to be well-taught and a solid introduction to computational image processing with OpenCV.


    Semester:

    I found this course to be more of an application of the concepts you learn in CS6476 (CV). Although, it’s less intense & not as stressful(except for those odd days). Should be much easier if one has completed CV. The course load is very well distributed. It had 7 assignments, 2 project work (mid-term research work replication & final project) & one final examination (with upto 2 attempts - max considered :)) The TAs are vell organized, very passionate & very helpful too. Despite their own course loads, they were present on piazza (&slack) answering questions; both technical & logistical… The only not-so-positive aspect for me personally was that a significant portion of assignment grades were deteremined by quality of report. This sometimes makes you feel that some technical challenges resolved/attempted were getting overlooked especially if you are not one of those who are good at reporting :). Having completed more rigourous courses like CSE 6220(IPC), CS6601(AI) & CS6476(CV) where the reporting was not a big factor in determing the grades found this a little discouraging. But on the brighter side, it’s gave an opportunity for me to improve on these aspects (which is definitely important in professional life). Over & above the computation part, the fun aspect was experimenting with photography… I used the opportunity to get myself a nice SLR (not mandatory for the course) & learnt quite a bit of photography during the last 4 months. If you need a term break from the heavy load ones & want to have some fun along with learning, will recommend this course.


    Semester:

    This is my first course, and i loved it. the lectures were very clear and precise and give you the understanding of material easily. the assignments were not that tough as the initial template code gives you lot of hints to complete the assignment(which i think should not be the case, as it takes away lot of learning). there is amble of time to complete the assignments and for most we had two weeks to complete, we had totally 6 assignments this semester, be warned that, only 40 - 50% mark for coding and the other 40 - 50% is for report in which you have to answer lot of questions and contemplate on your understanding and your work on that assignment. Assignments also had a concept called Above & Beyond, i never tried A&B, you have to do something extract other than required on that assignment topic to receive A&B which counts for 10 mark. we also had a mid term project which is the replication of an published paper, this was the most difficult assignment of all to me, but if you spend enough time it will be an easy A. we had two attempts at the exam, and exam is easy one but really tricky one, as there are multiple choice questions, if wrong answer selected negative marking is given. choose your final project when you reach mid term itself and start working on it, as much as possible choose an easy topic as you have the liberty to choose the topic.

    Over All this class is very good class.


    Semester:

    Overall, I did not have a good experience with this course. While I found the lecture material interesting, I think there is far too much focus on the photography aspect of the course. While the camera obscurra is a neat project, I don’t think it has any place here.

    Professor: While very clearly passionate and knowledgeable about the material, it seems that his involvement ends with the lectures. TAs: Overall seemed dismissive with questions, especially with the midterm research project. They’re given the task of teaching the course Grading: The 90% Above and Beyond is the stupidest grading rubric I’ve ever come across. Projects: While interesting, I don’t believe they’ll ever benefit me. Test: The test is open book and there are two attempts; this sounds great…but like another reviewer put it, “turns into a digital scavenger hunt.” I also found it to be marred by difficult/tricky wording (most likely by someone whose first language is not english) with a majority of the questions being of the delightful format, “Select all that apply/are correct”. I did not feel that the final exam tested my knowledge of anything that you might take away from the course. Also covers quite a few papers that aren’t really discussed during lectures. Time commitment: If I’m combining the time spent working on assignments with the time to watch lectures, then it’s about 20 hours, if not counting the lectures it’s a bit less than that.

    Overall: I was thinking about the perception specialization, but this course turned me off to that completely. If this were the first course I’ve taken in the program, I’d likely question why I was bothering at all. I regret taking this course, and in the future I hope to avoid all those involved in its creation.


    Semester:

    Subject is interesting with lots of real world usages but teaching methods were the main reason for disliking it. Course videos are pretty average. Assignments ask for too much write up in detail, this led me to lose the interest. There is “Above and Beyond” rule for all the assignments and its an irritating one. (If you are an TA reading this, please use challenge question method used in CV and remove this A&B). Mid term project and final project are interesting. Exams are too tricky with words not with knowledge or logic.


    Semester:

    This is my 3rd course in the program and by far the most organized. We didn’t hear much at all from the Professor in Piazza or other forums but the TA’s had everything under control. I was very impressed by the level of organization. The auto-grader (affectionately known as “Bonnie”) helped to provide some feedback that was useful with the coding assignment. I think this course was considered one of the easier or less-difficult courses in the past but they adapted the course this Fall term. I’m not sure how difficult it was earlier but I personally feel this course is no joke. Some of the assignments in the middle of the semester caught me off guard and I found myself pulling all-nighters in some cases to get the project done. For me the Blending assignment, while very interesting, was the most difficult. The first two assignments were really good at getting the introductions to the material but about the 3rd project it got real, really fast. If you have some Python experience, an interest in photography, some level of Linear Algebra I would highly recommend this course. As a prerequisite recommendation, I would suggest getting accustomed to Numpy, you’ll be using this in nearly every coding project. Also check out some OpenCV tutorials. Otherwise, enjoy computing with pictures. I rated the workload as 20 hours per week largely because of the Above and Beyond portions of the projects. This is a really good approach for a graduate level course, it allows you to dive as deep as you want on the material and there are so many cool things to explore here. I also appreciated how we had 2 weeks per project to enable getting into the material more (than having a single week for a project). Honestly some might be able to get by with 10 or 15 hours per week but if you want to learn this stuff, be prepared to set aside the time.


    Semester:

    This is my first course in the program. I have some programming experience and I love photography.

    The course was hard for me. I had to try hard to wrap my head around before producing a code in assignments. I also had to invest a lot of time into it. Nevertheless I loved the experience. It makes you head smoke, but you get a lot of satisfaction when you finally submit at least partially completed assignment. I almost never had time to complete Above and Beyond, hence not hoping for a high grade. I am actually not sure if I even get B in the end.

    The midterm was brutal. I hardly got 57. Make sure you set aside a lots of time for that. I expect final and exams to be even harder.

    I liked the fact that we were given two weeks for assignments. It gave at least some breathing room.

    The course was very well organized. TAs were very helpful and responsive. I love that the course makes me think and create, overcome challenges and grow.


    Semester:

    This was my first course in OMSCS, so please take this review with a grain of salt. I had no Python experience, but lot of programming time (10+ years) in C and Java. I am also an amateur photographer and very comfortable with a DSLR camera. This course comes with a weekly assignment which is to be turned in every Monday leaving very little breathing space. As this was my first course, i had signed up for only one course and was able to spend atleast a day or two for the A&B (Above and Beyond) section. For many assignments (7-8 of them), lot of time is spent on research and report writing. The TAs shared some of the exemplary reports for each assignment and it was ridiculously amazing at the amount of work being put into them :)

    The first 2-3 assignments are pretty simple and straight forward, though few of them requires setting up equipment (Camera Obscura), taking loads of pictures (Photos of space, feature matching) and few assignments have specific coding requirements (HDR). We get two weeks for the final project and the final exam is an open book multi choice test.

    One of the best parts of this course is the auto grader for the coding parts of the assignment with Instant feedback and unlimited submissions.

    From discussions over slack, few had paired this course with another course based on the earlier reviews and faced difficulties due to the assignment schedule.

    Check the Course Google group for insight into what kind of assignments were worked upon. Good luck!


    Semester:

    This was a very interesting class with responsive and fair TAs. There was a project every week which included a Python coding portion and PowerPoint presentation that you submit as a PDF. At the end of the course was a final exam and final project which were both time consuming but rewarding. The only thing I didn’t like about this course was building the Camera Obscura. The quality of your results depended on how crafty you were, but it was still interesting to turn a room into a camera. If you are interested in computer vision or photography and enjoy applying computation to art, I would definitely recommend this class.


    Semester:

    This class covers a ton of material. The pace is such that an assignment was due every week, which was grueling at times. For me, this also meant that I was unable to fully absorb lots of the concepts. The lectures are just “ok” in my opinion. In many sections the math is glossed over, which was a bit disappointing.

    The “Above and Beyond” portion of the grading seemed rather arbitrary and subjective to me. For one assignment, I didn’t even attempt the extra 10% and inexplicably got a 94 on the assignment. On the other hand, there were other assignments that I put 8-10 extra hours in and only received 1 or 2 points. Overall the process was extremely variable. Lots of it seemed like it depended on the TA you got and what mood he or she was in that day.

    My biggest beef with this class was the final exam. This was unproctored and open-everything. This sounds great, but in practice it meant a bunch of questions with tricky wording. Even that wouldn’t have been bad, but tricky questions were combined with poorly worded questions, making it hard to determine a question’s intent. The final basically devolved into a digital scavenger hunt. I don’t think it measured my knowledge of the material at all– just how well I could use Ctrl+F.

    Overall this was a decent course. The homework is interesting and can be time consuming, so possibly try to take it on it’s own.


    Semester:

    This is the type of course that I like to call an easy B but a hard A. If you’re coming in with some knowledge of Python and Linear Algebra, then I would say you can put it in 10 hours per week, get most of the knowledge out of the class, and walk away with a solid B. But if you’re really going for an A, then you’ll find the class taking up a lot more time. The grading structure is designed such that each homework assignment has an “Above and Beyond” section that counts for 10%, so to get anything higher than a 90, you’ll need to develop something beyond the basic requirements of the assignment. Personally I enjoyed this a lot, but it’s clear that a lot of others didn’t.

    This class is being redesigned over the Summer, so I don’t know if any of this will hold true in the Fall though. Overall I had a great time, but for the future I hope the instructors make the writeups shorter and the coding more challenging.

    Edit: Also definitely do the readings! They are absolutely fascinating! But don’t worry about fully understanding all of the math for each reading - you just need to get the gist of them.


    Semester:

    This is a very time consuming course contrary to what previous semester reviews say. Course material is taught clearly by the professors so understanding the material is not a challenge. You will want to review the material thoroughly as the final really gets into the details from lecture. There are a tremendous amount of interesting topics to learn even if you don’t take photographs often.

    You should expect to spend significant hours on the class if you want to master the assignments. I was not able to do all of the readings even spending 30 hours. If you only want to pass the class with a C or B then the 10 hour estimates are correct. First two weeks of class is only about 5 hours but it ramps up quickly.

    If you are aiming for an A the majority of your time will be spent on above and beyond (independent research) and writeups. Expect about 2-3 hours a week on lecture (take notes while watching!), 5 hours on coding for complex base parts of assignments, 3-5 hours on writeup for base assignment, and the remaining time on independent research (both coding and writeups). Also a variable amount of time on taking your own photographs depending on the project.

    The course will be undergoing a revision this fall so hopefully the workload comes down. Also a more flexible grading rubric (or more points allotted to overall quality of explanations) could further differentiate students who put effort into the assignments vs those who did not. I really enjoyed the class and highly recommend it.


    Semester:

    Interesting course but hard to absorb all the material in a meaningful way given the pace. There is an assignment due almost every week and the lectures take a long time to watch and understand. Very good notes on the lectures are needed to do well on the final which had a lot of ambiguity and almost trick questions.


    Semester:

    A really fun course. I personally learned a lot and thought the assignments were very enjoyable. The class was also really well organized (the TAs are very responsive both to questions and to feedback, I found very few issues in the assignments, grading wasn’t exceptionally fast but still a lot better than in the other class I was taking etc. ).

    Note that most of the assignments require taking your own pictures, which some people might find a waste of time if they’re only interested in the “computational” aspect of CP. Personally I thought that on the contrary learning about photography is obviously an essential part of mastering Computational Photography, which is also why I enjoyed the “Camera Obscura” homework that some people have criticized below.

    The “mandatory” part of the assignments is pretty easy (I recommend learning about advanced indexing in numpy, which makes most of the coding trivial), but it only counts for 90% of your grade on the assignment. The remaining 10% is “Above & Beyond”, which I find very motivating in terms of expanding your learning, and it can be pretty hard to get a full 100% on an assignment. Because that was what I aimed for, my workload was fairly high and the course was of Medium difficulty for me instead of Easy. If you just do the bare minimum, the course might qualify as Easy, but your odds of getting an A will be much lower.

    I haven’t taken CV but it is clear that there is some overlap, so if you’ve taken CV you will probably have an easier time in CP.


    Semester:

    Course is easy and fun.

    I took CV before so it may be slightly biased from me to think the course was fairly easy. Really, only the HDR assignment proved to be any challenge. Some of the assignments I did learn a bit from, including the previous mentioned HDR assignment, panoramas, and implementing my own Canny Edge detector.

    Buyer beware though, many of the assignments during the course I felt were useless and a waste of time (1 / 5 / 10). These assignments were almost like high school science experiments (set up a dark room in your house and take a picture! comment on a picture you took! run a piece of software which does everything for you to make a point cloud!). I’m glad they are taking the summer off to redo the course content. It has a lot of potential as long as it gets rid of the wasteful assignments.

    Also, pacing in the course is way too fast. Most assignments are a week only where two weeks is more of the OMSCS norm.


    Semester:

    In general, I really liked this course. The content was interesting, and the homework assignments were a lot of fun.

    Unfortunately, it was certainly not perfect. Each homework assignment focused on a different computation technique or aspect of photography, and the coding/interactive portions were a blast. However, along with each assignment, we had to complete a lengthy PowerPoint report. The report templates contained many relevant questions and topics to respond to, but there were also numerous “busy-work” questions as well, and we had to go into great detail for each question in order to get full points.

    On the topic of “full points, “ the grading policy was the worst part of the course. By completing all requirements in a single homework assignment, the max possible score was a 90/100. In order to get any portion of the last 10%, we had to go “above and beyond. “ The requirement for this was extremely subjective, so maybe this was a decent idea in theory, but it didn’t work very well in my experience with the class. In addition to this, the grading/late policy just generally had no flexibility, and it punished all students equally, regardless of whether they were truly lazy/incompetent or just busy with another work/life issue, which is likely more common with OMSCS students compared to on-campus students. Perhaps it was fair in a way - it just seemed overly harsh to me.

    ALL that being said, the course was a ton of fun, and it was a great way to brush up on Python/numpy skills. It was somewhat more time-consuming than I anticipated due to the long reports required for each assignment, but it was generally easy overall, in my opinion.

    If you’re at all interested in photography or image computation/manipulation, give this course a shot. Hopefully the grading policy will get an overhaul at some point, but it’s definitely manageable if you put in some extra effort. I imagine it will provide a good head start for the CV course, but I have not taken that… yet!


    Semester:

    The contents of this class are really fun and mind blowing. Assignments are organized and most recently seems to push students to write code and reports well. Be aware that this is not an easy class at all! Reviews seem to be outliers from past semesters. One thing that makes it hard is the pace the assignments are released / delivered throughout the course, every week. With the A&B concept it makes really hard to get 100%. I myself went A&B a few times only. Not easy to get an A and with a lot of work I got a B.


    Semester:

    Everybody else had described the class pretty well. So maybe, to add new info…

    If you intend to eventually take CP, but for now are choosing only one between CP and

    • CV:
    • Choose CV if you are already OK with Python (Numpy, OpenCV). That way, you could have more ideas for A&B and project components for CP
    • Choose CV first if you intend to pair CP with a heavier course, it might make understanding CP faster thus you can give more time on your other course.
    • Choose CP if you are not confident that you can make your Python (Numpy, OpenCV) and linear algebra skills at par for CV.
    • AI4R:
    • Choose CP if the reason why you are choosing between AI4R and CP is that you want some good introduction to OMSCS. AI4R could benefit from learnings in other courses.
    • Otherwise, just choose which interests you more at this moment.
    • ML4T:
    • Choose ML4T if you are not confident with your Python (Numpy) skills. It seems learning Numpy is part of ML4T’s syllabus.
    • Choose ML4T if you think you do not have much ideas to work with CP’s A&B activities.
    • Otherwise, just choose which interests you more at this moment.
    • DVA:
    • Heh… I don’t see an intersect…
    • Maybe choose depending on what classes you intend to take next?
    • Or as always, just choose which interests you more at this moment.

    Obviously these are just my views, your strategy may vary.


    Semester:

    This is not an easy A class anymore, I narrowly got an A. To prove my point, see grade distribution for pass semesters: https://omscentral. com/grades/6475, As are trending down. If you do the minimal in “guided” projects, and get everything right, you’ll get 90 on each project, you must do extra and produce good report to get > 90. 1 or 2 project require special camera/environment setup, if you are traveling/on the road, you might have a hard time with those. The final project is “unguided” and from the 3 peer reviews I did, they bite off more than they can chew and ended with no/poor result. Keep good notes on Udacity lectures, you’ll need them for the final exams. Overall, very good class, I fully enjoyed it.


    Semester:

    This class was a lot of fun and very interesting to me. I loved everything about it except the assignment to build a pinhole camera (I hated that assignment but others loved it, go figure). The workload is fairly light and easy despite getting to learn a lot of fascinating and useful photography and computer vision algorithms and implementing some yourself. You get to pick what you do for the final project which is really cool (just remember to scope it down so you have time to finish). The exam was open book. I loved that we got to review each others work and share our outputs on Piazza, very creative and fun way to learn more. The support on Piazza was fabulous and the coding assignments even came with unit tests! It’s been two years since I took this class and I still remember it very fondly and wish I could take more classes like it (I wish there were more classes like it)!


    Semester:

    As an amateur photographer, this was a cool class to take to get a better understanding of what computational photography is and its wide breadth of applications. The homeworks were in Python and were typically straightforward and easy to complete. The final project was a little more work, and I wish that there was more guidance from the TAs on expectations or sample final projects before turning the students loose. The open-book final exam was pretty easy as long as you took notes on the lectures throughout the class and could search them for the answers.


    Semester:

    Because I took this in the summer, the workload was much higher than you will see in other reviews. If you are not taking it in the summer, then ignore the amount of time I put into this class.

    Overall, I really liked this class. It allowed me to learn Python, and do some really cool stuff with photos and videos. The final exam is a little lame, but overall the assignments were really interesting, and the ability to choose your final project is also a great idea.


    Semester:

    A really interesting course that does a great job of helping you understand the coding behind an awful lot of what Photoshop does. I enjoyed the lectures and the projects quite a bit.


    Semester:

    Great lectures, both informative and entertaining. Active and helpful piazza participation by the TA team.

    Assignments and the final project are difficult because completing the requirements rewards a 90%. The last 10% must come from going “above and beyond”, which is entirely subjective and anywhere from easy to impossible depending on the grader.

    The final exam was brutal. On the positive side, two T-Square timed attempts with random (at least partially different) problem sets, only the highest grade counts. Unfortunately the multiple choice questions are very nit picking and almost all are a variation of “choose all correct answers” with a few ambiguous options that could be interpreted either way.

    Time is heavily weighted toward the final project and exam at the end of the semester (20+ hours per week). The lectures and assignments earlier in the term are closer to 5-10 hours per week.


    Semester:

    Very good course. Nice insights into photography and computation with photographs…

    Its not easy in Summer. The assignments are too much too handle. But having said that, they are very rewarding. Concept of “Above and Beyond” is awesome - make u push urself harder… The exam, however, is a bummer.. I got through in the second attempt - but they can replace exam with a live assignment that needs to be done in two hours….

    Don’t miss it if you enjoy photography.. Its simply awesome..


    Semester:

    Beware of earlier reviews from previous semesters that suggest this course is easy. The assignments have been retooled somewhat to include more complexity, providing more of a challenge. In addition, at least for this summer term, we were presented with the full workload from an academic term in the compressed summer timeframe, meaning most of the 11 assignments were given two at a time (and not in advance. ) In some cases, changes were still being made to assignments days before they were due.

    The course material itself is fascinating; I really enjoyed everything we learned about, and in retrospect would have preferred taking this course in a full term to really be able to dig into the material, instead of just finishing up assignment after assignment. The final project was especially rewarding. The exam was “check all that apply” multiple choice, appeared deliberately vague and misleading in places, and was a mess in my opinion.

    Administration of the class this summer was also troubling. The professor was entirely absent - he weighed in twice in Piazza and was otherwise absent, and his TAs appeared to have trouble getting guidance on simple questions that needed to be answered for assignments that had been changed (e. g. “Can we use X function, or is it in the group that is not allowed?”), leading to confusion and frustration on the part of students. The confusion, stupid fast workload and angst all made what should have been an enjoyable survey course one of my least favorite in the program as far as organizational issues went. That said, I greatly value everything I learned in that class, and will take a risk on taking CV with the same instructor – during a regular term! – solely because of what I learned there.


    Semester:

    If you have taken CV, this course is super easy. If you are an amazing photographer and are very creative, but new to programming, the course is easy. If you have not taken CV, fiddling with a DSLR for the first time and want to get an A [in other words, if you are like me], this course is moderately tough. All assignments except panorama and HDR require very simple python programming. If you are new to numpy, just brush up on some basic numpy tutorials. There are 11 assignments, 1 final project and 1 final exam. 9/11 assignments and the final project have 10 points for above and beyond and the course has absolute grading [no curves]. So, if you want an A then you should have 90+ in all assignments, final project and the exam. Modules 6, 7 and additional reading in module 8 cover very cool, useful and advanced topics and watching/reading them early will give good ideas for the final project. Also, please take notes while watching the lectures because without the notes, it is very difficult to get high marks in the final exam.


    Semester:

    First off I will note that the hours per week will likely be much less during a fall or spring semester. The summer semester I took had an accelerated first half of the course so we could have approximately the same amount of time to work on the final project as the fall/spring students. This means you don’t loose anything doing the summer semester, which is nice. I had not taken CV prior to this class, but apparently they compliment each other quite well. Major grade parts: 11 assignments (mini-projects), 1 final exam (which you can take twice), one final project.

    Overall I enjoyed the class, you cover a lot of material at a high level and then for the final project you can choose what you want to investigate more deeply. You will learn a lot of cool things you can do with photographs.


    Semester:

    I enjoyed this class, but it was an interesting experience. Firstly while I ranked the class Easy because it is pretty easy to do the base requirements of the class, I actually spent the same number of hours per week on this course in the summer terms as I have spent per week on ML and CCA during the full terms. This is partly a factor of the reduced term period, but also because I also spent a lot of extra hours on Above & Beyond work for the homeworks just because I got obsessed and was having fun. If you restrain your enthusiasm then you will reduce your workload by a large amount. On the other hand I think putting in the extra time will help you get more out of it because the base parts of all the homework assignments are pretty easy and simple.

    While the material and base assignments were pretty simple, this summer the assignments were being reworked for autograding which meant they were not released in advance, so it made dealing with summer travel more difficult as we had about 2 assignments due each week for the first two months of the course. The pace was sustainable but a little tiring due to my travel plans and not being able to work ahead. Be aware of that even though the course is ranked easy (in future semester perhaps this won’t be a problem).

    I had taken CV prior to this course, so in several areas the CP material was simpler and a less in-depth treatment of the material. However in the 6th and 7th lecture modules of the course they cover more specialized topics that were interesting and for the “8th” module we were given a collection of 6 academic papers to read. Reading those were my favorite section of the course and I highly recommend reading them early as they give some good ideas for final projects. Like the above & beyond work, you will get more from the class if you challenge yourself on the final project - that gives you a chance to go deep into an interesting area of your choice. Be creative.


    Semester:

    Normally I don’t take option classes too seriously, but I have to say I just loved this class. Almost every assignment was super interesting, challenging and rewarding. Arguably one of the best classes in OMSCS. I wish all the classes were this good.


    Semester:

    This is nice course but the pacing is very high during summer with 2 assignments per week. There is a lot of things to learn and the subject matter and techniques that you learn are fascinating. However, during summer 2016, the professor did not participate in the class discussions and it felt sometimes like we were on our own.


    Semester:

    A just about perfect course – interesting lectures, interesting projects, and clear expectations. It actually works better online than it would in a classroom. And what a fun topic – it is so refreshing to do computing math and actually see a result that looks like something! I strongly recommend this course. It’s an excellent summer option, but with the compressed schedule on many weeks there are two assignments due, making it more challenging to keep up. Assignments are Python (Numpy, Scipy, and CV2). If you aren’t a solid Python programmer, this course will help you as you look at your classmate’s examples (slicing arrays, set operations with np). And if you are a bad photographer, you will at least learn how to be bad in novel ways.


    Semester:

    Great course. Quite easy if you know Python and numpy. With that said, you learn some cool things and some practical skills. Take it with a hard class


    Semester:

    The course is full of fun. Learned a lot about photography and how photo editing software works. The assignments are not very difficult but encourage the creativity for more points. It is really a pleasure to do peer review and honestly I was amazed by many of my classmates’ work. TA and the professor were very active on Piazza, as well as lots of discussion and showcase of assignments and projects. I was pretty proud of myself when I was making my portfolio listing all the assignments and project done during the semester.


    Semester:

    Probably my favorite course in the program so far. This class is project driven and due to the “you only get 90% unless you go ‘above and beyond’ “ rule, some projects I undertook were fun, but total time sinks. You get much creative freedom in what you want to do in this class within the scope of the assignment (e. g. use “Use epsilon photography”)

    If you go the bare minimum route, this class has a light workload, and can be done with another class easily. I found when I had a packed life schedule, I could tie up a base project in a night or two and submit and move on.

    Peer reviews were scary at first, but ended up being very helpful and useful to build a class culture and learn new tricks.

    The one Piazza thread per project seems miserable at first as it can’t be loaded on mobile devices (especially when people are posting lots of images). However, it seemed to work significantly better than in my other classes. The professor wasn’t on Piazza much, but with so much TA involvement that never was an issue.

    This class covers many similar topics as Computer Vision, but takes a fun, more artistic approach.


    Semester:

    Assignments were interesting and final project allowed for bringing together what you learn. Enjoyed the projects. Final Exam is a huge pain of nit-picking multiple guess. That was the only frustration.


    Semester:

    Not a difficult course, though the final exam was brutal.


    Semester:

    Professor and TAs are fairly active on the forums. The lectures are very interesting but some of the projects felt only partially fleshed out. I did enjoy it as a photography enthusiast but some of it felt trivial.


    Semester:

    Overall, I highly recommend this class to anyone interested in computer vision. Fun and rewarding. Workload is just average, lectures are simple and concise, something missing some details needed for the assignments. Highly recommend to take this and Computer Vision after.


    Semester:

    This is an exemplary model for producing a very easy class. Where a bad easy class, like CS6250, has trivial assignments and artificial difficulty in the seemingly intentionally obfuscated quizzes, this class doesn’t try to make things more difficult than they need to be. The assignments are released in bulk early in the semester, so it is possible to work ahead; the content is accessible, and meeting the minimum requirements of the assignments is generally very straightforward (if you know Python and Numpy); the lectures are good - although there is a great deal of overlap with CS6476 (not exactly a bad thing). The nice part about this class is that while the assignments are very easy, that has given me a lot of time to spend with the assigned reading materials (compared to, say KBAI where I completely ignored the reading material in order to tackle all the graded exercises). Overall, this is an excellent class for a light summer term, or to pair with a more difficult class like ML or CCA.


    Semester:

    An easy course with simple assignments. Ideal to be paired with another class.


    Semester:

    This course didn’t require an immense amount of memorization or rote learning. Instead, it required a strong focus on the topics being presented and a time commitment to do the assignments. A lot of the time spent will be on assignments that go beyond just coding.


    Semester:

    This is a very fun course that is heavily project-based, and most of the projects are at least partially open-ended. The assignments are a mix between structured programming assignments that implement specific algorithms covered in the lectures and non-programming assignments that involve more of a focus on photography and using software to manipulate your photos. For most of the assignments completing the assignment as specified correctly only earns a 90% score (which is the cutoff for an A grade in this course) and you are on your own to figure out some way to go “above and beyond” to earn the last 10%. I really liked this aspect of the course because it let me pursue my own ideas and experiment with the material from the course on my own. There is also an open-ended final project that can be done individually or as a group, and a final exam. The final exam does a good job covering all of the material from the course and is open-notes, so if you understand the material in the course you should be able to get a good score on it. The overall workload of the course is flexible, especially if you try to go above and beyond for every assignment, and in general you will be rewarded for putting a lot of effort into the course even if your end results are not amazing.

    In terms of what you should know going into the course, general Python and numpy experience will be helpful since there is a fairly large amount of programming in the course, although for the most part the assignments mainly involve understanding how to apply the algorithms from the course rather than involving much complex code. Being familiar with the math used in the course is also very helpful (especially matrix operations which are heavily used) although the lectures do an excellent job of explaining things. Also having a high quality camera is not required, but having a camera that has manual settings for things like exposure time makes many of the photography-based significantly assignments easier (as does having a tripod for your camera). The lectures do not assume any previous knowledge about photography, digital images, or the algorithms used in the course, but those topics are covered in a lot of detail so there is a lot to learn from this course.

    Overall I would say if you are interested in photography and image manipulation and want to get some practical experience with both this is a great course.


    Semester:

    It is a super fun class especially if you have never played with images. I loved the different projects that we had to do during the course. You get to choose what you want to do in the final project. Finals were a little stressful because I had not read all the papers but in the end it is a manageable class with not a lot of workload.


    Semester:

    Great course for taking over the summer. Videos are very interesting and informative. The assignments really do teach you things that are very interesting and keep you engaged in the course. All assignments are released at the beginning of the semester, so you can move at your own pace and do not have to wait for them to be released.

    The exam is the only annoyance I had with this course. It was worded very specifically and could at times be very confusing.


    Semester:

    This class vacillated quite a bit for me in terms of workload and ease. Some weeks both were very low (2-3 hours) and then the next would be significantly higher (10+). Almost every project was fun and cool, though.

    My primary complaint is with the rubric for a baseline of 90 points for doing everything as requested and the remaining 10 points for going above and beyond. This is great in theory, but it’s a total black box and is wholly subjective. Sometimes I got a 100 and then the next week I’d get a 93 when I put in as much work if not more and there’s really no useful feedback there.

    By my calculations I’m getting an A but I feel like I had to shoot in the dark a lot.


    Semester:

    This class is easy but the lectures and assignments still take good chunk of time to complete, if you want to do good work.

    By far the most fun / creative OMSCS course. Highly recommended.

    I won’t repeat what’s covered but here’s a break down of all the assignments if you want to gauge how much time they’ll take. Front load as much as possible if you pair this course with another.

    Grade breakdown: Forum Participation: 5% Peer review: 5% Final Project: 10% Final Portfolio: 2. 5% Fina Exam : 15% (open notes unproctored, 26 MC/2. 5 hr, medium difficulty, you have 2 tries, only count highest score out of the two) Assignments: 62. 5%

    ps1 A Photograph is a Photography (warm up)

    ps2 Image I/O & Python Setup (get at least opencv 2. 4. 9+, instead of 2. 4. 8 because you might want to use SIFT in ps7). I suggest python2 and opencv 2. 4. 12, instead of python3 and opencv3. 0

    ps3 Epsilon Photography (photograph project + post processing)

    ps4 Gradients and Edges (light difficulty python programming)

    ps5 Camera Obscura (outdoor photograph project, start early on a sunny day)

    ps6 Blending (medium difficulty python programming)

    ps7 Feature Detection (medium difficulty python programming)

    ps8 Panoramas (medium difficulty python programming)

    ps9 HDR (light difficulty python programming)

    ps10 Photos of Space (photograph project + post processing)

    ps11 Video Textures (light difficulty python programming)

    Final Project Proposal (research and prototype before you decide, post your proposal early if you dont want to duplicate with others)

    Final Project + Report (you decide how much effort to put in based on your proposal)

    Final Portfolio (copy and paste)

    Here’s the TOC of the lectures to give you a high level overview of what you’ll learn in this class

    https://cs6475. wordpress. com/

    01-01 Introduction 01-02 What is Comp Photography 01-03 Dual Photography 01-04 Panorama 01-05 Why Study Comp. Photography- 02-01 Digital image 02-02 Point processes 02-03 Blending modes 02-04 Smoothing 02-05 Convolution and cross-correlation 02-06 Gradients 02-07 Edges 03-01 Cameras 03-02 Lenses 03-03 Exposure 03-04 Sensor 04-01 Fourier Transform 04-02 Blending 04-03 Pyramids 04-04 Cuts 04-05 Features 04-06 Feature Detection and Matching 05-01 Image Transformation 05-02 Image Morphing 05-03 Panorama 05-04 High Dynamic Range 05-05 Stereo 05-06 Photosynth 05-07 Extrinsic Camera Parameters (opt) 05-08 Intrinsic Camera Parameters (opt) 05-09 Calibrating Cameras (opt) 06-01 Video Processing 06-02 Video Textures 06-03 Video Stabilization 06-04 Panoramic Video Textures 07-01 Light Field 07-02 Projector-Camera Systems 07-03 Coded Photography 07-04 And Remember..


    Semester:

    Some cool assignments, some really light ones. Most take a good amount of time for the work, probably 5 - 10 hours plus a bit for write-ups.

    Very active Piazza.


    Semester:

    Very informative and relaxed course. I personally don’t like Python, but it’s manageable. Love the class!


    Semester:

    A lot of interesting material is presented in this class related to photography. There are 11-12 assignments which vary in difficultly, plus a take-home final, and a final free-form project. The class is python based and makes heavy use of OpenCV. I enjoyed the class.


    Semester:

    Really fun course. It’s a good survey of computational photography techniques, with a fair amount of information about the basics of photography. Not a lot of detail or rigor in describing and analyzing the algorithms; if you want that, CS 4495 (Computer Vision) is a better choice; from what I hear, it’s quite complementary to this course. The programming assignments are pretty easy if you’re comfortable with python and working with images. This class reminds me of 8803 (AI for Robotics): knowledgable, enthusiastic professor; very interesting topics; more about breadth than depth.


    Semester:

    Interesting class. You will need Python and OpenCV. This is a very nice introduction class to computer vision. The lectures are producted based on a lot of real projects, which will help you have a feel about the frontier of this area and let you know the basic concepts and algorithms in Computer Vision. One thing need to be mentioned is when I took computational photography in my college two years ago, it’s mainly about 3D remodel and curve fitting algorithms, but this class is more about computer vision. I enojoyed it anyway, highly recommend!


    Semester:

    Overall I enjoyed this class. There were some parts that had to much photograph and not enough programming. Some of the assignemnts are just photograph projects.


    Semester:

    I really enjoyed this class. Helps to have an understanding of Python and Numpy before taking the class, and many of the homework assignments were pretty easy - most of them used Python. The final test was somewhat challenging (many errors in it), but we were allowed to take it twice. The final tests was based on lecture material so take good notes.


    Semester:

    This was a fun course with a little bit different flavor than most CS courses. For the assignments there is rarely a correct answer, its more like essay questions only with visuals instead of words. The course organization and execution was excellent. The TA’s were very responsive and helpful. Professor Essa’s enthusiams for the subject really comes through in the lectures.


    Semester:

    This class is interesting. You get to play with several image processing techniques to create novel images. Some of the papers discussed in the class are truly remarkable. Its a good idea to give yourself time to understand and even implement them. Assignments are graded over a 90% scale.. its not too hard to get the 90%. But if you want 100% you need to make extra efforts in creating a nice image or exploring some new technique. The Summer semester was well paced, however I did not like having to turn things in twice a week a bit hard to manage during a full working schedule and trips.


    Semester:

    This is a very interesting class. The lectures are paced well, and the assignments are designed to let you focus on the material of the week without having to worry about platform difficulties. I found the organization of the class a little frustrating in that assignments were returned late (and in one case not given to us on time), and I noticed several instances of fairly obvious errata in the lectures. That said, I really learned a lot, and the lectures were very engaging. I also loved the flexibility of the final project. If you’ve got ideas that you’re interested in trying out, you will be rewarded here! I’d definitely recommend this class to anyone in the program. I’d suggest getting an old SLR off ebay if you don’t already have a digital camera with as many manual controls as possible. You’ll also want a tripod or some other method of holding your camera steady because one project in particular requires low-light photography.


    Semester:

    This is just a placeholder given the course so far. This class is only limite by how much you put in. My decent knowledge of Python was not sufficent, as most of the assignment involve numpy arrays and indexing. You will be embarrased by how much easier the assignments are if you have an excellent grasp of slicing arrays, indexing, re-shape and other shortcuts and functions that cut out loops similar to Matlab. Going from the lectures to the papers to implemnetation would have been extremely difficult without the given templates. The outputs to each assignment are super fun, and amazing. For a short course in the summer, I would suggest heavily frontloading the first 5 assignments, to leave time for the rest.


    Semester:

    This course is really interesting and open ended. Expect to put in whatever free time you have available to have fun with this course. I’m taking concurrently with CV and it helps get the most out of it


    Semester:

    Great course, with hands on projects and great programming support. No second guessing black box autograders on Udacity - TAs have done a great job with providing test harnesses on some of the assignment which guide you through implementation. Recommended


    Semester:

    Mileage could differ depends on where you’re coming from, but even as a summer course (2 assignments due a week), it is manageable. The framework of the course provided much of implementation so you could complete most processing algorithms even without readings beyond lectures, but to get over 90%, more research and creativity will be needed. Having a SLR camera (or good digital camera) could make the most of the course I think.


    Semester:

    (Updated review after the end of the first semester). This is a great course. Professor Essa is enthusiastic about the material and thorough in explaining it. The Piazza engagement from all instructors and the studnets has been very positive and helpful. The material is not tremendously challenging, and that comes from someone who struggles at times with linear algebra - this course focuses more on application of concepts rather than the mechanics behind the concepts themselves. The course started with an example that bordered on a magic trick, which definitely set the stage for it to be an engaging semester. The workload is moderate and consistent. There is ample room to go above and beyond on the projects if you have extra time, but you can usually squeak by on them without losing too much sleep. As this was the first semester, there were a few (expected) hiccups, but they were for the most part minor. I definitely recommend that you engage with the extra material presented on Piazza and elsewhere, as there is some truly fascinating stuff in there.


    Semester:

    This course is a model along with 8803 Robotics on how you can do a concept application based course. Professor Essa and the assignments do a great job teaching you how to apply the concepts of computational photography. The Ta’s have spent a good amount of time creating unit testing for the assignments that help provide quick feed back of your work. If you want the application side take this course, if you want the Math background take Computer Vision. Better yet take both.


    Semester:

    This course, alongside KBAI, is a model course for pacing, TA involvement, assignment design and flexibility. It is paced appropriately, with small, meaningful assignments each week that correlate directly to the lessons and can be accomplished during the week over over a weekend. Very – very – detailed explanations of assignment rubric, comments and the autograder, and judicious flexibility when there is an error in the assignment writeup, opting in favor of the students. Unlike other courses, I was not left in doubt about what was expected for each assignment. Essa and the current TA (Daniel Castro) are both obviously interested in the material and encourage active Piazza discussion. The assignments test core material, but allow significant flexibility in the kinds of images chosen and always offer a section for explaining (inevitable) failures. Nothing but positive things to say about this course. PeerFeedback (. gatech. edu) is used well. I am both learning a lot and enjoying the class, which is about as good as you can get.


    Semester:

    If you ever wondered how cameras work, how panaromas are created, how to recognize objects in an image, take this course. Prof Issa passionately explains the material, and provides helpful links to papers which study the materials in more details. Both he and TA Daniel Castro are available on Piazza daily. Assignments are very well explained, and reasonably difficult. Some of them are programming assignments using OpenCV+Python, some require you to take pictures and experiment with different camera parameters, and some combine both. At least in our class, forum participation is very active, with over 500 posts, sharing not only questions about the assignments but also results of our photographic creations and links to articles about latest advancements in computer vision and photography. Overall, great experience, and one of the best courses available.


    Semester:

    This is a very great and interesting class. It not only dives into the aspects of computational photography but you get a brief history on photography itself. The assignments are very interesting but can sometimes be challenging if you don’t have both python and mathematical backgrounds. The one downside of the course is the lack of office hours and instructor/TA availablility. Often times I would ask questions on Piazza without them even being reviewed. I struggled with the python a little bit and wish I had some direction. The course is overall really good, though.


    Semester:

    Throughout the course, the TAs and instructors tell you to ‘have fun’ with computational photography. I can say that some of the assignments are indeed fun. Do an internet search for ‘camera obscura’ to get an idea of what you might be doing. That said, there was a lot of work to be done in the Summer semester. Most weeks there are two (2) assignments due! Assignments usually consist of writing code and/or taking pictures and/or performing experimentation in addition to writing a report! So needless to say, you will be busy. Grading is somewhat subjective as well, since anything above 90% requires you to go ‘above and beyond’. Overall, this is a good class and I do strongly recommend it. Just know what you are getting into before signing up.


    Semester:

    My first OMS class, only 4 weeks to go. I have enjoyed it the whole way, learned a lot. Essa’s lectures are good, I take notes on them as I watch. Comes in handy on the assignments so I can go right back to the exact section where he talked about something. Since they want you to use your own pics, it invests me with more interest in the assignments. I think the assignments have been very clear, and really not that hard conceptually. Paying attention to what is asked and answered on piazza helps. This is the first time I ever coded in python, that cost me hours of learning the syntax. OpenCV has reasonable documentation, but it might not all apply to your version. So fun at 2am. It’s really opened my eyes to what is possible with computers. we are writing our own code, or using open source, and it has generally had impressive results. Class piazza tips and help has been invaluable, and people have seemed to hit the right balance between enough help to move on, but not give away too much. reading the suggested papers has provided the answers to how to progress more than once. This has been a great intro to the program, fun to be challenged again.


    Semester:

    I wish this course was a little more difficult. I haven’t had to watch the lectures at all the entire semester and I have a 100 in the course… AND this is the first time I’ve ever used Python. A little disheartened that this course isn’t challenging and I am starting to realize that I probably should have taken Computer Vision instead is I wanted more difficult programming exercises. Also very slow to get grades back. It’s April and we haven’t gotten grades back for assignments we completed in February.