Algorithms and Computability

2024/2025

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 examAlgorithms and Computability
Type of exam
Written or oral exam
ECTS5
Assessment7-point grading scale
Type of gradingInternal examination
Criteria of assessmentThe 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

Facts about the module

Danish titleAlgoritmer og beregnelighed
Module codeDSNSWFB621
Module typeCourse
Duration1 semester
SemesterSpring
ECTS5
Language of instructionDanish
Empty-place SchemeYes
Location of the lectureCampus Aalborg
Responsible for the module

Organisation

Study BoardStudy Board of Computer Science
DepartmentDepartment of Computer Science
FacultyThe Technical Faculty of IT and Design