Apr 26, 2024  
2023-2024 General Catalog 
    
2023-2024 General Catalog
Add to Pathway (opens a new window)

CIS 153 - Data Structures


Course Department: Mathematics
Last Date of Approval: Spring 2021

4 Credits
Total Lecture Hours: 45
Total Lab Hours: 30
Total Clinical Hours: 0
Total Work-Based Experience Hours: 0

Course Description:
This course is a continuation of CIS 162 - C++ . It deals with the implementation of user-defined data structures including stacks, queues, linked lists, trees, heaps, and graphs. Object oriented features of C++ and recursion are used to help implement these data structures. This course is one of the required courses in the Computer Programming Languages Certificate Program. The course will help students prepare for a career in computer programming and information services. The course will require students to persevere through challenging problems and manage time to meet deadlines which are both important to everyday life.

Prerequisites: CIS 162 - C++   
Mode(s) of Instruction: traditional/face-to-face, and/or online

Credit for Prior Learning: There are no Credit for Prior Learning opportunities for this course.

Course Fees: None

Common Course Assessment(s): None

Student Learning Outcomes and Objectives:
Outcome 1:   Apply the concepts of Object-Oriented Programming to solve various problems. 
       Task 1:   Define the terms associated with principles of programming and software engineering. 
       Task 2:   Write the definition for a class as it would commonly be listed in a header file. 
       Task 3:   Describe the role of constructors and destructors. 
       Task 4:   Distinguish between routines that are at the application level and the implementation level. 
       Task 5:   State declarations of classes in which inheritance is used. 
       Task 6:   Determine the accessibility of data members and member functions for derived classes. 

Outcome 2:   Apply the principles of recursive functions to solve problems when appropriate. 
       Task 1:  Trace the execution of a recursive function and determine its results.
       Task 2:   Write a recursive function given a description of the action it is to perform. 

Outcome 3:   Apply linked lists, stacks, and queues to solve problems. 
       Task 1:   Write routines that perform given operations on stacks at the application level. 
       Task 2:   Write routines that access data stored in a linked list. 
       Task 3:   Write statements or routines that will make changes in a linked list. 
       Task 4:   Trace the effect of given statements on a linked list. 
       Task 5:   Trace the execution of a routine that uses stack operations. 
       Task 6:   Trace the changes in a stack for given operations using an array- based implementation. 
       Task 7:   Write routines that perform given operations on an array-based stack at the implementation level. 
       Task 8:   Write routines that perform given operations on a pointer-based stack at the implementation level. 
       Task 9:   Write statements that could be used in a list-based implementation of a stack. 
       Task 10: Evaluate postfix expressions. 
       Task 11: Convert infix expressions to postfix expressions. 
       Task 12: Convert postfix expressions to infix expressions. 
       Task 13: Trace the execution of a routine that uses queue operations. 
       Task 14: Write routines that perform given operations on queues at the application level. 
      Task 15: Trace the changes in a queue for given operations using an array-based implementation. 
      Task 16: Write statements that could be used in a list-based implementation of a queue. 

Outcome 4:   Implement binary search tree data structures using C++ constructs. 
       Task 1:   Draw a binary search tree for a given set of data. 
       Task 2:   Use the terminology of trees. 
       Task 3:   Describe specific types of trees. 
       Task 4:   Perform preorder, inorder and postorder traversals of a tree. 
       Task 5:   Write a function that performs given operations on the nodes of a tree. 
       Task 6:   Draw a tree to show the effect of inserting a node. 
       Task 7:   Draw a tree to show the effect of deleting a node. 
       Task 8:   Show how a tree can be stored in an array using either explicit or implicit links.
 
Outcome 5:   Implement heap and graph data structures using C++ constructs. 
       Task 1:   Form a heap using given values. 
       Task 2:   Draw a heap to show the effect of inserting and deleting nodes. 
       Task 3:   Show how a graph can be stored in an adjacency matrix. 
       Task 4:   Traverse a graph using depth-first and breadth-first methods. 
       Task 5:   State a topological order of a directed graph.

Outcome 6:   Compare routines for the sorting of data with regard to the way they  manipulate data, their efficiency and their appropriateness for  specific applications. 
       Task 1:   Trace the execution of a specified sort routine for a given array. 
       Task 2:   Determine which sort routine was used for a given change in an array. 
       Task 3:   Determine the number of times that elements in a given array will be swapped for a specific sort routine.



Add to Pathway (opens a new window)