CS270 - Computer Organization - History

Year Fall Spring
2022-23 web page (Wakefiled) web page (Wakefiled)
2021-22 web page (Sharp) web page (Sharp)
Summer 21 web page (Sharp)
2020-21 web page (Sharp) web page (Sharp)
Summer 20 web page (Sharp)
2019-20 web page (Sharp) web page (Sharp)
Summer 19 web page (Sharp)
2018-19 web page (Wakefield) web page (Wakefiled)
2017-18 web page (Matthews/Malaiya) web page (Matthews)
2016-17 web page (Rajopadhye/Calderon Jaramillo) web page (Rajopadhye)
2015-16 web page (Wilcox/Malaiya) web page (Wilcox)
2014-15 web page (Wilcox) web page (Applin)
2013-14 web page (Rajopadhye) web page (Wilcox)
2012-13 web page (Strout) web page (Malaiya)
2011-12 web page (Rajopadhye) web page (Rajopadhye)
2010-11 web page (Wilcox) web page (Rajopadhye)
2009-10 web page (Malaiya) web page (Malaiya)
2008-09 web page (Strout) web page (???)
2003-04 web page (Van Howbert) web page (Van Howbert)
2002-03 web page (Van Howbert/Malaya) web page (Van Howbert)

From CSU Course catalog

Course Description: Data representation, arithmetic, assembly and C language, digital logic and systems, Boolean algebra, circuits, CPU and memory models, state machines.

Book

Introduction to Computing Systems, from bits and gates to C and beyond Patt and Patel (second edition)

Big picture

While there is some variation in the material taught semester to semester, it follows the outline from Strout, with modifications by Wilcox, Sieker, and others. It breaks the course into three approximately equal sections.
  1. C programming. The emphasis is on features of C that students have not experienced in other courses. This is mostly dynamic memory management (malloc/free), pointers and bitwise operators (masking). Assignments typically include floating point math using integers to teach number formats, and building a symbol table to teach dynamic memory management. The latter asignment is designed to be reused if the students are assigned a big projext (LC3 simulator and/or assembler) in part of the course. Another typical C assignment requires students to convert ascii strings to integers (the C atoi() equivalent) and back again (printf() for numbers, using recursion).

    Some instructors continue C assignments throughout the semester often culminating in writing either the assembler or simulator for the LC3 machine. This illustrates living with your own code, a program split over multiple files, and is beneficial for CS253.

  2. Assembly language programming. The student learn a simple assembly language (LC3) and learn to translate C to assembly. The students learn how subroutines work and various methods for communicating between routines. This include using global variables, registers and lastly the stack. The last assignment is typically a recursive function with everything passed via the stack. This is designed to solidify their understanding of activation records. The LC3 string library assignments are designed to reinfore C library concepts, particularily the handling of strings.

    At the same time, they learn the basic architecture, with the ALU, registers and control on the CPU and using the bus to communicate with memory. The architecture uses memory mapped I/O.

  3. Hardware. In this section they learn the basics of digital design beginning with transistors, then gates, then circuits. The final assignment may implement a state machine, sometimes the entire LC3 hardware. The work is performed with a design tool called Logisim. The section overlaps with the previous section using the LC3 visualizer to understand how the computer actually executes instructions over multiple cycles. The student undrstands how various control signals cause individual sub-oberations of an instruction to be performed.

Sample Assignments

The following are examples of the types of assignments used in the course.