Course Syllabus

Welcome to CS201: Elementary Data Structures

Specific information about this course and its requirements can be found below. For more general information about taking Saylor Academy courses, including information about Community and Academic Codes of Conduct, please read the Student Handbook.

 

Course Description

Survey basic abstract data types, their associated algorithms, and how they are implemented. Topics discussed include the structures of stacks, queues, lists, sorting and selection, searching, graphs, and hashing; performance tradeoffs of different implementations; and asymptotic analysis of running time and memory usage.

 

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 an increase in donations. It decides it wants to keep track of its donors in a program in order to figure out who is contributing and why. You 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 their 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 location – so that it can better determine who is most receptive to its mission. In this case, the size of the gift and the location are the "data" of the donor model. If the non-profit were to use this model, it would be identifying real donors by first generating an abstract donor. This is an example of using Abstract Data Types. Abstract Data Types both take into account the Data Structure (the way in which data about donors is stored) and provide the necessary operations on that structure. In this course, we 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 both their worst-case complexity and practical efficiency.

This course includes the following units:

  • Unit 1: Abstract Data Types and Arrays in C++
  • Unit 2: Introduction to Stacks and Queues
  • Unit 3: Pointers and References in C++
  • Unit 4: Dynamic Memory Allocation
  • Unit 5: Linked Stacks, Queues, and Lists
  • Unit 6: Algorithm Efficiency
  • Unit 7: Searching and Sorting Algorithms
  • Unit 8: Hash Tables, Graphs, and Trees

 

Course Learning Outcomes

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

  • discuss the general-purpose nature of Abstract Data Types (ADTs):
    • describe ADTs; and
    • summarize specific data types (SDTs) within the context of ADTs.
  • explain elementary data types within the wider context of ADTs:
    • interpret the three elementary data types that are native to C/C++ (scalars, vectors, multi-dimensional arrays) within the context of ADTs;
    • demonstrate the use of scalars, vectors, and multi-dimensional arrays;
    • show how scalars are used to build vectors; and
    • show how vectors can be used to build multi-dimensional arrays.
  • identify the five basic Composite Data Types (CDTs):
    • define the five basic CDTs (lists, stacks, queues, trees, graphs, hash tables);
    • relate an application's requirements to an appropriate CDT; and
    • implement solutions to applications requiring one or more of the five basic CDTs.
  • examine algorithms to determine their computer-resource utilization:
    • define Big-O analysis;
    • explain why Big-O analysis is important to algorithm design and selection;
    • distinguish between Big-O analysis, counting program steps, and counting lines of executable code; and
    • organize search and sort algorithms according to their Big-O resource utilization growth curve.
  • contrast sequential and binary search techniques:
    • define sequential search and name its primary attributes;
    • define binary search and name its primary attributes; and
    • compare the resource utilization curves of sequential and binary search as data-size increases.

Throughout this course, you will also see learning outcomes in each unit. You can use those learning outcomes to help organize your studies and gauge your progress.

 

Course Materials

The primary learning materials for this course are articles, lectures, and videos.

All course materials are free to access and can be found in each unit of the course. Pay close attention to the notes that accompany these course materials, as they will tell you what to focus on in each resource, and will help you to understand how the learning materials fit into the course as a whole. You can also see a list of all the learning materials in this course by clicking on Resources in the navigation bar.

 

Evaluation and Minimum Passing Score

Only the final exam is considered when awarding you a grade for this course. In order to pass this course, you will need to earn a 70% or higher on the final exam. Your score on the exam will be calculated as soon as you complete it. If you do not pass the exam on your first try, you may take it again as many times as you want, with a 7-day waiting period between each attempt. Once you have successfully passed the final exam you will be awarded a free Course Completion Certificate.

There are also end-of-unit assessments in this course. These are designed to help you study, and do not factor into your final course grade. You can take these as many times as you want until you understand the concepts and material covered. You can see all of these assessments by clicking on Quizzes in the course's navigation bar.

 

Tips for Success

CS201: Elementary Data Structures is a self-paced course, which means that you can decide when you will start and when you will complete the course. There is no instructor or an assigned schedule to follow. We estimate that the "average" student will take 38 hours to complete this course. We recommend that you work through the course at a pace that is comfortable for you and allows you to make regular progress. It's a good idea to also schedule your study time in advance and try as best as you can to stick to that schedule.

Learning new material can be challenging, so we've compiled a few study strategies to help you succeed:

  • Take notes on the various terms, practices, and theories that you come across. This can help you put each concept into context, and will create a refresher that you can use as you study later on.
  • As you work through the materials, take some time to test yourself on what you remember and how well you understand the concepts. Reflecting on what you've learned is important for your long-term memory, and will make you more likely to retain information over time.

 

Suggested Prerequisites[If applicable]

In order to take this course, you should:

 

Technical Requirements

This course is delivered entirely online. You will be required to have access to a computer or web-capable mobile device and have consistent access to the internet to either view or download the necessary course resources and to attempt any auto-graded course assessments and the final exam.

  • To access the full course including assessments and the final exam, you will need to be logged into your Saylor Academy account and enrolled in the course. If you do not already have an account, you may create one for free here. Although you can access some of the course without logging in to your account, you should log in to maximize your course experience. For example, you cannot take assessments or track your progress unless you are logged in.

For additional guidance, check out Saylor Academy's FAQ.

 

Fees

This course is entirely free to enroll in and to access. Everything linked in the course, including textbooks, videos, webpages, and activities, is available for no charge. This course also contains a free final exam and course completion certificate.

Last modified: Friday, September 25, 2020, 5:34 PM