Current postgraduate taught students
COMP70111: Introduction to Software Development in Java (2007-2008)
To ensure that students have a thorough grasp of the basics of object-oriented programming in Java 1.5. The emphasis is on fundamental principles and their application in practice. Language constructs and library classes are introduced as embodiments or examples of the principles and best practice is emphasised throughout.
A student successfully completing this module should be able to:
Explain the relationship between real - world entities and software objects with suitable examples.
Make appropriate use of existing classes
Write simple classes to model application domain concepts.
Use the basic imperative features of Java with confidence
Create programs consisting of small collections of classes, which obey the basic best practice rules of responsibility assignment, low coupling etc.
Build simple inheritance hierarchies which pass the is-a test
Handle runtime errors using exception handling in accordance with best practice
Create very simple GUI applets and applications using Swing
Perform basic stream I/O and file handling
Calculate the complexity of simple algorithms using collections and explain why it matters
Assessment of Learning outcomesThe assessment is 100% coursework based (50% programming exercises, 50% projects).
Object-oriented basicsWhat is Java?
Mental models - how we deal with the world
Software objects - mental models on a computer
Creating objects and sending messages
A complete simple classImportance of documentation - javadoc
Other ways of programming - and why OO is better! (optional)
Imperative programmingNuts and bolts (primitive values and expressions)
Handling text (Strings and the magic +)
Saying things and doing things (declarations and statements)
Making choices (if and switch)
Repeated computation (while and for)
The simplest collection (arrays)
How fast does it go? (A first look at complexity)
Dividing up the job (procedural abstraction, parameter passing)
Classes, responsibilities and collaborationsAlternative implementations (encapsulation)
Alternative interfaces (overloading)
When are two objects the same (object references, equality vs. identity)
Assigning responsibilities to classes (which methods go where, unit testing)
Collaborating classes to solve problems (putting it all together, system testing)
What if there is no object to send a message to (static things)
Larger-scale organisation (packages)
Mental models revisited - is-a-kind-of hierarchies
Abstract classes (representing common abstractions)
Extending classes (concrete sub-concepts)
The way objects understand messages (static checking, dynamic binding)
What have we inherited? (inheritance semantics)
When to use inheritance (is-a test, evils of implementation inheritance)
Interfaces (in the Java-specific sense)
What if unexpected things happen at runtime?
Basic constructs - try.. catch.. finally, exception propagation
Throwing exceptions and declaring them (throw and throws)
Standard exception types (Throwables, Errors, Runtime Exceptions, checked exceptions)
Contracts (informal notion)
Collections and algorithms
Overview: collection interfaces and implementations
Sample (1.5) classes (Lists and Maps)
Basic algorithms (e.g. sorting) and their complexity
Recursion and tree structures
Building simple GUIs
Platform independent graphics and GUIs: AWT and Swing
Building basic GUIs
What's an applet - and what's it good for?
Stream and file I/O
Streams - System.out revealed
Text I/OFile handling
Options for storing data XML vs serialization vs. relational DB
The course will be delivered using a virtual learning environment (VLE). The material is supplied as a Computer Based training Package (CBT) and the students are guided through their study using a series of work packages presented by the VLE.
The CBT contains interactive self-assessment checks throughout the material. Each work package contains exercises to reinforce the learning process.
These exercises can be submitted to the Course Assessor or Tutors who will respond with relevant feedback.
The VLE provides a bulletin board facility that the students are encouraged to use to communicate with one another, this board is moderated by the tutors and course assessor.
Each student is allocated to a tutorial group which meets on-line every week to discuss their study and any problems they are encountering. These tutorials are led by a member of School staff with the appropriate skills. The tutorial content is logged and students who are unable to attend are able to access the logged material.