Information
| Unit | FACULTY OF ENGINEERING |
| ELECTRICAL-ELECTRONIC ENGINEERING PR. (ENGLISH) | |
| Code | EEES421 |
| Name | Data Structures & Programming |
| Term | 2026-2027 Academic Year |
| Semester | 7. Semester |
| Duration (T+A) | 3-0 (T-A) (17 Week) |
| ECTS | 4 ECTS |
| National Credit | 3 National Credit |
| Teaching Language | İngilizce |
| Level | Belirsiz |
| Type | Normal |
| Label | E Elective |
| Mode of study | Yüz Yüze Öğretim |
| Catalog Information Coordinator | Doç. Dr. FATİH KILIÇ |
| Course Instructor |
The current term course schedule has not been prepared yet.
|
Course Goal / Objective
The aim of this course is to introduce students to fundamental and advanced data structures, the algorithms operating on these structures, and object-oriented programming principles, both theoretically and practically. The course aims to ensure students understand data structures such as arrays, linked lists, stacks, queues, trees, hash tables, and graphs; to enable them to analyze searching, sorting, and recursion algorithms; to evaluate algorithm complexity (Big-O); and to develop efficient software solutions using modern programming languages such as C++, Java or Python.
Course Content
This course covers an overview of programming languages and development environment setup; object-oriented programming principles (class, inheritance, polymorphism, encapsulation, abstraction); algorithm analysis and complexity (Big-O, Big-Theta, Big-Omega); arrays, multidimensional arrays, dynamic memory management, and pointers; singly, doubly, and circular linked lists; stack and queue structures; recursion and divide-and-conquer strategies; binary trees, binary search trees (BST), AVL and red-black trees, heap structure, and priority queues; hash tables and collision resolution methods; bubble, selection, insertion, merge, quick, and heap sort algorithms; linear and binary search; graph representation methods along with graph algorithms such as BFS, DFS, and Dijkstra; and fundamentals of dynamic programming and greedy algorithms; within the term project, students develop a modular and efficient data structures project using C++, Java or Python.
Course Precondition
There is no prerequisite for the course.
Resources
Mark Allen Weiss, Data Structures and Algorithm Analysis in Java (3rd ed.), Pearson, 2012. Cormen, T. H., Leiserson, C. E., Rivest, R. L., & Stein, C. (2022). Introduction to Algorithms (4th ed.). MIT Press. Goodrich, M. T., Tamassia, R., & Goldwasser, M. H. (2014). Data Structures and Algorithms in Python. Wiley.
Notes
Weiss, M. A. (2013). Data Structures and Algorithm Analysis in C++ (4th ed.). Pearson. Sedgewick, R., & Wayne, K. (2011). Algorithms (4th ed.). Addison-Wesley. Çevrimiçi platformlar: GeeksforGeeks, LeetCode, HackerRank, Visualgo
Course Learning Outcomes
| Order | Course Learning Outcomes |
|---|---|
| LO01 | Analyze the computational complexity of a data structure operation |
| LO02 | Develops and efficiently uses common data structure types |
| LO03 | Solve programming problems using well known data structures |
| LO04 | Design and develop new data structures towards problem solving |
Relation with Program Learning Outcome
| Order | Type | Program Learning Outcomes | Level |
|---|---|---|---|
| PLO01 | Bilgi - Kuramsal, Olgusal | Adequate knowledge in mathematics, science and engineering subjects pertaining to the relevant discipline; ability to use theoretical and applied knowledge in these areas in complex engineering problems. | 4 |
| PLO02 | Bilgi - Kuramsal, Olgusal | Ability to identify, formulate, and solve complex engineering problems; ability to select and apply proper analysis and modeling methods for this purpose. | 5 |
| PLO03 | Bilgi - Kuramsal, Olgusal | Ability to design a complex system, process, device or product under realistic constraints and conditions, in such a way as to meet the desired result; ability to apply modern design methods for this purpose. | 5 |
| PLO04 | Bilgi - Kuramsal, Olgusal | Ability to devise, select, and use modern techniques and tools needed for analyzing and solving complex problems encountered in engineering practice; ability to employ computer programming techniques, and information technologies effectively. | 3 |
| PLO05 | Bilgi - Kuramsal, Olgusal | Ability to design and conduct experiments, gather data, analyze and interpret results for investigating complex engineering problems or discipline specific research questions. | 3 |
| PLO06 | Bilgi - Kuramsal, Olgusal | Ability to work efficiently in intra-disciplinary and multi-disciplinary teams; ability to work individually. | |
| PLO07 | Bilgi - Kuramsal, Olgusal | Ability to communicate effectively, both orally and in writing; knowledge of a minimum of one foreign language; ability to write effective reports and comprehend written reports, prepare design and production reports, make effective presentations, | |
| PLO08 | Bilgi - Kuramsal, Olgusal | Recognition of the need for lifelong learning; ability to access information, to follow developments in science and technology, and to continue to educate him/herself. | |
| PLO09 | Bilgi - Kuramsal, Olgusal | Consciousness to behave according to ethical principles and professional and ethical responsibility; knowledge on standards used in engineering practice. | |
| PLO10 | Bilgi - Kuramsal, Olgusal | Knowledge about business life practices such as project management, risk management, and change management; awareness in entrepreneurship, innovation; knowledge about sustainable development. | 3 |
| PLO11 | Bilgi - Kuramsal, Olgusal | Knowledge about the global and social effects of engineering practices on health, environment, and safety, and contemporary issues of the century reflected into the field of engineering; awareness of the legal consequences of engineering solutions. | |
| PLO12 | Bilgi - Kuramsal, Olgusal | Ability to apply the knowledge of electrical-electronics engineering to profession-specific tools and devices. | 3 |
| PLO13 | Bilgi - Kuramsal, Olgusal | Having consciousness about the scientific, social, historical, economical and political facts of the society, world and age lived in. |
Week Plan
| Week | Topic | Preparation | Methods |
|---|---|---|---|
| 1 | Overview of programming languages; setting up the development environment (C++8/Java/Python); review of basic syntax and data types | Reviewing the course syllabus; installing a C++,Java or Python compiler/interpreter on a personal computer (Visual Studio, Code::Blocks, PyCharm); reviewing basic programming concepts (variables, loops, functions). | Öğretim Yöntemleri: Anlatım, Soru-Cevap, Tartışma |
| 2 | Introduction to object-oriented programming: class, object, encapsulation, inheritance, polymorphism, and abstraction | Researching the difference between structured programming and object-oriented programming; preliminary reading on the concepts of "class" and "object"; thinking about everyday objects in terms of class-object relationships. | Öğretim Yöntemleri: Anlatım, Soru-Cevap, Tartışma |
| 3 | Algorithm analysis and complexity: Big-O, Big-Theta, Big-Omega notations; best, average, and worst-case analysis | Mathematical review of logarithms, exponential functions, and series sums; researching the concepts of "algorithm" and "efficiency"; preliminary reading on step-count analysis of sample algorithms. | Öğretim Yöntemleri: Soru-Cevap, Anlatım, Tartışma |
| 4 | Arrays, multidimensional arrays, and dynamic memory management; pointers and references | Researching memory concepts (stack and heap); preliminary reading on pointer logic; examining the difference between static and dynamic memory allocation. | Öğretim Yöntemleri: Anlatım, Soru-Cevap, Tartışma |
| 5 | Linked lists: singly, doubly, and circular linked lists; insertion, deletion, and search operations | Reviewing the advantages and disadvantages of array structures; researching the concepts of "node" and "link"; examining sample linked list visualizations. | Öğretim Yöntemleri: Anlatım, Soru-Cevap, Tartışma |
| 6 | Stacks and queues: array- and linked-list-based implementations; application examples (expression evaluation, BFS) | Considering LIFO (Last-In-First-Out) and FIFO (First-In-First-Out) principles through everyday examples; researching real-life applications such as a browser's "back" button and printer queues. | Öğretim Yöntemleri: Anlatım, Soru-Cevap, Tartışma |
| 7 | Recursion: fundamental concepts, stack frame, divide-and-conquer strategy; classical recursive problems (factorial, Fibonacci, Tower of Hanoi) | Reviewing mathematical recursive definitions (factorial, Fibonacci); preliminary research on the function call stack concept; examining the divide-and-conquer strategy. | Öğretim Yöntemleri: Anlatım, Soru-Cevap, Tartışma |
| 8 | Mid-Term Exam | Comprehensive review of all topics covered in the first seven weeks; reviewing lecture notes, assignments, and practicing with sample exam questions. | Ölçme Yöntemleri: Yazılı Sınav |
| 9 | Trees: binary trees, binary search trees (BST); traversal methods (in-order, pre-order, post-order, level-order) | Researching the concepts of "hierarchy" and "tree"; examining tree-structure examples such as family genealogies and file systems; reviewing binary tree visualizations. | Öğretim Yöntemleri: Anlatım, Soru-Cevap, Tartışma |
| 10 | Balanced trees: AVL trees and red-black trees; heap structure and priority queues | Researching the concept of "balancing" and the performance issues caused by unbalanced trees; examining priority queue examples (hospital emergency rooms, OS process scheduling). | Öğretim Yöntemleri: Anlatım, Soru-Cevap, Tartışma |
| 11 | Hash tables: hash functions, collision resolution methods (chaining, open addressing); analysis of hash tables | Considering everyday examples requiring key-value mapping such as dictionaries and phone books; preliminary research on the concept of "hash function"; examining sample hashing methods. | Öğretim Yöntemleri: Anlatım, Soru-Cevap, Tartışma |
| 12 | Sorting algorithms: bubble, selection, insertion, merge, quick, and heap sort; complexity comparison | Reviewing different sorting scenarios in daily life (card games, library cataloging); preliminary research on the concepts of "stable" and "unstable" sorting. | Öğretim Yöntemleri: Anlatım, Soru-Cevap, Tartışma |
| 13 | Searching algorithms: linear search, binary search; introduction to string-matching algorithms | Considering the method of searching a name in a phone book (binary search logic); researching differences in searching sorted and unsorted datasets; examining the general working logic of search engines. | Öğretim Yöntemleri: Anlatım, Soru-Cevap, Tartışma |
| 14 | Graphs: representation methods (adjacency matrix/list); graph traversal algorithms (BFS, DFS); shortest-path algorithms (Dijkstra) | Considering everyday examples of graph structures such as social networks, map applications, and metro lines; preliminary research on the concepts of "node" and "edge"; examining visual resources on Dijkstra's algorithm. | Öğretim Yöntemleri: Anlatım, Soru-Cevap, Tartışma |
| 15 | Advanced topics: fundamentals of dynamic programming, greedy algorithms; student project presentations | Completing the term project; preliminary reading on dynamic programming and greedy algorithm concepts; preparing the presentation file and demo video; rehearsing the presentation. | Öğretim Yöntemleri: Anlatım, Soru-Cevap, Tartışma |
| 16 | Term Exams | Comprehensive review of all topics covered throughout the semester; special focus on topics covered after the midterm; practicing with solved sample questions. | Ölçme Yöntemleri: Yazılı Sınav |
| 17 | Term Exams | Comprehensive review of all topics covered throughout the semester; special focus on topics covered after the midterm; practicing with solved sample questions. | Ölçme Yöntemleri: Yazılı Sınav |
Student Workload - ECTS
| Works | Number | Time (Hour) | Workload (Hour) |
|---|---|---|---|
| Course Related Works | |||
| Class Time (Exam weeks are excluded) | 14 | 3 | 42 |
| Out of Class Study (Preliminary Work, Practice) | 14 | 3 | 42 |
| Assesment Related Works | |||
| Homeworks, Projects, Others | 0 | 0 | 0 |
| Mid-term Exams (Written, Oral, etc.) | 1 | 2 | 2 |
| Final Exam | 1 | 2 | 2 |
| Total Workload (Hour) | 88 | ||
| Total Workload / 25 (h) | 3,52 | ||
| ECTS | 4 ECTS | ||