Course Title: Data Structures and Algorithms Program: BICTE
Course No. : ICT. Ed. 435 Nature of course: Theoretical + Practical
Level: Bachelor Credit Hour: 3 hours (2T+1P)
Semester: Third Teaching Hour: 64 hours (32+32)
1. Course Description
The purpose of this course is to provide the students with solid foundations in the
basic concepts of data structures and algorithms. The main objective of the course is
to teach the students how to select and design data structures and algorithms that are
appropriate for problems that they might occur. This course is also about showing the
correctness of algorithms and studying their computational complexities. This course
offers the students a mixture of theoretical knowledge and practical
experience. Programming language C will be used for practical work.
2. General Objectives
The general objectives of this course are as follows:
To introduce data abstraction and data representation in memory
To describe, design and use elementary data structures such as stack, queue, linked
list, tree and graph
To decompose complex programming problems into manageable sub-problems
To introduce algorithms and their complexity
3. Specific Objectives and Contents
Specific Objectives Contents LH
Define Data structure and Unit 1: Introduction to Data Structures & Algorithms 5
ADT 1.1 Data type and Abstract data types
Define algorithms and its 1.2 Data structures : linear and non-linear, static and
types and asymptotic dynamic
notations 1.3 Algorithms
1.3.1 Greedy algorithm
1.3.2 Divide and Conquer
1.3.3 Backtracking
1.3.4 Randomized algorithms
1.4 Analysis of Algorithms
1.4.1 Big O notation and its rule
Demonstrate relationship Unit 2: Arrays, Pointers and Structures 6
between array and pointer 2.1 Array and Pointer
Implement structure 2.2 Structure and Pointer
pointers and self-referential 2.2.1 Structure pointer
pointer 2.2.2 Self-referential pointer
Allocate memory 2.3 Dynamic Memory Allocation: malloc, calloc, realloc, free
dynamically using malloc,
calloc, realloc and free Practical Works
functions 2.1 Write program to illustrate memory allocation
dynamically.
1
Define linked list its type Unit 3: Linked Lists 8
and applications 2.2 Single Linked list: traversing, searching, inserting and
Implement different types of deleting in single linked list
linked list with its 2.3 Doubly Linked List: traversing, inserting, creating and
operations deleting in doubly linked list
Make comparison between 2.4 Circular Linked List: traversing, inserting, creating and
array list and linked list deleting in circular linked list
2.5 Comparison of Array list and Linked list
Practical Works
3.1 Write a program to implement singly, doubly and circular
linked list operations
Define and implement stack Unit 4: Stack 6
and stack operations 2.6 Introduction
Convert expressions in to 2.7 Array Implementation of Stack
2.8 Linked List Implementation of Stack
different forms: infix, prefix
and postfix 2.9 Applications of Stack
Describe the applications of 2.9.1 Conversion from infix to postfix expression
the stack 2.9.2 Evaluation of postfix expressions
Practical Works
4.1 Write program to create stack with array and linked list
implementation
4.2 Write program to illustrate expression conversion and
expression evaluation
Define queue and its Unit 5: Queue 6
operations 2.10 Introduction
Implement different types of 2.11 Array Implementation of Queue
queue 2.12 Linked List Implementation of Queue
2.13 Circular Queue
2.14 Priority Queue.
Practical Works
5.1 Write a program to implement linear, circular and priority
queue with array and linked list
Define recursion. Unit 6: Recursion 4
Differentiate between 2.15 Introduction
recursion and iteration 2.16 Examples of Recursion: factorial, fibonacci sequence,
Implement recursion to Tower of Hanoi(TOH)
solve TOH and Fibonacci 2.17 Applications and Efficiency of recursion
series Practical Works
6.1 Write a program to solve the problem of TOH
6.2 Write a program to print Fibonacci series
6.3 Write a program to calculate factorial
Define tree and tree Unit 7: Trees 8
operations 2.18 Introduction
Create and manipulate 2.19 Binary Tree : Construction, Traversal (pre-order, in-
2
Binary tree, BST, AVL tree order, post-order)
2.20 Binary Search Tree: Construction, Traversal
2.21 AVL tree: Construction, Traversal
2.22 Heap: Building a heap
Practical Works
7.1 Write program to implement binary tree.
7.2 Write program to implement binary search tree
7.3 Write program to implement AVL tree
Define sorting and its type Unit 8: Searching, Sorting and Hashing 15
Demonstrate hashing 2.23 Introduction
Illustrate and implement 2.24 Sequential and Binary Search
bubble, selection, insertion, 2.25 Hashing: Hash function (truncation, division method,
merge, quick and heap sort. folding, midsquare)
Implement searching 2.26 Hash collision and resolution techniques
algorithms 2.27 Sorting Algorithms: Bubble, Selection, Insertion,
Identify and compare the Merge, Quick and Heap Sort
efficiency of mentioned 2.28 Efficiency of Sorting Algorithms
sorting algorithms Practical Works
8.1 Write program to implement:
a) Bubble sort b) Selection sort c) Insertion sort
d) Quick sort e) Merge sort f) Heap sort
8.2 Write program to implement searching algorithms: binary
search and linear search
8.3 Write program to implement hash function.
Define graph and graph Unit 9: Graphs 6
terminologies 2.29 Graph Terminology
Explain and implement 2.30 Directed and undirected graph
graph traversal algorithms 2.31 Graph Traversal: BFS and DFS
Find the shortest path using 2.32 Minimum Spanning Trees: Kruskal Algorithm
Dijkstra's Algorithm 2.33 Shortest Path Algorithms: Dijkstra’s Algorithm
Define MST and implement Practical Works
kruskal's 9.1 Write a program to implement graph traversal
algorithms : BFS and DFS
9.2 Write program to implement Kruskal algorithm and
Dijkstra’s algorithm
4. Instructional Techniques
The instructional techniques for this course are divided into two groups. First group
consists of general instructional techniques applicable to most of the units. The second
group consists of specific instructional techniques applicable to particular units.
4.1 General Techniques
Reading materials will be provided to students in each unit. Lecture, Discussion, use of
multi-media projector, brain storming, and problem solving methods are used in all
units.
3
4.2 Specific Instructional Techniques
Demonstration is an essential instructional technique for all units in this course during
teaching learning process. Specifically, demonstration with practical works will be
specific instructional technique in this course. The details of suggested instructional
techniques are presented below:
Units Activities
Unit 1: Introduction Define and Describe the different types of data structures
to Data Structures & State different operations occurring in data structures
Algorithms Write a program to implement dynamic memory
management functions
Explain asymptotic notations and complexity on time and
space of algorithm
Monitor of students' work by reaching each student and
providing feedback for improvement
Presentation by students followed by peers' comments and
teacher's feedback
Unit 3: List Demonstrate operations of linked list with algorithms
Lab work in pairs to implement linked list operations
Monitor students' work by reaching each student and
providing feedback for improvement
Presentation by students followed by peers' comments and
teacher's feedback
Unit 2, 4: Array, Illustrate array, pointer and structure of C language
Pointer and Structure, Illustrate the algorithms of stack operations
Stacks Lab works in pair to implement stack operations
Convert expression in other from one form to another
making group and individually
Monitoring of students' work by reaching each pair and
providing feedback for improvement
Presentation by students followed by peers' comments and
teacher's feedback
Unit 5: Queues Demonstrate queue and queue operations with algorithms
Lab work in pairs to implement queue operations
Group discussion in advantages and limitations of queues
Monitoring of students' work by reaching each student and
providing feedback for improvement
Presentation by students followed by peers' comments and
teacher's feedback
Unit 6, 7: Recursion, Apply recursive function to calculate factorial, solve TOH
Trees problem and generate Fibonacci series
Demonstrate operations and types of tree
Lab work in pairs to implement BST
Trace a working principle of AVL
Assign students to create AVL
4
Monitor students' work by reaching each student and
providing feedback for improvement
Presentation by students followed by peers' comments and
teacher's feedback
Unit 8: Searching, Demonstrate the working principle of different searching
Sorting and Hashing algorithms
Lab work in pair to implement searching algorithms
Implement Hashing
Trace the working principle of different sorting algorithms
Lab work in pair to implement sorting algorithms
Analyze efficiency of sorting algorithms
Monitor students' work by reaching each student and
providing feedback for improvement
Presentation by students followed by peers' comments and
teacher's feedback
Unit 9: Graphs Explain the graph and graph terminology
Solve the practical problems of shortest path and spanning
tree using different algorithms
Assign student to solve graph problems
Lab work in pair to implement graph traversing algorithms
Monitor students' work by reaching each student and
providing feedback for improvement
Presentation by students followed by peers' comments and
teacher's feedback
5. Evaluation
Evaluation of students' performance is divided into parts: Internal assessment
(theory and practical and internal external examinations (theory and practical).
The distribution of points is given below:
Internal Internal Semester External Total Points
Assessment Assessment Examination Practical
Theory Practical (Theoretical Exam/Viva
exam)
25 Points 15 Points 40 Points 20 Points 100 Points
Note: Students must pass separately in internal assessment, external practical
exam and semester examination.
5.1 Internal Assessment (25 Points) of Theoretical Part
Internal assessment will be conducted by subject teacher based on following
criteria:
Attendance and learning Activities 5 points
First assignment (Written assignment) 5 points
Second assignment (Project work with presentation ) 10 points
Third assignment/written examination 5 point
5
Total 25 points
5.2 Internal Assessment (15 Points) of practical part
Internal practical assessment will be conducted by subject teacher based on
following criteria:
Attendance and learning Activities 5 points
Practical work/project work/lab work 10 points
Total 15 points
5.3 Semester Final Examination (40 Points) theoretical part
Examination Division, Dean office will conduct final examination at the end of
semester.
Objective question (Multiple choice questions 10 x 1 point) 10 Points
Subjective questions (6 questions x 5 marks with
‘OR” two questions) 30 Points
Total 40 points
5.4 Practical Exam/Viva (20 Points)
Examination Division, Office of the Dean will appoint an external examiner
(ICT teachers working another campus) for conducting practical examination
Items Points
Evaluation of Record Book 4
Project work/practical work presentation/skill test 10
Viva 6
Total 20
Recommended Books and References
Recommended Books
1 Srivastava, S.K. & Srivastava, D. (2011). Data structure Through C in Depth, (2nd
Ed.), BPB Publication
2 Langsam, Y., Augenstein, M.J. & Tenenbaum, A.M., Data Structures using C,
Prentice Hall India.