Portland Community College | Portland, Oregon

Course Number:
CS 201
Course Title:
Computer Systems
Credit Hours:
Lecture Hours:
Lecture/Lab Hours:
Lab Hours:
Special Fee:

Course Description

Introduces computer systems from a software perspective. Provides an overview of C and assembly language programming and reading skills. Explores basic systems programming skills and tools to measure and improve program performance based on an understanding of key aspects of machine architecture. Prerequisites: CS 162. Recommended: CS 140U. Audit available.

Addendum to Course Description

Students will complete several lab/programming exercises techniques. This course is transferable to a four year institution and is applicable toward an Associate of Science or Associate of Applied Science Degree.

Intended Outcomes for the course

Upon completion of this course, students should be able to:
" Employ a deep knowledge of computer systems architecture to enhance the correctness, performance, and utility of the application or system software that they may write.
" Identify how such programs work and how to troubleshoot and fix them when they break.
" Be successful in subsequent college level Computer Science coursework.

Outcome Assessment Strategies

Students will demonstrate, on exams or lab assignments, the following:

  • An understanding of internal data representation and manipulation.
  • An ability to understand machine-level representation of programs.
  • An understanding of linking, loading, and relocation.
  • An understanding of exceptions and interrupts.
  • An understanding of system calls.
  • The issues involved in measuring performance and program execution time.
  • Storage technology and memory hierarchies.
  • Memory allocation.

Course Content (Themes, Concepts, Issues and Skills)

  • Basic Machine Organization
  • C Programming (I/O, command line arguments, pointers, arrays, structures)
  • Intro to System Programming Tools (gcc, makefile, gdb)
  • Data Representation (bits & bytes, characters, integers, floating point numbers)
  • Introduction to Assembly Language (Encoding, Accessing Information, Operations, Embedded Assembly)
  • Control Flow at Machine Level
  • Stack-based Procedure Calls at Machine Level
  • Complex Data types at Machine Level and Alignment
  • Linking and Loading
  • Exceptions and Interrupts
  • Processes, Process Control, Signals
  • processes and process control
  • System Calls and File I/O
  • Performance Optimization
  • Timing using System Calls and Cycle Counters
  • Introduction to Memory Hierarchy and Dynamic Memory Allocation