Software Design and Programming
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 software 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. The programming language for 2020-21 is Kotlin - the number two language on the JVM.
The main aim of the module is to provide students with the necessary skills for developing software utlising the object-oriented and functional programming paradigms.
A selection from the following topics:
- Further development of the ideas of inheritance, polymorphism, and abstraction
- Language features 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
Please note that the materials for this module are presented using a combination of blended learning techniques together with the inverse curriculum approach to teaching.
- Pass in the Principles of Programming II module and Fundamentals of Computing module, or equivalent.
- You must be conversant with the materials covered in the following LinkedIn Learning courses:
- You will be tested on the above materials.
Timetables, locations and term dates
Programme specific timetables are listed in the handbooks available for each programme. Please consult the relevant programme page.
- Term dates and holiday closing
- Timetable listing modules by term and day of the week
- Timetable and venue information for the week ahead
Enrolled students can find their personal teaching timetable and the location of classes on their My Birkbeck profile.
A coursework "portfolio" consisting of individual, pair, and group assignments.
By 3-hour unseen written and practical examination and coursework portfolio; weighting 80% and 20% respectively.
- Course notes on Moodle