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

  • Tu 5:00pm-6:00pm at 260.073 (OGGB4)
  • We 10:00am-11:00am at LibB10
  • Fr 10:00am-11:00am at LibB10
Top
Learning Resources
  • 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.

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

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.

Top Top


Apply now!


2012 Handbook

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