Module 06-18190 (2010)
Software Workshop 1
|Errol Thompson||Semester 1||20 credits|
|James McGregor||Semester 2||10 credits|
Co-ordinator: Errol Thompson
Reviewer: Martin Escardo
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
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
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.
- Induction. Basic use of the system (logging on, Accessing development environment).
- The nature of a "program". Emphasis on the characteristics of imperative vs. imperative programming.
- The nature of a language (syntax and semantics). Expressions, functions and simple tests (JUnit). First encounter with recursion.
- Data types and initial introduction to objects (String as object).
- Control structures (conditionals and repetition). If, switch, for, while loops. Revisit recursion as form of repetition. Code tracing and debugging.
- Interfaces as types and classes as implementation. Type inheritance. Designing using classes.
- Implementation inheritance and structural recursion (linked list).
- Collections and arrays. Repetition over collections.
- How do we design a program. GUI programming, model-view-architecture theory, listeners.
- Exceptions. Understanding error messages, exception objects, throw, try-catch.