The goals of this course are to study several fundemantal algorithms which are used to solve conventional computational problems and to introduce some mathematical methods and tools that are useful in the analysis of algorithms.
Prerequisite(s)
None
Corequisite(s)
None
Special Requisite(s)
Proficiency in programming, data structures, basic math (series, matrices) and (in order to follow the course resources) basic English knowledge are necessary and sufficient.
- Lecture
- Implementations of the algorithms using C# in Computer Lab.
Principle Sources
- Algorithm Design – Jon Kleinberg & Éva Tardos
Other Sources
Course Schedules
Week
Contents
Learning Methods
1. Week
Introduction and Review of Basic Concepts
Oral presentation, implementation
2. Week
Tree Data Structures
Oral presentation, implementation
3. Week
Binary Search Trees (BST)
Oral presentation, implementation
4. Week
Balanced Trees
Oral presentation, implementation
5. Week
Stacks and Queues
Oral presentation, implementation
6. Week
Hash Tables
Oral presentation, implementation
7. Week
Midterm Exam
Midterm Exam
8. Week
Graph Data Structures
Oral presentation, implementation
9. Week
Graph Traversing Algorithms
Oral presentation, implementation
10. Week
Shortest Path Algorithms
Oral presentation, implementation
11. Week
Least Cost Covering Trees
Oral presentation, implementation
12. Week
Dynamic Programming and Backtracking
Oral presentation, implementation
13. Week
Divide and Conquer and General Repetition
Oral presentation, implementation
14. Week
Finals Week
Exam
15. Week
Finals Week
Exam
16. Week
Finals Week
Exam
17. Week
Finals Week
Exam
Assessments
Evaluation tools
Quantity
Weight(%)
Midterm(s)
1
25
Homework / Term Projects / Presentations
1
25
Final Exam
1
50
Program Outcomes
PO-1
Interpreting advanced theoretical and applied knowledge in Mathematics and Computer Science.
PO-2
Critiquing and evaluating data by implementing the acquired knowledge and skills in Mathematics and Computer Science.
PO-3
Recognizing, describing, and analyzing problems in Mathematics and Computer Science; producing solution proposals based on research and evidence.
PO-4
Understanding the operating logic of computer and recognizing computational-based thinking using mathematics as a discipline.
PO-5
Collaborating as a team-member, as well as individually, to produce solutions to problems in Mathematics and Computer Science.
PO-6
Communicating in a foreign language, and interpreting oral and written communicational abilities in Turkish.
PO-7
Using time effectively in inventing solutions by implementing analytical thinking.
PO-8
Understanding professional ethics and responsibilities.
PO-9
Having the ability to behave independently, to take initiative, and to be creative.
PO-10
Understanding the importance of lifelong learning and developing professional skills continuously.
PO-11
Using professional knowledge for the benefit of the society.
Learning Outcomes
LO-1
The student studies different algorithms for many of the most common types of standard algorithmic problems such as sorting, searching and graph problems
LO-2
The student analyses the time and space complexity and correctness of the algorithms using theoretical tools and mathematical techniques
LO-3
The student becomes proficient in the application of fundamental algorithm design techniques (e.g.,divide and conquer, greedy algorithms, dynamic programming)
LO-4
The student develops programs using different problem-solving approaches, and be able to recognize when a particular approach is most useful
LO-5
The student gains the ability to design and implement a program to model a real-world system, and subsequently analyze its behavior