TIN092 - Algorithms (7.5 points) (DIT600 @ GU) - Course Information
Back to front page.
Index
Announcements
Welcome to the course! Right now, make sure to
- join the Google Group, where all future announcements will be made (read announcements already made there),
- sync your calendar to our Google Calendar (calendar e-mail) (HTTP),
- read this BBC News article (which helps motivate this course),
- watch the therein-mentioned (15-minute) TED talk, and read this blog entry explaining the Amazon book incident,
- buy the course book,
- start reading [KT 1.1, 2.1, 2.2, 2.4].
- solve the quiz.
We also recommend you read this whole page once, so you know what you are in for.
The Sexiest Jobs!
Why study algorithms? Because it will have the sexiest jobs
in the next ten years, according to Hal Varian, Head honcho at Google economics.
I keep saying that the sexy job in the next 10 years will be statisticians, And I am not kidding.
Though at the fore, statisticians are only a small part of an army of experts using modern statistical techniques for data analysis.
Computing and numerical skills, experts say, matter far more than degrees. So the new data sleuths come from backgrounds like economics, computer science and mathematics.
Note: if you read carefully,
when he says "statistics" he really means "statistical algorithms". One of the authors of our textbook also features in this
New York Time story. In general, algorithms are increasing playing a very important role in technological developments
from web search, on-line advertisement and commerce to bioinformatics and biomedicine. Companies like Google, Microsoft and Yahoo! or
AstraZeneca and Applied Biosystems are looking for people with algorithmic skills.
Algorithms are also just great fun! Try out these challenges from
2008 year's Nordic Programming Championship
and see how the skills you learn here can help you in this year's championship!
Course goals
- To understand the notion of efficient algorithms and their importance.
- To learn paradigm techniques for solving computational problems.
- To apply them to various concrete examples of problems which lie at
the core of real-world computer science applications.
- To rigorously analyze the performance of algorithms, i.e., correctness and time complexity.
- To discuss the efficient use of data structures in complex algorithms.
- To see how new computational problems can be solved: how to analyze
problems, how to choose suitable algorithmic techniques, how to adapt and
combine them.
- To train how algorithms are explained, especially in written form.
- To know the limits of efficient computation.
This course is not:
- a course in programming (even though it includes a programming assignment),
- just a collection of a few standard "push button" packages for particular problems.
Prerequisites: (Suitable courses providing this knowledge depend on
the study programme.)
- Computer programming: some imperative programming language, including
recursion.
- Data structures, such as: lists, stacks, queues, arrays, graphs.
- Mathematics: elementary logic, sets and functions, rules of logarithms,
mathematical proofs, induction. Please read why math?
Evaluation
To pass the course, you have to pass the final written exam. Your grade will be based only on your score in the final written exam (max. 60):
- Chalmers: "3": 28, "4": 36, "5": 48.
- GU: "G": 28, "VG": 48.
However, you can add up to 12 bonus points to the
score on your written exam in October 2011 by solving weekly exercises and biweekly labs.
When determining to which extent you have obtained the course goals, we evaluate
- correctness and efficiency of your solution to exam problems, and
- quality of the presentation of said solution (which should be rigorous/logical/concrete/short/simple/to-the-point)
As we evaluate your exercise and lab submissions the same way, we urge you to participate in them, so you have a better impression of what is expected of you (and thus a better chance of passing the exam).
Observe that the bonus points cannot be used for
any other exam than the one directly after the course, in October
2011.
Exam aids: "anything on print is permitted, which includes textbook, slides, exercise session notes, student's personal
notes, old exams, and so on"
Sample exams
Cheating
Short version: Don't.
Long version:
Sadly, some serious remarks must be added here:
Submitting others' work in your own name is cheating.
This applies to both theoretical solutions and
program code, partially or completely copied, exactly copied or modified.
Observe carefully any specific rules that may have been given for the
respective course requirements (e.g., programming assignments, written
exam).
You are also responsible for not giving others the opportunity
to copy from your work.
Cheating can lead to severe consequences, in
very bad cases even suspension from studies. Do not try it.
We are here to help.
If you have
major difficulties fulfilling the course requirements, the proper way
is to approach the teachers and ask for advice.
A useful link that clarifies the difference between collaboration and cheating.
Course book:
Jon Kleinberg, Eva Tardos: Algorithm Design.
Pearson/Addison-Wesley 2006, ISBN 0-321-29535-8.
The "dream textbook", written by two of the foremost researchers and
teachers. It should be available at Cremona for ~650 SEK, but it may be
cheaper at other places. Note that the plan is to also use this book in the
Advanced Algorithms course in period 2.
Course model
Generally, each week n of the course has a major theme. The themes are
- Preliminaries
- Greedy algorithms
- Dynamic Programming
- Divide and Conquer
- Flow Networks
- TBA
The pattern of supervised sessions and deadlines for week n is as follows.
- Tuesday:
- 08:00-09:45 Lecture, room HC2
- 11:00-12:00 Consultation Hour (for topic of week n-1 (if n > 1))
- Thursday:
- 11:59 Submission deadline, mailbox on 6th floor in Linsen (for exercises from week n-1 (if n > 1)))
- 13:15-15:00 Lecture, room HC2
- 15:15-17:00 Exercise session, room HC2 (for topic of week n)
(Note: There is only one exercise session per week. If that turns out to be too little, we will add more. If this is an issue for you, contact the course administrator.)
(Note-note: We have added an extra exercise session for theme 2 and 3. If participation in exercise sessions stays strong, these extra exercise sessions per week will also be added for the remaining theme weeks.)
Here, there should only be one active theme in lectures and exercise sessions during each week n. You will then also be working on the theme from week n-1 ("last week" if week n is the current week) in the exercises. (we did our best to minimise the number of concurrent course themes, given our constraints and resources)
This illustration might be helpful:
The course language is English. According to Chalmers central regulations for
master's programmes, everything must be written in English
(with exceptions in well justified cases only).
Lectures:
Here the lecturer teaches ideas and techniques related to the theme of the week the lecture occurs in.
Exercise sessions:
For discussing solutions to selected exercises from the book and, if time allows, solution sketches for last week's exercises, and hints for current exercises.
Consultation hours:
Here, an exercise session supervisor (Willard or Leonid) is available for drop-in questions involving the weekly exercises. If many students show up, more time can be added, or separate meetings can be booked for those that require further assistance. Please respect the lunch break starting at 12:00.
Lab sessions
These time slots show time you should be spending on your labs. The sessions are unsupervised, so where you do them is up to you. If you need assistance, contact the lab graders (Filippo or Azam) in a timely fashion.
Deliverables
There are two kinds of deliverables in this course, neither of which are mandatory.
- Exercises (every week (6 in total)), graded on a scale from 0 to 10.
- Labs (every second week (3 in total)), graded on a scale from 0 to 2.
At the end of the course, the bonus points in the exam are calculated from these grades as follows:
BonusPoints = 0.1 * (sum of grades from exercises) + sum of grades from labs
Thus, a maximum of 12 bonus points can be obtained; 6 from solving exercises (1 for each exercise), 6 from solving labs (2 for each lab).
When grading your submissions, we evaluate
- correctness and efficiency of your solution, and
- quality of the presentation of said solution (which should be rigorous/logical/concrete/short/simple/to-the-point)
As we evaluate your exam the same way, we urge you to participate in solving these exercises and labs, so you have a better impression of what is expected of you (and thus a better chance of passing the exam).
Exercise sets
You will find the exercise sets embedded in the schedule.
Validity
For a submission to be valid, it must be
- Written, legibly, by hand, by you, with a non-red marker, on the space given on an A4 printout of the entire exercise set.
- Print the PDF file as-is (no manipulating content, resizing,
rotating, ...). Two-sided printouts encouraged. No writing on
the back of one-sided printouts, or deep into margins
(top/bottom/sides). If your printout is more than 1 page,
they must be stapled, or securely clipped,
together, in the top-left corner only (no
plastic-pocketed, rolled, folded, taped, or glued submissions); we take no
responsibility for lost pages.
- The solutions must be individual; discussing problems with
each other is allowed, but each student must work and write his own
solution. Failure to comply with this constitues
as cheating, for all parties
involved.
- Marked with your name, personnummer, and e-mail address, in the indicated space on the printout.
- Delivered, physically, in the marked mailbox, located on the 6th floor of
Linsen in the EDIT building, or to Devdatt in the Thursday lecture, before the deadline.
- Deadline: Thursdays at 13:15.
Failure to comply with any of these requirements invalidates your submission, in part or in full.
Grading
We expect you to submit complete solutions. Include enough
detail to convince a suspicious (but rational) stranger who has
completed this course that your solution is accurate.
Any non-trivial claim must be supported with a rigorous justification/proof (science settles for nothing less).
- You are free to cite/reference material from the course book / slides / course notes.
- You must cite/reference if you quote material
from elsewhere, or if parts of your solution are strongly
based on material from elsewhere. Failure to do so
constitutes as plagiarism, which we treat the same as
cheating.
We also expect the solutions to be presented in a clear
manner. Make sure the solution is coherent, easy to read, and not
confusing / misleading.
Obtainable points for a solution which is not complete or clear is
lowered depending on the severity of the
omission / lack-of-clarity / confusion / writing (and can be as low as 0).
A useful rule-of-thumb: Would you publish your solution, in a
research paper, a book, or in an algorithms community mailing list?
Guidelines & other useful information
We recommend writing a rough sketch of a solution on scratch
paper, and then write (only) the complete solution on the exercise
sheet.
The general strategy for solving an exercise is the following (this is the recipe for using science to solve real problems!).
- Formalize abstract details of the problem (only as needed to solve the problem),
- Solve the (formalized) problem using theory (some learned in the course),
- Prove that the solution is correct (your solution solves the problem).
Example: If asked for an algorithm which sorts a list of integers in time O(n log n), you must
- Introduce notation for a list of integers,
- Give the pseudocode for an algorithm which sorts the list (using the notation you introduced),
- Prove that your algorithm sorts the list, and has running time no worse than O(n log n).
We will write feedback on your submission with a red marker. Submit a copy
of your submission if you want to keep an intact original.
Labs
See the labs for directions on how to solve and submit them.
People
Please note:
- Best way to contact us directly is through e-mail.
- If you wish to meet us, please make an appointment first (we are busy people).
- When e-mailing us: Prefix the subject line with "[TIN092]" (so our e-mail server can filter incoming e-mail to avoid chaos). We reserve the right to ignore e-mails which are not prefixed with [TIN092] (they might be filtered as spam in any case). Expect >24 hour response time.
Instructor:
You obtain a person's e-mail address by appending "@chalmers.se" after the content of the "Contact" entry.
Assistants:
You obtain a person's e-mail address by appending "@chalmers.se" after the content of the "Contact" entry.
- Willard Rafnsson
- Role: course administration, exercise sessions, exercise grading
- Office: 5471
- Contact: willard.rafnsson
- Leonid Molokov
- Role: exercise sessions, exercise grading
- Office: 6476
- Contact: molokov
- Bassel Mannaa
- Role: exercise grading
- Office: 6103
- Contact: bassel
- Filippo Del Tedesco
- Role: lab grading
- Office: 5472
- Contact: tedesco
- Muhamad Azam Sheikh
- Role: lab grading
- Office: 6453
- Contact: azams
Student Representatives:
You obtain a person's e-mail address by appending "@gmail.com" after the content of the "Contact" entry.
- Rowan Katekar
- Kalle Vedin
General information about course evaluation at Chalmers can be found
here.
Schedule
Available here:
For convenience, we give last year's full course plan below. It will change (ours is an ever-evolving course). Weekly reading should be fixed 1 week in advance, and session topics pinned 3 working days in advance.
The time slots are fixed, however. Deviations in time slots, or in the general course plan, will be announced through the Google Group mailing list associated with the course.
- Preliminaries
Reading: [KT 1.1, 2.1, 2.2, 2.4]
Quiz: here
- 2011-08-30 (Tuesday), 08:00-09:45. Lecture.
- 2011-09-01 (Thursday), 13:15-15:00. Lecture.
- Topics: basics of algorithm analysis, running time, asymptotics
- Location: HC2
- 2011-09-01 (Thursday), 15:15-17:00. Exercise session.
- Greedy algorithms
Reading: [KT 4.1-4.8]
- 2011-09-06 (Tuesday), 08:00-09:45. Lecture.
- Topics: Greedy [KT 4.1-4.4] (review priority queues [KT 2.5] and Dijkstra's algorithm [KT 4.4]),
- Location: HC2
- 2011-09-08 (Thursday), 13:15-15:00. Lecture.
- 2011-09-08 (Thursday), 15:15-17:00. Exercise session.
- Dynamic programming
Reading: [KT 6.1-6.9]
- 2011-09-13 (Tuesday), 08:00-09:45. Lecture.
- 2011-09-15 (Thursday), 13:15-15:00. Lecture.
- Topics: RNA secondary structure [KT 6.5],
sequence alignment [KT 6.6], all pairs shortest paths [KT 6.8, 6.9].
- Location: VA
- 2011-09-15 (Thursday), 15:15-17:00. Exercise session.
- Divide-and-Conquer
Reading: [KT 5.1 - 5.5]
- 2011-09-20 (Tuesday), 08:00-09:45. Lecture.
- 2011-09-22 (Thursday), 13:15-15:00. Lecture.
- Topics: Closest points and selection via Divide and Conquer.
- Location: HA1
- 2011-09-22 (Thursday), 15:15-17:00. Exercise session.
- Network Flow
Reading: [KT 7.1 - 7.3, 7.5, 7.10, 7.12]
- 2011-09-27 (Tuesday), 08:00-09:45. Lecture.
- 2011-09-29 (Thursday), 10:00-11:45. Exercise session.
- Network Flow & NP-completeness
Reading: [KT 8.1 - 8.10]
- 2011-10-04 (Tuesday), 08:00-09:45. Lecture.
- 2011-10-06 (Thursday), 13:15-15:00. Lecture.
- 2011-10-06 (Thursday), 15:15-17:00. Exercise session.
- Wrap up and Review
Reading: Old Exams
- 2011-10-11 (Tuesday), 08:00-09:45. Lecture.
- 2011-10-13 (Thursday), 13:15-15:00. Lecture.
- Topics: Algorithms and Machine Learning, a guest lecture by Vinay Jethava
- Location: VA
- 2011-10-13 (Thursday), 15:15-17:00. Exercise session.
- Topics: Old Exams
- Location: EB
(Slides with kind permission of Kevin Wayne @ Princeton, and Chandra Chekuri @ U. of Illinois (Urbana-Champaign).)