|Owning Department/School:||Department of Computer Science|
|Level:||Intermediate (FHEQ level 5)|
|Assessment:||CW 40%, EX 60%|
|Supplementary Assessment:||CM20221A Mandatory Extra Work (where allowed by programme regulations)|
|Requisites:||Before taking this unit you must take CM10227 and take CM10228 and in taking this unit you cannot take CM20214|
To give students a practical understanding of different programming paradigms. To give students a deeper understanding of algorithms. To provide students with techniques to compare different programming languages and paradigm and to assess their effectiveness for different problem domains.
On completion of this unit, students will be able to:
1. To be able to write, and to understand the behaviour of, programs in different programming paradigms
2. To understand more complex data structures and the algorithms that operate on them.
3. To be able to categorise programming languages by their characteristics into the standard categories.
Use of IT (T/F, A), Problem Solving (T/F, A).
As CM20214, viz. the following.
* Programming Paradigms: In this part we look at functional, logic, programming and procedural programming paradigms and discuss their differences and provide different techniques to write programs in these languages. Doing so, we talk about a number of development techniques like event driven, extreme programming and agile development techniques. Programs will be written in languages like: Java, Haskell, Prolog, Lisp, answer set programming, C or C++.
* Algorithms: We look at heaps, AVL trees and similar more complex data structures and the sorting and search algorithms. Furthermore, we talk about lexical analysis, parsing and type checking techniques. To do so, we introduce formal grammars and intermediate code representations.
* Comparative programming languages: We talk about the pre-history of computing (Pascal, Babbage and Turing, etc.) and about computer science started as an industry and as a subject. We introduce the four classical families using example languages such as Lisp, C++, Fortran, Cobol, Snobol, Icon, Apl, Perl, Fortran 90. We examine in detail several new programming languages to understand where they fit in the families and what they offer that is new.
* Basic AI principles: We will introduce the main AI search principles: A
*-search, min-max and others. Furthermore, we look at the way knowledge is represented and how we can reason about it.
CM20221 is Compulsory on the following programmes:Department of Computer Science
CM20221 is Optional on the following programmes:Department of Mathematical Sciences