Computer Systems

Course Number: CS 271
Transcript Title: Computer Systems
Created: January 26, 2015
Updated: July 10, 2015
Total Credits: 4
Lecture Hours: 40
Lecture / Lab Hours: 0
Lab Hours: 0
Satisfies Cultural Literacy requirement: No
Satisfies General Education requirement: No
Grading options: A-F (default), P-NP, audit
Repeats available for credit: 0

Prerequisites

Course Description

Examines computer systems organization and programming, including computer architectures and hardware, operating systems, and systems programming in C and assembly. Prerequisite: CS 260. Audit available.

Intended Outcomes

Upon successful completion of this course, students will be able to:

  1. Understand basic computer system organization including the operating system (processes, files, virtual memory) and the underlying hardware (CPU, memory hierarchy, I/O).
  2. Understand the compilation system (preprocessing, assembling, compiling, and linking) and the function of object/executable files and shared libraries, as well as how basic tools like debuggers and Makefiles work.
  3. Write C programs to illustrate basic systems programming concepts, including file I/O, system calls, memory management, exception handling and process management. Implement how high-level C programming constructs such as loops and function calls are translated into underlying machine code.
  4. Perform arithmetic in hexadecimal, decimal, and binary notation, and convert among these notations.
  5. Understand how data types such as integers, characters, floating point numbers, arrays, pointers, and structures are normally represented in memory.
  6. Apply the basic instruction set architecture of a commonly-used microprocessor, including the arithmetic/logic instructions, registers, memory model, addressing, and control instructions.  Recognize how exceptions, traps, and context switches occur and how they are handled at the machine level.

Outcome Assessment Strategies

Homework, observation, class discussion, course project, examination.

Course Activities and Design

Lecture, laboratory work, in-class and out-of-class assignments, discussion and examination.

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