School of Computer Science

Module 06-18190 (2011)

Software Workshop 1

Level 1/C

Peter Tino Semester 1 20 credits
James McGregor Semester 2 10 credits
Co-ordinator: Peter Tino
Reviewer: Manfred Kerber

The Module Description is a strict subset of this Syllabus Page.


The aims of this module are to:

  • present the fundamental concepts of imperative and object-oriented programming
  • develop the skills needed to design, develop and document programs
  • gain working knowledge of the Java programming language

Learning Outcomes

On successful completion of this module, the student should be able to:

  • explain and apply the fundamental constructs of imperative and object-oriented programming
  • describe and apply the main features of the Java programming language
  • analyse Java programs, for example by determining the behaviour of a program from its source code or by completing and/or correcting partially-written programs
  • write Java programs, where appropriate making effective use of an integrated development environment (IDE) and other programming aids
  • test and debug programs, interpreting compiler and run-time error messages
  • design, develop and document complete Java programs to solve given software problems, including some open-ended tasks

Teaching methods

Lectures: 2-3 hrs/week, Tutorials/Examples classes: 1-2 hrs/week, Timetabled labs


  • Sessional: 3 hr examination (80%), practical work (20%).
  • Supplementary: By examination only.

Detailed Syllabus

  1. Induction. Basic use of the system (logging on, Accessing development environment).
  2. The nature of a "program". Emphasis on the characteristics of imperative vs. imperative programming.
  3. The nature of a language (syntax and semantics). Expressions, functions and simple tests (JUnit). First encounter with recursion.
  4. Data types and initial introduction to objects (String as object).
  5. Control structures (conditionals and repetition). If, switch, for, while loops. Revisit recursion as form of repetition. Code tracing and debugging.
  6. Interfaces as types and classes as implementation. Type inheritance. Designing using classes.
  7. Implementation inheritance and structural recursion (linked list).
  8. Collections and arrays. Repetition over collections.
  9. Polymorphism.
  10. How do we design a program. GUI programming, model-view-architecture theory, listeners.
  11. Exceptions. Understanding error messages, exception objects, throw, try-catch.

Programmes containing this module