DD2446 Complexity Theory Autumn 2013Follow these shortcut links to go directly to news, short overview of course, schedule, lecturer, prerequisites, learning outcomes, examination, course material, or problem set info (with a description of the peer evaluation grading process and a list of the actual psets). This webpage provides all documentation and information about the course, so there is no separate course memo ("kursPM") PDF file.
News
Short Overview of CourseComputers are everywhere today—at work, in our cars, in our living rooms, and in our pockets—and have changed the world beyond our wildest imagination. Yet these marvellous devices are, at the core, amazingly simple and stupid: all they can do is to mechanically shuffle zeros and ones around. What is the true potential of such automated computational devices? And what are the limits of what can be done by mechanical calculations? Complexity theory gives these deep and fascinating philosophical questions a crisp mathematical meaning. A computational problem is any task that is in principle amenable to being solved by a computer—i.e., it can be solved by mechanical application of mathematical steps. Complexity theory focuses on classifying computational problems according to their inherent difficulty, and on relating those classes of problems to each other. The goal is to understand the power of computers but also—and above all—the limitations of what problems can be solved by them, or more broadly by any type of automated computational process. A problem is regarded as inherently difficult if its solution requires unreasonably large resources regardless of which approach is used to solve it (i.e., no matter which algorithm is employed). Complexity theory formalizes this notion by introducing mathematical models of computation and quantifying the amount of resources needed to solve the problems, such as running time, memory usage, parallelism, communication, et cetera. This course will give an introduction to computational complexity theory, survey some of the major research results, and present some of the open problems that are the focus of current research. While the intention is to give a fairly broad coverage, there will probably be a slight bias towards areas where the Theory Group at KTH has made significant contributions to the state of the art.
ScheduleThis course was given in period 1 in the autumn of 2013. We had a total of 17 lectures, with 23 lectures per week. In accordance with the academic quarter tradition at KTH, 10 am in the schedule below actually means 10:15 am et cetera. See the list of rooms at KTH to locate the different lecture rooms. Room 4523, which is not on this list, is a seminar room on the 5th floor at Lindstedtsvägen 5. Chapter numbers in the course planning below refer to the AroraBarak textbook. The general idea behind the course was to first go over (most of) the first 9 chapters in the textbook, getting a fairly good general overview of computational complexity theory, and then spend some time on a selection of more "advanced" topics such as proof complexity, communication complexity, property testing, and hardness of approximation (where the textbook was followed less closely or not at all).
LecturerThe lecturer was Jakob Nordström, who was responsible for all aspects of the course. Per Austrin gave two guest lectures on the PCP theorem and hardness of approximation. We are using Piazza for teacherstudent interaction on the course. Thus, questions should not be emailed to the instructor, but instead posted on Piazza (where you can send private notes to the instructor if needed, and also ask questions anonymously). All course participants should be signed up at Piazza to receive all announcements related to the course (but note that this does not replace the official course registration at KTH).
PrerequisitesThe course is open to anyone, but the main target audience are Master's students in computer science. The course is also suitable for PhD students in mathematics or computer science who have not previously taken a dedicated course on computational complexity theory. You need to have taken DD1352 Algorithms, Data Structures, and Complexity or DD2352 Algorithms and Complexity (or the older version DD2354 Algorithms and Complexity mentioned in the Study Handbook), or corresponding courses at other universities, and should feel comfortable with that material. There are no additional formal prerequisites on top of what is stated in the Study Handbook, but you will need mathematical maturity and a willingness to learn new stuff. The lectures will be given in English.
As of the autumn term 2013, students at KTH CSC should register via the
"personal menu" ("personliga menyn" in Swedish), which was previously
known as "my pages" ("mina sidor").
This replaces the registration previously done via the
Although the formal prerequisites are very limited, it should be noted that this is a somewhat demanding course (but hopefully even more fun!).
Formal Learning OutcomesAfter having completed the course, the student should be able to:
ExaminationTo pass the course, students will be required to solve and hand in solutions to four problem sets. The scores on the problem sets are what will mainly determine the final grades on the course (except as explained below). For each each problem set, each student will also have to evaluate the solutions of a fellow student (but not assign grades), who will be randomly chosen by the instructor. This part of the examination will only be pass/fail as discussed in the description of the grading process below. The grades are determined according to the following principles:
Note that solutions to the problem sets should be handed in strictly by the deadlines. Being able to work towards a deadline and deliver the best possible result within a given time frame (rather than a 100% polished product that arrives too late) is an important skill, and is something that you will have the opportunity to practise during the course. Having said that, exceptional circumstances, such as severe illness, can be accepted as an excuse for late problem set solutions. It should be emphasized, however, that lack of time due to work outside the university or due to many parallel courses is not considered as a legitimate reason for handing in problem set solutions late. The KTH CSC code of honour applies to all aspects of this course including the problem sets. There are also some additional rules specific to (the problem sets of) this course. These rules are available below on this webpage and are stated on each problem set
Course MaterialTextbook(s)We will mostly be following the book
While AroraBarak is the recommended textbook, we comment briefly on some other alternatives below. Another recent textbook on computational complexity theory is
Research ArticlesDuring the second half of the course, some lectures will be partly based on research articles. Below follows a list of links to these articles. The intention is that the lectures will cover the material in the papers that we need, so students are not required to read these papers—the references are provided for completeness and for students interested in further reading. However, for students interested in learning more, it should be noted that many of the proofs given in class are actually not those found in the papers, and more recent survey papers of an area are likely to be better reads than the original research articles. Please do not hesitate to contact the instructor if you are interested in specific references for some specific area.
Note that if you are not at KTH, or if you are connected to the KTH
network via wireless, then you might not be able to access the PDF
files with the articles linked to below.
One way around this problem is to search for the titles of the papers
in your favourite search engine—this should hopefully help you find
free versions of the same papers on the webpages of the
authors or similar.
Another, often better, solution to this problem
(courtesy of
Lars Arvestad)
is to invoke the KTH library proxy server directly in the address field of
the browser. You do this by adding
Problem Sets
General Information
Solutions to the
problems sets should be submitted as PDF files by email to
When you are working on the problem sets, discussions of ideas in groups of two are allowed, but you should always write down your own solution individually and understand all aspects of it fully. You should also acknowledge any collaboration. For each problem set, state at the beginning if you have been collaborating and with whom. You can (and should) ask the instructor if anything about the problem sets is unclear. Make sure to post private messages to the instructor on Piazza in that case, so that your questions do not accidentally give away unintended information about the problems to the other students. If there is some issue needing clarification regarding some problem, the instructor will make a public post on Piazza. Some of the problems are "classic" and hence it might be easy to find solutions on the Internet, in textbooks or in research papers. It is not allowed to use such material in any way unless explicitly stated otherwise. Anything said during the lectures on in the lecture notes, or which can be found in chapters of AroraBarak covered in the course, should be fair game, though, unless you are specifically asked to show something that we claimed without proof in class. It is hard to pin down 100% formal rules on what all this means—when in doubt, ask the lecturer.
Grading ProcessThe description below is currently not entirely uptodate, as we are experimenting a bit with different setups as the course progresses. In particular, the order of steps 2 and 3 have been reversed. There is also a system of bonus point to encourage active discussions. As always, the most uptodate information can be found on Piazza. We will try out a new approach this year which will involved some peer evaluation (and hopefully tons of interaction among the students). All final grading will be done by the instructor, however. Here is how it is intended to work.
Step 1: Work on the Problem SetStudents solve the problem set, on their own or collaborating in pairs, and write down their own solutions and submit as a PDF file by email before the deadline. During this phase no discussion of problem set solutions is allowed other than with the collaborating partner (but asking the instructor for clarifications is of course OK).
Step 2: Discussion of SolutionsAs soon as the instructor gives the green light, discussions on solutions to the problems can start on Piazza. During this phase all students on the course should work together to find solutions (possibly many different ones) to all problems on the problem set. Here a maximum of collaboration is allowed and encouraged. There is no incentive not to collaborate here since nothing that happens after this point can lower the grade of any student. The instructor will not take part too actively in the exchange of comments, but will try to nudge the discussions in the right direction if need be.
Step 3: Peer EvaluationWithin a day or two (the exact timing will be discussed with the course participants), the instructor will distribute the solutions randomly to the students as PDF files by email. Each student should print the set of solutions received, evaluate all the solutions, and write down comments. Continued discussions on Piazza are encouraged during this phase. Here is how the solutions should be evaluated:
The solutions together with the evaluation comments should be should be put in the lecturer's mailbox on the 4th floor at Osquars backe 2 or handed to the lecturer before beginning of class on the day of the peer evaluation deadline.
Step 4: Final GradingFinally, the lecturer will grade all problem set solutions and assign scores, and will at the same time evaluate the evaluations. Each student will receive both the instructor grading comments and the peer evaluation. The problem set will be regarded as a pass if it reaches the threshold for E as specified in the problem set. The problem set evaluation will be regarded as a pass if at least 50% of the solutions marked as "correct" or "incorrect" are properly identified as such (with relevant explanations), and if no solution is marked "unknown" unless there is a convincing explanation as to why this solution was not possible to understand. In particular, the lecturer might look at the discussions at Piazza to check if the student has made a good faith effort to get help to figure out what is going on in the solution. Motivation for this SetupThere are a number of reasons why this approach will be used. It is intended to:
This new approach will be thoroughly evaluated during (and certainly after) the course, and might be modified based on the conclusions from such evaluations. If you have any views or comments already now, feel free to contact the instructor on Piazza or by email.
List of Problem Sets
