Course Outline

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