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 |
---|---|---|