EE441 DATA STRUCTURES

Course Code:5670441
METU Credit (Theoretical-Laboratory hours/week):3 (3.00 - 0.00)
ECTS Credit:5.0
Department:Electrical and Electronics Engineering
Language of Instruction:English
Level of Study:Undergraduate
Course Coordinator:Assist.Prof.Dr SERKAN SARITAŞ
Offered Semester:Fall Semesters.

Course Objectives

This course primarily aims to acquaint the student with basic data structures frequently used in software engineering and programming practices. Concepts of object-oriented programming, abstract data types, dynamic memory management and algorithm complexity are given. Searching and sorting algorithms are also discussed.


Course Content


Arrays, stacks, queues, linked lists, trees, hash tables, graphs: Algorithms and efficiency of access. Searching and sorting algorithms. Problem complexity, computational complexity


Course Learning Outcomes

i. Create awareness of and experience in object-oriented programming discipline.

- Understand the meaning of and the usage of object oriented programming

- Learn basics of object oriented programming and class definition.

- Learn recursive algorithms and argument passing

ii. Create awareness of and experience in dynamic memory management.

- Understand the meaning of and the usage of memory and dynamic memory.

- Learn to create and delete dynamic memory.

- Use dynamic memory in various data structures.

iii. Learn fundamental data structures with their searching, insertion and deletion

capabilities.

- Learn array data structure.

- Learn stack and queue data structure.

- Learn linked list and tree data structure.

- Learn graph data structure.

- Learn hash coding.

- Learn searching, insertion and deletion in the covered data

iv. Learn fundamental sorting algorithms with their complexity analysis.

- Understand the meaning of sorting.

- Learn sorting algorithms (selection sort, bubble sort, quick sort, radix sort).

- Compare the algorithms in terms of their complexity.

v. Create awareness of and experience in algorithm complexity.

- Understand the meaning of algorithm complexity.

- Learn Big-O, Ω, Θ complexity analysis details.

- Perform complexity analysis for various algorithms.

vi. Create awareness of and experience in computational complexity.

- Understand the meaning of computational complexity

- Learn decisison problems, P, NP, NP complete, NP hard problem classes, relation betwwen these classes and problem reduction


Program Outcomes Matrix

Contribution
#Program OutcomesNoYes
1An ability to identify, formulate, and solve complex engineering problems by applying principles of engineering, science, and mathematics
2An ability to apply engineering design to produce solutions that meet specified needs with consideration of public health, safety, and welfare, as well as global, cultural, social, environmental, and economic factors
3An ability to communicate effectively with a range of audiences
4An ability to recognize ethical and professional responsibilities in engineering situations and make informed judgments, which must consider the impact of engineering solutions in global, economic, environmental, and societal contexts.
5An ability to function effectively on a team whose members together provide leadership, create a collaborative and inclusive environment, establish goals, plan tasks, and meet objectives
6An ability to develop and conduct appropriate experimentation, analyze and interpret data, and use engineering judgment to draw conclusions
7An ability to acquire and apply new knowledge as needed, using appropriate learning strategies