Skip to main content Skip to secondary navigation


Main content start
CS 106L

Standard C Programming Laboratory

Supplemental lab to 106B and 106X. Additional features of standard C programming practice. Possible topics include advanced C language features, standard libraries, STL containers and algorithms, templates, object memory management, operator overloading, and move semantics. Prerequisite: consent of instructor.




CS 107E

Computer Systems from the Ground Up

Introduction to the fundamental concepts of computer systems through bare metal programming on the Raspberry Pi. Explores how five concepts come together in computer systems: hardware, architecture, assembly code, the C language, and software development tools. Students do all programming with a Raspberry Pi kit and several add-ons (LEDs, buttons). Topics covered include: the C programming language, data representation, machine-level code, computer arithmetic, compilation, memory organization and management, debugging, hardware, and I/O.

CS 110

Principles of Computer Systems

Principles and practice of engineering of computer software and hardware systems. Topics include: techniques for controlling complexity; strong modularity using client-server design, virtual memory, and threads; networks; atomicity and coordination of parallel activities.


CS 140E

Operating systems design and implementation

Students will implement a simple, clean operating system (virtual memory, processes, file system) in the C programming language, on a rasberry pi computer and use the result to run a variety of devices and implement a final project. All hardware is supplied by the instructor, and no previous experience with operating systems, raspberry pi, or embedded programming is required.

ME 210

Introduction to Mechatronics (EE 118)

Technologies involved in mechatronics (intelligent electro-mechanical systems), and techniques to apply this technology to mecatronic system design. Topics include: electronics (A/D, D/A converters, op-amps, filters, power devices); software program design, event-driven programming; hardware and DC stepper motors, solenoids, and robust sensing. Large, open-ended team project.