(Created 2009-08-11.)
 ALGORITHMS, DATA STRUCTURES AND COMPLEXITY EDAF05

Higher education credits: 5. Grading scale: TH. Level: G2 (First level). Language of instruction: The course will be given in Swedish. EDAF05 overlap following cours/es: EDA027, EDA690, EDA027, EDA690, EDA027 och EDA690. Compulsory for: D2. Optional for: E3, F3, Pi4. Course coordinator: Studierektor, studierektor_tekn@cs.lth.se, Inst f datavetenskap. Prerequisites: A first course in object-oriented programming. Completed the compulsory course items from EDAA01 or passed the written exam in this course. Assessment: Written exam. The final grade of the course is based on the result of the written exam. For a passing grade of the course the compulsory course items must be completed. Parts: 2. Home page: http://www.cs.lth.se/Education/LTH/.

Aim
Algorithms and data structures are fundamental in computer science. Data structures are used to model reality and the choice of data structures affects the efficiency of algorithms. One aim with this course is to give the students knowledge of advanced data structures for some of the abstract models included in previous courses and also of a number of data structures used to represent further models, such as graphs. Another aim is to give improved knowledge of algorithms, particularily graph algorithms. The course will also give the students knowledge of techniques for analysing algorithms with resspect to performance.

Knowledge and understanding
For a passing grade the student must

• be able to describe data structures which can be used to represtent graphs

• be able to describe a number of different problem solving strategies, such as divide and conquer and greedy algorithms

• master a number of techniques for analysing algorithm performance

• be familiar with concepts such as lower bounds, complexity classes and undecidable problems

Skills and abilities
For a passing grade the student must

• from a given problem, be able to identify algorithms and data structures which can be used to implement a solution

• be able to implement the data structures included in the course in an object-oriented language

• be able to apply different problem solving strategies on new problems

• be able to apply techniques for analysing the time complexity of algorithms and be able to use the notations for asymptotic time complexity

Judgement and approach
For a passing grade the student must

• be able to evaluate proposed solutions and data representations for given problems with respect to suitability and efficiency

• understand that there are problems for which it is unknown whether or not efficient algorithms exist

Contents
Graphs and graph algorithms. Data structures for graphs. Problem solving strategies such as divide and conquer, greedy algorithms and brute force. Techniques for analysing the time complexity of algorithms. Introduction to the complexity classes P and NP, computability and the Church-Turing thesis.

Literature
Kleinberg J, Tardos E: Algorithm Design. Addison-Wesley 2005.
ISBN: 0321295358

Parts

Code: 0109. Name: Written Examination.
Higher education credits: 3. Grading scale: TH. Assessment: The final grade of the course is based on the result of the written exam.

Code: 0209. Name: Compulsory Course Items.
Higher education credits: 2. Grading scale: UG. Assessment: For a passing grade, the compulsory course items must be completed. Contents: Laboratory work and a hand-in assignment.