1 By the end of this course, you should understand that hacking is far from clever: there are much more effective strategies for making programs run faster!

2 Boehm, Software Engineering Economics

3 Software Engineering Notes

4 Ada LRM

5 B Meyer, Eiffel

6 Some compilers, e.g. Metrowerks Macintosh C compiler, have an option

Require function prototypes

which can be turned on. If it is on, then the compiler will issue errors if the specification is not included - because the function prototypes (the formal specification of the methods of our objects) are in the specification. Other compilers, e.g. GNU gcc, will only issue warnings if the function prototypes are absent.

[7 Or possibly used as "advice" to the system - enabling it to pre-allocated space in some efficient way, e.g. in a contiguous block in one page of memory.

8 Maintenance is well known to be the most costly phase of any large software development project, refer to any text on Software Engineering.]

9 top is equivalent to x = pop(s); push(s,x);

[10 In fact, adding and deleting from the head of a linked list is the simplest implementation and produces exactly the LIFO semantics of a stack.

11 In most operating systems, allocation and de-allocation of memory is a relatively expensive operation, there is a penalty for the flexibility of linked list implementations.]

12 Pronounce this "big-Oh n" - or sometimes "Oh n".

13 You will find that not many people will be happy with a prediction that 90% of the time, this computer will calculate the (new position of the aircraft's flaps|the fastest rate at which the brakes can be applied|...) to prevent (the aircraft crashing|hitting the car in front|...).