I will be transferring from my local Community College next year and was planning on going to UCSC as a computer science major. I have discovered that their computer science program states …
'Most courses in the computer science program at UCSC have a strong theoretical
component to prepare the student for designing, as opposed to simply using,
computer systems. ’
Can anybody clarify what this means exactly? After getting my degree I would like to become a programmer will this prepare me well?
Most CS programs would describe themselves as theoretical as opposed to practical, so in that respect, UCSC’s program is very typical. Plenty of coding is involved.
To me a theoretical CS program means you’ll learn CS and math concepts, but little time will be spent teaching you how those concepts are applied in the real-world. That was certainly the case with my CS degree.
Yes, all serious cs programs have theory built into the program. It will teach you computational thinking and to study efficient computation which is very useful. CS really isn’t trade school where you just learn to make something happen by stringing commands together. It is about making it work elegantly and optimally too. So yes, you will be doing book learnin’ and problem sets, son. Pretty much all big name cs programs take this approach but some take a more practical approach and that would be the cal polys particularly that advertise ‘hands on’ learning. Maybe you would prefer that. Those are good programs too. Did you ever take a look at the curriculum of a few college to see what you are actually taking for a CS degree and compare?
When employers hire first years out of school they know what you have been studying. You will have all the underlying foundational knowledge you need you will study algorithms and programming language theory, and you will know a few actual coding languages, some may be only used for teaching. Your employer might use a different one but that is no problem, you will learn on the job. And it won’t be that hard because you will have all the knowledge of how languages work, you will just use the new syntax.
Even CS research is usually practical and involves coding. My dd worked on an e-cash project and wrote a cryptographic library and she had to audit a graduate theory class on zero knowledge proofs to understand the math that was needed to create it. She was also able to design an algorithm to make it run faster, and then they wrote a new language just for this library so it could run even faster and she learned how to make a new language by consulting with professors and using her knowledge of programming language theory. I detail this so you see that you will be trained a lot deeper and more thoroughly than learning ‘how to program’, and if that is going to be uninteresting to you or overkill, more than you want or need then you may as well know it now. I guess when you say you want to be a programmer, what does that mean to you?
Now something you can do to make yourself attractive is to get an internship. They will know you are a student and you will be shown what to do and get a better idea of what skills are needed in the workplace. You can take part in open source projects on your own and start to do some actual work and problem solving and all that can go on your resume.
All good CS departments will include both theoretical foundations and concepts and practice in writing software to apply such concepts. With a good knowledge of the theoretical foundations and concepts, you will be better able to adapt to new technologies and solve unusual problems.
“Designing, as opposed to simply using, computer systems” distinguishes CS from IT/MIS/etc., which are typically less technical business-based majors which are mainly aimed at managing computers and their software.