Content, progress and pedagogy of the
module
Disclaimer.
This is an English translation of the module. In case of
discrepancy between the translation and the Danish version, the
Danish version of the module is valid.
Learning objectives
Knowledge
The student must gain knowledge of the following theories and
methods:
- algorithm design techniques such as share-and-rule, greedy
algorithms, dynamic programming, backtracking, branch-and-bound
algorithms, randomized algorithms and linear programming
- techniques in advanced algorithm analysis such as amortized
analysis, analysis of expected complexity and experiments with
algorithms
- examples of core algorithms and data structures for solving a
number of problems from different areas of computer science such as
algorithms for external memory, multi-threaded algorithms, search
in text, advanced graph algorithms and geometric calculations
- computability theory: Turing machines; Church-Turing thesis;
decidable and recognizable languages; examples of undecidable
problems, including the proofs via reduction
- complexity theory: deterministic and nondeterministic Turing
machines and their time complexity; time complexity classes;
polynomial reductions; NP completeness; examples of NP-complete
problems
Skills
- explain the principles behind the most important algorithm
design and analysis techniques
- select and apply algorithm design and analysis techniques for a
given problem
- recognize a range of problems from different areas of computer
science and select the most appropriate algorithms and data
structures to solve them
- be able to account accurately and using the subject's
terminology and notation for important results within calculation
complexity and for how and to what extent these results can be used
to classify calculation problems, including complexity analysis and
applications of reductions
- be able to categorize computational problems as
dedidable/undecidable and argue that concrete problems are NP-hard
by using the notion of reduction
SKILL OBJECTIVE APPLICABLE TO STUDENTS STUDYING AT CANDIDATE
LEVEL, BUT FOLLOWING TEACHING AT BACHELOR LEVEL:
understand and apply the principles of proof techniques covered
in the course with a focus on mathematical precision of the
arguments.
Competences
- be able to apply concepts and techniques within computational
complexity to analysis of computational problems
- when facing a computer science problem, be able to develop and
analyze efficient algorithms and data structures for solving the
problem
Type of instruction
The teaching is organized in accordance with the general
teaching methods for the education, cf. section
17.
Extent and expected workload
The student is expected to spend 30 hours per ECTS, which for
this activity means 150 hours.
Exam
Exams
Name of exam | Algorithms and Computability |
Type of exam | Written or oral exam |
ECTS | 5 |
Assessment | 7-point grading scale |
Type of grading | Internal examination |
Criteria of assessment | The criteria of assessment are stated in the Examination
Policies and Procedures |
Additional information
Contact: Study Board for Computer Science via cs-sn@cs.aau.dk or
9940 8854