- To introduce concepts and principles of problem solving by computer, and the construction of appropriate algorithms for the solution of problems.
- To demonstrate the principles underlying the design of high level programming languages.
- To give students experience and confidence in the use of a high level programming language to implement algorithms.
Note: Throughout this syllabus, the conceptual aspects of problem solving, algorithm design and the nature of data are incorporated with the more specific and implementation-directed aspects of programming. The importance of developing reliable, robust and maintainable solutions is emphasised throughout.
- Week 1: Introduction to computer systems. Data types. Basic program ingredients.
- Week 2: Programs as systems of interacting objects. I/O classes. The Java programming language environment. Tutorial 1:(non-assessed) The Windows operating system, WWW and text editing.
- Week 3: Object-oriented software engineering. A simple development process. Tutorial 2: (non-assessed) The Unix Operating System, e-mail, compiling a Java program.
- Week 4: Arithmetic and the Math class (plus note on method calls). Practical 1:(assessed) first Java program.
- Week 5: Writing with care. Testing and Debugging. Practical 2: (assessed) Java arithmetic and constants.
- Week 6: Selection (if-else and switch) and menu interfaces using switch statements. Practical 3: (assessed) "Math" API class.
- Week 7: Complex class interactions: aggregations and generalizations. Practical 4: (assessed) basic selection.
- Week 8: For loop, more on for loop and while loops and the break statement. Practical 5: (assessed) class hierarchies.
- Week 9: Additional remarks about loops. Introduction to iterative data structures: arrays. Practical 6: (assessed) repetition constructs.
- Week 10: Array processing. Arrays of instances and parameter passing mechanisms. Practical 7: (assessed) data structures and arrays
- Week 11: Further example programming problems. Recursion. Revision
There is NO single recommended text. However parts of the course are based or otherwise inspired by the following textbooks:
- Barnes, David and Kolling, Michael (2009). Objects First with Java (4th edition). Pearson ISBN 0137005628 [Especially Part I]
- Weber Becker, Byron (2007). JAVA: Learning to Program with Robots. Thomson ISBN 0619217243
- Morelli, Ralph (2003). Java, Java, Java (3rd edition). Prentice-Hall ISBN 0131474340
- Stevens, Perdita and Pooley, Rob (2006). Usign UML. Addison-Wesley [Especially Chapters I, II, and V].
General learning outcomes:
- An understanding of the principles and practice of object oriented analysis and design in the construction of robust, maintainable programs which satisfy their requirements;
- A competence to design, write, compile, test and execute straightforward programs using a high level language;
- An appreciate of the principles of object oriented programming;
- An awareness of the need for a professional approach to design and the importance of good documentation to the finished programs.
Specific learning outcomes:
- Be able to implement, compile, test and run Java programmes, comprising more than one class, to address a particular software problem.
- Understand how to include arithmetic operators and constants in a Java program.
- Be able to make use of members of classes found in the Java API (such as the Math class).
- Demonstrate the ability to employ various types of selection constructs in a Java program.
- Be able to employ a hierarchy of Java classes to provide a solution to a given set of requirements.
- Demonstrate the ability to employ repetition constructs in a Java program.
- Demonstrate the ability to use simple data structures like arrays in a Java program.
Three lectures are given each week for the duration of the course (11 weeks). In addition, starting from week 2, for one hour each week, students will work in a tutorial setting under staff guidance, and there will be one hour supervised lab sessions. Assignments are carried out individually and comprise the resolution, using sound software engineering techniques, of given problems expressed in terms of a requirements statement. A grade will be returned for each assignment. The course is continuously assessed, the credit being based on all the assignments; it has no examination. Each assessment task is linked to one of the seven specific learning outcomes listed (although in many cases there is overlap with associated learning outcomes). Therefore to meet all the learning outcomes students must pass all the assessments.
The object oriented approach to software engineering is followed throughout.