Software Engineering

Welcome to COSC345

Full year, 2016


Richard O'Keefe, Andrew Trotman


This paper covers the development of large-scale, reliable, and maintainable software systems. Topics include software specification; software design; system design; formal specification; prototypes; system maintenance; code reading and browsing; software reuse; project management; human factors; documentation; standards for software and documentation; verification and validation; configuration management; and software evolution. This paper is not an application development paper, as the list of lecture topics shows. The project is an opportunity to practice software engineering skills. Self-directed use of the available learning media for HTML + CSS + JavaScript development is part of the practical work. The project is to be completed in teams of three or four people and is as much about managing your time and documenting your work as about writing code.

The project is only partly specified: write a smart-watch application prototype running in your own emulator inside a Web browser. You get to decide what the application will be. Have fun! You get to decide what the capabilities of the emulator need to be. Don't make too much work for yourselves!

We want you to teach yourself a new programming language, framework, or development environment in order to make the project experience realistic.

The project is to be completed in teams of three or four people. Each team will work on their own application This is as much about managing your time and documenting your work as about writing code.


Tuesdays, 16:00-16:50, Quad 1
Fridays, 09:00-09:50, Union Street

Course Outline for Semester 2

This is subject to discussion:

  • Introduction
  • Requirements
  • Communictions
  • Debugging
  • Make
  • Libraries
  • Plan to throw one away
  • Computer Architecture and the stack
  • The heap
  • Managing memory managers
  • Memory checkers and valgrind

Assessment, semester 1

Assignment part 1, Thursday the 14th of April, worth 10%.

Assignment part 2, Monday the 18th of May, worth 10%.

Assessment, semester 2

Assignment part 3, finished system, due date Friday the 19th of August, worth 10%.

Assignment part 4, porting to two other emulators, due date Friday the 3rd of October, worth 10%.

Practical work

A group project in four parts, each worth 10% of your final mark.

Organised in groups, to be carried out in the laboratory (or elsewhere if you prefer), according to project schedules. Deadlines for assignments are coordinated by groups; assessment for practical work is continuous during the year and relates to both project management and final deliverables.


S. McConnell, Code Complete 2nd edition, Microsoft Press, 2004.


E-mail concerning the course is frequently sent to the cosc345 mailing list. You should be checking your e-mail regularly so that you see any such messages. From 2016 on e-mail is sent to your University-wide student e-mail address unless you have made other arrangements.


For lecture plan and resources, see the Lectures page.


Student Administration have asked us to add this note on Plagiarism:
"Students should make sure that all submitted work is their own. Plagiarism is a form of dishonest practice. Plagiarism is defined as copying or paraphrasing another's work, whether intentionally or otherwise, and presenting it as one's own (approved University Council, December 2004). In practice this means plagiarism includes any attempt in any piece of submitted work (such as an assignment or test) to present as one's own work the work of another (whether of another student or a published authority). Any student found responsible for plagiarism in any piece of work submitted for assessment shall be subject to the University's dishonest practice regulations which may result in various penalties, including forfeiture of marks for the piece of work submitted, a zero grade for the paper, or in extreme cases exclusion from the University."