This is an archived syllabus from 2013-2014
COMP26120 Algorithms and Imperative Programming syllabus 2013-2014
COMP26120 Algorithms and Imperative Programming
Level 2
Credits: 20
Enrolled students: 183
Course leader: David Rydeheard
Additional staff: view all staff
Requisites
- Pre-Requisite (Compulsory): COMP16121
- Pre-Requisite (Compulsory): COMP16212
Additional requirements
Alternative equivalent knowledge of Java accepted.
Assessment methods
- 50% Written exam
- 50% Practical skills assessment
Semester | Event | Location | Day | Time | Group |
---|---|---|---|---|---|
Sem 1 | Lecture | 1.1 | Fri | 14:00 - 14:00 | - |
Sem 1 w2+ | Lab | G23 | Thu | 09:00 - 09:00 | I |
Sem 1 w2+ | Lab | G23 | Tue | 10:00 - 10:00 | G |
Sem 1 w2+ | Lab | LF31 | Thu | 11:00 - 11:00 | H |
Sem 2 | Lab | LF31 | Fri | 09:00 - 09:00 | S |
Sem 2 | Lab | G23 | Mon | 10:00 - 10:00 | Q |
Sem 2 | Lab | G23 | Wed | 10:00 - 10:00 | R |
Sem 2 | Lecture | 1.1 | Mon | 15:00 - 15:00 | - |
- Computer Languages
- Programming and Algorithms
Overview
This is a two-semester practical introduction to algorithms and data structures, concentrating on devising and using algorithms, including algorithm design and performance issues as well as 'algorithmic literacy' - knowing what algorithms are available and how and when to use them.
To reflect the emphasis on practical issues, there are two practical (laboratory) hours to each lectured hour. Lectures serve to motivate the subject, orient students, reflect on practical exercises and impart some basic information. A range of practical applications of algorithms will also be presented in the lectures. Other information resources will be important, including a set textbook, which will provide essential support.
The course-unit starts with a 5-week primer on the C programming language, enabling students to become competent programmers in this language as well as in Java (and, possibly, in other languages). This teaching is supported by an on-line C course and extensive laboratory exercises.
There is a follow-up course unit on Advanced Algorithms in the Third Year. This presents the foundational areas of the subject, including (1) measures of algorithmic performance and the classification of computational tasks by the performance of algorithms, (2) formulating and presenting correctness arguments, as well as (3) a range of advanced algorithms, their structure and applications.
Aims
To make best use of available learning time by encouraging active learning and by transmitting information in the most effective ways.
To give students a genuine experience of C.
To make students aware of the importance of algorithmic concerns in real-life Computer Science situations.
To emphasise practical concerns, rather than mathematical analysis.
To become confident with a range of data structures and algorithms and able to apply them in realistic tasks.
Syllabus
C for Java programmers (up to reading week)
Algorithms - what they are and how to express them (in pseudocode and selected programming languages: Java and C).
Practical experience in devising, assessing and using algorithms:
- considerable practice in algorithmic problem solving for realistic problems
- examples from a wide range of application areas
- finding appropriate algorithms and data-structures
- inventing appropriate algorithms and data-structures
Practical experience in 'algorithmic literacy' - knowing how to use the extensive literature on the subject, recognising what algorithms to use in applications and assessing their utility.
A range of basic data structures: arrays, lists, trees (including ordered and balanced trees and heaps), and various kinds of graphs. Representations of basic data structures in programming languages.
A range of basic algorithms: searching and sorting algorithms, tree traversal and manipulation algorithms, some basic graph algorithms. Other algorithmic areas will be explored through practical examples.
An introduction to algorithmic performance: space and time requirements, worst-case, average-case and best case estimates. Practical experience and techniques for measuring and predicting performance: Counting operations.
Scaling and some common rates of growth.
Reasoning about algorithms - experience in informally reasoning about algorithms to establish correctness.
Teaching methods
Lectures
22 in total, 1 per week
Laboratories
44 hours in total, 22 2-hour sessions, 1 per week
Feedback methods
Feedback is via a variety of methods. Immediate feedback is provided in weekly laboratory sessions. There are tutorial sessions based on work in this course unit, with feedback on the exercises. Exam feedback is provided both on a website and on individual scripts.Study hours
- Assessment written exam (4 hours)
- Lectures (24 hours)
- Practical classes & workshops (48 hours)
Employability skills
- Analytical skills
- Innovation/creativity
- Oral communication
- Problem solving
Learning outcomes
On successful completion of this unit, a student will be able to:
Learning outcomes are detailed on the COMP26120 course unit syllabus page on the School of Computer Science's website for current students.
Reading list
Title | Author | ISBN | Publisher | Year |
---|---|---|---|---|
Algorithm design and applications | Goodrich, Michael T., author. | 9781118335918 | John Wiley Inc | 2015 |
Introduction to algorithms : fourth edition | Cormen, Thomas H., | 9780262367509 | The MIT Press | [2022] |
Introduction to the theory of computation (electronic resource) | Sipser, Michael | 9781133187813 | Cengage Learning | 2012-11-23 |
Algorithmics : the spirit of computing | Harel, David, 1950- | 0321117840 | Addison-Wesley | 2004. |
The art of computer programming. Vol.3 , Sorting and searching. | Knuth, Donald E. (Donald Ervin), 1938- | 0201896850 | Addison-Wesley | 1998. |
The art of computer programming. Vol.2, Seminumerical algorithms. | Knuth, Donald E. (Donald Ervin), 1938- | 0201896842 | Addison-Wesley | c1998. |
The art of computer programming. Vol.1 , Fundamental algorithms. | Knuth, Donald E. (Donald Ervin), 1938- | 0201896834 | Addison-Wesley | 1997. |
Algorithms in C | Sedgewick, Robert, 1946- | 0201314525 | Addison-Wesley | c1998. |
Algorithms in C | Sedgewick, Robert, 1946- | 0201314525 | Addison-Wesley | c1998. |
Algorithms in Java | Sedgewick, Robert, 1946- | 0201361205 | Addison-Wesley | c2003. |
Algorithms in Java | Sedgewick, Robert, 1946- | 0201361213 | Addison-Wesley | 2004. |
Data structures & problem solving using Java | Weiss, Mark Allen. | 9780321541406 | Addison-Wesley | 2009. |
Algorithms in C++. Part 5, Graph algorithms | Sedgewick, Robert, 1946- | 9780201361186 | Addison-Wesley | 2002. |
Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching, Third Edition: Fundamentals, Data Structures, Sorting, Searching Pts. 1-4 | Robert Sedgewick | 0201350882 | Addison-Wesley Professional; 3 edition | 13 July 1998 |
Additional notes
Course unit materials
Links to course unit teaching materials can be found on the School of Computer Science website for current students.