[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