Personal tools
You are here: Home Teaching Organisation Taught Course Information Student Handbooks Undergraduate Year 1 Handbook Inf1-OP INF1-OP: Object-Oriented Programming
Warning: These pages are now out of date. Please use the new site at

INF1-OP: Object-Oriented Programming

— filed under:
NB This page can also be accessed via


Lecturer: Perdita Stevens <>

TA: Donal Stewart <>

News and change log

11/1/15 This page is now basically up-to-date: please report any dead links. Some slides will change, and video lectures will appear below. Major changes will be reported here.

18/1/15 Bugfixed L1 slides as mentioned in lecture. Added Week 1 video lecture.

19/1/15 Added Week 2 video lecture [and the Week 3 one, forgot to say]

2/3/15 Updated Week 7 lecture, added notes on it. The physical lecture will not take place because the lecturer is ill: please watch the video of last year's equivalent lecture and read the notes, instead. See your email.

6/3/15: Added Week 7 video lecture. Made page on Junit check (see email).

9/3/15: Minor changes to Week 8 lecture slides.

16/3/15: Minor changes to Week 9 lecture slides.

23/3/15: Added link to end of course questionnaire and updated info about what can be taken into exams.

25/6/15: Added notes on exams just past. (Same username and password as for the mock: see piazza or your email.)

Course Description

This course presents a conceptual and practical introduction to imperative and object oriented programming, exemplified by Java. As well as providing a grounding in the use of Java, the course will cover general principles of programming in imperative and object oriented frameworks. The course should enable you to develop programs that support experimentation, simulation and exploration in other parts of the Informatics curriculum (e.g. the capacity to implement, test and observe a particular algorithm).

Introductory video


Course Schedule

There will only be one OOP Lecture per week, at the following time: 14.10–15.00pm on Mondays, in Lecture Theatre 4, Appleton Tower. The first lecture will be on Monday 12th January 2015.

Lecture Topic

Lab Exercises

Course intro; edit-compile-run; types, variables & assignment [slides | 4up handout]
Video lecture Part 1 Part 2
Lab 1 exercises
Conditionals, while and for loops [slides | 4up handout]
Video lecture OO basics
Lab 2 exercises Tutorial
Arrays [slides | 4up handout]
Video lecture and notes about it
Lab 3 exercises Tutorial
Functions (static methods): signatures, arguments, local variables [slides | 4up handout] Lab 4 exercises Tutorial
Objects and Data Types; colours and strings [slides | 4up handout]
Lab 5 exercises Tutorial
Innovative Learning Week: No Inf1 lectures, scheduled labs or tutorials!

Defining classes, constructors, instance variables; interfaces [slides | 4up handout] Lab 6 exercises Tutorial
Encapsulation; ArrayList and HashMap [slides | 4up handout]
Video lecture(NB reused: it's no longer true that basic tests are "new this year"!)
Lab 7 exercises  Tutorial
Inheritance and Polymorphism [slides | 4up handout]
Lab 8 exercises Tutorial
Revision lecture [slides | 4up handout]
No lecture / Mock Exam No lab sessions; lab in use for mock exam
No lecture. Labs remain open for revision (but no demonstrators, no exercises)

Scheduled labs

Allocation to lab groups

Clicking the link above, you will see that you have been allocated to a two-hour scheduled lab. Scheduled labs take place in Computer Lab West (Appleton Tower 5.05). If you want to move to a different group, please (for tidiness) request this through the ITO RT system. You may, in fact, attend any lab where there is space, e.g. if you need extra time or can't make one particular session. However, if there were ever more people than seats, those not allocated to the lab would be asked to leave.

Attending scheduled lab sessions is formally optional

; it is possible to do the exercises anywhere. However, in the scheduled labs, help from demonstrators is available. See under tutorials concerning the status of lab exercises: in brief, very strong students who already know the examinable material of this course may wish to omit them; everyone else should do them.


Everyone should do the Fundamental labs, and these are in the schedule. Some (less developed) Advanced labs are also provided, as a suggested ingredient for Individual Learning Plans of stronger students - see below on tutorials.


Tutorials will start in Week 2. You must attend every week.

Description of the tutorials (This is very important, read it!)

Allocation to tutorial groups

Quick link to tutorial type list (read in conjunction with the Description above!)

If you want to move to a different group, please request this through the ITO RT system.

Progress reporting

So that we can check that you are staying engaged with the course, and offer help if needed, you must, please, fill in the progress form every Friday/Saturday from week 2 to week 10 inclusive. If you have been unable to attend a tutorial, say so on there.



The course is assessed by an open-book Programming Exam. See the first and last lectures for more information on this. Be aware in particular that a file you submit will only get marks if it compiles without error and passes the basic JUnit tests provided.

Past papers are available on the university's site (where for some reason this course has two rows - use both!); files needed to do them are here.

Put file:///group/examreadonly/index-java.html into your browser on a DICE machine to see the information you'll have access to from your browser in the exam; you may also take in any books, papers etc. you like, but nothing electronic except USB sticks, which can be read but not written.



There is a Piazza group for this course, which you can sign up for here if you wish.

Tools, Textbooks and Other Resources


You can do this course entirely in the Informatics labs - and you should make sure you are familiar with the setup there, as you'll do the exam there! - but many of you will also want to work on your own machines. This course is based on Java 7, as that's what's installed on DICE. However, the current version, Java 8, is almost entirely backward compatible so you might choose to install that instead. You will need:

Java Development Kit and Java Runtime Environment (version 8 link)


Java Development Kit and Java Runtime Environment (version 7 link)

You will also need

Eclipse IDE for Java Developers (version 4, not version 3: minor version unlikely to be important)

Here is a video tutorial that you might find useful.



Almost any Java textbook will contain the material essential to this course: you should feel free to browse and use whatever you like best.

Several Java textbooks, including at least one edition of the main recommended one, are available online here.

In the main library the shelfmark for Java textbooks is QA76.73.J38 Jav

The main recommended textbook for the course is: The Java Tutorial: A Short Course on the Basics, Addison-Wesley (My page numbers are into the 5th edition, but for practically all purposes, the 4th or 6th edition would also be fine - there are just a few very minor language changes. Let me know if you have any trouble finding relevant sections in the 6th edition.) This contains far more than is needed for this course, and would be a good resource for the rest of an Informatics degree, too. If you expect to go beyond the basic syllabus of this course, this book is strongly recommended.

If you want a more gentle introduction, you might prefer:Introduction to Programming in Java, Robert Sedgewick & Kevin Wayne (2008), Addison-Wesley. There is a useful web site with supplementary information at

Another good online (html and PDF) introduction to Java for beginners is: Introduction to Programming Using Java, by David Eck. This refers to an older version of Java, but for purposes of this course very little has changed.

The Java API

Official online Java documentation




Videos of the lectures should be available shortly after each one at

(as are videos of some previous years' lectures). You may find these useful for revision or if you have to miss a lecture. In my experience the recordings fairly often fail to appear for technical reasons, though, so I don't recommend relying on them instead of coming to lectures.

Mock Exam 2011/12


OP May Exam 2011/12


Files for older programming exams, because only the PDF papers are available from the university's archive