Skip to main content

Unit information: Programming and Algorithms I in 2014/15

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. Houghton
Open unit status Not open




School/department Department of Computer Science
Faculty Faculty of Engineering

Description including Unit Aims

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) 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, Huffman coding, Fibonacci) and are able to use them in implementations;

(2) be able to write succinct 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, grammars and language constructs (procedures, parameters, etc.) and recursion;

(3) have an understanding of basic algorithmic properties such as the notion of time complexity (big oh, big omega, big theta, recurrence relations, basic analysis of loops);

Teaching Information

2 lectures per week supported by a combination of laboratory and problem classes.

Assessment Information

100% coursework consisting of two assignments assessing both the theoretical and practical content of the unit and involving a combination of software development and report writing.

Reading and References

Michael Goodrich and Roberto Tamassia Algorithm Design: Foundations, Analysis and Internet Examples John Wiley and Sons, 2003 ISBN: 047142756X Price: 32.95 Recommended

Brian W. Kernighan and Dennis M. Ritchie. The ANSI C Programming Language (2nd edition). Prentice Hall. 1988. ISBN: 0131103628 Price: £31.95. Recommended

Al Kelley and Ira Pohl. C by Dissection: The Essentials of C Programming. Addison-Wesley. 2001. 4th edition. ISBN: 0201713748 Price: £29.99 Recommended

Thompson. Haskell: The Craft of Functional Programming, 2nd or 3rd edition. Addison-Wesley. 1999. ISBN: 0201342758 Price: £29.99 Recommended

McGrath, M, C Programming in Easy Steps Easy Steps Ltd, 2009 ISBN: 184078363X Price: £10.99 Recommended

Cormen, Leiserson, Rivest, Stein Introduction to Algorithms (3rd Edition) MIT Press ISBN: 978-0262533058 Price: £31.25 Background