Computer Science
Software Construction: COMPSCI 230 Semester 1, City Campus
If you are a prospective student wanting to find out more about this and other Computer Science courses, please refer to the undergraduate handbook provided by the Computer Science Handbook. This page is intended for students who are already enrolled in this course.
- Tu 5:00pm-6:00pm at 260.073 (OGGB4)
- We 10:00am-11:00am at LibB10
- Fr 10:00am-11:00am at LibB10
- Java resources, including the Java tutorial and API documentation.
- Electronic copies of lecture handouts will be made available.
- Any good text on object-oriented programming with Java, for example An Introduction to Object-Oriented Programming, by Timothy Budd. Copies are available in the University library.
- A good text on software engineering, for example Software Engineering, by Ian Sommerville. Copies of this are also available in the University library.
- Other texts will be advised as necessary.
On this course, 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.
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
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.
COMPSCI 230 is a practical course, which means you must pass the practical (quizzes and 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.
Help on using Cecil is available here: http://cecil.auckland.ac.nz/help/cwi7student/cecil_7_student_help.htm
-
Related Programmes



