CIS 384 Elements of Computer Systems (3)

Catalog Description:

Through a series of hardware and software tasks, students are introduced to the lower level design and operation of computers. Topics include computer hardware, computer architecture, assembly language, high-level languages and compiler design. (Offered fall semester only.)


CIS 284 Computer Programming II; programming in a high-level language, such as Pascal.

Required Course Materials:

Noam Nisan and Shimon Schocken, The Elements of Computer Systems: Building a Modern Computer from First Principles, 1st edition, MIT Press, 2008 (ISBN: 978026214087)

Course Coordinator:

David R. Owen, Associate Professor of Computer Science

Course Audience:

Computer and Information Science majors and minors

Course Objectives:


  1. To construct a simplified computer processor from lower-level digital electronic devices.
  2. To write simple programs in that processor architecture’s assembly language.
  3. To write an assembler that translates from that assembly language to a machine language that can be executed on that processor.
  4. To write a compiler that translates from a high-level programming language to that assembly language.
  5. To write simple programs in that high-level language.
  6. To develop skills in computer programming related to translating from one data representation into another; to describe trade-offs inherent in different data representations.


  1. Boolean logic, binary arithmetic
  2. Design of combinational and sequential logic circuits
  3. Computer architecture, machine language
  4. Assembly language
  5. Two-step process for translating from high-level to assembly language (stack-based intermediate language)
  6. Compilation (syntax analysis, code generation)


Revised: February 2013 (course renumbering); September 2011 (major revisions due to course restructuring;, July 2011 (title & catalog description)

Return to Course Index