University of Saskatchewan Department of Computer Science

Welcome to the Department of Computer Science

Courses >

Computer Science 816 Detailed Information

Note that the information presented here does not necessarily reflect the most up to date syllabus or course information. Rather this information is intended to provide a general overview of course content from previous offerings.

Meeting Times

Lectures: Tuesday & Thursday at 11:30-12:50pm in Thorvaldson 205A


Class Instructor: Nathaniel Osgood, Thorvaldson 280.6, 966-6102,

Office Hours: Tuesday 3:30 – 5pm and by appointment (Sept. 22 onwards; on Sept. 15, 4-5:30pm)

Teaching Assistant: Yudi Xue (


Readings from a variety of sources will be provided as PDFs on the course website. Please see the table of additional sources below.

Course Contents

This course builds on the understanding of software engineering presented in CMPT 370 and (to a lesser degree) CMPT 371. The focus is on techniques to help foster quality software engineering. The topics covered are not comprehensive, but are intended to complement those covered in undergraduate software engineering courses, particularly those at the University of Saskatchewan. Discussion will address basic software architecture and design, techniques for achieving encapsulation, modularity and abstraction of multiple types, rigorous and safe use of type and class hierarchies, the language-software engineering interface, debugging.

Students who are interested in the other – and at least equally important – set of influences on the quality of software projects that extend from human dynamics, behaviour and management should consider taking or auditing CMPT 371, which focuses on discussion of those issues.

All students must be properly registered in order to attend lectures and receive credit for this course.


Students’ grades will be determined by a combination of assignments, results of an exploratory investigation into a topic in software engineering of the student’s choosing (mandatory for graduate students), the final exam (mandatory for undergraduates) and class participation. Undergraduate students interested in pursuing term projects may choose to hand in their term project as half of the final mark; graduate students who would like to balance their term project grade with other indications of mastery make take the exam for half of the term project mark. We encourage students to consider conducting term projects in pairs.

The due dates and weighting for submissions are as follows:

Deliverable Plausible Featured Topics % Mark UG/GR Due Date
Exploratory topic 1 (ET1) Introductory proposal statement (Optional for undergrad students) 0% Sep 18
Problem set 1 Liskov Substitution Principle 14% Oct 5
Exploratory topic 2 (ET2) Intermediate report
(sources, high-level outline)
(Optional for undergrad students)
0% Oct 23
Problem set 2 Functional Programming, Domain specific languages 14% Oct 26
Problem set 3 Domain specific languages,
Pipes and filters
Aspect-Oriented Programming
Graduate Students Only:
Generative Programming, Reflectio Profilers
14% Nov 25
Exploratory topic 3 (ET3) Exploratory project final report (Mandatory for graduate students; optional for undergraduates) 50% Dec 2
Final Exam Mandatory for Undergraduate Students;
Undergraduates may hand in project toward final mark.
Graduate students may shift marks from project to final.
50% TBD
Participation   8% N/A

In order to provide additional opportunity for students to develop understanding through discussion of course material, much of the course content is to be covered in selected readings. Class sessions will highlight components of this material, but students will be held responsible for reviewing and digesting all readings prior to class, and in discussing this material within class. Reflecting the importance attached to in-class discussion, a significant fraction (8%) of students’ grades will be based on class participation. In recognition of differences in communication styles and interests among students, this participation score will also reflect interaction in office hours, and discussions following class.

In order to help promote timely review and marking of student project submissions, students will receive an additional 0.5 marks for term projects for each day prior to the deadline that it is submitted, up to a maximum of 10 such marks.

Assignment and course marks will be assigned on an individual basis. It is acceptable for individuals to work in pairs for assignments or for the final project, but only one copy of the artifact should be handed in for both individuals (with a clear indication of the collaboration), with the other individual handling in a “stub” that indicates with whom they collaborated. A single mark will be assigned for the artifact. Any penalties resulting from shortcomings in perceived integrity or quality of the artifact (e.g. incomplete sections or plagiarism or other concerns regarding academic honesty) will apply to both collaborators.

Topic Plan and Readings

Lecture slides will be provided via the course website when possible but are not guaranteed for all classes. Readings from Evans and other excerpts distributed or available electronically are shown below. Additional readings and URLs will be shown in the notes for the topic in question.

A preliminary lecture schedule is included below. Please note that because of the emphasis on class discussion, the exact timing of particular lectures (and associated reading) is subject to change. Updated schedules will be distributed throughout the term.

Date Topic Required Readings PSet dist/due
9/7 Introduction (class coverage & omission)
Abstraction, Modularity, Interfaces: Motivation an Introduction.
Abstraction domains: Scaffolding Domain Logic.
9/9 Encapsulation via Specification, Subtyping & Subclassing 1    
9/14 Subtyping & Subclassing 2    
9/16 Liskov Substitution Principle 1 LG:7.9 PS1/
9/21 Liskov Substitution Principle 2 (Video lecture)    
9/23 Subclassing & Subclassing Interfaces 1 SG* ET2/ET1
9/28 Subclassing 2    
9/30 Capturing Commonality: Interfaces, Subclassing & Mixins    
10/5 Interfaces, Inheritance, Composition EJ:14-16 PS2/PS1
10/7 Functional Abstraction 1    
10/12 Functional Abstraction 2    
10/14 Value Objects    
10/19 Domain specific languages 1 LWB,G:11*,λ*, S4  
10/21 Domain specific languages 2 AJ:TBD  
10/26 Architectural Patterns 1: Pipe & Filter   /PS2
10/28 Architectural Patterns 2: Layering X:3 [Excerpt]  
11/2 Architectural Patterns 2: Virtual machines    
11/4 Guest Lecture: Introduction to Aspect-Oriented Programming (AOP)   PS3/
11/9 Architectural Patterns 3: Reflection X:2, RFL  
11/11 Remembrance Day    
11/16 Design Patterns 1: Factory, Flyweight, Singleton    
11/18 Design Patterns 2: Interpreter, Strategy    
11/23 Design Patterns 3: Visitor, Observer, Specification    
11/25 Design Patterns 4: Adapter/Bridge, Proxy   /PS3
11/30 Debugging 1    
12/2 Debugging 2    
TBA Final Examination N/A /ET3

NB: Lightly shaded items indicate discussion days; for such days, students will be expected to come prepared to spend the class discussing the prepared meeting. Items with asterixes (*) indicate readings required only for graduate students.

“X:n” denotes chapter number n within the source abbreviated by X (as described by the section on readings below). “X:ppN-M” denotes page numbers N through M within the source abbreviated by X.

Required and Optional Readings

Reading for the course will be drawn from a variety of sources. The schedule above uses the abbreviations shown in the first column.

Abbrev. Source
EJ Bloch, Effective Java. Prentice Hall. 2nd Edition. 2008. ISBN‐13 978‐0321356680. (Note: This book is available online)
S4 Spolsky: The Law of Leaky Abstractions
AJ Laddad, R. Aspect J in Action, 2003, Manning. ISBN 1‐9310110‐93‐6
LG Liskov, B. with Guttag, J. Program Development in Java. Addison Wesley. 2006. ISBN 0201657686.
D Evans, Eric. Domain-Driven Design. Addison-Wesley Professional. 2003. ISBN 0321125215.
B Glass, R. Building Quality Software. Prentice Hall. ISBN 0130866954.
G Czarnecki, K., Eisenecker, U. Generative Programming. Addison-Wesley Professional. ISBN 0201309777.
LWB Fowler, Martin. Language Workbenches: The Killer-App for Domain Specific Languages?
LL Little Languages and their Programming Environments
LW Liskov, Barbara and Wing, Jeannette. Behavioral Subtyping Using Invariants and Constraints.
SG Stata, R. and Guttag, J. Modular Reasoning in the Presence of Subclassing
λ The Lisp Experience.
X Shaw, Mary and Garlan, Steve. Software Architecture: Perspectives On An Emerging Discipline. Prentice Hall. ISBN 0131829572. 1996.
# The Spec# programming system
DBC Meyer, B. Applying Design by Contract
C McConnell, S. Code Complete, Second Edition. Microsoft Press. 2004. ISBN 0735619670.
F Fowler, M. Refactoring: Improving the Design of Existing Code. 1999. Addison-Wesley.
RFL Reflection pp193-213 in Buschmann et. al. Pattern-Oriented Software Architecture, Wiley. 1996. ISBN 10: 0-471-95869-7. ISBN 13: 0-471-95869-7.

Homework Submission and Evaluation

All homework will be distributed via the Moodle System. Completed assignments and other deliverables are to be submitted via email to the instructor by 12 MIDNIGHT at the close of their respective due dates (also shown in the course outline). Because feedback on the answers provided will be provided directly in the submitted file, it is important that you submit your homework in a plain text or PDF form. If you do not have access to the appropriate software, please see the instructor after class.

By instructor discretion, 10% per day may be deducted from late problem sets or term project phases up to a maximum of seven days. Problem sets and term project phases received after seven days will not receive any credit. Under certain extenuating circumstances extensions may be granted. Please contact the instructor or tutor prior to the due-date if an extension is required. Failure to complete the assigned course work (including unmarked but required assignments ET2 and ET3) will result in failure of the course.

Collaboration among students on problem sets or term project phases to be completed individually is limited to discussing concepts and clarifying issues. Nonetheless, each student is expected to produce his or her own solutions to the homework problems. For a further discussion, please see the section on Academic Honesty. The instructor particularly wishes to emphasize in the strongest terms the importance of properly citing and quoting sources used for class projects. Failure to do so can result in failure of the course by the student. Students are expected to adhere to University of Saskatchewan Academic Honesty policy. More information can be found at

In addition to the above, the course includes a final exam. Failure to write the final exam will also result in failure of the course.