Skip to content

Latest commit

 

History

History

cm-2010-software-design-and-development

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

Go back to the main page

Table of contents


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

See past exams here.

Syllabus

Primary programming language

C++, Javascript, Python

Resources

Design patterns

Module cohesion and coupling

Secure coding practices