One of UCLA’s greatest ironies is that its computer science curriculum is just a series of textbooks. So much for building the next Facebook.

Computer science students have long complained that their curriculum is not practical enough. Students raised these concerns with their department Wednesday during a department town hall co-hosted by the Association for Computing Machinery student group, pointing out they needed to learn more applicable skills relevant to the industry.

UCLA’s computer science department is largely based on 20th-century theoretical foundations of the field. Many of the courses the program offers focus on giving undergraduates a strong sense of the mathematical and conceptual foundations without much focus on the practical applications of the major. The department stresses teaching students the C programming language – an archaic code scheme developed in 1972.

The department expects students to obtain practical skills from their student-run extracurriculars, rather than teaching them. One of these extracurriculars is ACM, which helps students pick up machine learning, cybersecurity and application design.

In a world where companies hire students based on their ability to do things, it’s crucial that UCLA’s computer science education extends beyond mere theory. But students are the ones who need to claw their way into the competitive private sector, and they’ll need strong application skills to compete with other graduates.

Richard Korf, a professor and undergraduate vice chair of the computer science department, said the disparity between theory and practicality is intentional.

“A lot of our courses are theoretically based. We’re trying to train people for a career that lasts 40 years or more,” Korf said. “The question is, what do you teach people to become productive professionals in a field that’s changing very, very fast?”

His answer: teach students the theoretical foundations of the major.

But students give a different answer. They say more practical skills are what’s needed to cut it in the field. While a strong theoretical foundation is helpful during their careers, they still have to actually land a job first.

Korf disagrees, though.

“It’s like going to the gym and lifting weights. It’s not productive to get that weight from the ground up there, because no one needs it up there,” Korf said. “But what you are doing is trying to train your muscles to do that. And you do that by lifting weights.”

Korf’s analogy suggests that, just like lifting weights allows one to lift things outside of the gym, a strong theoretical foundation allows students to carry out practical tasks in the workforce. But that’s not really true. A purely theoretical education will leave students unprepared for practical tasks. Just like lifting weights won’t make the average student better at picking up a football and throwing a spiral pass, learning the theoretical foundation of computer science won’t grant students the practical skills necessary for landing a job at Google or Apple.

The department expects students to learn all the practical elements of computer science in their own student-run clubs. But the computer science workforce is a landscape that thrives off the practical skills of recent graduates. Projects and hands-on applications are precisely what employers look for in students seeking full-time positions or internships.

“I think joining a club is super important because we don’t get actual applied CS experience in classes,” said Smayra Ramesh, a first-year computer science student. “I joined CS because of how applicable it is. I’m not necessarily interested in pure back-end software development or theoretical CS.”

And while the department does offer several practical courses, they are hard to come by. That’s not enough for students like Ramesh and others who aren’t interested in an excessive theoretical education without matching practical courses.

If UCLA won’t teach students what computer science clubs are doing in its stead, the least it can do is offer more student-led classes focused on practicality.

“It would be nice to have a few more classes on the practical side. ACM is pushing the department to introduce more student-led classes that focus on that,” said Nathan Yang, the ACM external vice president and fourth-year computer science student. “If I was a second-year, those would have been helpful.”

Classes like those in the Engineering 96 series, which are lower-division, student-led courses, focus on teaching undergraduates hands-on skills. These types of classes not only help Bruins develop applicable skills, but also promote important collaboration among students.

Certainly, Korf has a point: Computer science is fast-moving, and it’s hard to constantly change curricula to match the pace of the industry. It thus makes sense that UCLA has a big focus on students mastering the fundamentals of computer science. But the department seems to be conflating understanding theory with understanding the entirety of the field. Teaching the basic science behind how computers operate teaches you just that; it doesn’t show you how to do things like combine virtual reality with network technology to build an innovative communication utility – one of the many things industries are investing heavily in today.

This misunderstanding is likely the reason the department has passively given students the task of educating themselves.

And so long as the department continues to do so, students will be forced to decide: Join a club to supplement their one-sided curriculum, or settle for never being able to program a robot to throw a spiral pass.

Published by Patrik Bauer

Bauer is an Opinion columnist.

Join the Conversation

6 Comments

  1. This is quite interesting, and we never knew it was happening at UCLA. Thank you for a valuable information. “They say more practical skills are what’s needed to cut it in the field.” => Totally agree.

  2. As a UCLA alum, I disagree with this very strongly. I think Richard Korf’s quote says it all. They’re preparing you for a career. Not the latest fad. I can guarantee that within the next 10 years, all the current frameworks for mobile app development will be replaced with something very different. For reference, think about the different between developing a website on a lamp stack (Linux, Apache, Mysql, and Php) and developing a website with Angular or React. They’re very very different. Teaching a course in web development 10 years ago would have very little relevance to today, and similarly teaching a mobile development course would have little relevance to 10 years from now.

    Instead, teaching paradigms like event-handling and concurrency means that you understand the concepts. So that when it comes to mobile development, you can watch a few youtube videos or take a week-long bootcamp and figure out the details quickly, since you understand the foundational knowledge.

    Also, I’m not sure what you mean by UCLA teaching us C. C++ is the main language of instruction, not C. The only class I remember using C for a majority of the assignments was CS 111, the operating systems development course (for which it’s incredibly relevant today)

    C++ is one of the main programming languages at many companies today. This includes big names such as Google, Facebook and SpaceX, and it also includes most of the videogame industry. Linux is developed in C.

    And the C-syntax is reused in a whole family of languages, including Java, Javascript, and Go. That’s not to say that you know those languages if you know C. But learning them is certainly easier.

    I’m sorry, but this article just seems really bad. It hurts the image of the UCLA computer science department. I thought they did an excellent job of preparing me for my career.

  3. As a current UCLA CS senior, I disagree with this strongly. I think the department is making the steps to offer us the courses we ask for, which is the point of Town Hall. Going to a public school means that these courses will take more time to develop and include as part of the curriculum but that is the nature of things. Additionally, many of the “practical” skills required during a job interview are taught in CS 32, one of the first courses that we take at UCLA. Companies do not expect you to know everything there is about the job before you get there. Becoming familiar with the technology they use is extremely important because every company will do things a little differently. And while it may seem like we are disadvantaged because of our curriculum, UCLA CS graduates typically land very good jobs after graduation.
    There are a multitude of things that this article glazes over rather than being truly critical and I don’t think that the opinions presented in this article should be taken seriously.

  4. This article is very misinformed. Richard Korf is spot on. Internships are for getting industry skills and we have no trouble getting those cause all you need to pass the interview is CS32. You guys are just hurting the image of UCLA with this 🙁

  5. This article is just straight up wrong information… I don’t think any CS interview or internship hands out rejections because one knows too much theory. If anything the more theory one knows the higher one can go. Why else would students strive for a math minor or major to accompany their CS degree. Programming is the easiest part of CS. Anyone with a brain can pick up a language in a weekend and use it. The actual theory behind CS is what helps you go higher. Please take this article down. It is affecting the image of our department.

Leave a comment

Your email address will not be published. Required fields are marked *