Introduction to software development in Java

Questions about this course?

Questions about applications?

Apply now!

Bioinformatics Education Online

Course provider:
The University of Manchester
Course contact:
John Sargeant (
To ensure that students have a thorough grasp of the basics of object-oriented software development using 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.

1. Object-oriented basics

What is software development?
What 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 class
Importance of documentation - javadoc
(Optional) Other ways of programming – and why OO is better!

2. Imperative programming

Nuts and bolts (scalar 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)

3. Classes, responsibilities and collaborations

Alternative 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’s no object to send a message to (static things)
Larger-scale organisation (packages)

4. Inheritance

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)

5. Exception handling

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)

6. 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

7. Building simple GUIs

Platform independent graphics and GUIs: AWT and Swing
Building basic GUIs
What’s an applet – and what’s it good for?
Handling events

8. Stream and file I/O

Streams – System.out revealed
Text I/O
File handling
Options for storing data XML vs serialization vs. relational DB
Further details:
Technical requirements:

Distance learning in computational biology Courses in computational biology

Updated 18 March 2011 by Heather Vincent