Course Code |
CSC331 |
Course Title |
Data Structure and Algorithms |
Credit Hours |
3+1 |
Prerequisites by Course(s) and Topics |
OOP |
Assessment Instruments with Weights (homework, quizzes, midterms, final, programming assignments, lab work, etc.) |
SESSIONAL (Quizzes, Assignments, Presentations) =25 %
Midterm Exam =25 %
Final Exam = 50%
|
Course Coordinator |
Sahar Moin |
URL (if any) |
|
Current Catalog Description |
|
Textbook (or Laboratory Manual for Laboratory Courses) |
Nell Dale : C++ Plus Data Structures, Latest Edition, Jones & Bartlett |
Reference Material |
Data Structure using C/C++ by Mark Alan.. |
Course Goals |
The aim of this course is to cover basic and in-depth concepts of Data Structures and Algorithms. Students will learn how data structures are helpful to solve different problems. It will provide foundation in learning advanced algorithm analysis course. Student can use C++ language for the purpose of implementation and they will learn generic concepts which will be used for developing different software applications. The knowledge of C++ languages is expected as strong background |
Course Learning Outcomes (CLOs): |
At the end of the course the students will be able to: | Domain | BT Level* |
Implement various data structures and their algorithms, and apply them in implementing simple applications. |
C |
2,3 |
Analyze simple algorithms and determine their complexities. |
C |
4,5 |
Apply the knowledge of data structures to other application domains. |
C |
3 |
Design new data structures and algorithms to solve problems |
C |
6 |
* BT= Bloom’s Taxonomy, C=Cognitive domain, P=Psychomotor domain, A= Affective domain |
|
|
|
Topics Covered in the Course, with Number of Lectures on Each Topic (assume 15-week instruction and one-hour lectures) |
Week | Lecture | Topics Covered |
Week 1 |
1 |
Arrays Operations |
|
2 |
Arrays Operations |
Week 2 |
3 |
Stacks |
|
4 |
Array Implementation Of Stack |
Week 3 |
5 |
Sorting Algorithms(Selection Sort, Insertion Sort) |
|
6 |
Sorting Algorithms(Bubble Sort, Divide and Conquer Algorithm) |
Week 4 |
7 |
Application Of Stack – Conversion Of Infix To Prefix |
|
8 |
Application Of Stack – Conversion Of Infix To Postfix |
Week 5 |
9 |
Implementation Of Linear Queue Using Arrays |
|
10 |
Queues: Using Arrays |
Week 6 |
11 |
Array Implementation Of Circular Queue |
|
12 |
Array Implementation of priority Queues |
Week 7 |
13 |
Singly linked list – Linked list implementation |
|
14 |
Linked List Implementation Of Stack |
Week 8 |
1 hours |
Mid Term |
Week 9 |
15 |
Singly linked list – Linked list implementation |
|
16 |
Recursion and analyzing recursive algorithms |
Week 10 |
17 |
Binary Tree, Strictly Binary Tree |
|
18 |
Binary Tree, Strictly Binary Tree, Complete Binary Tree, Implementation of BST |
Week 11 |
19 |
AVL Trees |
|
20 |
Operations on AVL Tree |
Week 12 |
21 |
Heaps, Min Heaps, |
|
22 |
Heaps, Min Heaps, Max Heaps |
Week 13 |
23 |
Min Balanced BST |
|
24 |
Max Balanced BST |
Week 14 |
25 |
Graphs, Types of Graphs |
|
26 |
Adjacency matrix and adjacency list implementations |
Week 15 |
27 |
Hashing. Hashing Techniques, Collisions & Collisions Avoidance Methods |
|
28 |
Hashing. Hashing Techniques, Collisions & Collisions Avoidance Methods |
Week 16 |
29 |
Memory management and garbage collection |
|
30 |
Memory management and garbage collection |
Week 17 |
2 hours |
Final Term |
|
Laboratory Projects/Experiments Done in the Course |
Student Oriented Project |
Programming Assignments Done in the Course |
Four Assignments |