design of a microcomputer laboratory for teaching computer science
On the premise that many of the fundamental concepts of computer science can be better taught in a hands-on, dedicated computing environment (i.e., a microcomputer), as opposed to a large multi-purpose system in which the student is insulated from the machine by multiple layers of operating system software, we have developed a microcomputer-based lecture/lab course to teach CPU organization, digital computer architecture, and assembly language programming as a third undergraduate course in computer science. By beginning with simple machine organizations and simple assembly languages, and later on making a transition toward more complex architectures and languages, the transfer of knowledge and experience is positive at every step. The same laboratory also supports a graduate course in microcomputer systems design which teaches hardware technology, component specification, operating system design, hardware/software tradeoffs, and practical applications such as process control. This paper outlines the motivation and justification for the project, and then discusses the actual design of these courses and their supporting laboratory. This project is supported in part by two grants from the National Science Foundation: SER-7915929 for the acquisition of the microcomputer equipment and SER-8000802 for the development of the undergraduate course material.
design microcomputers computation laboratory teaching computer science science concept environments systems layer operating system software developer organization digitize architecture assemblers language program transit complexity knowledge experience posit system design hardware technologies component practical applications process control paper motivation project material computer systems design laboratory