Imagine if UCLA offered a course in building doghouses. With only 10 weeks, you would expect the class to teach students the basics needed to produce a final product – maybe focusing on how to sketch a blueprint, buy materials at Home Depot and hit hammer to nail.
You wouldn’t expect UCLA to start students in the forest with a theoretical discussion about how best to select and cut wood. There’s no need to go that in-depth on something so peripheral to the course objective.
But this is what UCLA’s mathematics department is doing in its backward approach to teaching students how to code.
UCLA students interested in programming end up taking introductory computer science classes such as Program in Computing 10A: “Introduction to Programming,” a course that teaches basic programming principles using the computer programming language C++. C++ is widely considered the most fundamental of programming languages and requires students to learn about how computers store data and interpret code in order to create functional programs.
There is a simpler programming language, however, known as Python, that many other universities have found to be a more accessible first programming language for students. Python conceals the underlying, nitty-gritty complexities of C++, still allowing students to learn how to solve everyday problems using computers.
UCLA should allow South Campus students to satisfy their computer science course requirement with a course in Python instead of C++ to make computer programming more accessible to non-computer science majors and students not pursuing STEM.
PIC 10A satisfies the computer science prerequisite for students in the sciences, including astrophysics and applied mathematics. Electrical engineering, computer engineering and computer science transfer applicants are also required to have completed a course in C++, such as PIC 10A.
Python, however, is more accessible as a first language because it is an interpreted programming language, while C++ is a compiled language.
In compiled languages, a program is written directly for a machine, using the target machine’s own language. In interpreted languages, however, a program is translated by some other program into instructions for the target machine. In this way, programs written in Python and other interpreted languages more closely resemble English. On the other hand, C++ and other compiled languages are written in a way that more closely resembles what is going on in the computer, which looks like gibberish to the untrained eye.
This simplicity is what makes interpreted languages more accessible to beginner programmers.
“Python gives you enough of an understanding of computing basics without needing you to be an expert in memory, like in C++,” said Elena Escalas, a third-year computer science student. “This makes computer science less intimidating for non-computer science majors.”
Python is even considered a less intimidating program for computer science students. UCLA’s computer science department recently introduced a course, Computer Science 97: “Principles and Practices of Computing,” to better prepare students for introductory classes in C++.
Todd Millstein, a computer science professor who spearheaded the adoption of CS 97, said he thinks Python is an easier language for instructors to teach students basic computer science.
“Python is a lighter-weight language to start with, which makes it easier for students to tackle underlying computer programming concepts,” Millstein said.
For example, it allows students to focus more on problem-solving and developing interesting programs rather than concentrating on lower-level implementation details related to how machines interpret code – knowledge that non-computer science students are unlikely to use after they graduate.
“In the beginning, you want to focus on ideas and on algorithms,” Millstein said. “The point is to learn these ideas so you can then transfer this knowledge into different settings and different languages.”
Python is also more useful than C++ for non-computer science students. The language makes it easy to process and manipulate large sets of data, which is critical in fields such as astrophysics, where researchers work with enormous image sets collected from telescopes and satellites.
However, Chris Anderson, the director of the program in computing within the math department, said he doesn’t think Python would be an adequate introductory programming language because it doesn’t expose students to important aspects of basic programming.
Integrating Python course offerings more thoroughly into the computer science curriculum can also make computer science more accessible.
In 2006, for example, Harvey Mudd replaced its traditional, Java-based course with a Python-based course. As a result, the number of students who became interested in computer science increased. The university concluded that the simplicity and applicability of Python allowed students to better understand the fundamentals and relevance of computer science.
Boston University also changed its introductory computer science course in 2014 to include Python, citing the success Harvey Mudd had with the program.
UCLA needs to take notice of the academic successes of incorporating Python into computer science prerequisites and join the schools committed to getting students out of the woods and into less theoretical, more practical computer science classes.