Frequently Asked Questions
Where is the schedule?
Since there are a couple of programmes taking this course, there have been some scheduling clashes in the past mixed with 8a.m. Monday lectures which are not popular. So we typically we take a Doodle Poll of class availability in the first lectures and then schedule around that i.e. to make sure as many people as possible are available for the lectures and labs. Please send us an email if you need more information about this.
Do I need to buy a book for the course?
This is up to you. The entry level content that you need for the course is provided as part of the lecture series in the course. Most of the extended content that you need in relation to deeper and more specific 3D graphics programming aspects is freely available online and involves some basic internet searching. A book may be useful if you would like a further framework for investigating basic and intermediate concepts. You are advised to wait until after the first few lectures before you decide to purchase a book. If you do decide to purchase a book, I think a good option is "Real-time Rendering" by Akenine-Möller et al. (at least in terms of content, but see the reviews) and/or "Interactive Computer Graphics", Addison-Wesley by Angel and Shreiner.
Do I need to be really good at C++ or mathematics to take this course?
No, but it does help to be aware that both are integral to real-time computer graphics and animation programming. In relation to C++, we will not be using any advanced features of the language and skeleton code will be provided. Typically, a more difficult concept to master for students new to programming is the creation of a project (setting paths, adding libraries, etc) and use of an IDE (such as Visual Studio, Codewarrior, etc).
In relation to mathematics, good knowledge of linear algebra, matrices, etc is helpful. But computer graphics is also a good practical/applied way through which your math skills can be improved e.g. if you get some math wrong, your image will not be properly displayed: see here.
I want to get a head start on the course - what should I do?
Have a look at the lab assignment's page. Many lab assignments have already been posted. In parallel, look at the previous blogs and think of a project that you find interesting and that fits the project instructions. Most likely, you will use a game engine such as Unity (but you don't have to, and some interesting past projects have been coded, for example, in C++ using OpenGL). So download that now and start to become familiarised with it. Come up with a project idea and mention it to the course team.
How do I set up the first skeleton demo for different operating systems?
Will there be lab sessions for the lab assignments? Are they mandatory?
A number of lab sessions will be organised for the lab assignments. However, at these sessions you will not need to submit anything. Instead, the lab sessions are a chance for you to work in groups and gain assistance from the course team. Your lab assignments will be submitted in a portfolio fashion i.e. there is a single submission of all lab materials to Canvas near the end of the course.
Therefore, lab sessions are not mandatory, although you are strongly advised to attend them in order to ask questions and obtain the support of the course team.
How many people can be in a lab group?
It is recommends that labs are conducted by between one and two individuals. Only one individual needs to submit the lab materials on behalf of the others, but should make sure to make the contact details clear on the submission (including official KTH email addresses).
How many people can be in a project group?
Projects can be conducted by groups of between one and three individuals. Only one individual needs to submit the project materials on behalf of the others, but should make sure to make the contact details of all group members clear on the submission (including official KTH email addresses).
Be aware that as the number of people in the project increases, so too does the burden of responsibility on the group to make it clear in the report the specific roles and contributions of each team member. The recommended group size for projects in this course is two.
We want a project group with four people - what do we do?
In this case, split the project into two, two-person projects. If the project does not split well, then it is probably a bad idea for a larger group than two to try to do it in the first place.
Can I build a game?
It's not a good idea, due to scope. We suggest that you choose an computer graphics and interaction algorithm/method and implement/evaluate it. Game are typically built upon a multitude of these methods and also involve a lot of other content i.e. assets that need to be thought about.
What is the lab/project submission deadline this year?
Mid-May, 2020 approx. We will agree on a date that suits the class (to ensure as few clashes as possible with other course deadlines) at an early DH2323 lecture.
How strict are the lab and project submission deadlines?
While recommended deadlines will be posted for the labs and project, these are soft in the sense that you may submit afterwards. However, it is strongly recommended that you submit on or before these deadlines if you need your official course grades quickly.
Lab assignments and projects submitted outside of the course deadlines can take significantly longer to be processed into official grades.
If you are an international student or require grades to be processed quickly for any other reason (CSN, etc), it is up to you to make sure to submit according to the recommended deadlines and also to inform the course team.
Where and how do I submit completed assignments?
Please upload your files to the appropriate assignment section on Canvas. A link to VT20 Canvas will be posted nearer the submission date.
I cannot log into Canvas. Does that mean I am not registered for the course?
If you cannot log into Canvas when you click on the link to the left, then you probably need to be registered to it. In this case, send the EECS Service Center an email with subject line "DH2323 need registration/Canvas access" from your official KTH email address.
Is there an exam on the course? When does it occur?
No: the exam for this course has been replaced with a project, although an exam is still an option for students from previous course iterations that contained an exam. For those of you studying abroad, etc during exam periods, you therefore do not need to worry about attending an exam. Project and lab assignment submission can also be done remotely (through the Canvas system), assuming a fairly good internet connection.
What do I need to do to pass the course?
In short, you must complete all of the three lab assignments and you must also do a project. For a minimum level pass grade, the project can be quite small in scope. For example, in previous years, students have chosen to extend one of the labs (suggestions are provided in the lab documentation) or to do a small 3D modelling/animation project of their choice.
What do I need to do to get a high grade in the course?
First of all, you need to complete all three of the lab assignments. Your overall course grade is then based on the quality and sophistication of the project. An 'A' grade for the project is not easy to achieve, and requires excellence in terms of the implementation, presentation and demonstration. Grade 'A' projects should also include a level of technical sophistication that involves programming (i.e. not solely 3D modelling). If you are strongly motivated towards an 'A' grade, you are advised to create a project specification and submit it to the course team through Canvas for feedback.
There may also be the opportunity to take part in a user study during the course in order to gain the potential for a grade boost (which although small can sometimes mean the difference between two grades).
Do you have any hints for getting an 'A' grade in the course?
Yes, four hints:
(1) Read the project instructions document. Read it again, carefully. Read it again just before you submit your project.
(2) Start the project early and get early and consistent, frequent feedback on it from the course team. Setting up a blog (and populating it) is a very good way to start this process. Look at the example blogs here, here and here.
(3) Use a game engine to support technical project work. If you are implementation focused, ideally your project will be a technical implementation in C++ (e.g. library) that plugs into a game engine as a dll. Unity 5 Personal Edition, for example, supports this. Do not just implement something high-level using a game engine. If this is confusing, the simple explanation is to imagine that you are creating a piece of technical middleware that, for example, could be distributed via the Unity asset store. It may be an advanced lighting or animation algorithm, etc.
(4) Ideally, choose an academic research paper as a starting point. For computer scientists, this might be more implementation oriented. For HCI students, there are examples related to user studies for perceptual graphics. Virtual design and other groups have many suitable options too (real-time architecture walk throughs and so on). Please talk to the course team with regards to your specific discipline and interests. Reading research papers also provides ideas for creating your project report: Here is an example from the course.
I took an earlier iteration of this course a few years ago, but I'm only ready to submit now. What should I do?
Please send an email to: firstname.lastname@example.org and you will receive further information. Please do not email links and, especially, files directly to the above email address. They will not be tracked.
I took an earlier iteration of this course many years ago, but I'm only considering completing it now. What should I do?
Please contact: email@example.com to discuss further.
More questions and answers will be added to this page as the course progresses.