Escolar Documentos
Profissional Documentos
Cultura Documentos
Course Title: data structure and algorithms Course code: Credit hour: 3 hrs ECTs 5 Instructor Name: Abrha G . Office: @ Informatics College 1st floor Targeted group: Course Objective To have a good understanding of algorithm analysis techniques, computational and asymptotic complexity, Big-O, , , and little-o notations. To be able to write complexity functions for simple pieces of C++ code, and state their asymptotic complexity. To be able to describe the different types of linked list, and be able to implement them in C++. To be able to describe the different types of stacks and queues, and be able to implement them in C++. To be able to describe the different types of binary trees, and be able to implement them in C++. To be able to describe the nature and efficiency of different types of sorting algorithms. To be able to describe what is meant by hashing, hashing functions, and collision resolution in hashing. Course Description This course introduces Data Structures (Linear ,non-Linear Data Structures) and Algorithm Analysis Concepts, Measuring Complexity, Complexity of Algorithm Big-O Notation. Simple Sorting and Searching Algorithms (Bubble Sort, Insertion Sort, Selection Sort, Sequential Searching, Binary Searching.). Abstract Data Types, Structures, Pointers, Arrays, Linked Lists, Stacks, Queues, Trees, Graphs. Advanced Sorting and Searching Algorithms (Shell Sort, Quick Sort, heap Sort, Merge Sort, and Hashing)
e-mail:
1.2 Algorithms Properties of an algorithm Algorithm Analysis Concepts Complexity Analysis o Analysis rules o Formal Approach to Analysis
2.2 Measures of Times 2.3 Asymptotic Analysis The Big-Oh Notation o Big-O Theorems o Properties of the O Notation Big-Omega Notation Theta Notation Little-o Notation Little-Omega Notation 2.4 Relational Properties of the Asymptotic Notations
Chapter 2
Chapter 3
Insertion Sort Selection Sort Bubble Sort Data Structures 3.1 Introduction
Accessing Members of Structure Variables
Self-Referential Structures
Creating Linked Lists in C++
Defining the data structure for a linked list
Adding a node to the list Displaying the list of nodes Navigating through the list Deleting a node from the list 3.3 Doubly Linked Lists
3.5 Stacks
Array Implementation of Stacks: The PUSH operation Array Implementation of Stacks: the POP operation Linked List Implementation of Stacks: the PUSH
operation Linked List Implementation of Stacks: the POP Operation Applications of Stacks o Evaluation of Algebraic Expressions o Infix to Postfix (RPN) Conversion o Function Calls 3.6 Queue
Chapter 4
Chapter 5
Tree Terminologies Data Structure of a Binary Tree Operations on Binary Search Tree o Insertion o Traversing - Breadth-first - Depth-first - Stackless depth-first o Application of binary tree traversal o Searching o Deletion Self-adjusting trees Heaps Polish notation and expression trees Graphs Advanced Sorting Algorithms Shell Sort Quick Sort Heap Sort Merge Sort Hashing Hash functions Collision resolution
Reference books:
Data Structures and Algorithms in C++ by A. Drozdek (Brooks/Cole, 2001). Assessments and Evaluation: Assignments, Tests. Mid Exams, final Exam, Project