DCS-128 Algorithms and Data Structures 2006

Aims and objectives ·  Lectures  ·  Learning outcomes  ·  Local notes and resources  · 
Worldwide notes and resources  ·  Lab exercises  ·  Code used for examples  ·  Discussion  · 
Java API documentation 

Staff

Lectures, these web-notes and overall design of the course by Matthew Huntbach.

Status of this course

This course DCS128 was last taught in the academic year 2005/6. The notes used in that year were an extensive revision of earlier notes which had been used for that course. They became the basis for a new course DCS210 Algorithms and Data Structures in an Object Oriented Framework. The notes available on this page don't offer anything that can't be found on the DSC210 web site, they are simply the first version of those DCS210 notes.

The earlier version of DCS128 was a traditional algorithms and data structures course. Although using Java and reflecting to some extent Java's object oriented nature, the emphasis was on direct implementation of data structures and algorithms. The notes for this earlier version can be found here, and they do contain plenty of material which wasn't carried forward to DCS210.

Aims and Objectives

A statement of the aims and objectives of this course aimed at students taking it is given here.

The course assumed you had basic experience with the procedural programming aspects of Java covered in the first semester course DCS100 Procedural Programming. It made use of the object-oriented aspects of Java which were taught alongside it in the course DCS104 Object Oriented Programming.

The paragraphs below in this section were added after the course was taught and this material was archived here, to give further explanation of how and why it changes from the traditional algorithms and data structures course.

The change in emphasis in this course as it was taught in 2005/6 came about through a feeling that students needed more practice on the object-oriented concepts of Java, and that modern programming meant selecting the right code from the code library was more what would be done in most practical contexts than implementing one's own algorithms and data structures from scratch. So although the basic concepts of algorithms and data structures are still covered, some of the detail drops out. In its place, more coverage on object-oriented features, the type system, and the generics features of Java. Also Java's Collection Framework library was accepted as something we need to cover fully.

The introduction of generics in Java 5 was a particular prompt for changing the emphasis of the course, as I considered it a big change in the language, which needed some quite detailed explanation, leading to more emphasis on Java's type system in general, including the idea and use of interface types. Using data structures which contain collections of objects also requires some different emphases than old-style algorithms and data structures courses which often concentrated on data structures which just stored integers. Full and effective use of Java's Collections Framework involves some quite tricky concepts, which I started to cover here.

It is still important to know what goes on "under the hood", so basic use of arrays and linked structures is still there. It is also important to know that there may be different algorithms to solve the same problem, with some more efficient than others, so a basic introduction to that idea is still there as well. It is perhaps even more important to know there is such a thing as "under the hood", so fully appreciating the idea of abstraction which enables us to have a clear distinction between application and implementation code. I find the object-oriented paradigm a good way of putting aross this message, hence this course's transformation from "Algorithms and Data Structures" to "Algorithms and Data Structures in an Object Oriented Framework".

Assessment

Marks for the course were divided between the final exam in May and two term-time tests. The final exam counted for 70% of the total marks, the term-time tests counted for 15% each.

The first term-time test was on Monday 13th February. A copy of the first test can be found here. The second term-time test was on Monday 27th March. A copy of the second test can be found here. Marks for both tests (given by exam number only) can be found here. The marks for each test are out of 100. Model answers to the tests can be found here and here. The final exam was on Monday May 4th.

College regulations regarding assessment, progression and resit entitlement can be found here. The first 32 pages of this PDF document are the relevant ones (the remainder is special regulations for qualifications other than the ones you are taking). Please note particularly the section on page 8 on attendance.

The resit assessment for this course was on the basis of the resit exam only. The resit mark follows college regulations, which state that if a course is taken as a resit, the maximum mark is a bare pass (40%), this is the mark you will be given if you score more than that in the exam. You may only take a resit exam if you failed the course previously. If you get less than 40% in the resit exam, your mark for the course will be either your resit exam mark, or your original mark, whichever is the highest.

Programming Language

The course used Java, version 1.5 (also known as Java 5). Full documentation on this version of Java can be found here. Please note this documentation covers far more on the Java language than covered in the course. In line with the aim of the course on concentrating on the basics, the course as taught did not make any use of a Java Interactive Development Environment.

I maintain a set of links on Java and programming in general, aimed at students who are just starting out to learn programming in Java. It is available here.

Local notes and resources

Notes written by myself can be found here. These were used rather than printed handouts. Code used in these notes can be downloaded from here.

Worldwide notes and resources

I maintain a general links page on material which useful or interesting in the context of this course, available here. This page will be updated as it is now the general links page for the course DCS210.

Lab Organisation

Lab sheets issued, along with solutions, were made available here. Code needed for the lab exercises can be downloaded from here.

Lectures

A summary of each week's lectures from when the course was taught is posted here.

Books

The recommended textbook for this course is: This book is to be regarded as supplementary to the on-line notes given with this course. Direct references were not made to it in class, but most of the material in the course is covered by chapters in this textbook. The textbook in fact goes well beyond what it is possible to cover in a one-semester course. This course covers roughly the first half of this textbook.

You will also find complete on-line textbooks in the Worldwide notes and resources section of this website.


Matthew Huntbach
Last modified: 20 January 2009