Software and Programming III
To provide students with the opportunity to further develop the scope of their problem solving skills by continuing their study of advanced programming techniques.
The main aim of the module is to provide students with the necessary skills for developing so\ware using the object-oriented and functional programming paradigms through appropriate programming languages (e.g., Java 8 and Scala).
- The object model and how it is realised in various object-oriented languages (e.g., Java, Scala, Ruby, C++, ...)
- Further development the ideas of inheritance, polymorphism, and abstraction
- Language features: inner classes, closures, higher-order functions, meta-objects, etc.
- The functional paradigm - Abstract data types, polymorphic types, static typing and type inference. Recursion and induction. List processing. Higher-order functions. Eager and lazy evaluation. Imperative features. Signatures, structures, functors, typeclasses, monads
- An introduction to Test Driven Design (TDD) and Behavioural Driven Design (BDD)
- The use of an Integrated Development Environment (IDE) for software development: e.g., editing, debugging, compilation, etc.
- Modularity, versioning, packaging, and managing the build process
- Design Pacerns and Anti-Patterns and their application to sobware design
- The SOLID (Single responsibility, Open-closed, Liskov substitution, Interface segregation and Dependency inversion) approach to object oriented programming and design
- Code refactoring and analysis
- Concurrency and agents/actors
Software and Programming II
Students should study a (free) primer course prior to taking this module. The short course completes the coverage of Java started in the Software and Programming I and II modules and is available as a separate module on Moodle. On enrolling for the Software and Programming III module you will receive access to the short course materials.
All dates and timetables are listed in the programme handbooks of individual programmes.
A portfolio of programming coursework consisting of individual, pair and group assignments together with weekly exercises.
75% - Three hour unseen on line or written examination
25% - Practical programming assignment(s)
- Scala for the Impatient by Cay Horstmann, 2nd Edition, Addison-Wesley Professional, 2016. ISBN-10: 0-13-454063-8
- Programming in Scala, Third Edition, by Martin Odersky, Lex Spoon, and Bill Venners. Artima. 2016.
- Scala Design Patterns, Patterns for Practical Reuse and Design by John Hunt, Springer International Publishing, 2013. ISBN-13: 978-3-319-02191-1
- Scala Design Patterns by Ivan Nikolov, Packt Publishing; 2016. ISBN-10: 1785882503