Course syllabus

 

Description

Students will develop a software application of reasonable complexity through the application of established software development techniques. In doing so, students will demonstrate fundamental skills in object-oriented software development, GUI programming and application-level multithreading. In addition, students will learn established techniques to ensure that their software satisfies quality criteria.

Contents

Theme (A): the object-oriented programming paradigm covers the follow topics:
  • The object-oriented paradigm, introducing objects, messages, methods, classes, interfaces, class hierarchies and responsibility-driven design.
  • Information hiding, abstraction, programming to interfaces, and enforcement of design intent using language features such as visibility qualifiers, constructors, constants, sealed classes, abstract classes and interfaces.
  • Data typing in object-oriented programming languages, subtypes vs subclasses, the principle of substitution, method overriding and overloading, polymorphism, dynamic binding, generic types.

 Theme (B): frameworks, illustrated by a contemporary GUI framework, covers:

  • Inversion of control principle.
  • Application of fundamental OOP concepts, introduced in theme A.
  • Event handling
  • Model/view design

 Theme (C): application-level concurrent programming covers:

  • The lightweight threads programming model and thread lifecycle.
  • Synchronisation, mutual exclusion, and liveness.
  • High level concurrency primitives, language dependent but to include abstractions like locks, executors, thread pools, and concurrent collections.
  • Concurrency issues in GUI applications: the event dispatching thread, worker threads and background tasks, tasks with interim results.

 Theme (D): software quality comprises:

  • Fundamental testing techniques: unit testing, black box testing, white-box testing, equivalence partitioning.
  • Source code inspection.
  • Documenting and commenting source code 

Expected Learning Outcomes

Upon completion of this course the students will be able to:

  • Describe the features typically offered by an object-oriented programming language, including support for classes, visibility, inheritance, interfaces, polymorphism and dynamic binding.
  • Explain key principles and best practise associated with object-oriented software development. These include abstraction, information hiding, programming to interfaces, resilience to change, and reuse.
  • Put into practice object-oriented programming knowledge and develop a relatively large, with respect to software developed on pre-requisite courses, object-oriented software application.
  • Describe the principles of application-level multithreading: threading, condition synchronisation and mutual exclusion; and primitives associated with these.
  • Develop a multithreaded application that uses threads appropriately and correctly.
  • Describe and apply contemporary techniques that can be used to help develop software that meets its specification. These include source code inspection and basic software testing techniques: black box, white box and unit testing

Passing the Course

  • Final Exam: 65%; Test: 15%; Assignments: 20%.
  • COMPSCI 230 is a "practical" course, which means you must pass both the practical (assignments) and the theory (test and exam) sections, separately.
  • The pass mark is likely to be 50%, but might be lower. If you have not achieved 50% in the practical part, you are still advised to sit the exam.

Lecturers

  • Angela Chang (Course Coordinator)
    • Email: angela@cs.auckland.ac.nz
    • Ext: 86620
    • Room: 303S.494
    • Office hours: open door policy - visit any time
  • Craig Sutherland
    • Email: cj.sutherland@auckland.ac.nz
    • Phone: 09 923 2514
    • Room: 810.827
    • Office hours: TBA

 

Course summary:

Date Details Due