| Course Name | Code | Semester | T+A+L (hour/week) | Type (C / O) | Local Credit | ECTS |
|---|---|---|---|---|---|---|
| Data Structures and Algorithms | CMPE 242 | Spring | 03+00+02 | Compulsory | 4 | 6 |
| Academic Unit: | Computer Engineering Department |
| Mode of Delivery: | Face to face |
| Prerequisites: | CMPE 241 |
| Language of Instruction: | English |
| Level of Course Unit: | Undergraduate |
| Course Coordinator: | - - |
| Course Objectives: | The main objective of this course is to provide students with knowledge on problem-solving and experience in the design and implementation of discrete data structures commonly employed in computer science and computational problems. The students will be introduced to computational complexity analysis and will learn how to implement and how to use the most important data structures and relative algorithms. |
| Course Contents: | Abstract Data Types and Data Structures definition, Introduction to Big-O Notation (Computational Complexity Analysis), Static Arrays, Dynamic Arrays, C++ STL Containers, C++ STL Iterators, C++ STL Algorithms, Recursion, Singly Linked List, Doubly Linked Lists, Stacks, Queues, Introduction to Graphs and Trees, Binary Trees, Depth-First Search, Breadth-First Search, Binary Search Trees, Preorder Traversal, Inorder Traversal, Postorder Traversal, Level Order Traversal, Priority Queues and Heaps, Binary Heaps, Hash Tables, Serial Chaining, Open Addressing, Bubble Sort, Selection Sort, Insertion Sort, Merge Sort, Quick Sort, Heap Sort, Suffix Arrays, LCP Arrays. |
| Learning Outcomes of the Course Unit (LO): |
|
| Planned Learning Activities and Teaching Methods: | Classroom discussion and computer laboratory work. |
| Week | Subjects | Related Preperation | LO |
|---|---|---|---|
| 1 | Introduction, Abstract Data Types | Goodrich-Tamassia Chapter 1, 2 | 1 |
| 2 | Computational Complexity Analisys | Goodrich-Tamassia Chapter 4 Skiena Chapter 2.1, 2.2, 2.3, 2.4, 2.6, 2.7, 5.1 | 2, 4, 5, 6 |
| 3 | Static and Dynamic Arrays, STL | Goodrich-Tamassia Chapter 3.1, 6.1, 6.2 Skiena Chapter 3.1.1 | 2, 4, 5, 6 |
| 4 | Recursion | Goodrich-Tamassia Chapter 3.5 | 1, 3, 4, 5 |
| 5 | Linked Lists | Goodrich-Tamassia Chapter 3.2, 3.3 Skiena Chapter 3.1 | 1, 2, 3, 6 |
| 6 | Stacks, Queues | Goodrich-Tamassia Chapter 5.1, 5.2 Skiena Chapter 3.2 | 1, 2, 3, 6 |
| 7 | Live project 1 | 1, 2, 3, 6 | |
| 8 | Graphs, Trees, Binary Trees, Traversing Trees (1) | Goodrich-Tamassia Chapter 13.1, 13.2, 13.3, 7 Skiena Chapter 7 | 1, 2, 3, 6 |
| 9 | Graphs, Trees, Binary Trees, Traversing Trees (2) | Goodrich-Tamassia Chapter 10.1 Skiena Chapter 3.4 | 1, 2, 3, 6 |
| 10 | Priority Queues and Heaps | Goodrich-Tamassia Chapter 8 Skiena Chapter 3.5 | 1, 2 |
| 11 | Hash Tables | Goodrich-Tamassia Chapter 9 Skiena Chapter 3.7 | 1, 2 |
| 12 | Sorting Algorithms | Goodrich-Tamassia Chapter 11.1, 11.2 Skiena Chapter 4 | 1, 2, 3, 4 |
| 13 | Suffix Arrays and LCP Arrays (Tentative) | 1, 3, 6, 4 | |
| 14 | Best Practices and Recap for Final Exam | 1, 6, 4, 5 |
| M. A. Weiss, Data Structures and Algorithm Analysis in C++, Pearson, 2014, 4th Ed. |
| Data Structures Using C++, 2nd Edition by D. S. Malik |
| Semester Requirements | Number | Percentage of Grade (%) |
|---|---|---|
| Project | 2 | 90 |
| Homework Assignments | 1 | 10 |
| Total: | 3 | 100 |
| Events | Count | Duration (Hours) | Total Workload (hour) |
|---|---|---|---|
| Course Hours | 14 | 3 | 42 |
| Laboratory | 14 | 2 | 28 |
| Project | 2 | 35 | 70 |
| Homework Assigments | 1 | 10 | 10 |
| Total Workload (hour): | 150 | ||
| # | PQ1 | PQ2 | PQ3 | PQ4 | PQ5 | PQ6 | PQ7 | PQ8 | PQ9 | PQ10 | PQ11 | PQ12 | PQ13 |
| LO1 | |||||||||||||
| LO2 | |||||||||||||
| LO3 | |||||||||||||
| LO4 | |||||||||||||
| LO5 | |||||||||||||
| LO6 | |||||||||||||
| LO7 | |||||||||||||
| LO8 | |||||||||||||
| LO9 |