i want to separate the quality of teaching with the content itself — lecturers should be given some degree of pedagogical license to teach courses the way they want. this should ideally just focus on what is theoretically taught.
an “abstract and theoretical” course
that’s why i chose cambridge cs. i did a lot of olympiad math in high school, and i wanted something to satisfy that problem-solving part of my background. also, that’s kind of what i want out of my university education. i don’t expect to learn lots of things i will apply in my future job or career or whatever, but learning the abstract stuff feels very powerful and fun.
so tell me, what % of the first-year courses would you expect to provide some kind of theoretical foundations? 75%? 50%?
try 30%. that’s being a little harsh, discounting the math entirely. if i were to judge it fairly, i’d say it’s closer to 40%. but still, look at the list of courses:
- foundations of computer science
- object-oriented programming
- intro to probability
- algorithms 1 and 2
- digital electronics
- operating systems
- software and security engineering
- discrete math
- databases
- introduction to graphics
- interaction design
- machine learning and real-world data
- “mathematics for the natural sciences”
i want to compare this to the other school i was considering, university of waterloo software engineering:
- CS 137 – Programming Principles
- ECE 105 – Classical Mechanics
- MATH 115 – Linear Algebra for Engineering
- MATH 117 – Calculus 1 for Engineering
- MATH 135 – Algebra for Honours Mathematics
- SE 101 – Introductions to Methods of Software Engineering
- CS 138 – Introduction to Data Abstraction and Implementation
- ECE 106 – Electricity and Magnetism
- ECE 124 – Digital Circuits and Systems
- ECE 140 – Linear Circuits
- MATH 119 – Calculus 2 for Engineering
- SE 102 – Seminar
it looks… almost the same. except a couple key differences:
- a full course in linear algebra