ANU The Australian National University



____________________________________________________

[ANU] [DCS] [COMP2100/2500] [Description] [Schedule] [Lectures] [Labs] [Homework] [Assignments] [COMP2500] [Assessment] [PSP] [Java] [Reading] [Help]

____________________________________________________

COMP2100/2500
Lecture 1: Introduction

Summary

An introduction to the course, including discussion of the proposed assessment scheme, the textbooks, labs and tuts, roles and responsibilities of teachers and students.

Aims


Important information

Lecturers: Dr Ian Barnes (Course Co-ordinator) & Mr Richard Walker
Tutors: Dr Alexei Khorev, Dr Tamiru Jarso, Mr Philip Blackwell (plus the lecturers)
Web Site: http://cs.anu.edu.au/student/comp2100/
E-mail: comp2100@cs.anu.edu.au

COMP2100 vs COMP2500

COMP2500 will be mostly the same as COMP2100 and the two courses will be run together. There will be some extra content, and some extra assessment for software engineers — as befits your elite status, abilities and responsibilities.

There is no choice as to which of the two courses you enrol in. If you are doing the Bachelor of Software Engineering, you must enrol in COMP2500. If you are not doing the software engineering degree, you are not allowed to enrol in COMP2500. You must enrol in COMP2100 instead.


Course Objectives

By the end of this course, students should be able to:


Proposed assessment

See the Assessment Page.


Textbooks

There will be no required texts for COMP2100 in 2005. All the relevant books are poor value for money in my opinion. None covers everything we are going to do, so you would have to buy several. Instead the course web site will contain comprehensive lecture notes.

If you really want to buy a book, and have lots of money to spare, then consider one of the following recommended books:

  1. Data Structures and Software Development in an Object-Oriented Domain
    Jean-Paul Tremblay & Grant A. Cheston
    Prentice-Hall, 2003.

  2. Object-Oriented Software Construction (second edition)
    Bertrand Meyer
    Prentice-Hall, 1997.

  3. Introduction to the Personal Software Process
    Watts S. Humphrey
    Addison Wesley, 1997.

  4. The Pragmatic Programmer
    Andrew Hunt & David Thomas
    Addison Wesley, 2000.

  5. Code Complete
    Steve McConnell
    Microsoft Press, 1993.

For more information on reading material, names and library codes of other relevant books, see the Reading Page.


Lectures

Lecture Times:

  1. Monday 3pm, Physics Theatre.

  2. Wednesday 1pm, Chemistry Theatre 1.

  3. Friday 1pm, Physics Theatre.

As there are 13 weeks and 3 lecture times per week, that gives 39 lecture times in all. Subtract four for the Canberra Day, Good Friday, Easter Monday and ANZAC Day holidays and it still leaves 35 time slots. At the moment we plan to deliver 30 lectures, so some lecture times will not be used. See the Schedule Page for the latest up-to-date information.


Laboratory Classes

The labs are designed to follow soon after the lectures on the same topic, so that you can practice what you have learned.


Homework

In past years there has been a homework exercise due and marked in lab classes each week. This year we only have labs every second week, and we don't have the time to mark homework. So weekly homework is no longer part of the assessment scheme.

But the homework exercises are still there for you to do, and they are very strongly recommended. Students in previous years said the homework was one of the most helpful parts of this course. It improved their skills and confidence enormously.

To provide an added incentive for you to do the homework, I guarantee that one of the homework exercises will be on the final exam. So do them.

Each homework exercise consists of a small Java program that you have to write. Once you have started learning the PSP (that is, starting next week), you should follow the prescribed process carefully while you write the program, recording the time you spend in each phase of development, and also recording all the errors you make. This will make you a much better programmer — guaranteed. For more information, see the Homework Page.


Technical stuff

The technical matters we'll cover are basically methods and techniques for constructing software, given a high-level design. These methods become more important the larger the software you are working on.


The Project

One of my main aims for this course is to give you an opportunity to develop experience and competence in working with larger programs. To do this I have structured the assignments around a project, which you will develop in stages throughout the semester.

Since most of the technical topics we have to cover are independent of each other, I have scheduled the lectures and labs so as to give you the information and skills you need for each stage of the project, when you need them.

The project for 2005 is to continue the development of a prototype “preflight” system for an academic journal. The scenario is that authors prepare their articles using an MS-Word template file. They submit the article electronically. The publishing system reformats the article for web and paper publishing and shows the results to the author who can then check that everything came out OK. The system also has to extract meta-data like title, author's name and address from the document for use in table of contents, index etc.

We will do this using some pre-existing software and some software written specially for this purpose. The first step in the process is to use the OpenOffice package to convert the MS-Word proprietary format into an XML-based format that we can work with. The next step is to scan and parse that XML format to produce a data structure called a parse tree. The next step is to manipulate that tree to produce new documents (like the web version of the article) and to extract information (like the metadata). You will be working on a Java program that performs all these steps from the scanning onwards (and with any luck will actually call OpenOffice running in server mode to do the first step ).

While this is a fairly small software construction task — the finished program will consist of a few tens of classes and a few thousands of lines of code — it is far beyond what most COMP2100 students could do in a semester. So you will not be building the whole program, but instead working on two crucial stages in the development.

If you like, you can think of this as what might happen if you were a programmer working in a team. The plan for the team is to develop the software in stages. When you join the team, others have already constructed a prototype that performs some of the central functions of the finished program.

The prototype performs some of the functions of the finished program, but lots of features are missing. At this stage it is a console program (run from the command line, sending plain text output to the terminal window it was called from). Your task in Assignment 1 will be to expand the program in some major way. This will certainly mean grappling with the parse tree used to represent the document's structure. The parse tree is an example of a recursive data structure, one of the key ideas in this course.

Assignment 2 will involve working on the graphical user interface of the system, and perhaps adding some other capabilities as well.

Both assignments will be done in pairs.


The Personal Software Process

The PSP is compulsory part of COMP2100/2500 and will be assessed.


Responsibilities

A course like this cannot work without everyone involved taking responsibility for their part.

Your responsibilities:

Our Responsibilities

We (lecturers, tutors, the department, the university as a whole) have responsibilities to you and to the wider community. These are sometimes in tension.

To you:

To the community:


Our expectations

There are only two of us, and many of you. In order for us to get along this semester, you need to know what we expect of you, not just for assessment, but also in terms of behaviour.


Division of responsibilities

To avoid inconsistency and the nasty situation of students getting different advice or rulings from different lecturers, Richard and I have decided on a strict separation of responsibilities. If you have a query, ask the relevant lecturer. The other lecturer will not answer.

Contact Richard Walker for all questions about: enrolment in the course, extensions, marks, lab groups, and any lectures given by Richard.

Contact Ian Barnes for all questions about: assignment specifications, homework specifications, the PSP and any lectures given by Ian.

Contact your tutor for all questions about: labs, your assignment marks (in the first instance).

____________________________________________________

[ANU] [DCS] [COMP2100/2500] [Description] [Schedule] [Lectures] [Labs] [Homework] [Assignments] [COMP2500] [Assessment] [PSP] [Java] [Reading] [Help]

____________________________________________________

Copyright © 2005, Ian Barnes and Richard Walker, The Australian National University
Version 2005.2, Friday, 18 February 2005, 18:27:33 +1100
Feedback & Queries to comp2100@cs.anu.edu.au