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 |
Pre-requisites |
none |
Co-requisites |
none |
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.
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);
2 lectures per week supported by a combination of laboratory and problem classes.
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.
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