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 |
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) 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).
3 lectures per week, supported by two 2-hour laboratory sessions
Assessment consists of 40% exam and 60% coursework, with frequent practical exercises".
Online books at https://en.wikibooks.org/wiki/Subject:C_programming_language
Richard Bird. Thinking functionally with Haskell. ISBN: 9781107452640.
Miran Lipovaca. Learn you a Haskell for great good. ISBN 9781593272838.
Also available online: http://learnyouahaskell.com/
Cormen, Leiserson, Rivest, Stein. Introduction to Algorithms (3rd Edition). ISBN: 978-0262533058