Table of contents
- Software Design and Development
- Professor(s)
- Topics covered
- Assessment
- Module specification
- Past exams
- Syllabus
- Resources
- Design patterns
- Module cohesion and coupling
- Secure coding practices
Software Design and Development
This module aims to advance your software development skills so that you can write more robust and complicated programs. You will learn how to use a range of programming techniques that will allow you to deal with unwanted or unexpected events that might happen when your application is running. You will use defensive coding to check data before processing it, and exception handling to gracefully manage unforeseen or unwanted occurrences. You will learn how to discuss program structure concerning cohesion (how to meaningfully organise code into modules) and coupling (how to define the interactions between different parts of the program). You will learn about test-driven development, where you write tests for your code, and write the code itself, in parallel. You will also learn how to use software versioning tools to manage a software project as it develops.
Professor(s)
- Dr. Matthew Yee-King
Topics covered
- Language primer 1: variables and conditionals
- Language primer 2: control flow
- Language primer 3: functions
- Version Control
- Collaboration using version control
- Module coupling and cohesion
- Unit Testing
- Test driven development
- Defensive coding
- Exception handling
Assessment
One two hour unseen written examination and coursework (Type I)
Module specification
Past exams
Syllabus
Primary programming language
C++, Javascript, Python
Resources
-
Notes - Visit this page of world-class/notes.
Design patterns
- Design Patterns in Plain English - YouTube
Module cohesion and coupling
- [Python] Cohesion and coupling: write BETTER PYTHON CODE Part 1 - ArjanCodes.
- Full playlist includes topics about dependency inversion/injection, design patterns, exception handling, inheritance, composition and more.
Secure coding practices
-
Developing Secure Software (LFD121) - The Linux Foundation.
- This free course covers the same topics as the ‘secure coding’ section of the module in more depth along with other related topics. The course is heavily based on the reading of the mid-term assignment ‘Secure Programming HOWTO - Creating Secure Software’ as David Wheeler is the author of both materials.