Algorithm Design
Spring 1397
Instructor: Kamal Mirzaie
Description
“To make a computer do anything, you have to write a computer program. To write a computer program, you have to tell the computer, step by step, exactly what you want it to do. The computer then ‘executes’ the program, following each step mechanically, to accomplish the end goal. When you are telling the computer what to do, you also get to choose how it’s going to do it. That’s where computer algorithms come in. The algorithm is the basic technique used to get the job done.”
Algorithm design is a specific method to create a mathematical process in solving problems. Applied algorithm design is Algorithm Engineering. Algorithm design is identified and incorporated into many solution theories of operation research, such as dynamic programming and divide-and-conquer. Techniques for designing and implementing algorithm designs are algorithm design patterns, such as template method pattern and decorator pattern, and uses of data structures, and name and sort lists. Some current day uses of algorithm design can be found in internet retrieval processes of web crawling, packet routing and caching. - From Wikipedia, the free encyclopedia
The study of algorithms is one of the central areas of Computer Science. Algorithmic ideas arise frequently in the several sub-areas within computer science as well as beyond; a small sample of these areas include computer systems and networks, data mining, computer vision, social networks, economics and biology. This course encompasses most aspects of the study of algorithms, though some areas are covered in more detail than others. Algorithm types we will consider include:
- Brute Force Algorithms
- Simple Recursive Algorithms
- Divide and Conquer Algorithms
- Simple Iterative Algorithms
- Dynamic Programming Algorithms
- Greedy Algorithms
- Backtracking Algorithms
- Branch and Bound Algorithms
- Advanced Topics in Algorithm Design
Grading
Your performance will be assessed by assignments, quizzes, class participation and final exam. Their weights are:
- Final Exam: 80%
- Project Report: 20%
Assignments have to be typed, if you want them corrected. All of students must work on assignments individually. The assignments play a crucial part in understanding the course material and must be turned in by class time on the due date for full credit. Participation means coming to class, asking questions, taking part in discussions and so on.
References
Recommended Textbooks
[1] R. Neapolitan , "Foundations Of Algorithms" , 5th Edition, Jones & Bartlett Learning, 2015.
[2] T. Cormen, C. Leiserson, R. Rivest and C. Stein , (CLRS) "Introduction to Algorithms" , Third Edition, MIT press, 2009.
Other References:
[3] Kleinberg and Eva Tardos, "Algorithm Design" , 2006.
[4] G. Brassard and P. Bratley, "Fundamental of Algorithms" , First Edition, Prentice Hall, 1996.
[5] H. S. Wilf, "Algorithms and Complexity" , Internet Edition, Summer, 1994.
[6] Peter Gacs and L. Lovasz, "Complexity of Algorithms" , Lecture Notes, Spring 1999.
[7] Lothaire, "Applied Combinatorics on Words" , 2004.
Films
Useful Links
Dictionaries:
eBooks:
Courses:
Sorts, Searchs:
Peoples:
If you have any comments and suggestions about the class and my teaching course, or you know any links about this course, you can send me a mail. I would really appreciate your feedback. Also, If you happen to find an incorrect or non-functional link, please inform me.

Description - Lectures - Grading - References - Films - Useful Links
Last Update: 96/12/01
:: موضوعات مرتبط:
طراحي الگوريتم ها (کارشناسی)
:: برچسبها:
الگوریتم,
طراحی الگوریتم ها,
آنالیز الگوریتم ها