DCS-128 Algorithms and Data Structures 2003
Aims and objectives ·
Lectures ·
Local notes and resources ·
Worldwide notes and resources ·
Lab exercises ·
Code used for examples ·
Newsgroup/Discussion ·
Java 2 official documentation
Staff
Lectures, these web-notes and overall design of the course by
Matthew Huntbach.
Aims and Objectives
The aims and objective of the course are given in its Information Sheet
which can be found
here.
A longer statement of the aims and objectives can be found
here.
In summary, this is a course on algorithms and data structures which uses
the Java language to give executable implementation of the concepts
discussed.
History and curriculum
This course was introduced along with
Programming 1
and Programming 2
as part of a rearrangement of the first-year curriculum
in 2001. These three courses replace the previous
Introduction
to Programming double unit course which I taught, and
Introduction to Algorithms
course taught by Paul Taylor.
As the change in title suggests this course, while a successor to the
previous Algorithms course, will also pick up material on data structures
that was previously covered in the Programming course.
Last year's course page can be found here.
Assessment
Marks for the course will be divided between the final exam and
term-time tests. The final exam will count for 70% of
the total marks.
College regulations regarding assessment, progression and
resit entitlement can be found
here.
There was a term-time test on Friday March 14th at 3pm in the Great Hall.
You can find a copy of the test paper
here.
Unfortunately, a serious problem occurred with this test due to someone
sending out a forged email. You can find the details and how I intend
to deal with it here.
You can find the marks for the test (given by student number and exam
number only), plus answers and some comments on the test
here.
Last year, two term-time tests were set. You can find a copy of the
first test set last year here,
and the second test set last year here.
You can find a copy of the May exam paper for last year
here.
Programming Language
We shall be using version 1.2 of Java - also known as Java 2, though we
shall avoid detailed use of its extensive code library. The definitive
description of Java is the "Java Language Specification" available
on-line here.
A local copy of the official documentation of the Java 1.2 library can be found
here.
The official web-page for Java, maintained by Sun, the company that
developed it, can be found here.
A local copy of Sun's official Java tutorial can be found
here.
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.
Systems
You will be encouraged to run Java under the Linux (a version of Unix)
operating system. A local copy of the Linux User's Guide can be found
here.
In line with the aim in this course of concentrating on the basics, we
will not be using a Java "Interactive Development Environment".
Local notes and resources
Notes written by myself can be found
here. These
will be used rather than printed handouts.
Code used in these notes can be downloaded from
here.
Worldwide notes and resources
If any other web sites anywhere catch my eye as something that might be
useful or interesting for you in the context of this course, I'll add them
to a general links page, available here.
Lab Organisation
Lab sheets issued, along with solutions, are available here.
Code needed for the lab exercises can be downloaded from
here.
Labs will be in the
Informatics Teaching Laboratory on Monday afternoons. The class is
divided into four groups with lab slots as follows:
2-3pm: Surnames Paraskeva to Zeeshan
3-4pm: Surnames Khorsandi to Owusu-Sekyere
4-5pm: Surnames Dhiraj to Khan
5-6pm: Surnames Adam to Deverill, plus all resit/retake students
This is your allocated time when you are guaranteed space in the ITL.
Anyone in the ITL from 2-6pm on Mondays who is not in their allocated
time slot may be asked to leave. Please note, however, that it is
expected you will spend more than one hour a week on lab work, you may
use the lab during unallocated hours (it is open early mornings, evenings
and weekends), or you may use your own computer if you have one.
Lectures
This is a semester 2 course, with teaching from January 13th until
April 4th 2003. Lectures (each an hour long) are at 11am on Mondays
in the Skeel Lecture Theatre, 3pm on Tuesdays in the Chemistry
Lecture Theatre, and 5pm on Tuesdays in the Chemistry Lecture Theatre.
The 5pm Tuesday lecture slot may not be used every week.
A summary of each week's lectures will be posted
here.
Newsgroup
There is a newsgroup for this course which will be used to give news about
it and also as a place for public discussion about it. It can be found
here. If you have a question, please consider
sending it to this newsgroup (though I'm happy to answer emails sent to
me personally about the course), as
there are probably many others with the same question, and all will be
helped by a public discussion of it.
Books
The textbook recommended for the course is:
- Michael Main
"Data Structures and Other Objects Using Java"
Addison-Wesley ISBN 0-201-3574485.
With web site here.
Other suitable books include:
- F.M.Carrano and J.J.Prichard
"Data Abstraction and Problem Solving with Java (Walls and Mirrors)"
Addison-Wesley ISBN 0-201-70220-7.
With web site here.
- B.R.Preiss
"Data Structures and Algorithms with Object-Oriented Design Patterns in Java"
Wiley ISBN 0-471-34613-6.
With web site here.
- M.Goodrich and R.Tamassia
"Data Structures and Algorithms in Java" (2nd ed)
Wiley ISBN 0-471-38367-8.
With web site here.
- M.A.Weiss
"Data Structures and Problem Solving using Java" (2nd ed)
Prentice Hall ISBN 0-201-74835-5.
With web site here.
A review of several books that teach introductory algorithms and
data structures using Java can be found
here.
You will also find complete on-line textbooks in the
Worldwide notes and resources section of
this website.
Matthew Huntbach
Last modified: 15 August 2007