Frequently Asked Questions
1. What do I need to deliver to pass?
See the Assignment page (longer answer: report, code, and final presentation).
2. How do I get feedback/hints along the way?
The teaching assistant will discuss various tips and tricks concerning the assignment during every lab session. Additionally, lecturers will also discuss relevant technical tips and tricks during the main lectures. So, make sure you are present at the labs and lectures (and ask questions if needed)!
Separately, you are asked to provide incremental progress reports on your work, once per week. You do this by contacting the teaching assistant. This includes submitting the current state of your report (PDF). That is, you develop the assignment and write the report in parallel, and send your progress-so-far to receive comments and feedback. This way, you don't need to allocate massive amounts of time at the end of the course to write your final report!
3. This is a lot of work! How to handle this?
You are allowed (actually advised) to work in groups of two, since, indeed, the assignment is quite heavyweight. Note that which partner(s) you find is entirely up to you to choose. Also note that a single grade will be given per group (so make sure you work smoothly together with your chosen team!)
4: How to find a group-mate for the assignment?
Post in Teams that you are searching for a team-mate.
5. Do I need to be at the final presentation?
Short answer: Yes, since you will be there to demo your work and also answer questions. Each group gets one presentation slot. Make sure that all persons in the group present during that slot (who present what is up to you to organize, as long as the split is balanced).
6. When is the deadline to hand in the code and report?
This is announced separately via online means (e.g. Blackboard, Teams, mail). Handing in:
- code: We strongly advise you to use GitHub. Not only this allows a one-click process of sending the code to the instructor and lecturers, but you can do the same to send in-between progress. Importantly, GitHub also neatly tracks all activity, i.e., who in the team did what and when. This is very important to prevent eventual questions and disagreements about the individual share of contributions in a team.
- final report: This should be sent by mail to the lecturers (PDF format only).
7. Do I have to be present at all the lectures and labs?
This is strongly advised. As noted above, hints/tips concerning both the theory and practice (assignment) will be given and discussed during the labs and lectures, so you'd better be there. In emergency cases, if you need to skip a lab or lecture, make sure your group-parter(s) will be there.
8. Which additional material do I need?
See the Readings page for a set of suggested books. As noted there, none of these is compulsory. The page includes also several key articles. You can successfully take (pass) the course if you are present at all labs and lectures, take notes of what is discussed there, ask questions, and study the slides and Additional material? carefully.
9. What do I need to know beforehand to take this course?
To be able to successfully complete this course (and have fun doing it), you should
- have a good background in linear algebra (matrix-vector operations, determinants, dot/cross products)
- have a minimal background in calculus (1st and 2nd order derivatives, gradients, finite differences)
- have a basic background in 2D computer graphics (transformations, rendering primitives)
- be really fluent in a mainstream programming language (C/C++, Java, Python). This is really important since the assignment is pretty programming-intensive!
10. What to do if I get stuck at an assignment step?
First of all, be calm:) This does happen as the assignment is pretty complex. Next, as usual in computer science, divide-and-conquer to find where the problem is and what causes it. Useful tips:
- study, then code: Do not jump into writing code just because you can. Make sure you read the corresponding slides/documents, and browse through the relevant code samples and demos. This can make you save a LOT of time by avoiding false starts and unnecessary experimentation.
- plan a design: Again, do not jump into coding. Plan a modular design of your entire system first (after having read the entire assignment). Decide which programming language, tools, and libraries you will be using. Then start coding.
- start simple: a few simple/small graphs. Don't attempt to process graphs of hundreds of nodes (or more) right away;
- do things one by one: for instance, implement/test a single feature (from simplest to more complicated) on a few small graphs, then on larger ones; check results; only then advance to the next feature;
- be minimalistic: A common error is to start building an over-complex user interface (GUI). This is not really needed for this assignment and costs a lot of time! A fully working system can be actually built using a single (simple) viewing window and key-based commands.
11. Which programming language/operating system should I use?
Entirely up to you. You can e.g. develop under Windows, Linux, or Mac OSX (as long as you deliver a working codebase at the end with clear building instructions).
Recommended development languages (in no particular order):
- Python: decent performance; comes with extensive libraries for statistics, math, machine learning, feature processing, charting. Bit less easy to interface with graphics toolkits.
- C/C++: high-performance; many 3D mesh libraries/tools/code samples are written natively in C/C++. Also easy for interfacing with OpenGL and/or other graphics toolkits. Bit more verbose than Python though.
- Java: somewhere between the above two.
Above all: Choose a programming language you are really comfortable with. Note that you can code various assignment parts in different languages if this helps you.
Note: Having said this, we (teaching assistant, lecturers) cannot provide feedback on your code and sample examples in any/all programming languages. For our side of the work, we will mostly use Python-based samples.
12. Should I complete one assignment step per week or...?
Ideally, yes. The steps are thought so as to be completable within a week. As such, the teaching assistant will focus his/her feedback sessions (during the labs) to be in line with the progress of the assignment. More on this below:
- if a step takes more than 2 weeks, then this is a serious warning sign!
- push hard from the very beginning; every day you save is a day you have more for the next steps
- we will not ask you to complete a certain step during a certain week. After all, this is a MSc course, and time management and planning is part of a MSc student's skills (to be assessed by this course). However, we will draw warning alarms when/if you are definitely lagging behind. Also, during the lab sessions, we will focus giving feedback on the topic of the week and not on providing feedback on assignment steps which were the focus of previous weeks.
13. So, this final presentation. What is a good example?
This is the first instance of this course, so we do not have a ready-made example for this. However, you can find good examples of final presentations for similar courses here.
Above all:
- be timely: Do work every week; don't let things get delayed so you have to do a lot in the last week(s);
- be critical: Test, test, test: After implementing every step, check your results against ground-truth e.g. by displaying computed values and comparing them with ground-truth known values for simple cases (shapes). Do not advance to the next step until the current one is not fully tested.
- be proactive: Send weekly intermediate versions of your report, highlighting (e.g. on the first intro page) what was changed/added, so the teaching assistant can provide you with feedback;
- write as you go: Once you completed a step, write the corresponding report piece (e.g. section) and send the intermediate report for feedback to the lecturer. This way, you receive timely feedback and calibration (i.e., how well you're doing), and you don't have to catch back massively as the end nears.
- have fun :) Data Visualization is surprising, challenging, interactive, and a great source of creativity!