I've been toying with the idea of doing an undergrad degree at NTU, but only because I want to learn the mathematical foundations of programming like algorithms, data-related statistics, and probability. I think I can easily learn languages on my own, but fundamentals...hm.
3 years of taking a whole bunch of other rubbish modules though...I'm still leaning toward learning the mathematics on my own. Can't be that hard...
Good that you wanted to get a proper degree on CS. There are no rubbish modules, there are only modules one can't find proper application of it.
Lets put things easily into your perspective, if you started off as a software engineer, would you consider law to be truly out of scope ? Clearly I can't see where engineering and law comes together on daily basis of work right ?
However consider the different GPL1/2/3, MIT, Apache, BSD and all other types of OSS licenses or even those commercial ones. Understanding the clauses and terms and conditions in them would allow an engineer to know how to architect an piece of software still not infringing the license and yet able to sell the complete solution without the need to disclose the software source.
Likewise how would one make use of the physics, biology, geography or other sciences knowledge to your advantage. If you have study any medical courses, perhaps it would give you direction into a new business of health care where you know when it crosses into the need for certification and where would be the grey zone where your new startup business can goes on without certification.
It's truly the domain knowledge at play. It is these domain knowledge that a software developer need to have and understand in order to create software that will tackle the real business needs.
Perhaps because I have spent nearly a decade of my career in a software house in the side of a vendor where we attempt to tackle all sorts of different business requirements that I find a software developer will be extremely limited in his or her creativity if the developer only knows about technology and little of what is outside in the universe.
Considering the current where big data is like the frontage of technology. Question 1, where are the domain experts and knows big data ? We have a lot of domain experts in all industries, but few of them knows technology sufficiently to convert that knowledge into engines that can make technology works. Likewise we have a lot of technological experts, but not all of them are practicing domains outside of their daily work.
So big data while not a farce is indeed in a flux. It is an on-gong process to nurture these data scientists whom are engineers, researchers, mathematicians and also possess domain knowledges of the industries they want to tackle.
These data scientists don't just appear out of petri dishes, neither will you find them wandering in the streets. You will certainly find it hard to just give them a course and then make them one. It's not easy to get engineers love research love maths and love something else. The passion which will drive the creativeness to solve a problem has to come from within them, and hence they need to agree on the works they wanted to do in their careers.
Hence coming back to why no modules are rubbish is because all modules that you will be exposed to, are avenues for you to get a taste of what is outside your scope. It gives you an opportunity to see things beyond what you have considered and who knows, you might be interested to pursue that course and here we have an engineer whom can understand besides machinery codes.