2R870 (Software Construction): 2002
edition
This page is for the third trimester block B version of the
Software Construction course taught by Prof.
Bruce Watson. Below, you will find details corresponding to last year’s
course, which will follow similar directions.
There is now something (below) on the project/opdracht.
Lecture structures and sheets/notes
Below, you will find a brief summary (with links) of the
lectures so far. For more information, attend the lectures. In the links, you
will mostly find Acrobat documents of sheets or research papers. Some of them
are also to be found in the library; I wouldn’t really suggest that it’s
interesting to print them all out, but rather to read online.
- Lecture
1 (Thursday 4 April): We had an introduction to modern software
construction, along with the foci of the software construction group in
Eindhoven. We decided to have the course presented in English because of
several exchange students. The sheets from this day can be found here.
- Lecture
2 (Wednesday 17 April): We began with an introduction to TABASCO
(Taxonomy-Based Software Construction). The sheets for this consist of the
first few sheets here. This was
followed by a discussion of taxonomies in general, and finally a
real-life taxonomy (for keyword pattern matching); there are no online
sheets for the real-life taxonomy, but a paper can be found here.
- Lecture
3 (Thursday 18 April): Continuing from lecture 2, we saw two more
taxonomies, one of algorithms for constructing minimal acyclic
deterministic finite automata (something which the VKO students will have
seen already), and another for graph representations. Sheets for the first
one are available here, while there are
no sheets for the graph representations.
- Lecture
4 (Wednesday 24 April): Don’t forget that this one will be in the Grote Zaal in
E-Hoog! Continuing from lectures 2 and 3, we present another
taxonomy, this time for set representations (as linked lists, arrays,
search trees, or hash tables). There are no sheets for this lecture, so
please take good notes.
- Lecture
5 (Thursday 25 April): This lecture was a continuation from the day before.
Here is a quick summary of the topics covered, in
case you didn’t make notes (anyone who did make good notes, and would like
to submit them for the rest of the class, please email me).
- Lecture
6 (Wednesday 1 May): In this lecture, we revisited substitutability (focus
on co- and contravariance), coding style guidelines, and iterators.
- Lecture
7 (Thursday 2 May): This lecture was a continuation of the previous one,
in terms of iterators (worked out in some detail), which we followed-up
with the beginnings of a discussion on the visitor design pattern. Some
information can be found here.
- Lecture
8 (Wednesday 8 May): (This is the last regular lecture, though we will
discuss when to plan-in another short lecture for June sometime.) In this
lecture, we will take a further look at the visitor design pattern (and a
few different implementations for it). We’ll follow this with the
‘observer’ design pattern, and (if we have time) the ‘bridge’ design
pattern. There are numerous other patterns we could be considering in this
course, but a great many of them are already firmly migrating to being
part of programming languages (truthfully, ‘observer’ is already going in
this direction, as it is now part of most IDEs).
- Lecture
9 (Wednesday 5 June): (This is the one and only abnormal lecture, unless
you would like to know more about a particular subject, in which case a
visit to my office is a good idea.) In this lecture, we will interactively
design a couple of small(ish) domain-specific languages, such as one for
specifying keyword pattern matchers, one for specifying graphs, one for
matrices, etc. We’ll continue to use the notion of ‘volunteer’ to drive
the process J.
There is an interesting paper on DSLs here
and a later version (as a technical report) here.
Project/assignment
As you will hopefully recall, this course will be evaluated
on the basis of a project done in small groups. Here are some details about
what you need to deliver:
- Complete
it, and submit it to me (by email only at b.w.watson@tue.nl, not any other email
address for me — marks will be deducted if you do) by the last day of the
examination period in this trimester.
- It
must have a short report included in the package. You can write in Dutch
or English with no penalty either way. It should not be too long (I would
expect in the region of 10-60 pages — I’d be surprised if it were shorter
or longer) and should describe:
- The
problem area you are dealing with.
- Your
taxonomy (if you did one), including some choices you made.
- Your
toolkit, including implementation issues.
- A
DSL or benchmarking data, if applicable.
- You
should include your code, along with whatever project or make files I
might need to rebuild it. It must also include a read-me about how to
build it, and perhaps a demonstration file.
Please take care to send the report in .ps, .pdf, .html (no
scripting), .dvi or .rtf formats in case of viruses. Similarly, please make
sure you scan your .exe files if you include some kind of demonstration.