Portland Community College | Portland, Oregon Portland Community College

CCOG for CS 201 Spring 2024

View archive version »
Course Number:
CS 201
Course Title:
Computer Systems
Credit Hours:
4
Lecture Hours:
30
Lecture/Lab Hours:
0
Lab Hours:
30

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 and MTH 65 or any MTH course for which MTH 65 is a prerequisite. Audit available.

Addendum to Course Description

Students will complete several lab/programming exercises and 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 the course students should be able to:

  • Describe and analyze computer systems architecture to enhance software performance, correctness, and utility.
  • Resolve software failures involving issues of computer systems architecture.

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