I have heard that university coursework is more theoretical in nature. How relevant is this to industry work?
There’s two large elements of this question:
For (1) – this is highly dependent on the school that you go to (an engineering school or a liberal arts college?), the subfield of computer science that you go into (EECS or Machine Learning?) and the specific classes you choose to take (programming languages or operating systems?).
However, every school will have both a mix of theory and practice. And I’ve never heard of any computer science program that does not require its students to know how to program at the level that would be required to work at a place like Google or FB. I have a B.A. in Computer Science from a liberal arts school and I still took a lot of programming classes with practical projects that people use today. If you decided to teach yourself how to program you might be able to not learn many of the core concepts of computer science: datastructures and algorithms, P=NP, Turing Machines, big O notation, etc.,
I think it’d be a mistake to think of school as ‘theory’ and work as ‘practice.’
For (2) – while day to day most of your time will likely be spent doing practical coding work, the theoretical side of computer science is important to understanding the context around what you’re doing and how to design algorithms. One example is if you have a list of numbers in python, say: [1 , 2, 3] and you sort the list using a library function like “list.sort()” what’s actually happening? How long will this take? Is there even a way to make it faster or can I mathematically prove to you this is the fastest that the function can be? So in the process of coding you “don’t know what you don’t know” and a formal computer science education can uncover those for you.