Data Placement

Course Number: CS 163
Transcript Title: Data Placement
Created: January 26, 2015
Updated: July 16, 2019
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


Course Description

Explores the storage of data within a computer, focusing on aspects of placement that are necessary to efficiently sort, search, traverse, and manipulate simple data structures, manage dynamic memory, and leverage the memory hierarchy. Prerequisite: CS 161. Audit available.

Intended Outcomes

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

  1. Apply C++ to programming problems.
  2. Program using functions with pass by reference, arrays of structures, classes, pointers, dynamic memory, and linear linked lists.
  3. Program using binary search trees and doubly-linked lists.
  4. Select the proper sorting algorithm for a problem.
  5. Assess the performance impact of hardware features such as pipelining, and architectural principles such as memory locality.
  6. Identify performance bottlenecks in C/C++ programs.

Outcome Assessment Strategies

Homework, observation, class discussion, examination.

Course Activities and Design

The determination of teaching strategies used in the delivery of outcomes is generally left to the discretion of the instructor. Here are some strategies that you might consider when designing your course: lecture, small group/forum discussion, flipped classroom, dyads, oral presentation, role play, simulation scenarios, group projects, service learning projects, hands-on lab, peer review/workshops, cooperative learning (jigsaw, fishbowl), inquiry based instruction, differentiated instruction (learning centers), graphic organizers, etc.

Course Content (Themes, Concepts, Issues and Skills)

  • C++
  • memory model
    • pointers
    • arrays
    • linked lists
    • heap allocation
  • functions
    • stack allocation
    • stack frames
    • call by reference
    • call by value
  • data structures
    • matrices
    • trees
    • graphs
  • architecture
    • cache
    • spatial locality
    • temporal locality
    • pipelining
  • profiling