Skip to main content
What types of page to search?

Alternatively use our A-Z index.

Module Details

The information contained in this module specification was correct at the time of publication but may be subject to change, either during the session because of unforeseen circumstances, or following review of the module at the end of the session. Queries about the module should be directed to the member of staff with responsibility for the module.
Title Complexity of Algorithms
Code COMP202
Coordinator Dr NS Mande
Computer Science
Nikhil.Mande@liverpool.ac.uk
Year CATS Level Semester CATS Value
Session 2024-25 Level Two Second Semester 15

Aims

To demonstrate how the study of algorithmics has been applied in a number of different domains. To introduce formal concepts of measures of complexity and algorithms analysis. To introduce fundamental methods in data structures and algorithms design. To make students aware of computationally hard problems and possible ways of coping with them.


Learning Outcomes

(LO1) At the conclusion of the module students should have an appreciation of the diversity of computational fields to which algorithmics has made significant contributions.

(LO2) At the conclusion of the module students should  have fluency in using basic data structures (queues, stacks, trees, graphs, etc) in conjunction with classical algorithmic problems (searching, sorting, graph algorithms, security issues) and be aware of basic number theory applications, etc.

(LO3) At the conclusion of the module students should  be familiar with formal theories providing evidence that many important computational problems are inherently intractable, e.g., NP-completeness.


Syllabus

 

1) 2 weeks: Introduction to algorithms, big-Oh notation, divide-and-conquer algorithms, master method
2) 1 week: linked lists, binary search trees, heaps, heapsort
3) 1 week: sorting algorithms (counting inversions, quick sort, radix sort, counting sort)
4) 2 weeks: greedy algorithms, dynamic programming, memoisation, Fibonacci numbers
5) 1 week: graph algorithms, shortest paths
6) 1 week: maximum flows (Ford Fulkerson algorithm), bipartite matching
7) 1 week: NP-completeness (complexity classes P and NP, search-to-decision reductions, example of vertex-cover to clique reduction)
8) 1 week: number-theoretic algorithms (Euclid’s GCD, extended Euclid’s algorithm, RSA)
9) 1 week: Possible advanced topics: Further complexity theory (BPP, circuits, query and communication complexity), fun with algorithms (hardness of speedrunning video games, complexity of algorithms for Rubik’s cube and related puzzles, etc.), randomised and approximation algorithms.


Teaching and Learning Strategies

Teaching Method 1 - Lecture
Description:
Teaching Method 2 - Tutorial
Description:

Standard on-campus delivery
Teaching Method 1 - Lecture
Description: Mix of on-campus/on-line synchronous/asynchronous sessions
Teaching Method 2 - Tutorial
Description: On-campus synchronous sessions


Teaching Schedule

  Lectures Seminars Tutorials Lab Practicals Fieldwork Placement Other TOTAL
Study Hours 36

    12

    48
Timetable (if known)              
Private Study 102
TOTAL HOURS 150

Assessment

EXAM Duration Timing
(Semester)
% of
final
mark
Resit/resubmission
opportunity
Penalty for late
submission
Notes
(202) Written Exam There is a resit opportunity: Resit exam will replace failed CA components, the Learning Outcomes will be covered in the resit exam. Standard UoL penalty applies for late submiss  120    70       
CONTINUOUS Duration Timing
(Semester)
% of
final
mark
Resit/resubmission
opportunity
Penalty for late
submission
Notes
(202.1) Programming Assignment There is a resit opportunity: Resit exam will replace failed CA components, the Learning Outcomes will be covered in the resit exam. Standard UoL penalty applies for l    15       
(202.2) Class Test There is a resit opportunity: Resit exam will replace failed CA components, the Learning Outcomes will be covered in the resit exam. Standard UoL penalty applies for late submissi    15       

Recommended Texts

Reading lists are managed at readinglists.liverpool.ac.uk. Click here to access the reading lists for this module.