Course Outline (Fall-2014) Class: Course: Instructor: BCS/BS-3 (A) CS 2313 Data Structures and Algorithms Muhammad Nadeem Khokhar Class details Class Timing and Room 10:30 - 12:00 Session Day(s) Mon & Wed Credit Hours: 3/class hours(per week) | 0/lab hours(per week) Course Prerequisites: Consultation Time Email Contact # Tue 11:00 - 11:30 [email protected] 051-4863363 051-4863363 Course Description Introduction, Linear Lists (Array Representation, Linked Representation, Simulation Pointers), Arrays and Matrices, Queues, Skip Lists and Hashing, Binary and Other Trees, Priority Queues, Binary Search Trees, Balanced Search Trees, Graphs, Algorithm Design Methods. Course Objective The course is designed to teach students structures and schemes, which allow them to write programs to efficiently manipulate, store, and retrieve data. Students are also exposed to the concepts of time and space complexity of computer programs. Learning Outcomes LO1: Introduction, Linear Lists (Array Representation), Linear Lists (Linked Representation) LO2: Linear Lists (Simulation Pointers), Arrays and Matrices, Queues, Skip Lists and Hashing LO3: Binary and Other Trees, Priority Queues, Binary Search Trees, Balanced Search Trees LO4: Graphs, Algorithm Design Methods Teaching and Learning Methodology The teaching methodology will include classroom lectures. The teaching methodology will include classroom lectures. A mid-term of 2-3 hours, 4 assignments and 4 quizzes will be integral part of the learning process. The number of quizzes may be swapped with homework assignments depending upon how well the students make progress in the class. Materials and Supplies Material will be placed at \\zabfs\Nadeem Khokhar\Notes\Data Structures Expected Class Conduct It is expected that students will observe discipline in the class and will be punctual. Use of mobile phone and conversation with other classmates during the lecture is strictly prohibited. After 10 minutes of the start of the session the classroom door will be locked and the late comers will not be allowed to enter the classroom during the lecture hour. They may join after the break. They will be marked halfpresent in that class. Course Plan Week Chapters Session Topic Assesments 1 Introduction N/A 2 Linear Lists (Array Representation) N/A 3 Linear Lists (Linked Representation - singly) N/A 4 Linear Lists (Linked Representation - Doubly) N/A 5 Stacks N/A 6 Stacks (Applications) N/A 7 Queues N/A 8 Mid-Term N/A 9 Queues (Applications) N/A 10 Trees N/A 11 Trees N/A 12 Graphs N/A 13 Graphs N/A 14 Searching & Sorting N/A 15 Hashing N/A Text Book Data Structures, Algorithms, and Applications in Java, Sahni, null Edition, -,. % Refrence Books 1 Introducing Data Structures with JAVA, David Cousines, null Edition, -,. 2 Data structures and Algorithms in Java, Goodrich and Tamassia, null Edition, -,. 3 Data Structures & Algorithms in JAVA, Lafore, null Edition, -,. 4 Data Structures in JAVA, Standish, null Edition, -,. 5 OO Data Structures using JAVA, Dale, Joyce and Weems, null Edition, -,. 6 Schaums Outline Series - Data Structures, -, null Edition, -,. Course Pre-Requisites None Marks Distribution Marks Head Total Frequency Total Exempted Marks /Frequency Total Marks /Head For D Grade Holder(s) Assignment 8 2 5 30 Included Final Paper 1 0 40 40 Included Mid Term Paper 1 0 30 30 Included Total Marks 100 100 (For DGs) Attendance Policy Prompt arrival and regular attendance are extremely important. For Academic policy refer to student handbook for policies on late entry, maximum absences allowed, leave application etc. Students with Physical or Educational Challenges Students with educational and/or physical challenges are entitled to extra attention and time from the instructor. Therefore students are advised to notify the course instructor at the beginning of the course. Special arrangement may also be made on prior request based on specific challenges. Academic Integrity This course seeks to empower students for independent learning, resourcefulness, clear thinking, and perception. All submitted work and activities should be genuine reflections of individual achievement from which the student should derive personal satisfaction and a sense of accomplishment. Plagiarism and cheating subvert these goals and will be treated according to the policy stated in the Student Handbook. The instructor reserves the right to utilize electronic means to help prevent plagiarism. Comments and/or Suggestions Students and Instructors may contact the Institutional Research Department if there is a need to make suggestions or comments that can help further improve the course. A link is also provided on your ZABDESK account for frequent and trouble-free feedback. The Institutional Research Department would like to hear your feedback about the following: Students Instructors Course Content/ thoroughness Lecture Delivery/Supplementary Material Facilities/Labs/Software/Hardware Support Course alignment with learning outcomes Any other comments/feedback Availability of teaching material Facilities/Internet/Administrative Support Labs: Software/Hardware/Technical support Availability and quality of Teaching Instruments Any other comments/feedback Course Outline Name Mr Muhammad Nadeem Khokhar Semester Fall-2010 Class: Course: Instructor: BCS/BS-3 (A) CS 2313 Data Structures and Algorithms Mr Muhammad Nadeem Khokhar Class details Class Timing and Room 8:30 - 11:30 Room 17 Session Day(s) Thursday Credit Hours: 3/class hours(per week) | 0/lab hours(per week) Course Prerequisites: Consultation Time Thursday 11:30 - 12:30 [email protected] Email Contact # ext 302 Course Description Introduction, Linear Lists (Array Representation, Linked Representation, Simulation Pointers), Arrays and Matrices, Queues, Skip Lists and Hashing, Binary and Other Trees, Priority Queues, Binary Search Trees, Balanced Search Trees, Graphs, Algorithm Design Methods. Course Objective The course is designed to teach students structures and schemes, which allow them to write programs to efficiently manipulate, store, and retrieve data. Students are also exposed to the concepts of time and space complexity of computer programs. Learning Outcomes Teaching and Learning Methodology The teaching methodology will include classroom lectures. Three monthly exams of one hour each and 8 quizzes will be integral part of the learning process. The number of quizzes may be swapped with homework assignments depending upon how well the students make progress in the class. Materials and Supplies Material will be placed at \\zabfs\Nadeem Khokhar\Notes\Data Structures Expected Class Conduct It is expected that students will observe discipline in the class and will be punctual. Use of mobile phone and conversation with other classmates during the lecture is strictly prohibited. After 10 minutes of the start of the session the classroom door will be locked and the late comers will not be allowed to enter the classroom during the lecture hour. They may join after the break. They will be marked halfpresent in that class. Data Structures, Algorithms, and Applications in Java by Sahni Data structures and Algorithms in Java by Goodrich and Tamassia OO Data Structures using JAVA by Dale, Joyce and Weems Data Structures in JAVA, Standish, null Edition, Addison Wesley Course Plan Week 1 Chapters Session Topic Introduction Assesments N/A % 2 Linear Lists (Array Representation) Quiz - 1 3 Linear Lists (Linked Representation) Hourly - 2 4 Linear Lists (Simulation Pointers) Hourly - 1 5 Arrays and Matrices N/A 6 Queues Quiz - 3 7 Skip Lists and Hashing Quiz - 4 8 Binary and Other Trees Hourly - 2 9 Priority Queues N/A 10 Binary Search Trees Quiz - 5 11 Balanced Search Trees Quiz - 6 12 Graphs Hourly - 3 13 Algorithm Design Methods N/A 14 Algorithm Design Methods Quiz - 7 15 Algorithm Design Methods Quiz - 8 Text Book Data Structures and Algorithm Analysis in C++, Mark Allen Weiss, null Edition, Addison Wesley,. Data Structures, Algorithms, and Applications in Java by Sahni Data structures and Algorithms in Java by Goodrich and Tamassia OO Data Structures using JAVA by Dale, Joyce and Weems Data Structures in JAVA, Standish, null Edition, Addison Wesley Refrence Books 1 Data Abstraction and Problem Solving with C++, Frank M. Carrano, Paul Helman ,Robert Veroff, null Edition, Addison-Wesley,. 2 Data Structures and Algorithms (SAMS teach yourself), Lafore, null Edition, Sams Publishing,. 3 4 Fundamentals of Data Structures in C++, Horowitz, Sahni, and Mehta, null Edition, Computer Science Press,. 5 6 Data Structures, Lipchutz, null Edition, Schaum’s Outlines,. 7 Data Structures with C++, Hubbard, null Edition, Schaum’s Outlines,. Course Pre-Requisites None Marks Distribution Total Frequency Marks Head Total Exempted Marks /Frequency Total Marks /Head For D Grade Holder(s) Hourly 3 1 15 30 Included Quiz 8 2 5 30 Included Final Paper 1 0 40 40 Included Total Marks 100 100 (For DGs) Attendance Policy Prompt arrival and regular attendance are extremely important. For Academic policy refer to student handbook for policies on late entry, maximum absences allowed, leave application etc. Students with Physical or Educational Challenges Students with educational and/or physical challenges are entitled to extra attention and time from the instructor. Therefore students are advised to notify the course instructor at the beginning of the course. Special arrangement may also be made on prior request based on specific challenges. Academic Integrity This course seeks to empower students for independent learning, resourcefulness, clear thinking, and perception. All submitted work and activities should be genuine reflections of individual achievement from which the student should derive personal satisfaction and a sense of accomplishment. Plagiarism and cheating subvert these goals and will be treated according to the policy stated in the Student Handbook. The instructor reserves the right to utilize electronic means to help prevent plagiarism. Comments and/or Suggestions Students and Instructors may contact the Institutional Research Department if there is a need to make suggestions or comments that can help further improve the course. A link is also provided on your ZABDESK account for frequent and trouble-free feedback. The Institutional Research Department would like to hear your feedback about the following: Students Course Content/ thoroughness Lecture Delivery/Supplementary Material Instructors Availability of teaching material Facilities/Internet/Administrative Support Facilities/Labs/Software/Hardware Support Course alignment with learning outcomes Any other comments/feedback Labs: Software/Hardware/Technical support Availability and quality of Teaching Instruments Any other comments/feedback Discrete Structures Objectives: The course is designed to teach students structures and schemes, which allow them to write programs to efficiently manipulate, store, and retrieve data. Students are exposed to the concepts of time and space complexity of computer programs. Reference Material: Data Structures and Algorithm Analysis in C++, by Mark Allen Weiss, 2nd edition, Addison Wesley Data Abstraction and Problem Solving with C++, 2nd ed, Frank M. Carrano, Paul Helman, Robert Veroff, Addison-Wesley, 1998. Data Structures and Algorithms (SAMS teach yourself), Lafore, Sams Publishing, 1999. Fundamentals of Data Structures in C++, Horowitz, Sahni, and Mehta, Computer Science Press, 1995. Data Structures in JAVA, Standish, Addison Wesley, 2000 Data Structures, Lipchutz, Schaum’s Outlines Data Structures with C++, Hubbard, Schaum’s Outlines Data Structures with JAVA, Hubbard, Schaum’s Outlines Contents: 1. Programming Techniques, Memory Models 2. Arrays 3. Linked Data Structures 4. Hourly, Stacks 5. Queues 6. Lists 7. Hash Tables 8. Hourly, Recursion 9. Trees 10. Binary Trees 11. Search Trees 12. Hourly, Heaps & Priority Queues 13. Sorting 14. Graphs 15. Miscellaneous Topics & Revision 1. Programming Techniques, Memory Models 2. Array data type, The List abstract data type (ADT), List ADT operations, implementation of List ADT with arrays and linked list. 3. Doubly linked list, Circularly liked list, Stacks (Implementation: Arrays, Linked list), Prefix, Infix and Postfix expressions, infix to postfix conversion. 4. Hourly, Evaluating postfix expression, The Queue ADT (Implementation: Arrays, Linked List), Circular arrays. 5. Priority queue (Implementation: Arrays), Binary trees, Complete binary tree, Application of binary trees. 6. Cost of search in BST, Recursive and non-recursive Traversal, Deleting node in BST. 7. Degenerate BST 8. Hourly, Height balanced BST - AVL trees. 9. Various rotation cases, Deleting node in an AVL tree. 10. Constructing expression trees using stacks, Huffman encoding for data compression, Threaded binary trees. 11. Traversal of threaded binary tree, The Heap ADT. 12. Hourly, Buildheap as linear time operation, Priority queue implementation using the heap ADT, the selection problem, heap sort. 13. Equivalence relations, Disjoint Sets. 14. Table ADT implementation using Hashing, Collision resolution in Hashing. 15. Selection sort, insertion sort, bubble sort algorithms, Divide and conquer strategy: merge sort, quick sort. Lecture No. Lecture Topic 1. Introduction, the Array data type, the List abstract data type (ADT) 2. List ADT operations, implementation of List ADT with arrays and linked list 3. C+++ code for linked lists 4. C++ code for linked list, doubly linked list, circularly liked list, Josephus problem 5. Stacks, stack operations, implementation with arrays 6. Stack implementation with linked list, prefix, infix, postfix expressions, infix to postfix conversion. 7. uses of stacks: evaluating postfix expression, converting infix to postfix form 8. C++ templates, using templates in Stack class 9. Runtime memory organization, runtime stack The Queue ADT, implementing queue ADT using linked list and circular arrays. 10. Uses of queue: simulation, event based simulation of a bank, priority queues. 11. Priority queue Binary trees, definition 12. Complete binary tree, application of binary trees: search for duplicates, binary search tree (BST), implementation using C++. 13. Cost of search in BST, binary tree traversal: preorder, inorder, postorder, recursion 14. Recursive preorder, inorder, postorder traversal, non-recursive traversal using explicit stack, level-order traversal 15. Level-order traversal using a queue, deleting node in BST. 16. C++ code for delete node in BST. The BST class 17. C++ Reference variables 18. C++ Reference variables, the C++ const keyword 19. Degenerate BST, height balanced BST - AVL trees. 20. Inserting in a AVL tree. 21. Inserting in a balanced BST, tree rotation for height balancing 22. Various rotation cases, C++ code for insert with rotations implementation using layout arrays Mid Term 23. C++ code for insert with single and double rotations 24. Deleting node in an AVL tree, other uses of trees: expression trees 25. Constructing expression trees using stacks, Huffman encoding for data compression 26. Building Huffman code tree, generating Huffman code 27. Threaded binary trees. 28. Inorder traversal of threaded binary tree, complete binary tree stored in an array 29. The Heap ADT, implementation of heap ADT using complete binary tree, inserting into a heap. 30. Delete (min) in a heap. Buildheap from a set of data items. 31. Buildheap operation., Heap ADT as a C++ class 32. Proof of Buildheap being a linear time operation. 33. Priority queue implementation using the heap ADT, the selection problem, heap sort. Equivalence relations 34. Equivalence relations, Disjoint Sets 35. Disjoint sets implementation using inverted trees, the Union and Find operations on Disjoint Sets. 36. Optimizing Union and Find operation, Union by size, path compression 37. Uses of Disjoint Sets: Image segmentation, maze generation 38. The Table ADT, implementation using arrays 39. Table ADT implementations using sorted arrays, binary search algorithm on sorted arrays, skip lists 40. Skip lists insertion and deletion 41. Table ADT implementation using Hashing 42. Collision resolution in Hashing 43. Other uses of Hashing, sorting 44. Selection sort, insertion sort, bubble sort algorithms 45. Divide and conquer strategy: merge sort, quick sort. Final Term 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Introduction Arrays Linked List Stacks Queues Lists Hash Tables Recursion Trees Binary Trees Search Trees Heaps & Priority Queues Graphs Sorting Miscellaneous Topics & Revision Course Outline Name Mr Muhammad Nadeem Khokhar Semester Fall-2010 Class: Course: Instructor: BCS/BS-3 (A) CS 2313 Data Structures and Algorithms Mr Muhammad Nadeem Khokhar Class details Class Timing and Room 8:30 - 11:30 Room 17 Session Day(s) Thursday Credit Hours: 3/class hours(per week) | 0/lab hours(per week) Course Prerequisites: Consultation Time Email Contact # Thursday 11:30 - 12:30 [email protected] ext 302 Course Description This course includes algorithm analysis, abstract data types: lists, stacks, queue, trees, hashing, and various sorting algorithms: heapsort, mergesort, quicksort and insertsort. Course Objective The course is designed to teach students structures and schemes, which allow them to write programmes to efficiently manipulate, store, and retrieve data. Students are exposed to the concepts of time and space complexity of computer programmes. Learning Outcomes LO1: Arrays, Linked List LO2: Stacks, Queues, Lists, Hash Tables LO3: Recursion, Trees, Binary Trees, Search Trees LO4: Heaps & Priority Queues, Graphs, Sorting Teaching and Learning Methodology The teaching methodology will include classroom lectures. Three monthly exams of one hour each and 8 quizzes will be integral part of the learning process. The number of quizzes may be swapped with homework assignments depending upon how well the students make progress in the class. Materials and Supplies Handouts will be placed at \\192.168.0.9\Nadeem Khokhar\Notes\Data Structures Expected Class Conduct It is expected that students will observe discipline in the class and will be punctual. Use of mobile phone and conversation with other classmates during the lecture is strictly prohibited. After 10 minutes of the start of the session the classroom door will be locked and the late comers will not be allowed to enter the classroom during the lecture hour. They may join after the break. They will be marked halfpresent in that class. Course Plan Week Chapters Session Topic Assesments 1 Introduction N/A 2 Arrays Quiz - 1 3 Linked Lists Hourly - 2 4 Stacks Hourly - 1 5 Queues N/A 6 Lists Quiz - 3 7 Hash Tables Quiz - 4 8 Recursion Hourly - 2 9 Trees N/A 10 Binary Trees Quiz - 5 11 Search Trees Quiz - 6 12 Heaps & Priority Queues Hourly - 3 13 Graphs N/A 14 Sorting Quiz - 7 15 Miscellaneous Topics & Revision Quiz - 8 % Text Book Data Structures and Algorithm Analysis in C++, Mark Allen Weiss, null Edition, Addison Wesley,. Data Structures, Algorithms, and Applications in Java by Sahni Data structures and Algorithms in Java by Goodrich and Tamassia OO Data Structures using JAVA by Dale, Joyce and Weems Data Structures in JAVA, Standish, null Edition, Addison Wesley Refrence Books 1 Data Abstraction and Problem Solving with C++, Frank M. Carrano, Paul Helman ,Robert Veroff, null Edition, Addison-Wesley,. 2 Data Structures and Algorithms (SAMS teach yourself), Lafore, null Edition, Sams Publishing,. 3 4 Fundamentals of Data Structures in C++, Horowitz, Sahni, and Mehta, null Edition, Computer Science Press,. 5 6 Data Structures, Lipchutz, null Edition, Schaum’s Outlines,. 7 Data Structures with C++, Hubbard, null Edition, Schaum’s Outlines,. Course Pre-Requisites None Marks Distribution Total Frequency Marks Head Total Exempted Marks /Frequency Total Marks /Head For D Grade Holder(s) Hourly 3 1 15 30 Included Quiz 8 2 5 30 Included Final Paper 1 0 40 40 Included Total Marks 100 100 (For DGs) Attendance Policy Prompt arrival and regular attendance are extremely important. For Academic policy refer to student handbook for policies on late entry, maximum absences allowed, leave application etc. Students with Physical or Educational Challenges Students with educational and/or physical challenges are entitled to extra attention and time from the instructor. Therefore students are advised to notify the course instructor at the beginning of the course. Special arrangement may also be made on prior request based on specific challenges. Academic Integrity This course seeks to empower students for independent learning, resourcefulness, clear thinking, and perception. All submitted work and activities should be genuine reflections of individual achievement from which the student should derive personal satisfaction and a sense of accomplishment. Plagiarism and cheating subvert these goals and will be treated according to the policy stated in the Student Handbook. The instructor reserves the right to utilize electronic means to help prevent plagiarism. Comments and/or Suggestions Students and Instructors may contact the Institutional Research Department if there is a need to make suggestions or comments that can help further improve the course. A link is also provided on your ZABDESK account for frequent and trouble-free feedback. The Institutional Research Department would like to hear your feedback about the following: Students Instructors Course Content/ thoroughness Lecture Delivery/Supplementary Material Facilities/Labs/Software/Hardware Support Course alignment with learning outcomes Any other comments/feedback Availability of teaching material Facilities/Internet/Administrative Support Labs: Software/Hardware/Technical support Availability and quality of Teaching Instruments Any other comments/feedback Discrete Structures Objectives: The course is designed to teach students structures and schemes, which allow them to write programs to efficiently manipulate, store, and retrieve data. Students are exposed to the concepts of time and space complexity of computer programs. Reference Material: Data Structures and Algorithm Analysis in C++, by Mark Allen Weiss, 2nd edition, Addison Wesley Data Abstraction and Problem Solving with C++, 2nd ed, Frank M. Carrano, Paul Helman, Robert Veroff, Addison-Wesley, 1998. Data Structures and Algorithms (SAMS teach yourself), Lafore, Sams Publishing, 1999. Fundamentals of Data Structures in C++, Horowitz, Sahni, and Mehta, Computer Science Press, 1995. Data Structures in JAVA, Standish, Addison Wesley, 2000 Data Structures, Lipchutz, Schaum’s Outlines Data Structures with C++, Hubbard, Schaum’s Outlines Data Structures with JAVA, Hubbard, Schaum’s Outlines Contents: 16. Programming Techniques, Memory Models 17. Arrays 18. Linked Data Structures 19. Hourly, Stacks 20. Queues 21. Lists 22. Hash Tables 23. Hourly, Recursion 24. Trees 25. Binary Trees 26. Search Trees 27. Hourly, Heaps & Priority Queues 28. Sorting 29. Graphs 30. Miscellaneous Topics & Revision 16. Programming Techniques, Memory Models 17. Array data type, The List abstract data type (ADT), List ADT operations, implementation of List ADT with arrays and linked list. 18. Doubly linked list, Circularly liked list, Stacks (Implementation: Arrays, Linked list), Prefix, Infix and Postfix expressions, infix to postfix conversion. 19. Hourly, Evaluating postfix expression, The Queue ADT (Implementation: Arrays, Linked List), Circular arrays. 20. Priority queue (Implementation: Arrays), Binary trees, Complete binary tree, Application of binary trees. 21. Cost of search in BST, Recursive and non-recursive Traversal, Deleting node in BST. 22. Degenerate BST 23. Hourly, Height balanced BST - AVL trees. 24. Various rotation cases, Deleting node in an AVL tree. 25. Constructing expression trees using stacks, Huffman encoding for data compression, Threaded binary trees. 26. Traversal of threaded binary tree, The Heap ADT. 27. Hourly, Buildheap as linear time operation, Priority queue implementation using the heap ADT, the selection problem, heap sort. 28. Equivalence relations, Disjoint Sets. 29. Table ADT implementation using Hashing, Collision resolution in Hashing. 30. Selection sort, insertion sort, bubble sort algorithms, Divide and conquer strategy: merge sort, quick sort. Lecture No. Lecture Topic 1. Introduction, the Array data type, the List abstract data type (ADT) 2. List ADT operations, implementation of List ADT with arrays and linked list 3. C+++ code for linked lists 4. C++ code for linked list, doubly linked list, circularly liked list, Josephus problem 5. Stacks, stack operations, implementation with arrays 6. Stack implementation with linked list, prefix, infix, postfix expressions, infix to postfix conversion. 7. uses of stacks: evaluating postfix expression, converting infix to postfix form 8. C++ templates, using templates in Stack class 9. Runtime memory organization, runtime stack The Queue ADT, implementing queue ADT using linked list and circular arrays. 10. Uses of queue: simulation, event based simulation of a bank, priority queues. 11. Priority queue Binary trees, definition 12. Complete binary tree, application of binary trees: search for duplicates, binary search tree (BST), implementation using C++. 13. Cost of search in BST, binary tree traversal: preorder, inorder, postorder, recursion 14. Recursive preorder, inorder, postorder traversal, non-recursive traversal using explicit stack, level-order traversal 15. Level-order traversal using a queue, deleting node in BST. 16. C++ code for delete node in BST. The BST class 17. C++ Reference variables 18. C++ Reference variables, the C++ const keyword 19. Degenerate BST, height balanced BST - AVL trees. implementation using layout arrays 20. Inserting in a AVL tree. 21. Inserting in a balanced BST, tree rotation for height balancing 22. Various rotation cases, C++ code for insert with rotations Mid Term 23. C++ code for insert with single and double rotations 24. Deleting node in an AVL tree, other uses of trees: expression trees 25. Constructing expression trees using stacks, Huffman encoding for data compression 26. Building Huffman code tree, generating Huffman code 27. Threaded binary trees. 28. Inorder traversal of threaded binary tree, complete binary tree stored in an array 29. The Heap ADT, implementation of heap ADT using complete binary tree, inserting into a heap. 30. Delete (min) in a heap. Buildheap from a set of data items. 31. Buildheap operation., Heap ADT as a C++ class 32. Proof of Buildheap being a linear time operation. 33. Priority queue implementation using the heap ADT, the selection problem, heap sort. Equivalence relations 34. Equivalence relations, Disjoint Sets 35. Disjoint sets implementation using inverted trees, the Union and Find operations on Disjoint Sets. 36. Optimizing Union and Find operation, Union by size, path compression 37. Uses of Disjoint Sets: Image segmentation, maze generation 38. The Table ADT, implementation using arrays 39. Table ADT implementations using sorted arrays, binary search algorithm on sorted arrays, skip lists 40. Skip lists insertion and deletion 41. Table ADT implementation using Hashing 42. Collision resolution in Hashing 43. Other uses of Hashing, sorting 44. Selection sort, insertion sort, bubble sort algorithms 45. Divide and conquer strategy: merge sort, quick sort. Final Term 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. Introduction Arrays Linked List Stacks Queues Lists Hash Tables Recursion Trees Binary Trees Search Trees Heaps & Priority Queues Graphs Sorting Miscellaneous Topics & Revision Course Overview Course Synopsis Data Structures is a core course in a typical undergraduate Computer Science Curriculum. The topics covered in the course are among the most fundamental material in all of computer science. The course prepares the students for (and is a prerequisite for) the more advanced material students will encounter in later courses. The course will cover well-known data structures such as dynamic arrays, linked lists, stacks, queues, tree, heap, disjoint sets and table. Three goals will be accomplished: (1) Implement these structures in C++ (2) Determine which structures are appropriate in various situations (3) Confidently learn new structures beyond what's presented in this class Course Learning Outcomes At the end of the course, you should be able to: Understand Abstract Data Types such as Lists, Queues etc. Understand and program Stack operations (Push, Pop, isEmpty) Understand and implement Queue Operations (Insert, Remove) using Linked Lists Describe binary Trees Know about height balanced trees and application of trees Course Calendar Topic Lecture Resource Page Introduction, Array data type, List Abstract Data Type (ADT) 1 Handouts 3-11 List ADT operations, implementation of List ADT with 2 arrays and linked list Handouts 12-20 C++ code for linked lists 3 Handouts 21-33 C++ code for linked list, doubly linked list, circularly linked list, Josephus problem 4 Handouts 34-48 Stacks, stack operations, implementation with arrays 5 Handouts 49-58 Stack implementation with linked list, prefix, infix and postfix expressions, infix to postfix conversion. 6 Handouts 59-65 Assignment No. 1 (Non-Graded) Uses of stacks: evaluating postfix expression, converting infix to postfix form 7 Handouts 66-72 C++ templates, using templates 8 in Stack class Handouts 73-63 Runtime memory organization, runtime stack layout, Queue ADT, implementing queue ADT using linked list and circular arrays. 9 Handouts 84-96 Uses of queue: simulation, event based simulation of a bank, priority queues 10 Handouts 97-107 Assignment No. 2 Priority queue implementation using arrays, Binary trees 11 Handouts 108-125 Complete Binary tree, application of Binary trees: search for duplicates, Binary Search Tree (BST), implementation using C++. 12 Handouts 126-137 Cost of search in BST, binary tree traversal: pre-order, inorder, post-order 13 Handouts 138-148 Recursive pre-order, in-order, post-order traversal, non14 recursive traversal using explicit stack, level-order traversal Handouts 149-159 Quiz No. 1 Level-order traversal using a queue, deleting node in BST 15 Handouts 160-172 C++ code for delete node in 16 Handouts 173-191 BST. The BST class C++ Reference variables 17 Handouts C++ Reference variables, the C++ const keyword 18 Handouts 192-200 Degenerate BST, height balanced BST - AVL trees. 19 Handouts 201-211 20 Handouts 212-221 Inserting in a balanced BST, 21 tree rotation for height balancing Handouts 222-232 Various rotation cases, C++ code for insert with rotations Handouts 233-249 Handouts 250-266 Quiz No. 2 Inserting in a AVL tree. 22 Mid Term Examination C++ code for insert with single and double rotations 23 Assignment No. 3 (Non-Graded) Deleting node in an AVL tree, other uses of trees: expression trees 24 Handouts 267-278 Constructing expression trees using stacks, Huffman encoding 25 for data compression Handouts 279-291 Building Huffman code tree, generating Huffman code 26 Handouts 292-303 Threaded binary trees. 27 Handouts 304-317 In-order traversal of threaded binary tree, complete binary tree 28 stored in an array Handouts 318-330 Assignment No. 4 The Heap ADT, implementation of heap ADT using complete binary tree, inserting into a heap. 29 Handouts 331-345 Delete (min) in a heap. Build 30 Handouts 346-357 heap from a set of data items. Build heap operation. Heap ADT 31 as a C++ class Handouts 358-368 32 Handouts 369-377 Priority queue implementation using heap ADT, selection 33 problem, heap sort. Equivalence relations Handouts 378-386 Equivalence relations, Disjoint Sets 34 Handouts 387-393 Disjoint sets implementation using inverted trees, the Union and Find operations on Disjoint Sets. 35 Handouts 394-406 Optimizing Union and Find operation, Union by size, path compression 36 Handouts 407-419 Uses of Disjoint Sets: Image segmentation, maze generation 37 Handouts 420-426 Quiz No. 3 Proof of Build heap being a linear time operation. Graded Discussion Board (GDB) The Table ADT, implementation 38 using arrays Handouts 427-433 Table ADT implementations using sorted arrays, binary search algorithm on sorted arrays, skip lists 39 Handouts 434-445 Skip lists insertion and deletion 40 Handouts 446-452 Table ADT implementation using Hashing 41 Handouts 453-462 Quiz No. 4 Collision resolution in Hashing 42 Handouts 463-471 Other uses of Hashing, sorting 43 Handouts 472-476 Selection sort, insertion sort, 44 Handouts 478-488 bubble sort algorithms Divide and conquer strategy: merge sort, quick sort. 45 Final Examination Handouts 489
© Copyright 2026 Paperzz