Skip to main content

Unit information: Programming and Algorithms I in 2016/17

Please note: you are viewing unit and programme information for a past academic year. Please see the current academic year for up to date information.

Unit name Programming and Algorithms I
Unit code COMS10002
Credit points 20
Level of study C/4
Teaching block(s) Teaching Block 1 (weeks 1 - 12)
Unit director Dr. Holyer
Open unit status Not open




School/department Department of Computer Science
Faculty Faculty of Engineering


This unit introduces the fundamentals of procedural and functional programming, and their application as effective problem solving tools. The unit discusses some of the most essential and widely applied algorithms and data structures in computing, and introduces first intellectual tools to implement and analyse them. Introducing both the languages C and Haskell, particular emphasis is placed on developing the students’ ability to command the various principles that underpin programming, and translate ideas for solving problems into concise and well structured code. As the first unit on programming and algorithms, it provides the students with the strong implementation and problem solving skills they will need in subsequent learning. The unit is prerequisite for and complemented by Programming and Algorithms II.

Intended learning outcomes

On completion of the unit students will:

(1) be able to write programs in C and Haskell to solve problems in a structured manner, and understand the key concepts and use of high level languages, compilers, interpreters, and language constructs

(2) have an understanding of fundamental data structures (such as arrays, lists, queues, stacks, trees, heaps and hash tables) and algorithms (such as fundamental sorting algorithms, greedy algorithms, Fibonacci) and have an understanding of basic algorithmic properties (such as time complexity, big oh, big omega, big theta, recurrence relations, basic analysis of loops).

Teaching details

3 lectures per week, supported by two 2-hour laboratory sessions

Assessment Details

Assessment consists of 40% exam and 60% coursework, with frequent practical exercises".

Reading and References

Online books at

Richard Bird. Thinking functionally with Haskell. ISBN: 9781107452640.

Miran Lipovaca. Learn you a Haskell for great good. ISBN 9781593272838.

Also available online:

Cormen, Leiserson, Rivest, Stein. Introduction to Algorithms (3rd Edition). ISBN: 978-0262533058