BYU CS Logo
Computing That Serves

CS 224

Course Offerings

Section # Semester Instructor Website Description
1 Fall 2017 Frank Jones https://wiki.cs.byu.edu/cs-224/syllabus
2 Fall 2017 Frank Jones https://wiki.cs.byu.edu/cs-224/syllabus
Section # Semester Instructor Website Description
1 Winter 2018 Eric Mercer
2 Winter 2018 Eric Mercer
1 Fall 2017 Frank Jones https://wiki.cs.byu.edu/cs-224/syllabus
2 Fall 2017 Frank Jones https://wiki.cs.byu.edu/cs-224/syllabus
1 Spring-Summer 2017 Paul Roper http://students.cs.byu.edu/~cs224ta
1 Winter 2017 Paul Roper http://students.cs.byu.edu/~cs224ta
2 Winter 2017 Paul Roper http://students.cs.byu.edu/~cs224ta
3 Fall 2016 Paul Roper
4 Fall 2016 Paul Roper
1 Spring-Summer 2016 Paul Roper
1 Winter 2016 Paul Roper
2 Winter 2016 Paul Roper
1 Fall 2015 Paul Roper https://students.cs.byu.edu/~cs224ta
2 Fall 2015 Paul Roper https://students.cs.byu.edu/~cs224ta
1 Spring-Summer 2015 Mark Clement https://students.cs.byu.edu/~clement/cs224/index.php Computer Organization
2 Spring-Summer 2015 Paul Roper https://students.cs.byu.edu/~cs224ta/
1 Winter 2015 Paul Roper http://students.cs.byu.edu/~cs224ta
2 Winter 2015 Paul Roper http://students.cs.byu.edu/~cs224ta
1 Fall 2014 Paul Roper
2 Fall 2014 Paul Roper
3 Fall 2005
3 Fall 2005

Short Summary: 

Introduction to Computer Systems

Credits: 

3

Prerequisites: 

Platform: 

Windows, Eclipse

Language: 

C

Introduction to Computer Systems

How a computer works, from hardware to high-level programming. Logic circuits, computer instructions, assembly language, binary arithmetic, C programming, program translation, data structures, and algorithm analysis.  

This document is not a syllabus. Instead, for ALL offerings of this course, this document states the expected objectives and topics for the course. Faculty members teaching this course should adhere to these objectives and topics. Students taking this course can expect to achieve the objectives and cover the topics specified, and faculty members teaching follow-on courses can expect students to have been appropriately exposed to the prerequisite material as stated. 

Purpose

CS 224 is an introductory course to computer systems. The purpose is to understand the levels of transformation from gates through high level languages in the organization of a modern computer.

Learning Outcomes

At the end of this course, students should be able to:

  1. Perform computations using Boolean logic.
  2. Translate Boolean logic to transistor circuitry.
  3. Use combinational and sequential circuitry to implement an instruction set architecture.
  4. Write a machine code program.
  5. Explain how assembly/C programs are assembled/compiled, linked and executed.
  6. Program solutions to problems in assembly language.
  7. Program solutions to problems in C.
  8. Use C and assembly code together in an application.
  9. Use functions, pointers, and stacks in program design.
  10. Use symbolic debuggers to find problems in programs.

 

Topics

S01: Data Types (4 hours)

Binary Digital System

Integral Data Types

Fractional Data Types

ASCII Characters

 

S02: Digital Logic (4 hours)

Logical/Arithmetic Operations

Digital Logic Devices

Gates, Truth Tables, Equations

Combinational Logic

Logical Completeness

Sequential Logic

Finite State Machine

 

S03: Instruction Set Architecture (4 hours)

ISA

Von Neumann vs. Harvard

RISC / CISC

Computer Instructions

Addressing Modes

Clocks

Instruction Disassembly

 

S04: Microarchitecture (4 hours)

Microarchitecture

Memory Mapped I/O

Instruction Execution Phases

 

S05: Stacks / Interrupts (4 hours)

The Stack

Subroutines

Subroutine Linkage

Stack Operations

Activation Records

Recursive Subroutines

Interrupts

Interrupt Stack Usage

Interrupt Service Routines

Timers

Watchdog Timer

Energy Consumption

Processor Clocks

Low Power Modes

Pulse Width Modulation

 

S06: Assembly (5 hours)

High Level vs. Assembly

Assembler

Assembly Sections

Assembly Directives

Linker

Libraries

Assembly Coding

Systematic Decomposition

 

S07: C Language (4 hours)

High Level Languages

Compilers vs. Interpreters

The C Language

C Symbol Table

C Preprocessor

C Style

Variables

Operators

Expressions

Variable Storage

Variable Scope

Control Structures

C Functions

Subroutine Linkage

Run-time Stack

 

S08: Pointers (4 hours)

Arrays

C Strings

Array Arguments

Pointers

Null Pointers

Pointer Arithmetic

Arrays and Pointers

Static Variables

Parsing

Pointers to Pointers

Multi-dimensional Arrays

Command-line Arguments

 

S09: Structs (4 hours)

Event Driven Programming

enum

typedef's

Structures

structs in structs

Array of structs

struct Pointers

Dynamic Memory Allocation

Linked List

union

Bit fields

 

S10: IO (2 hours)

Standard Libraries

Input/Output

Data Streams

File I/O