Algorithm is a core for designing software for computers, and the concept of data structure is a key to implement algorithms as computer programs. This course covers the basics of algorithms and data structures. By using concrete examples, students learn basic frameworks of algorithm design including, binary search, divide-and-conquer, dynamic programming, randomized method. Introduction to C programming language is given, and students make C programs that implement example algorithms at exercise sessions. Students also learn the concepts of basic data structures and actual ways to use these data structures in C programming. Some well-known algorithms for processing graphs and strings are given for leading students to future topics of algorithms.
At the end of this course, students will be able to:
1) Design standard algorithms for computational tasks.
2) Implement standard algorithms as C programs by using appropriate data structures.
3) Explain the concept of efficiency of algorithms and evaluate algorithms' efficiency quantitatively.
binary search, divide-and-conquer, dynamic programming, randomized method, linear list, heap, binary search tree, graph algorithms, string algorithms
✔ Specialist skills | Intercultural skills | Communication skills | Critical thinking skills | ✔ Practical and/or problem-solving skills |
At the end of about two lectures, students are given exercise problems related to what is taught in the two lectures. At each exercise session, students learn how to make and execute C programs, and make programs for homework subjects.
Course schedule | Required learning | |
---|---|---|
Class 1 | Introduction to algorithms: Algorithms and their relation to computer hardware and software | |
Class 2 | Algorithm description method and computational complexity | Describe an algorithm as a pseudo code and evaluate its efficiency (i.e., time complexity). |
Class 3 | Introduction to C programming language | Understand basic control statements and usage of arrays. |
Class 4 | Programming exercise: Introduction to C programming language | Make simple C programs. |
Class 5 | Algorithm desgin by recursion: Binary search and its recursive design, and introduction to divide-and-conqure | Understand the concept of recursion. |
Class 6 | Algorithm design by devide-and-conqure | Construct a recurive algorithm for some simple computational problem. |
Class 7 | Programming exercise: Divide-and-conqure | Programming by following the divide-and-conqure method. |
Class 8 | Dynamic programming (1): Memorization method | |
Class 9 | Dynamic programming (2): Solution search | Construct an algorithm for some standard problem following recursion, memorization, and solution search steps. |
Class 10 | Programming exercise: Dynamic programming | Programming following the Dynamic programming technique (i.e., recursion, memorization, and solution finding method). |
Class 11 | Randomized algorithm | Analysis of a randomized algorithm. |
Class 12 | Data structure: Heap | Understand the heap structure and its efficiency. |
Class 13 | C programming language: record, pointer | Understand the usage of record and the notion of pointer. |
Class 14 | Programming exericise: Record and pointer | Programming by using records and pointers. |
Class 15 | Programming exericise: Advanced usage of pointers | Programming by using memory allocation commands.. |
Class 16 | Data structure using pointer: linear list and binary search tree | Programming methods by using linear list and binary search tree. |
Class 17 | Programming exercise: List structure | Programming by using linear list and binary search tree. |
Class 18 | Hash | Analysis of hash. |
Class 19 | Famous algorithm (1): Shortest path algorithm | Understanding shortest path algorithms. |
Class 20 | Famous algorithm (2): Pattern matching algorithm | Understanding of pattern matching algorithms. |
Class 21 | Algorithms in practice: algorithms for control and measurement | Understanding of algorithms.for control and measurement. |
Class 22 | Programming exercise: C programming of practical algorithms | Programming one of the algorithms explained at classes 13, 14, and 15. |
All materials used in class are provided during each class; they can be found on OCW-i after each class.
T. Cormen, C. Leiserson, and R. Rivest,and C.Stein, Introduction to Algorithms, 3rd edition ,MIT Press, 2013, ISBN-13: 978-0262033848.
Exercise problems at class (approximately 6 times) (10%)
Programming exercise problems at exercise session (5 times) (30%)
Algorithm design project homework (30%)
Final exam (30%)
No prerequisities are necessary, but enrollment in the related courses is desirable.
Osamu Watanabe watanabe[at]is.titech.ac.jp
Ryuhei Mori mori[at]is.titech.ac.jp
Contact by e-mail in advance for an appointment.