Software Engineering

Welcome to COSC345

Full year, 2019



This paper covers the development of large-scale, reliable, and maintainable software systems. Topics include software specification; software design; 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.

As is usual with COSC345, the project is only partly specified. In 2019 the goal is to build something useful for MacOS in 1000 lines of code or fewer. 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.

Lectures and Tutorials

For lecture plan and resources, see the Lectures page.

Semester 1
Tuesdays, Lectures 16:00-16:50, Quad 1
Fridays, Tutorials 09:00-09:50, Quad 1

Semester 2
Tuesdays, Lectures 16:00-16:50, Quad 1
Fridays, Tutorials 09:00-09:50, Quad 1

Practical work

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

Organised in groups, carried out in the laboratory (or elsewhere if you prefer), according to project schedules set by the group. Assessment for practical work is continuous during the year and relates to both project management and final deliverables.

Semester 1
Assignment part 1, worth 10%.
Assignment part 2, worth 10%.

Semester 2
Assignment part 3, worth 10%.
Assignment part 4, worth 10%.

Full details on the Assessment page.


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


E-mail concerning the course is typically sent to the cosc345 mailing list. You should make sure you are on the list. You should also be checking your e-mail regularly so that you see any such messages.

Academic Integrity and Academic Misconduct

Academic integrity means being honest in your studying and assessments. It is the basis for ethical decision-making and behaviour in an academic context. Academic integrity is informed by the values of honesty, trust, responsibility, fairness, respect and courage. Students are expected to be aware of, and act in accordance with, the University’s Academic Integrity Policy.

Academic Misconduct, such as plagiarism or cheating, is a breach of Academic Integrity and is taken very seriously by the University. Types of misconduct include plagiarism, copying, unauthorised collaboration, taking unauthorised material into a test or exam, impersonation, and assisting someone else’s misconduct. A more extensive list of the types of academic misconduct and associated processes and penalties is available in the University’s Student Academic Misconduct Procedures.

It is your responsibility to be aware of and use acceptable academic practices when completing your assessments. To access the information in the Academic Integrity Policy and learn more, please visit the University’s Academic Integrity website at or ask at the Student Learning Centre or Library. If you have any questions, ask your lecturer.