Microprocessors and Toys: An Introduction to Computing Systems

Project: Propose, design, build, and demonstrate your own microprocessor-based educational toy

As microprocessors have become smaller and less expensive, they have become embedded in many everyday devices, including toys: from small handheld games to sizable remote-control toy airplanes. In fact, some of the most advanced toys nowadays consist of tried and true toys of yesteryear enhanced with microprocessors to allow remote control, more realistic sounds, and intelligent interaction with their environments.

The goal of this section is for students to experience the complete life cycle of a substantial, creative project in computer science and engineering. Student teams in this section propose, design, build, and demonstrate their own microprocessor-based educational toy.  In the first half of the course, you will learn how to create digital logic circuits and use this knowledge to implement and program a working microprocessor on a field-programmable gate array (FPGA).  In the second half of the course, your team designs, builds, and demonstrates their own educational toy.  The toy is implemented as an assembly-language program running on the team’s own microprocessor.  Toys use a variety of I/O devices, such as a speaker, microphone, keyboard, mouse, LCD and VGA displays, secure digital card, serial port, and FFT co-processor.

Through the project, you will learn technical communication, teamwork, and problem solving. You will write and present reports throughout the semester on the motivation, design, and implementation of your educational toy.  Lectures cover topics such as number representation, digital circuits, assembly-language programming, computer architecture, I/O devices, digital audio, technical communication, teamwork, and societal, environmental, and ethical implications of computing systems.  The assignments for the course include weekly labs in the first half of the semester, the main project in the second half of the semester, and written and oral reports throughout.

Prior programming experience is required (e.g., from a high school class or ENGR 101, or by being self taught).  You should be comfortable using the following programming concepts: variables, if-then-else statements, loops, functions, and arrays.

The class provides a good overview of computer engineering and of low-level computer science.