ANU The Australian National University



____________________________________________________

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

____________________________________________________

COMP2100/2500
Home

Lecturers: Dr Ian Barnes, Mr Richard Walker

Tutors: Dr Alexei Khorev, Dr Tamiru Jarso

Announcements

Friday 10th June 2005 - Last year's lab exam & solutions

You might find it helpful to work through last year's midsemester lab exam and solutions as part of your preparation for the final exam. I recommend attempting the questions first without looking at the solutions, and only then looking at our suggested solutions, but of course it's up to you. Students had about 100 minutes to do the exam.

The second question assumes you're using Eiffel of course, but with a little thought you can do something very similar in Java (although it will take you a bit longer since you don't have a starting version to work from). An Eiffel DICTIONARY is quite similar to a Java Hashtable (or actually to the Map interface that class Hashtable implements). The “follow your nose” way to do Q2(a) in Java uses an Enumeration of the keys from the Hashtable. When you come to do part (b), Java doesn't at first seem to have anything equivalent to Eiffel's COLLECTION_SORTER. What you're looking for is the sort() static method in class Collections. An alternative way to do part (b) in Java is to use a SortedMap instead of a Hashtable for storing the data. Then when you pull out the keys, they come out already sorted as a Set, for which you can get an Iterator.

Notice how this question isn't so much about how well you can program in Java as it is about your ability to find and use information in the API documentation.

Friday 3rd June 2005 - Midsemester exam solutions

Check out the sample solutions to the midsemester exam.

Wednesday 1st June 2005 - Feedback survey

We know COMP2100/2500 isn't perfect. We want to make it better. For that, we need your help. In Friday's lecture we'll be handing out some feedback survey forms: one of the CEDAM ones and one of our own design. If you're more comfortable typing than writing, or you want to get in early, or you can't make it to the lecture, you can instead fill in the online version of our survey. Tell your friends, including any who have withdrawn from the course. We want their input too.

Monday 30 May 2005 - Thursday COMP2500 Seminar change of room

COMP2500 students: the first hour (3pm–4pm) of this Thursday's seminar session will be held in CSIT N101, not the Engineering Theatre. The second hour (4pm–5pm, with student talks) will be in the Engineering Theatre as usual.

Monday 30 May 2005 - Midsemester marks

I have just finished entering marks for the midsemester exam into Streams. The mean was 25.1, standard deviation 8.6. If you want to see your exam paper, come to see me in my office hours.

Friday 27 May 2005 - Notes on lecture 27

I was asked some very good questions in the lecture; I couldn't answer all of them adequately at the time. I've now provided answers on the lecture 27 page. -- Richard.

Wednesday 25th May 2005 - Last minute change to lecture schedule

Assignment submissions for Assignment 2 are now open. Follow the instructions in the “Submission” section. Submit early and often; each new submission overwrites the previous one.

Wednesday 25th May 2005 - Last minute change to lecture schedule

As I announced in the lecture on Monday, I will be giving Lecture 29 today rather than next Wednesday, in order to avoid the National Tertiary Education Union's Day of Action in protest against the government's latest attacks on higher education. I will be participating in the protest, but I didn't want you to miss out on this important lecture. Sorry for the short notice.

Wednesday 18th May 2005 - Ant build file for Oops

Following on from the discussion in the last part of Lab 5, I have written an Ant build file build.xml for the project. To use it (on the DCS student system or any other system that has Ant correctly installed), put that file in your top project directory (the one with the build and oops scripts and the sample documents).

  • For a list of the available targets, type ant -projecthelp.

  • When you're working and want to recompile, just type ant. This is equivalent to ant compile.

  • Typing ant backup creates a backup Jar file. These have timestamps in their names, so that a backup created at 3:21pm on the 18th of May would be called backup-2005-05-18-15-21.jar. This allows you to keep lots of backups (until you run out of disk quota). These archive files contain the current versions of all your Java sources, together with the build.xml file. If you want to include more things in your backup Jars (like the sample documents, notes...) you can modify the build file.

  • Typing ant executable creates an executable Jar file that you can run by typing (for example) java -jar oops-2005-05-18-15-21.jar (or just by double-clicking the icon on a Mac and probably on other systems if they've been set up correctly). I've also timestamped these. The reason for that is if you're having trouble with something and want to know how the last version worked. It's an exercise for the reader to remove that timestamping if you prefer. (Note that these are not backup files: they only contain the compiled .class files, no sources.)

  • Typing ant docs creates full Javadoc documentation in the docs/ subdirectory.

  • Typing ant submission creates an a2.jar file suitable for submitting (containing all your Java sources, and nothing else). Attention! This does not submit your assignment. You'll still need to do steps 3 & 4 of the submission instructions given on the Assignment 2 page.

  • Typing ant clean removes all the .class files, all the Javadoc documentation and the executable and submission Jar files (but not the backup Jars).

  • Typing ant rebuild will first clean and then compile, just in case you think there might be a problem with some out of date class files. (That shouldn't happen, because the compile target already follows dependencies using the depend task, but I've provided this just in case.)

  • Finally, typing ant all will compile, create Javadoc, create a backup, an executable and a submission.

The backup Jars might be a good way to pass code to your partner, since they're timestamped and compressed.

Thanks to James Barker for his contribution to this.

Friday 13th May 2005 - Change to Assignment 2 requirements

I have lifted the restriction on using the Swing text components in Assignment 2. You may now use a JTextPane for displaying the text view of the document. This should make Q1 a bit more reasonable. See Lecture 25 and the Assignment 2 FAQ for more.

Monday 9th May 2005 - Assignment 2 deadline extended

We have extended the deadline for Assignment 2 by one week to Friday 27th May 2005. That's the end of Week 12.

Wednesday 4th May 2005 - COMP2500 seminar reminder

A reminder to students in COMP2500 Software Construction for Software Engineers that there is a seminar tomorrow Thursday 5th May from 3pm to 5pm in the Engineering Lecture Theatre. The first hour will be a panel discussion with former students, and the second hour will have four student talks.

Wednesday 4th May 2005 - Assignment partners

As with Assignment 1, please send email to comp2100@cs.anu.edu.au (one per pair) telling me who you are working with. If you do not have a partner for some reason, or if you want to change partners, email me that information also, urgently and I will try to help you find a partner. It will be difficult, because most people will probably be sticking with the same partner.

Wednesday 4th May 2005 - Homeworks 9–12

The last four homework exercises: Homework 9, Homework 10, Homework 11 and Homework 12 are now available.

Tuesday 3rd May 2005 - Assignment 2

Assignment 2 is now ready for you to start working on it. It is due by 5pm on Friday 20th May 2005. That's two and a half weeks from now, the end of Week 11.

Wednesday 27th April 2005 - Draft examination timetable

The Draft Exam Timetable has now been released. You should check it for any problems as soon as possible.

Friday 22nd April 2005 - GUI lecture notes

I have just finished writing up the notes for Lecture 12 and Lecture 13. Lecture 12 describes in detail the Mouse Spy application and the Tally Counter application (all four versions). It covers creating main windows, adding components to them, containers and layout, labels, buttons, menus, tooltips, listeners and how to link an action with a GUI component. Lecture 13 works through the code of the initial one-class version of the Clock application, and then describes its division into separate classes following the Model-View-Controller architecture. Sorry it's taken me so long.

Monday 18th April 2005 - Assignment 1 marking guide

I have printed out all the assignments and distributed them to the markers. If you're interested, you can check out the Marking Guide.

Friday 1st April 2005 - Midsemester Exam

The midsemester exam will be held on Thursday evening of Week 8, the first week after the break. Here are the details:

Date:Thursday 28th April 2005
Location:Melville Hall
Examination room opens:6:45pm
Study period begins:6:50pm
Examination begins:7:00pm
Examination ends:8:30pm
Permitted materials:One A4 page with notes on both sides

The midsemester exam will cover everything we have done in Weeks 1–7: the PSP, recursive data structures, GUI programming, static code analysis, the project and Assignment 1, also Homeworks 1–7. The two lectures on shell programming will not be covered, since the shell programming lab is not until Week 8.

Monday 28th March 2005 - Assignment 1 parts 6 & 7

Parts 6 & 7 of Assignment 1 are now available for you to start working on.

I have also added several more questions and answers to the Assignment 1 FAQ Page. Make sure you check these out. In particular there seems to be a misunderstanding about how the HTML renderer should treat lists; this is answered (I hope) in Question 9 of the FAQ.

Wednesday 23rd March 2005 - Assignment 1 update

I have just posted an updated version of Assignment 1 that contains instructions for Q2 and Q5. I have a feeling that I may have forgotten something in Q5, so if you have any questions or see any mistakes, please let me know.

Tuesday 22nd March 2005 - Assignment partners

So far I have received email informing me of 15 pairs. That plus the 8 pairs I have matched up makes 46 students out of 90. I have one unmatched student. If you haven't already, please email me today or tomorrow, either to let me know who you're working with, or to let me know that you need a partner.

Friday 18th March 2005 - Assignment 1 partners

So that I know who is working with whom (and who isn't working...), please send email to comp2100@cs.anu.edu.au containing the names and student numbers of the team members. You need only send one email per pair.

Friday 18th March 2005 - Assignment 1 FAQ page

I have posted the Assignment 1 Hints and FAQ Page. At the moment it has no hints and only one question and answer — about making the build and oops shell scripts executable. I will add more as time passes.

Wednesday 16th March 2005 - Assignment partners needed

If you do not have an assignment partner by tomorrow (Thursday 17th March), send me an email at comp2100@cs.anu.edu.au and I will link you up with someone. Include a very short description of your background so that I can match you with someone suitable. Remember that you must do this assignment in pairs. Don't leave it too late.

Wednesday 16th March 2005 - COMP2500 written reports

COMP2500 students: your written reports are due on the Friday of the week after you give your talk. More details at the bottom of the COMP2500 Page.

Wednesday 16th March 2005 - Another Assignment 1 update

I have fixed some errors in the version of Assignment 1 that I posted yesterday. I think Questions 1, 3 & 4 are now correct and ready for you to start work. Send any questions, corrections etc to me at comp2100@cs.anu.edu.au.

Tuesday 15th March 2005 - Update to Assignment 1

I have filled in some of the details in the instructions for Assignment 1. I also corrected the reference to the Jar file. (It was rather confusingly called a2start.jar. Now it's a1start.jar the way it should be.) The contents haven't changed.

Friday 11th March 2005 - More homeworks

I have just posted Homework 4 and Homework 5.

Friday 11th March 2005 - Java catchup class

There will be a two-hour Java catchup class next Wednesday.

Date: Wednesday 16th March
Time: 6pm to 8pm
Place: CSIT N114
Tutor: Dr Alexei Khorev

Note: This class is only for those students who have not studied Java before. If you did COMP1100 and COMP1110 at ANU last year, please stay away to that those students who really need help can get it.

Wednesday 9th March 2005 - Private constructors

More on the issue raised in lectures about whether a constructor can be private or not. Luke Worth & James Hyland pointed me to this article http://www.javapractices.com/Topic40.cjp which mentions the possibility. The example in the article uses a private constructor to prevent instantiation of the class. In class Stack1 I wanted to prevent other classes from using the “copy this object” constructor, reserving it for internal use (during the push() operation). I just tried this, and it works. See the updated version of Lecture 7.

By the way, we could have done away with that second constructor altogether if we had used the clone() mechanism. (Look it up.) But when I read about it, it seemed so messy and technical — inheriting from Cloneable, redefining the standard clone() method, etc &mdash that I decided the second constructor was easier, clearer and simpler. (It's a pity. In Eiffel, clone was part of the language, and was very simple and straightforward.)

Wednesday 2nd March 2005 - Java Installfest

For any students having trouble installing Java on their computer at home, the department is running two “installfests”. (Well actually their official name is Home Computing Clinics.) You will be able to get help installing Java and other software on your computer. These will be held in room N111 as follows:

Tuesday 15th March14:00 to 16:00
Thursday 17th March13:00 to 15:00

For more information, see the Student Home Computing web page.

Monday 28th February 2005 - Office hours

My office hours for this Semester are:

Monday4 pm - 5 pm
Wednesday11 am - 12 noon
Friday11 am - 12 noon

During these times my door will be open and I will be delighted to answer your questions. If you want to see me outside these times, have a look at my timetable and either email or telephone me to make an appointment. If you show up at my office outside my office hours and without an appointment I may not be able to help you.

Monday 28th February 2005 - Newspaper article on process improvement

On page 9 of today's Canberra Times there's an article about a new government initiative pushing Australian software developers to improve their processes. Learning the PSP makes you part of the new wave in our industry. Demand for these skills will increase.

Friday 25th February 2005 - Lab 1 preparation

Before doing Lab 1 you need to print out and work through all the lab instructions and go through the notes for Lecture 3. If you missed the lecture, this is doubly important.

Friday 25th February 2005 - COMP2500 student presentations

COMP2500 students: I have put the draft schedule of student oral presentations on the COMP2500 Page. I have also posted some ideas for possible topics. Remember that you must email me your proposed topic and have it approved before you go ahead and prepare your presentation.

Friday 18th February 2005 - Lab group registration

Lab group registration is now open. Register for a group using Streams. Register early to avoid disappointment.

Friday 18th February 2005 - MATH2301 Games, Graphs and Machines

The mathematics department has a second-year course MATH2301 Games, Graphs and Machines, that was designed especially for students in information technology and software engineering.

  • If you're doing a different pass-level mathematics course, consider changing. MATH2301 is tailored to your needs.

  • If you're not doing any mathematics, shame on you. Mathematics is push-ups for your brain. Your mathematics results are a better predictor of success in IT than your IT scores. Drop your other elective and enrol in MATH2301 instead.

  • If you're doing honours level maths, then stick with it. That's even better than MATH2301.

Monday 14th February 2005 - Website growing...

I have updated and published most of the top-level pages in the class website. These may still change over time, but at least you now have something to read, and can get some idea of what the course will be about.

Monday 24th January 2005 - COMP2500 vs COMP2100

COMP2500 will be mostly the same as COMP2100 and the two courses will be run together. There will be some different (extra) content, and some different (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 enrolled in the Bachelor of Software Engineering, you must enrol in COMP2500. If you are not a software engineer, you are not allowed to enrol in COMP2500 (and if you want to do Software Construction, you must enrol in COMP2100 instead).

Tuesday 19th January 2005 - Welcome

Welcome to COMP2100 Software Construction (and COMP2500 Software Construction for Software Engineers) in 2005. This web site will be the definitive source of information about COMP2100 & COMP2500. We will post all course announcements on this page, so make sure you check here regularly.

(Note that for the moment this is just a dummy front page, so most of the links won't work. The rest of the site will appear over the coming weeks.)

Since the department has changed its teaching language from Eiffel to Java (and for various other reasons), COMP2100/2500 will be quite a bit different this year than it has been for the last five years. If you're interested, you can look at the COMP2100 in 2004 website but you should not rely on things being the same this year.

Textbook. There is no textbook for COMP2100 Software Construction. There are several recommended books, including your COMP1110 text from last year. Don't rush out and buy all of them unless you really have lots of money.

Waivers. I will not grant waivers to students who have failed COMP1110. I may grant waivers to students who have failed MATH1014. Go to see Sam at the DCS front office and fill in a green form.

See you all at the first lecture, on Monday 21st February at 3pm in the Physics Lecture Theatre.

____________________________________________________

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

____________________________________________________

Copyright © 2005, Ian Barnes & Richard Walker, The Australian National University
Version 2005.40, Friday, 10 June 2005, 15:08:27 +1000
Feedback & Queries to comp2100@cs.anu.edu.au