Computer Systems and Organization 1

This is part of the foundational CS courses: courses designed to cover content needed in later CS courses.

Getting Connected

Instructor: Daniel Graham PhD


You should take this course only if

  1. You have credit (or passed the placement test) for at least one of CS 1110, CS 1111, CS 1112, CS 1113, or CS 1120

  2. You do not have credit for CS 2110 or CS 2150

  3. You will know some C- or Java-like language by the middle of the class, as e.g. by one of

    • Having previously taken or being concurrently enrolled in DSA1
    • Having had Java, C, or C++ in your Introduction to Programming course
    • Independent study sufficient to understand this example:
        int example() {
            for(int i = 0; i < 10; i += 1) {
                double j = 3;
                if (i/3 != i/j) return i;
            return 10;
        int example2(int count) {
            if (count <= 0)
                return 0;
            return 1 + example2(count - 1);

      You should be able to describe the use of int, double, braces, semi-colons, and for and why the function example returns 1, not 10. You should also be able to describe why calling example2(10) returns 10, not 1 or 0.

More information about the transition from previous courses to the new foundation may be found at

Scope and Content

In this course, we

  • Begin with how data can be stored as charges in silicon and work up
    • In hardware design, through gates and registers to general-purpose computers.
    • In data representation, through bits and bytes to records, arrays, and pointers.
    • In process representation, through circuits and assembly to C.
  • Learn basic command-line tools and accessing command-line documentation.
  • Practice quite a bit of C coding and using the C standard library.
  • Discuss how security and social topics are related to these ideas.

For the sake of conversing with those familiar with our previous course offerings, this course covers the assembly-and-C half of CS 2150 “Program and Data Representation”; the basics of ECE 2330 “Digital Logic Design”; and the first part of CS 3330 “Computer Architecture”; in addition to having several new topics we felt were under-represented in our previous set of course offerings.

Copyright © 2023 Daniel Graham, John Hott and Luther Tychonievich.
Released under the CC-BY-NC-SA 4.0 license.
Creative Commons License