cs240lx
CS240lx is a hands-on computer science course focused on writing low-level code that runs directly on Raspberry Pi hardware without an operating system. The practical benefit: you get to build powerful systems tools and optimizations that normally require fighting through layers of operating system complexity. You'll write code that controls hardware directly, which is the kind of knowledge that even experienced programmers often lack.
The course assumes you've already taken a prerequisite course (CS140e) or have equivalent embedded systems knowledge. From there, it launches into advanced techniques: writing code that modifies itself while running, building custom circuit boards, creating tools that detect memory bugs by monitoring CPU faults, and squeezing performance out of hardware in ways that standard software approaches can't match. You'll also work with different communication protocols and devices like accelerometers, light arrays, and long-range radio modules. Each lab builds real, working tools—not just theory.
This is genuinely difficult coursework with strict rules: labs must be submitted within one week of release with no exceptions (except for documented conflicts like conference presentations), and students cannot use AI tools like ChatGPT for any lab work. The instructors made this call because the course has a small teaching staff managing a heavy workload, and they want students to actually understand how the systems work from first principles. The class format is two evenings a week (ending around 10:30pm rather than 1am like the prerequisite), with pizza provided, and tends to attract students who found the foundational course fun and want to go deeper.
The actual labs vary year to year based on student interest, but always include self-modifying code, custom PCB design, and building profiling tools that measure CPU cycles and cache misses. Other common projects involve pushing Raspberry Pi performance to its limits, experimenting with different wireless communication methods, and combining sensors into standalone gadgets like acoustic-reactive displays or oscilloscopes. By the end, students typically have a portfolio of low-level systems work that demonstrates real understanding of how computers actually work.