This course is a prerequisite for Concurrent Systems and Applications, Group Project.
Aims
This course is provided to ensure that all students have exposure to a
common imperative programming language. It will give them experience
with the fundamentals of object-oriented programming, and provide a
foundation upon which various Part IB courses (especially Concurrent Systems and Applications and the Group Project) can
build. It also provides specific guidance on the design and debugging
of (small) programs to complement Software Design which will
concentrate on issues that arise with larger bodies of code.
Lectures
Introduction.
Course objectives.
Historical introduction to Java and its relatives.
Comparisons with ML.
The sorts of programming task addressed here.
Basic use of Java.
Compiling and running Java programs.
The layout of a program in Java.
The basic data types and operations on them.
Some important libraries.
More control structures.
Defining new types.
Design and testing programs in Java.
Understanding your objective.
Decomposing a task into manageable units.
Incremental development.
Data structures.
Program structure and information hiding.
Using existing library code.
Representative Java applications.
Calculation.
File access.
User interface.
Network access.
Conclusion.
Strengths and limitations of Java.
A brief mention of alternatives.
Objectives
At the end of the course students will be able to write Java code
in the form of both applications and applets. They should have an overview
of all features of the language and of major parts of its associated
libraries.
Recommended reading
* Eckel, B. (1998). Thinking in Java. Prentice-Hall.