[ANU] [DCS] [COMP2100/2500] [Description] [Schedule] [Lectures] [Labs] [Homework] [Assignments] [COMP2500] [Assessment] [PSP] [Java] [Reading] [Help]
COMP2100/2500
Lecture 1: IntroductionSummary
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
To deal with administrative details so that we don't have to spend any more time on them.
To introduce the class web site.
To introduce the project software.
To communicate our expectations.
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:
Carry out all aspects of the detailed design and construction of a moderate-sized Java program system (103 to 104 lines of code), given a well-elaborated architectural design for the system.
Use and analyse a personal software process in constructing a software module.
Have an understanding of the main characteristics of the C programming language in the construction of program systems.
Be able to carry out system modification and maintenance, given changes to the architectural design.
Be competent in the use of standard software development tools: text editor, command line, scripting, build & version control.
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:
Data Structures and Software Development in an Object-Oriented Domain
Jean-Paul Tremblay & Grant A. Cheston
Prentice-Hall, 2003.Object-Oriented Software Construction (second edition)
Bertrand Meyer
Prentice-Hall, 1997.Introduction to the Personal Software Process
Watts S. Humphrey
Addison Wesley, 1997.The Pragmatic Programmer
Andrew Hunt & David Thomas
Addison Wesley, 2000.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:
Monday 3pm, Physics Theatre.
Wednesday 1pm, Chemistry Theatre 1.
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.
Register for a group using the Streams system this week. You can do this from any computer connected to the internet simply by going to https://cs.anu.edu.au/streams.
Class times and locations will be listed on the Labs Page (or in the Streams system).
Your group will meet for two hours every second week starting next week (Week 2).
Assessment will be returned in your lab group.
If you miss a lab class, you are strongly encouraged to do the exercises in your own time. Remember that the final exam is a lab exam, so it will be testing the practical skills learned in the labs. Similarly if you don't finish the lab exercises in class, make time to finish them later.
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.
Programming to precise specifications.
Configuration management and build tools.
Graphical user interfaces.
Scripting.
Testing.
Recursive (and other) data structures.
Reading code written in the C programming language.
Calling C code from Java.
Software process.
Code reviews.
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 the result of years of research on productivity and quality of the work of individual programmers.
It is a disciplined way of writing software which can lead to dramatic improvements in
the quality of the software you write,
your productivity,
the quality of your plans and estimates.
Following a discipline like this can lead to greater self-knowledge, a valuable thing in itself.
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:
To take responsibility for your own learning. We can give you opportunities to learn, but you have to actually do it.
To participate in the lectures, labs, homework, assignments and exams.
To engage with the course material; to make an honest effort.
To raise any problems, questions, or suggestions with your tutor or lecturer as soon as possible.
To follow the prescribed parts of the Personal Software Process.
To submit only your own work for assessment.
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 help you learn the concepts and skills listed in the course description.
To support you as you learn the Personal Software Process.
To provide you with accurate and timely information about the course.
To treat you fairly and respectfully.
To provide a model of professionalism.
To the community:
To assess and certify your competence.
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.
Punctuality: We plan to start lectures at 5 minutes past the hour and end at or before 5 minutes to. If you come in late you will miss the start of the lecture, and you will disturb the lecturer and the other students. The result of disturbing us is likely to be that we am no longer able to finish the lecture on time. Please be here, seated and ready to start taking notes by 5 minutes past.
Courtesy: We are not your servants. We do not provide a 24/7 helpdesk service. We are also not perfect. Some things will go wrong this semester. If you find a mistake or a problem, please assist by informing us so that we can correct it. If your language is courteous, we are much more likely to be helpful and courteous in return.
Office hours: (Ian) I cannot get through all the work associated with running this course if I am interrupted all the time. If you need to see me, please come during my advertised office hours. If you can't make it at those times, contact me by email to make an appointment. If you show up at my door without an appointment I may be too busy to see you. (Richard) See the “door policy” posted on Richard's door.
Assignment deadlines: Part of good practice in software development is to start work well before deadlines. Just because you choose to start late and end up working long hours the night before an assignment is due does not mean that the assignment is too hard or that we are obliged to grant you an extension. The assignments in this course are quite long and difficult. That's because they're meant to be.
Email: Please send email to whichever lecturer is appropriate. (See the division of responsibilities below.) Always include your full name and your student number.
We will reply to email from off-campus addresses, but only by hitting “Reply”. If that doesn't work (which often happens with Hotmail, Yahoo etc), we will send again to your student email address. We cannot store, remember or search for your off-campus addresses. If we need to contact you by email, other than replying to a message of yours, we will send to your student email address. It is your responsibility to check that address regularly, or to find out for yourself how to arrange automatic mail forwarding.
Answering student email takes up a large amount of our time. Please be patient. Sometimes it may take a few days for us to answer your email. We will answer messages in roughly the order we receive them, and that may take a few days. Also please do not be offended if you get a very short response, particularly if the answer to your question is already available somewhere on the class web site.
Attitude: It is not unfair or unreasonable of us to set work for you to do, and to assess it. That is our job as the lecturers for this course. Remember what we're all here for.
Ability: Remember that there is a large range of abilities in this class. Some parts of assignments and labs may be aimed at the top students, others are aimed at average students. If you're an average student, you may not be able to complete the harder sections of the assignments, within the deadline or indeed ever. That's OK. If you're aiming at a pass, then passing each assignment (50%) is all you need. Don't spend unreasonable amounts of time trying to complete every part of every task. Accept your limitations.
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