EEES421 Data Structures & Programming

4 ECTS - 3-0 Duration (T+A)- 7. Semester- 3 National Credit

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

Update Time: 05.05.2026 10:01