Software Engineering

Welcome to COSC345

Full year, 2016


Richard O'Keefe


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.

Students will be invited to suggest what kind of project we should run. iOS development? Android development? Website development with Ruby on Rails? The lecturers will choose what kind. 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, Commerce 220
Fridays, 09:00-09:50, Commerce 220

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, due date to be confirmed (week 6), worth 10%.

Assignment part 4, due date to be confirmed (week 12), worth 10%.

Both semester 2 dates are tentative.


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. Any questions you have about the course that you want to make public should be sent to this mailing list. Any questions you ask ok about the course will be answered in the cosc345 mailing list with your name removed.


For lecture plan and resources, see the old but actively maintained 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."