There seems to be a lot of misconceptions in this thread:
1. Computer Science (CS) isn't theoretical at all (in fact many university do not offer the technical side anymore even in NUS). At its core, it is about problem solving and analytical thinking. What differentiate CS over IT is that you are expected to be able to analyze your solutions and come up with the best solution possible (optimization). Thus, the 2 main topics for a CS major is algorithms (steps towards solving various problems) and data structures (how to store/ manage data towards solving the problem). From there, you can specialize in a lot of areas from information retrieval, machine learning, data science etc... This is by far the hardest computing course but really in demand (check Australia's credit score for VISA application) as good companies would be able to differentiate a CS graduate from an IT graduate easily. What you learn would usually be what asked in Google/ Amazon or other big companies' interview (you would be expose to these questions in your 2nd year CS).
2. Software Engineering (SE) has little to do with Engineering at all. SE is usually a minor or major in a CS course -- designing and developing software through systematic means (this is why u get the engineering word). As an established field, you would learn about available design patterns which are the core template towards software design for various systems. You would also go through various development methodology like AGILE etc... Once again, this is more to a minor for most CS courses.
PS: I teach comp science in a top-100 international university and finishing my PhD soon.
PS2: Don't bother with IT courses, CS courses are much more valuable due to the analytical training which you will gain. If you can afford, go for international university.
Example of a classic Computer Science question:
Can you state the k-th number in the Fibonacci sequence, where k is a large number? If you are in IT, you would be able to program out a simple solution with recursion which will take O(2^N) time complexity. If you are in CS, you would do the tail-recursion approach, which reduces the time complexity to O(N) that is significantly faster. If you are in 2nd year CS onwards, you would be able to do this in O(log N) through matrix multiplication + tail recursion. Also there is auxiliary space complexity optimization as well =)
This post has been edited by evofantasy: Jan 16 2017, 02:56 PM
University Which university for Software Engineering (SE)?, Seeking advice, guidance and suggestions
Jan 16 2017, 02:53 PM
Quote
0.1063sec
0.55
6 queries
GZIP Disabled