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.

Top
Time and Venue for Lectures

  • Mon 14:00-15:00 at LIBB10
  • Tue 11:00-12:00 at MLT1
  • Thu 14:00-15:00 at LIBB10

Top
Learning Resources

  1. Our handouts, code samples, tutorial materials.
  2. The Java Tutorial: A Short Course on the Basics, a recent printed edition (for Java 6 or 7) or its last online version, which is free to download and use (for details, see Java resources).
  3. J2SE 7 documentation (see Java resources).
  4. Any good text on object-oriented programming with Java, for example An Introduction to Object-Oriented Programming, by Timothy Budd.
  5. Another excellent text is: Effective Java (2nd Edition), by Joshua Bloch.
  6. A good text on software engineering, for example Software Engineering, by Ian Sommerville.
  7. Other texts will be advised as necessary.

Top
Description

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.

Top
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.
Top
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.
Top
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.
Top
Missed Work

  • If you miss a lecture, you should catch up as soon as possible by reading the corresponding lecture notes. You are welcome to ask advice and assistance from our teaching staff.
  • If you miss the deadline for an assignment and have a valid reason, EMAIL the lecturer who has set the assignment. For serious reasons, you may get an extension.
  • If you miss the test or the exam for any valid reason, or you sit the test or exam, but believe that your performance was impaired for some reason, then you may be able to apply for an aegrotat, compassionate or special pass consideration.

Top
How to Seek Assistance

In the labs, there are always tutors and demonstrators available to help you. If you have an administrative problem (e.g., you have been ill, you have a timetable clash with your lab or test, your marks have been incorrectly recorded, etc.), or any other sort of problem that you need help with, please see the course lecturers or tutors. If you need extra help with understanding the course material, or preparing for the test or exam, you are very welcome to visit any of the staff either during their office hours or make an appointment for some other time when they are available.

Top Top


Apply now!


2012 Handbook

Postgraduate study options

Semester 1 Timetable



Please give us your feedback or ask us a question

This message is...


My feedback or question is...


My email address is...

(Only if you need a reply)

A to Z Directory | Site map | Accessibility | Copyright | Privacy | Disclaimer | Feedback on this page