Software Engineering (English) | |||||
Bachelor | TR-NQF-HE: Level 6 | QF-EHEA: First Cycle | EQF-LLL: Level 6 |
Course Code: | COE206 | ||||
Course Name: | Analysis of Algorithms | ||||
Semester: | Spring | ||||
Course Credits: |
|
||||
Language of instruction: | English | ||||
Course Condition: | |||||
Does the Course Require Work Experience?: | No | ||||
Type of course: | Compulsory Courses | ||||
Course Level: |
|
||||
Mode of Delivery: | Face to face | ||||
Course Coordinator: | Dr. Öğr. Üy. MUHAMMED DAVUD | ||||
Course Lecturer(s): | Assist. Prof. Dr. Muhammed Davud, Res. Assist. Yazım Beril Uluer | ||||
Course Assistants: |
Course Objectives: | This course teaches students how to evaluate the efficiency and performance of algorithms. Students learn various techniques for analyzing algorithms, such as time complexity, space complexity, and asymptotic analysis. By studying these strategies and techniques, students learn how to choose the most appropriate approach for solving a given problem and how to analyze the performance of their solutions. |
Course Content: | The course covers different types of algorithms such as sorting, searching and graph algorithms, as well as common data structures used in algorithm design. Students also learn about algorithmic strategies and techniques such as divide and conquer, reduce and conquer, transform and conquer, dynamic programming, greedy algorithms, and backtracking algorithms. |
The students who have succeeded in this course;
1) Evaluate the efficiency and performance of different algorithms using techniques such as time complexity, space complexity, and asymptotic analysis. 2) Apply various algorithmic strategies and techniques, such as divide and conquer, decrease and conquer, transform and conquer, dynamic programming, greedy algorithms, and backtracking algorithms, to solve different types of problems. 3) Use common data structures, such as arrays, linked lists, trees, and hash tables, to implement algorithms. 4) Analyze the performance of algorithmic solutions using empirical methods and theoretical analysis. |
Week | Subject | Related Preparation |
1) | Introduction | |
2) | Analysis of Algorithm Efficiency | |
3) | Analysis of Algorithm Efficiency | |
4) | Brute Force and Exhaustive Search | |
5) | Decrease-and-Conquer | |
6) | Divide-and-Conquer | |
7) | Divide-and-Conquer | |
8) | Midterm Exam | |
9) | Transform-and-Conquer | |
10) | Transform-and-Conquer | |
11) | Space and Time Trade-Offs | |
12) | Dynamic Programming | |
13) | Greedy Technique | |
14) | Iterative Improvement |
Course Notes / Textbooks: | Introduction to the Design & Analysis of Algorithms - 3rd edition, by Anany Levitin |
References: | Lecture notes |
Course Learning Outcomes | 1 |
2 |
3 |
4 |
|||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Program Outcomes | |||||||||||
1) Adequate knowledge in mathematics, science and software engineering; the ability to use theoretical and practical knowledge in these areas in complex engineering problems. | |||||||||||
2) Ability to identify, formulate, and solve complex software engineering problems; ability to select and apply appropriate analysis and modeling methods for this purpose. | 3 | 3 | 3 | ||||||||
3) Ability to design, implement, verify, validate, measure and maintain a complex software system, process, device or product to meet specific requirements under realistic constraints and conditions; ability to apply modern design methods for this purpose. | |||||||||||
4) Ability to develop, select and use modern techniques and tools necessary for the analysis and solution of complex problems encountered in software engineering applications; ability to use information technologies effectively. | 3 | 3 | 3 | ||||||||
5) Ability to design, conduct experiments, collect data, analyze and interpret results for the study of complex engineering problems or software engineering research topics. | 2 | 2 | 2 | ||||||||
6) Ability to work effectively within and multidisciplinary teams; individual study skills. | |||||||||||
7) Ability to communicate effectively orally and in writing; knowledge of at least one foreign language; ability to write effectice reports and understand written reports, to prepare design and production reports, to make effective presentations, to give and receive clear and understandable instructions. | |||||||||||
8) Awareness of the necessity of lifelong learning; ability to access information, to follow developments in science and technology and to renew continuously. | |||||||||||
9) To act in accordance with ethical principles, professional and ethical responsibility; information on the standards used in engineering applications. | |||||||||||
10) Information on business practices such as project management, risk management and change management; awareness of entrepreneurship and innovation; information about sustainable development. | |||||||||||
11) Knowledge of the effects of software engineering practices on health, environment and safety in the universal and social scale and the problems of the era reflected in software engineering; awareness of the legal consequences of software engineering solutions. |
No Effect | 1 Lowest | 2 Average | 3 Highest |
Program Outcomes | Level of Contribution | |
1) | Adequate knowledge in mathematics, science and software engineering; the ability to use theoretical and practical knowledge in these areas in complex engineering problems. | |
2) | Ability to identify, formulate, and solve complex software engineering problems; ability to select and apply appropriate analysis and modeling methods for this purpose. | 3 |
3) | Ability to design, implement, verify, validate, measure and maintain a complex software system, process, device or product to meet specific requirements under realistic constraints and conditions; ability to apply modern design methods for this purpose. | |
4) | Ability to develop, select and use modern techniques and tools necessary for the analysis and solution of complex problems encountered in software engineering applications; ability to use information technologies effectively. | 3 |
5) | Ability to design, conduct experiments, collect data, analyze and interpret results for the study of complex engineering problems or software engineering research topics. | 2 |
6) | Ability to work effectively within and multidisciplinary teams; individual study skills. | |
7) | Ability to communicate effectively orally and in writing; knowledge of at least one foreign language; ability to write effectice reports and understand written reports, to prepare design and production reports, to make effective presentations, to give and receive clear and understandable instructions. | |
8) | Awareness of the necessity of lifelong learning; ability to access information, to follow developments in science and technology and to renew continuously. | |
9) | To act in accordance with ethical principles, professional and ethical responsibility; information on the standards used in engineering applications. | |
10) | Information on business practices such as project management, risk management and change management; awareness of entrepreneurship and innovation; information about sustainable development. | |
11) | Knowledge of the effects of software engineering practices on health, environment and safety in the universal and social scale and the problems of the era reflected in software engineering; awareness of the legal consequences of software engineering solutions. |
Semester Requirements | Number of Activities | Level of Contribution |
Homework Assignments | 1 | % 20 |
Midterms | 1 | % 30 |
Final | 1 | % 50 |
total | % 100 | |
PERCENTAGE OF SEMESTER WORK | % 50 | |
PERCENTAGE OF FINAL WORK | % 50 | |
total | % 100 |
Activities | Number of Activities | Workload |
Course Hours | 13 | 39 |
Study Hours Out of Class | 15 | 75 |
Homework Assignments | 2 | 20 |
Midterms | 1 | 2 |
Final | 2 | 4 |
Total Workload | 140 |