[Tutor] What every computer science major should know
Alan Gauld
alan.gauld at btinternet.com
Fri Jul 19 00:44:12 CEST 2013
On 14/07/13 02:12, boB Stepp wrote:
> This may be of interest to some of us:
>
> http://matt.might.net/articles/what-cs-majors-should-know/
Interesting post Bob, thanks.
I think I've covered about 50-60% of the recommended reading
and about 75% of the topics.
But... I think its a tad old fashioned and neglects the biggest areas of
weakness and growth in my experience of modern software engineering -
large scale systems. More and more systems don't run on single hosts.
They don't even run on single CPU architectures within a single box(the
mention of GPU processing and CUDA hints at that). But learning
parallelism on a single computer is only the tip of the iceberg. The
vast majority of corporate programming today builds systems running
across dozens and sometimes hundreds of physical servers. (One CRM
implementation I did had over 200 servers across 3 sites all
integrated and self managed as part of the project design.) There is one
disparaging comment about UML but UML is about the only tool we have for
documenting large scale systems effectively. It's far from perfect but a
critical skill for grads IMHO. (Ironically it's usually taught as a tool
for designing OOP programs with a few classes and that is its weakest
area of application.)
The other problem in all of this is that it is effectively impossible to
teach all of that in a standard 3 or 4 year Bachelors course. Even with
2 years extra for a Masters degree.
I did my degree in Electrical/Electronic engineering with specialism in
software. It took me about 5 more years to read up on all the CS bits I
wanted to cover that weren't in our course. I discovered these areas by
discussion with colleagues who had attended other colleges or done other
degrees. None of us had done all that was needed.
And that's the problem. Computing has become too widely encompassing for
anyone to learn the breadth of material needed in the time available in
an undergraduate and/or masters course. Other engineering/science
disciplines have addressed this by specializing and that is already
happening with Games programming degrees becoming increasingly common
and many courses in Business computing. I think we will see more of this
in the future. It's simply unrealistic to ever expect college grads to
have the breadth suggested in the article - they may aspire to it and
maybe after 10 years or more attain it.
But by then there will be another array of paradigms to absorb...
--
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/
More information about the Tutor
mailing list