I agree that most university IT courses are far too theoretical. But the foundations are very useful and will always remain relevant.
The problem with university IT education is that most university researchers are a) not good teachers; and b) strongly dislike teaching and try to avoid it as much as possible.
Academics are not rewarded for teaching. The end-of-semester teaching surveys that students fill out count for nothing. Academics are rewarded for three things – applying for grants; being successful in getting grants; and publishing papers. As a result, academics don't think of themselves as teachers – they think of themselves as researchers as that is what they are paid to do and that is what their promotion/grant of tenure depends upon.
There's a great dichotomy between the attitudes of those inside universities (academics and some administrative staff) and those on the outside (the general public, including the vast majority of undergrad uni students). Those inside universities think that universities exist to do research, whereas those outside universities think that universities exist to educate students, hopefully so that they can find employment afterwards.
I think in IT my main tip would be learn how to learn - change is the only constant. Also, don't underestimate the importance of soft skills. Technical skills are easy to teach. Finding a candidate with the right attitude and willingness to learn is much harder.
I recommend reading this for anyone working in IT:
https://www.kalzumeus.com/2011/10/28/dont-call-yourself-a-programmer/
My 3 year degree looked like this:
1st Year:
- IT Fundamentals (basics of web development, networking, OSI model)
- Introduction to C programming
- Critical Thinking (I took this philosophy subject as an elective)
- Intro to Statistics
- Information Systems (intro level Business Analyst type course, analysing customer requirements, etc.)
- Beginner Object-Oriented Programming (Java)
- Macroeconomics (I took this as an elective)
- Roman History (I took this as an elective - lots of electives in my 1st year to explore interests)
2nd Year:
- Intermediate Object-Oriented Programming (Java)
- Database System Fundamentals (Data Modelling, SQL, relational algebra)
- Network Engineering Fundamentals
- Discrete Mathematics
- Artificial Intelligence (LISP, Prolog)
- System Design & Engineering (UML modelling)
- Industry Enterprise Practices (latest fads in web dev, this course sucked)
- Information Systems Development (intermediate level Business Analyst type course)
3rd Year:
- Big Data (Hadoop, Apache Spark, AWS Web Services)
- Database Management Systems (SQL tuning, database optimisation, deep theoreticals in DBMS)
- System Design and Methodologies (more UML modelling)
- Data Warehouse (concepts and design)
- Metrics, Quality and Reliability (QA)
- Object-Oriented Application Development (more Java programming)
- Professional Environment (a course all about behaving ethically in IT - bit of a joke)
- Advanced Databases