Course Syllabus
COMP 526: Efficient Algorithms, Fall 2024
Basic Information
- Instructor: Will Rosenbaum
- Contact Email: w.rosenbaum@liverpool.ac.uk
- Office: George Holt 2.16B
- Office Hours: by appointment only.
Official Course Description
From the Official Course Specification:
The main aim of this module is to lay a strong foundation for research in the field of algorithms, with a clear emphasis on algorithmic problems and solutions that haven proven useful in applications (e.g., in bioinformatics, search engines, networks, and data compression). This is done through the rigorous study of selected algorithmic techniques, an in-depth, systematic, and critical discussion of their respective benefits and weaknesses (by means of mathematical and empirical analysis), and by gaining hands-on experience on solving new algorithmic challenges residing on the border of the theory of abstract algorithms and engineering of applied algorithmic solutions.
Learning Outcomes and Skills
- (LO1) Be able to recognize standard algorithmic problems, apply and judge known solutions based on comprehensive and in-depth understanding of their properties and limitations.
- (LO2) Be able to systematically compare the goals and approaches in algorithm theory and algorithm engineering.
- (LO3) Be able to critically assess algorithmic solutions from the research literature and to adapt these solutions to a range of application scenarios.
- (LO4) Be able to design algorithmic solutions for real-world applications in small-scale programming projects.
- (LO5) Be able to critically communicate algorithmic problems and solutions (both within and outside of the algorithms/computer science community).
- (S1) Critical thinking and problem solving - Critical analysis
- (S2) Critical thinking and problem solving - Problem identification
- (S3) Critical thinking and problem solving - Evaluation
- (S4) Critical thinking and problem solving - Creative thinking
- (S5) Numeracy/computational skills - Problem solving
Expected Background
The material in this module is largely self-contained, and there are no strict formal prerequisites. Students are expected to have experience with computer programming in a high-level imperative programming language such as Python, JAVA, or C/C++. In particular, students should be comfortable with variable assignment, control flow (if
-else
statements, for
and while
loops, and functions), as well as basic data structures such as arrays and linked lists. Students should have familiarity with basic Boolean logic used in programming (statements involving and
, or
, and not
). Finally, students are expected to have some familiarity with finite (discrete) mathematics used in computer science such as sets and functions, and the the algebra of sets (union, intersection, and complement).
Programming assignments must be submitted in Python, so students without prior experience with Python will be expected to learn sufficient Python to complete the assignments. The programming assignments will not require significant knowledge of any Python-specific features.
Topics Covered
The module material is organized into 10 units:
- Course Introduction and Logical Prerequisites (Proof Techniques)
- Machines and Models
- Fundamental Data Structures
- Efficient Sorting
- String Matching
- Data Compression
- Error-Correcting Codes
- Parallel Algorithms
- Text Indexing
- Bonus Material (E.g., Sublinear Algorithms)
The final exam will cover material from units 1 through 9.
Course Structure and Policies
Meetings
The main module content will be disseminated through lectures and tutorials. The lectures will meet twice weekly for roughly 90 minutes per meeting:
- Tuesdays, 11:00–13:00, Engineering Building, Hele-Shaw Lecture Theatre
- Thursday, 15:00–17:00, Thompson Yates Building, Lecture Theatre, Room 104
Lectures will be a mixture of traditional lecture format (i.e., the lecturer presenting information), together with interactive discussion mediated through the Poll Everywhere software. To use Poll Everywhere, students should bring a smartphone, tablet, or notebook computer. Class participation will be recorded and counted toward the final grade in the module, so please remember to arrive to class prepared to engage.
Students will meet once weekly for a 60 minute demonstration/recitation session. These sessions will meet in smaller groups, and will focus on collaborative problem solving. Each session, you will be provided with a set of questions related to the lecture material. Your goal is to work together to solve the problems. Attendance will not be recorded in these sessions, nor will work be collected. However, these sessions will be your best opportunity for interactive help for solving the types of problems you can expect to see on the final exam, so attendance is strongly recommended (if not obligatory). The demonstrations are scheduled as follows:
- Section 01: Tuesday 15:00–16:00
- Section 02: Tuesday 16:00–17:00
- Section 03: Monday 9:00–10:00
- Section 04: Monday 10:00–11:00
Please refer to your individual timetable and attend the session to which you are assigned.
Communication Technology
This module will employ the following communication technologies:
- This Website is the official course website. It will contain all course materials and assignment descriptions.
- The COMP526 Canvas Site will be used solely for assignment submission and feedback, though some basic module information will also be duplicated there.
- Poll Everywhere will be used for participation in lectures.
- CampusWire will be used of asynchronous discussion outside of class. This should be your first point of contact with questions about the module materials, content, and assignments.
- Email and individual meetings. If you have individual questions or concerns, you can send me an email. Limited time for individual meetings by appointment will be available if necessary.
Coursework & Evaluation
The student evaluation for the module will be determined as follows:
- Continuous Evaluation: 40%
- 15% Quizzes (weekly, administered through Canvas)
- 5% Class Participation (in-class participation through Poll Everywhere)
- 10% Programming Assignment 1 (due Week 07)
- 10% Programming Assignment 2 (due Week 11)
- Final Exam: 60%
Late Assignment Submission
To be consistent with departmental standards, you may submit programming assignments up to 5 days late, with a deduction of 5% of the total grade per day late (rounded up). For example, if your assignment is submitted 1 minute past the deadline, the deduction will be 5%; if it is 1 day and 1 minute late, the deduction will be 10%, etc. Submissions more than 5 days past the assignment deadline will not be accepted, except in exceptional circumstances as determined by the Student Experience Team (see Attendance, Accommodations, and Illness below).
Collaboration
You are encouraged to collaborate with your peers in revision and studying the module material. However, all submitted coursework should the product of your own work. In particular:
- Collaboration on quizzes and the final exam is strictly forbidden.
- You may discuss programming assignments with your peers on a conceptual level, but you should not share or view other people’s code (whether there are enrolled in the module or not). You must take full responsibility for all code you submit.
Attendance, Accommodations, and Illness
You are expected to regularly attend and actively participate in lectures and tutorials. Participation in lectures will be done (and recorded) through the Poll Everywhere software.
While regular participation is expected, unforeseen circumstances or pre-existing scheduling conflicts may preclude you from attending a few lectures. Thus, you may miss up to 3 lectures without penalty or prior notice to the instructor. Further absences/non-participation will result in deduction from the participation portion of your grade (5%), unless you have an accommodation for an extenuating circumstance (EC) arranged through the Student Experience Team (csstudy@liverpool.ac.uk).
All lectures will be recorded and made publicly available soon after the lecture. These recordings are intended, in part, to help mitigate the effects of unexpected absences from lecture.
For the safety and respect of others, please do not attend lecture or tutorials if you are seriously ill with a contagious illness such as flu or Covid.
If illness or another extenuating circumstance prevents you from submitting an assignment or otherwise make progress towards your coursework, please be in touch with the Student Experience Team (csstudy@liverpool.ac.uk) to arrange for accommodations. The instructor cannot deviate from the stated course policies without direction from the Student Experience Team.
Academic Integrity
You are expected to uphold the University of Liverpool’s Academic Integrity Policy. In particular, it is expected that all assignments submitted for the module is your work and yours alone. In particular:
- Quizzes and the final exam are to be completed without the aid of any outside resources.
- Programming assignments should be written entirely by yourself. Any external resources used (e.g., code from documentation, or found online) must be clearly indicated in the comments, together with a reference (i.e., link) to the external material. Generative AI tools such as ChatGPT should not be used for any substantial part of your submission, and any code written with the aid of Generative AI tools should be clearly marked in the comments.
Any cases of suspected academic dishonesty will be reported to the university, and consequences will be determined in accordance with university policy.
Community Standards
It is expected that all community members (students and staff) will treat each other respectfully. By design, the classroom is a space in which to explore intellectually challenging subjects. In order to facilitate good-faith discussions, it is vital that we maintain a foundation of mutual trust and respect.
We are a group of individuals with distinct backgrounds, experiences, and outlooks. Thus some conflict is unavoidable. Nonetheless, it expected that community members handle conflict politely. Insulting or derogatory comments will not be tolerated.
For a single guiding moral principle, I suggest Bill and Ted’s rule: Be excellent to each other!
Party on, dudes!