In CS 107E: “Computer Systems from the Ground Up,” students receive a small single-board computer on the first day of class and build their own hardware-software system by the end of the quarter. Initially offered as an alternative to CS 107: “Computer Organization and Systems” in 2015, CS 107E started out with a class size of just 20 students but has since grown in size and popularity.
As of mid-February, 91 students are vying for the 40 available seats in this spring’s CS 107E class. Students interested in the course show up to the first class and fill out a questionnaire.
Computer science and electrical engineering professor Pat Hanrahan, who is teaching the class this quarter along with senior lecturer Julie Zelenski ’89 M.S. ’96, highlighted that the goal of the course is to broaden the appeal of computer science.
“We wanted to create a maker’s version of the course, so the E stood for ‘embedded computing’ initially,” said Hanrahan. “We wanted it to be more physical and hands on, and we thought that there would be people who had used Arduinos, or did robotics club, that might think of computer science as too abstract.”
Hanrahan further explained that they are primarily accepting freshman and sophomores in order to create a less intimidating environment. Zelenski also clarified that the course is not a more advanced version of CS 107, but rather has a different focus.
“We have a couple courses like 106X, [which] is the alternative to 106B, but it’s really trying to attract an advanced or accelerated student,” said Zelenski. “107E is not about that. We’re not 107X.”
Students in CS 107E learn similar skills taught in CS 107 but with a more hands-on approach. The class is taught in the C programming language, and students learn command-line programming tools. The instructors also provide starter code to help students begin assignments. However, instead of using existing libraries with pre-written functions, the assignments involve students writing the libraries themselves. Students use their libraries to build different aspects of a computer, from the machine’s clock to its keyboard.
“The assignments in 107 are somewhat independent of each other, but in 107E, they are literally using code they wrote last week in order to do the next assignments,” said Hanrahan. “They end up essentially building an Apple II.”
The class has no exams and culminates in a final project. Past final projects include a “bike lock breathalyzer” that uses an alcohol sensor to control a bike lock, an audio visualizer that maps sounds to colorful graphics and a glove that translates ASL signs to letters.
Since 2015, the class has only been offered once or twice a year, but computer science faculty are considering offering the class all three quarters next year. Hanrahan emphasized that instructors will keep the class at this current size despite its growing popularity.
Current CS 107E student Kathy Huang ’21 says that the small size makes for an welcoming environment even though the material is challenging.
“It’s really nice to have a small class size,” said Huang. “This is the only class that I go to office hours for because I feel like the TAs know everyone now, and they remember our names, which is not necessarily the case with a giant class like 106B.”
Contact Sterling Alic at salic ‘at’ stanford.edu.