Enrollment options

Survey basic abstract data types, their associated algorithms, and how they are implemented in C++.

Time: 36
Course Introduction:

When we use programming for problem-solving purposes, data must be stored in certain forms (or data structures) so that operations on that data will yield a specific type of output. Imagine, for example, that a non-profit is having trouble staying afloat and needs more donations. It decides to keep track of its donors in a program to figure out who is contributing and why. The non-profit would first need to define the properties that would define those donors: name, address, amount donated, date of donation, and so on. Then, when the non-profit wants to determine how to best reach out to its donors, it can create a model of the average donor that contributes to the non-profit – say, for example, based on the size of the gift and the donor's geographical location – so that the non-profit can better determine where to focus its marketing.

In this case, the size of the gift and the donor's geographical location are the "data" of the donor model. If the non-profit used this model, it would estimate real donors by first generating an abstract donor. This is an example of using Abstract Data Types (ADTs). ADTs consider the data structure (how data about donors is stored) and provide the necessary operations on that structure. This course will discuss the theoretical and practical aspects of algorithms and data structures. We will also learn to implement Data Structures and algorithms in C/C++, analyze those algorithms, and consider their practical efficiency.

Course Units:
  • Unit 1: Algorithm Efficiency
  • Unit 2: Abstract Data Types and Arrays in C++
  • Unit 3: Pointers and References in C++
  • Unit 4: Dynamic Memory Allocation
  • Unit 5: Introduction to Stacks and Queues
  • Unit 6: Linked Stacks, Queues, and Lists
  • Unit 7: Searching and Sorting Algorithms
  • Unit 8: Hash Tables, Graphs, and Trees
Course Learning Outcomes:
  • Describe Abstract Data Types (ADTs);
  • Interpret ADTs in terms that are native to the C++ computer programming language;
  • Describe basic Composite Data Types (CDTs);
  • Implement solutions using algorithms employing ADTs and CDTs;
  • Analyze algorithms to estimate their computer resource utilization and efficiency; and
  • Contrast sequential and binary search techniques.
Continuing Education Units: 3.6
Self enrollment (Student)