My Programming Work
Java Programming
The Masters qualification in Computer Science at the University of Birmingham focused heavily
on software programming using Sun Microsystems' Java . Although not as powerful as C++ it is an
object orientated language that is primarily aimed for use over the World Wide Web. Java also has
its advantages, being platform independent, free to use, compatible across different architectures
it has become a programming language of choice for many companies/institutions.
Having read several books on programming using Java, the best one to my knowledge is "The Object
Of Java; using software engineering principles" by David Riley. Rather than just diving straight
into writing nonsensical code this book teaches about the structure of code with analogies of real-world
examples applying software-enginnering principles from the ground up and encompasses UML to to create
sound software.
In my mind, this is the book of choice for anyone just learning to program using Java, introducing
important aspects to lay a solid foundation upon which to build on. This is an introductory text-book
that doesn't delve into multi-threading or any advanced topics, but it will give the reader a sound
understanding of programming using Java.
Once the basic knowledge of Java programming is known, it is vital that the programmer familiarise themselves
with the Java Application Programming Interface (API).
This is a collection of programming classes already specified by the makers of Java; Sun Microsystems which
allows the user to use pre-defined instructions to program literally anything.
A good software editing program is also needed to facilitate programming. At the University of Birmingham
we were introduced to Xemacs and Emacs which provided syntax highlighting and line numbering. One of my
personal favourites is JCreator. It provides syntax highlighting, brace matching,
project templates, code-completion, debugger interface, wizards and a fully customizable user interface. Everything a
programmer needs!
UML
If there is one more aspect that must be learnt to become an excellent object orientated programmer
it would be knowledge of the Unified Modelling Language (UML). This was not taught as part of the Masters
Course, and many academic institutions do not teach it. UML is vital to producing sound and efficient
software.
Pictures and diagrams assists in the design process of many different artefacts be it clothing, building
houses or the storyboard of movies. Software systems also need to be visualised using pictures and diagrams
before being created in order to be structured correctly. UML is a visual language that uses the pictures
and diagrams to portray relationships and connections in order to develop sound software systems.
Lines, rectangles, ovals and other shapes make up the graphical elements of UML. These graphical elements
are labelled with words providing additional information. It's a formal language which has its own set of
rules governing how it can and should be used. Since all programming languages are made up of elements together
with a set of rules defining how exactly these elements can be combined to make software programs.
I have read Schaums Outlines:UML by Bennet et al. which highlights 3 main aims;
To provide a guide to UML, condensing the material in the UML Specfication
Presents practical case studies illustrating the above
Provide several practical examples and exercises so the reader becomes fluent at using UML
The key features of the notation of each kind of diagram used in UML have been described and the notational
conventions that they share have been shown. Two major case studies have been used to illustrate the usage of
UML along with 'How To' sections in each of the 16 chapters. The case studies provide worked examples both
within and at the end of the chapter and exercises with the aim that the rich quantity of material in them
will be developed by the reader to get more practical experience. The examples of the case studies cover
business modelling, information system development and real-time system development.