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/C++ in Computer Lab.
Principle Sources
- Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein, Introduction To Algorithms, 3rd ed, The MIT Press, 2009.
Other Sources
- Michael T. Goodrich, Roberto Tamassia,Algorithm Design : Foundations, Analysis and Internet Examples, John Wiley & Sons Inc., 2002.
- MIT OpenCourseWare Web Site : http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-046j-introduction-to-algorithms-sma-5503-fall-2005/
Course Schedules
Week
Contents
Learning Methods
1. Week
Introduction To Algorithms, Analysis of Algorithms, Insertion Sort, Merge Sort
Red-black Trees : Rotations, Insertions, Deletions
Oral presentation, implementation
10. Week
Augmenting Data Structures, Dynamic Order Statistics, Interval Trees
Oral presentation, implementation
11. Week
Dynamic Programming, Longest Common Subsequence, Rod Cutting
Oral presentation, implementation
12. Week
Revisiting previous topics
Oral presentation, implementation
13. Week
Greedy Algorithms, Minimum Spanning Trees
Oral presentation, implementation
14. Week
Shortest Path Algorithms
Oral presentation, implementation
15. Week
Finals Week
Exam
16. Week
Finals Week
Exam
17. Week
Finals Week
Exam
Assessments
Evaluation tools
Quantity
Weight(%)
Midterm(s)
1
40
Final Exam
1
60
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