Software and Programming III
Module outline
This module provides students with the necessary skills for developing software using object-oriented and functional programming paradigms. This ranges from learning object-oriented concepts, designing object-oriented so6ware using a proven methodology and tools, to learning how to program in an object-oriented and functional style. The module provides a detailed examination of Software Design Patterns and the emerging functional features of current day object-oriented programming languages.
Aims
The main aim of the module is to provide students with the necessary skills for developing software using the object-oriented and functional programming paradigms.
Syllabus
- The object model and how it is realised in various object-oriented languages (e.g., Kotlin, JavaScript C#, Java, Scala, Swift, ...)
- Further development of the ideas of inheritance, polymorphism, and abstraction
- Language features including nested 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, type classes, 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 Patterns and Anti-Patterns and their application to software 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
Prerequisites
- Software and Programming II or equivalent.
- You must be conversant with the materials covered in the following LinkedIn Learning courses:
- Java Essential Training for Students by Peggy Fisher, and
- Lambda Expressions in Java by Peggy Fisher.
- You will be tested on the above materials.
Timetables
Indicative timetables can be found in the handbooks available on programme pages. Personalised teaching timetables for students are available via My Birkbeck.
Coursework
A portfolio of programming coursework consisting of individual, pair and group assignments (pair and group assignments suspended for 2020-21)
Assessment
75% - Three hour unseen on line or written examination
25% - Practical programming assignment(s)
Recommended reading
- Course notes on Moodle