Who am I?
Who are you?
This is a course on how to design and
construct good programs. It is about programming in the small as opposed to
system design.
Rather than teach the syntax of the C/C++
language in class, I will try to examine some case studies: sample problems
where we duplicate the problem solving process, complete with false starts and
bad decisions.
Why? Because you learn by
doing, and that means maJeri mistakes.
Engineering Maxim: You learn more from your failures than from your
successes. Therefore it is important that you do
the assigned work yourself, and not "borrow" heavily from the work of
those who have gone before you through ICS103.
Most importantly, I expect you to ask
questions. If you are confused during the lecture, stop me and ask. Chances
are that others are equally confused.
The lab course description contains important information. It is available through
netscape/explorer. Take some time to read it now.
Important things to note:
Software is not benign, it has risks. Software in embedded systems, like airplane
flight controllers, fuel injection systems, traffic light control, real-time
systems (such video arcade games!) can lead to serious problems if they
malfunction
Many of these are exactly the same as used
for the engineering of physical devices.
requirements
- the goals of the client
specification -
a description of the tools to be built
design
- overall plan for the software
implementation - the
coding of the software
testing
- weak verification that the implementation
is correct
maintenance - fixing errors and evolving the system
For many systems, in which the requirements
are well defined, the waterfall model is satisfactory. However
No point in simply automating some existing
manual process. It is better to re-asses the entire way of doing things and exploits
the additional power of the hardware/software of the new computing system.
repeat:
specify
design and implementation
use
reevaluate