Skip to main content
Department of Information Technology

AD1 Help & FAQ

Where Can I Get Help?

Before contacting anyone for help, please check whether your question has an answer in the FAQ list below. If not:

  • If you have a question about the lecture material or course organisation, then contact the main instructor at a lecture for an immediate answer. You can also contact him by email with a brief description of the issue and suggested time(s) for a meeting that is normally to be held at his office, as you may be given an appointment. Only in suitable cases will a full answer be given by email, as email is sometimes not an effective teaching medium.
  • If you have a question about the lecture material, assignments, or infrastructure, then contact your assistant at a lab or lesson for an immediate answer. You can also contact him by email with a brief description of the issue and suggested time(s) for a meeting that is normally to be held at his office, as you may be given an appointment. Only in suitable cases will a full answer be given by email, as email is sometimes not an effective teaching medium.
  • If you have trouble solving an assignment, then you should preferably go to the lab or lesson of the assignment in order to get hints on how to proceed.

Email contact on confidential issues must be made from your Uppsala University address or set the Reply-To field to that address, and will be ignored otherwise as we then have no way to ascertain your identity.

Frequently Asked Questions (FAQ) and Answers

  1. Generalities
    1. Will I get rich after passing this course? Some of the wealthiest people on the planet made their fortunes from clever algorithms and data structures, witness Sergey Brin and Larry Page, inventors of the Google web search engine (valued at many gazillions of sek). Some of the wealthiest people in Sweden took (a course like) AD1 at Uppsala University and went on to develop software needing clever algorithms and data structures, witness some of the founders of OnGame (acquired by bwin for about 4.5 billion sek), MySQL (acquired by Sun Microsystems for about 6.3 billion sek), and Skype (acquired by eBay for at least 17 billion sek). There is no limit to the need for efficient algorithms and data structures.
  2. Textbooks and Lectures & Slides
    1. Which textbook, if any, should I buy? The CLRS textbook is a timeless classic and serves as a reference to many professional programmers. Its breadth of coverage, wealth of detail, and crisp precision are daunting to some students, who may prefer a more pedagogical approach in another textbook, but many students grow to like these features. Besides, the CLRS textbook is also used in the AD2 and AD3 courses. However, many passing students reported having bought no textbook at all, relying solely on the lecture slides and internet resources.
    2. Why are the lecture slides not closer to the CLRS textbook? Why does the CLRS textbook have algorithms in imperative-programming style when the paradigm of the slides is functional programming? These are pedagogical choices that not everyone may agree with: Multiple viewpoints on the same material help a lot of students. Also see FAQ 5.1 below.
    3. Where are model solutions to the exercises of the CLRS textbook? They are in a manual made available by the publisher only to instructors. We are not allowed to publish any excerpts thereof in any form.
    4. What pages of the CLRS textbook should I read? See the reading instructions in the table at Lectures & Slides. It is also highly recommended to play extensively with the applets listed there.
    5. Why all this theory in the course? Why is it at the beginning of the course? Is it useful? In order to discuss in a scientific way the relative merits of alternative algorithms or data structures for a given purpose, we need an analytic way of predicting their performance, rather than experimentally and inaccurately measuring it in milliseconds or bytes. The (few!) notions seen are among the most celebrated of computing science and will transcend the rest of your studies as well as any programmer career.
    6. Why are there not more exercises solved by the main instructor in the lectures? Like every course, AD1 has a required theoretical content, as well as a fixed budget for manpower (no instructor is full-time on the course): The balance of theory and practice in the lectures simply follows from these data and is not a sign of our bad will. On the contrary, given more resources, we would love to offer additional practical problem solving sessions. Also keep in mind that there are labs and lessons for the assignments, as well as supplemental instruction for discussing the theory and doing more examples.
    7. Is this course only about searching & sorting? Are we not going to design any new algorithms? Why do we learn these old algorithms when we can just re-use them from libraries? This is an introductory course and there are decades of classic results to cover, and learn from, before being able to require students to design new algorithms in advanced courses.
    8. Where can I get / buy print-outs of the lecture slides? Nowhere. Print them out yourself: Not everyone has the same size preferences, and some of you may prefer to annotate electronically the PDF versions of the slides, so we would not know how many copies of each size to print in advance.
  3. Assignments, Labs, Lessons, & SI
    1. How do I best use my time, and yours, in order to solve an assignment? Prepare your solution as far as possible until the corresponding lab, in order to make best use of that reserved timespan of personal attention by the assistants. This is much more effective than going to the lab, printing out the assignment (which was published at least a week before the lab and does not require any material taught in the meantime), and not meeting all the difficulties until the end of the two lab hours.
    2. I am lost! Why do the assignment instructions not tell us how to solve the questions? Stating only what output has to be computed from the inputs is a pedagogical choice. In most real-life engineering problems you are not asked to solve a problem using method m on page p of textbook t. Try and come to the lab or lesson of the assignment in order to get hints on how to proceed.
    3. Why are the assignment questions not in sync with the lecture contents? See the previous question.
    4. Why can I not do the assignments alone? The course is not allocated enough manpower to grade up to two solutions by each student to each assignment. Besides, pair programming is usually a very rewarding experience, whether you learn from or teach to the other student: choose a partner whose skills are not interchangeable with yours.
    5. Why do I need to spend so much time on the assignments when they are only worth one credit point? Any time spent on the assignments reduces the amount of time needed to prepare for the exam, so it pays off. Besides, the scheduled events (totalling 36 hours), assignment solving, and exam preparation form a whole, on which you are supposed to spend some 135 hours total.
  4. Exam
    1. Where are model answers to the questions of previous exams? Nowhere. The main instructor does not believe in making such answers available (on-line or otherwise) without discussing solution processes or alternative correct answers in person at the same time, which is one of the purposes of the final lecture. This is the pedagogical approach taken also for the assignments, where we have lessons for this purpose.
    2. Will there be programming questions in the exam? Will exam questions be similar to assignments questions? Programming skills are mostly tested in the assignments. Any programs for exam questions will be a handful lines long, but programming experience from the assignments ought to be useful for such exam questions. Analytic skills tested in the assignments also ought to be useful for exam questions.
    3. Will we have multiple-choice exam questions? A well-crafted multiple-choice question may avoid common pitfalls by offering plausible solutions of which only one can be reached, so that one knows that something must have gone wrong if one reaches a non-offered solution, whereas the guessing student would not notice this. The main instructor has the right for any form of examination, including oral exams, and decides in due time as he sees fit.
    4. What will the exam questions be? What should I focus on when preparing the exam? Try and come to the lectures, as the main instructor makes it very clear there what the most important elements of the course material are. The lecture slides are a good indication of this. Also see FAQ 2.4 above.
    5. I nearly passed the exam. What can I do to avoid taking the next exam? No make-up opportunities will be created for near-passes, as the main instructor evaluates those cases very carefully before announcing the exam results.
  5. Software & Hardware
    1. Why do the PK and AD1 courses use functional programming as teaching medium? Does anyone use it in the real world? Functional programming (FP) is a lot easier to learn than imperative programming (IP) and object-oriented programming (OOP), as there are much fewer and easier concepts to master before being able to write elegant and verifiably correct programs. FP is thus very suitable as an introduction to computing. FP is not a panacea, though, as programming itself is difficult. Also, FP is not just a pedagogical and intellectual toy, witness its many applications in the real world.
    2. How do I install Moscow ML or Emacs on my own computer? Follow the link at Software & Hardware.
  6. Help & FAQ, Evaluation & Feedback, and Resources
    1. Why do I not get a reply to my emailed query? On working days and hours, you can normally expect a reply within a few hours. If it was a confidential question, check whether you have sent it from your Uppsala University address or set the Reply-To field to that address.
    2. Are you interested in additional links to great internet resources? Yes, absolutely. Send us an email with links, and we will add the best ones to the course web-pages.
  7. Course Manager and Credit Points
    1. Why can I not log in to the course manager or submit assignment solutions for this course? The course manager is not automatically creating from Uppdok a course account for every student that is formally registered to the course this academic year. Such account creation is done by the instructor after the first, mandatory lecture, based on the roll-call performed there and based on the Uppdok list of confirmed registered students. So if you do not have a course-manager account for this course, it is because you have missed the first, mandatory lecture.
    2. I passed the exam or assignments, but why are my credit points not reported yet to Uppdok? The course manager is not automatically reporting awarded credit points to Uppdok, but there is a manual process involved in that. So be patient and do not worry until at least a month after the official end of the study period.
    3. I am an AD1 / PK2 / PK3 student from a previous year and have not earned all credit points yet. How can I complete the course this year? Use the following decision table:
Exam credits? SML credits? C credits? Action
yes no yes / no Sign up under the old course code, and see * below.
no yes no Sign up under the new course code 1DL210, and see * below.
no no yes / no Sign up under the new course code 1DL210, and see * below.
no yes yes Exams for the new course code 1DL210 count as re-exams for the old courses: Sign up for the exam.
yes yes no Contact the main instructor before the new course 1DL210 starts or at its first lecture.
* Do this before the new course 1DL210 starts or at its first lecture, which is mandatory by the way. Towards the SML assignment credit points, you will have to satisfy the requirements of the current year, on the assignments and under the rules of the current year, no matter what amount of assignments you passed in a previous year or whether any passed assignments resemble the ones of the current year. As of 2008, there are no more C assignment credit points.

Updated  2008-04-16 14:30:45 by Pierre Flener.