6.004 offers an introduction to the engineering of digital systems.
Starting with MOS transistors, the course develops of series of
building blocks -- logic gates, combinational and sequential circuits,
finite-state machines, computers and finally complete systems. Both
hardware and software mechanisms are explored through a series of
design examples.

6.004 is required material for any EECS undergraduate who wants to
understand (and ultimately design) digital systems. A good grasp of
the material is essential for later courses in digital design,
computer architecture and systems. Before taking 6.004, students
should feel comfortable using computers; a rudimentary knowledge of
programming language concepts and electrical fundamentals
is assumed.

The problem sets and lab exercises are intended to give students
"hands-on" experience in designing digital systems; each student
completes a gate-level design for a RISC processor during the
semester. Access to workstations as well as help from the course
staff is provided in the lab but it is possible to complete the
assignments using Athena machines or one's home computer. Students
are encouraged to get help from others in understanding the material,
but the designs and measurements they hand in must be their own work.