Bjorn,
<<<Much of this is polemical again, sorry. Some of what follows is probably
inappropriate for this forum but its there anyway mixed in with stuff
definitely appropriate.>>>
> That question is a slippery slope. At the risk of over-generalizing
> I will postulate that there are already crucial programming skills
> which universities do not teach anylonger (if they ever have).
>
> Today most effort is put on software modelling and design, and almost
> none on implementation and debugging, partly because a proper design
> allegely makes implementation trivial.
This is a complex issue.
One group of issues is as follows.
A-level students are increasingly ill-prepared for university. There are
many students now coming to university with BBB, ABB or AAB to study
Computing/Computer Science/Software Engineering who are unable to learn
how to program. They either eventually scrape a degree or are failed
at the end of the first year. This in itself is just sad but the crime
is that employers take such people on and then blame the university
for failing.
Of course there are many students with BBB and higher who do brilliantly
well. There are perhaps too few of these.
Clearly society and government are failing the universities by cutting
their budgets and telling them to deal with more students, handle all
the quality processes, oh and by the way you must do research and we
will assess that as well. Salaries are such that Lecturers are paid
significantly less than brand new graduates. It is a surprise that
there are any quality academics left. What motivation is there to do
a good job?
Another group of issues is.
Computing is somewhat more fashion driven than most other subjects.
It is also a faster changing discipline that probably any other.
There is a bizarre inversion due to expectations and finance in terms
of whether industry leads universities or universities leads industry.
In the main for programming universities lead industry whereas for
software engineering industry leads universities.
For the past few years, programming has been the menial task and
software engineering the prestige area. This fashionable view has been
reinforced by the Engineering Council and BCS. Finally, however, the
idea that programming is analysis, design and implementation and not just
coding is finally winning. The separation of design and implementation
is being seen as inappropriate since it does not match what systems
implementers do.
Yes universities had forgotten programming as a core skill but I think
this is changing. Certainly, myself and colleagues are pushing the
line that comprehension and evolution of existing systems, testing and
debugging are as important as construction of systems from scratch.
I know that the KCL and UCL Computer Science programmes are moving in
this direction.
The new fashion is that there is programming-in-the-small,
programming-in-the-medium and programming-in-the-large with the latter
two nicely confused with the label software engineering. I hope that
this will address the issue you raise which is both correct and also
slightly unfair.
> However, the vast majority of computer programmers will spent more
> time on implementation than on design (the ratio may be inversely
> proportional to their seniority and experience with the problem domain).
> Usually freshly graduated programmers have to be taught even the most
> basic skills of making robust software, such as portability, clarity
> (because somebody else is going to maintain the code), error handling
> strategies, and debugging methods.
I really do not like this separation of implementation and design.
Using these terms in this way continues the idea that the task of
designing an artefact is distinct from the task of realizing the design.
Certainly to an extent this is the case but the new fashion is more
holistic, programming is the total task of delivering a solution to a
problem usually in the small since the label software engineering is
used for systems in the large.
I would like to hope that you are not talking about students obtaining
1, 2.1, or 2.2 degrees from KCL or UCL since we believe these students
can do all the above. I cannot speak for other universities but I
can believe your experience. There are institutions who are not as
careful of their curriculum or of their exit standards as KCL and UCL.
Pressure on finance and numbers from givenrment and elsewhere (including
university senior management) forces some institutions to cut corners.
Industry as a whole does need to stop whinging about the lack of numbers
of graduates who can do the job and get on with doing something about it.
Pressure the government, put actual money into the universities, create
interactions with universities instead of treating them as a black
box source.
> I wish there was more emphasis on implementation and debugging in the
> educational institutions, because it teaches people invaluable skills
> which they are going to need sooner than later.
This is happening again. I think with the new fashion of programming what you
need is happening.
> To return to the original question about design in EUP, I do not
> contest such skills may improve EUP, but there may actually be some
> merit to the "hackish" approach of EUP. As a chinese proverb goes
> "I hear and forget, I see and remember, I try and understand."
Whilst there is some pretentious aspects to the idea, eXtreme Programming
is becoming more and more popular. The focus on code as the sole
repository of knowledge about the system has some excellent consequences
for programming and software engineering. The current establishment
are fightin it in good old Kuhnian style but it will win.
To label XP as structured hacking is both unfair and very suitable.
The approach is a code centric one with documentation being generated from
material in the code files (javadoc is a primitive version of the idea).
Some aspects of Literate Programming are appropriate to the approach.
XP is very much programming with great emphasis on group activity,
shared responsibility and unit testing. The whol approach is (quite
rightly in my view) concerned with evolution of working product with
testing an integral part of the process.
So whereas software engineering is a management system, XP is a programmers
process with a programmers mind-set.
Russel.
========================================================================
Prof Russel Winder Professor of Computing Science
Head of Department
Department of Computer Science Phone: +44 20 7848 2679
King's College London Fax: +44 20 7848 2851/+44 20 7848 2913
Strand, London WC2R 2LS [EMAIL PROTECTED]
UK http://www.dcs.kcl.ac.uk/staff/russel/