ELEC60015 High Level ProgrammingLecturer(s): Dr Tom Clarke Aims
The aims of this module are: To demonstrate to you the role of modern static type systems, sum and product data structures, immutable code, and higher order functions, in program design and analysis; To provide you with an appreciation of modularity and immutability as they apply to modern programming; To demonstrate to you the tools and techniques available to write and test large multiple-author programs.
Learning Outcomes
Upon successful completion of this module, you will be able to:
1. Express medium sized algorithms in functional style 2. Use efficiently F# language constructs for pattern matching 3. Describe the Hindley-Milner type system and calculate polymorphic types of functions in this system 4. Perform functional abstraction using higher order functions 5. Design modular interfaces between components of large program 6. Implement and test code effectively as part of a group project 7. Use group program versioning and collaboration tools 8. Translate between lambda calculus and F#, perform lambda calculus reduction, and write bracket abstraction and reduction algorithms Syllabus
Programming without variables; Static Hindley-Milner polymorphic types and higher order functions; Lambda calculus and combinators; Tuples, lists, trees, maps; Map, reduce, fold; Pattern matching; sum and product types; Recursion versus loops; Garbage collection; Implementations; Railway programming; Monads. Mutability; Write-once semantics; Functional techniques in real-world programming; Functions as interfaces; Type checking; Types as program specifications; Richer than Hindley-Milner types.
Exam Duration: N/A Coursework contribution: 100% Term: Spring Closed or Open Book (end of year exam): N/A Coursework Requirement: Coursework only module Oral Exam Required (as final assessment): N/A Prerequisite module(s): None required Course Homepage: https://intranet.ee.ic.ac.uk/t.clarke/hlp/advert.html Book List:
|