2018 Introduction to Algorithms and Data Structures

Font size  SML

Register update notification mail Add to favorite lecture list
Academic unit or major
Undergraduate major in Mathematical and Computing Science
Instructor(s)
Mori Ryuhei  Watanabe Osamu 
Class Format
Lecture / Exercise     
Media-enhanced courses
Day/Period(Room No.)
Tue5-8(W833)  Fri3-4(W833)  
Group
-
Course number
MCS.T213
Credits
3
Academic year
2018
Offered quarter
2Q
Syllabus updated
2018/3/20
Lecture notes updated
-
Language used
Japanese
Access Index

Course description and aims

A procedure for solving a given problem is called "Algorithm". Efficient algorithms often require well-designed data structure. In this course, we deal with typical algorithms and data structures, their computational complexity and their implementation by C programming language.
Since algorithm is a concrete procedure for solving problems, algorithm is foundation of all information processing, and used everywhere in real world. Learning algorithm is quite important, and could affects our thoughts.

Student learning outcomes

(1) Ability of explaining algorithms based on binary search, divide-and-conquer, dynamic programming, and evaluating their computational complexity.
(2) Ability of explaining data structures, e.g., heap, binary search tree, etc, and their functionality, and evaluating their computational complexity.
(3) Ability of implementing algorithms and data structures by using C programming language.
(4) Ability of designing efficient algorithms for given problem.

Keywords

binary search, divide-and-conquer, dynamic programming, heap, binary search tree, graph algorithms

Competencies that will be developed

Specialist skills Intercultural skills Communication skills Critical thinking skills Practical and/or problem-solving skills

Class flow

This course consists of lectures and related exercises (approximately 7 times) by C programming language.

Course schedule/Required learning

  Course schedule Required learning
Class 1 Algorithm and recurrence formula: Euclidean algorithm, binary search Ability of explaining Euclidean algorithm and binary search.
Class 2 Introduction to C programming language (Exercise): Euclidean algorithm, binary search Ability of writing basic program codes in C programming language. Ability of implementing Euclidean algorithm and binary search by C programming language.
Class 3 Order of computational complexity: Euclidean algorithm and binary search Ability of evaluating computational complexity of Euclidean algorithm and binary search. Ability of using big-O notation, etc.
Class 4 Divide-and-conquer: selection sort, insertion sort, merge sort, computational complexity Ability of explaining sorting algorithms including selection sort, insertion sort, merge sort, and evaluating their computational complexity.
Class 5 Divide-and-conquer (Exercise): quickselect, quicksort Ability of implementing quickselect and quicksort by using C programming language.
Class 6 Divide-and-conquer: Set cover problem, fast zeta transform Ability of explaining high-level divide-and-conquer algorithms. Ability of explaining efficient algorithm solving set cover problem using fast zeta transform.
Class 7 Dynamic programming: Fibonacci number, partition number Ability of explaining dynamic programming algorithm for partition number.
Class 8 Dynamic programming: Memoization, bottom-up method, computational complexity Ability of implementing dynamic programming algorithm for partition number using memoization or bottom-up method.
Class 9 Dynamic programming: Knapsack problem, longest increasing subsequence Ability of explaining typical dynamic programming algorithms such as knapsack problem, longest increasing subsequence.
Class 10 Dynamic programming (Exercise): Knapsack problem Ability of implementing dynamic programming algorithm for knapsack problem using C programming language.
Class 11 Dynamic programming (Exercise): Knapsack problem Ability of implementing dynamic programming algorithm for knapsack problem using C programming language.
Class 12 Data structure: Heap, heap sort Ability of explaining heap and its functionality.
Class 13 Data structure (Exercise): Heap, heap sort Ability of implementing heap and heap sort by using C programming language.
Class 14 Data structure: Balanced binary search tree Ability of explaining balanced binary search tree and its functionality.
Class 15 Data structure (Exercise): Malloc, pointer, balanced binary tree Ability of implementing balanced binary tree using malloc and pointer.
Class 16 Data structure (Exercise): Malloc, pointer, balanced binary tree Ability of implementing balanced binary tree using malloc and pointer.
Class 17 Graph algorithms: Breadth-first search, depth-first, search Ability of explaining Breadth-first search, depth-first search and Dijkstra algorithm.
Class 18 High-level algorithm: Convolution problem, discrete Fourier transform, fast Fourier transform. Ability of explaining relationship between convolution problem and discrete Fourier transform. Ability of explaining fast Fourier transform.
Class 19 High-level algorithm: Fast Fourier transform. Ability of implementing fast Fourier transform by C programming language.
Class 20 Randomized algorithm: Miller-Rabin primality test, etc Ability of explaining randomized algorithm such as Miller-Rabin primality test.
Class 21 Quantum algorithm: Grover algorithm, Shor algorithm Ability of explaining abstract of quantum mechanics, quantum computation, Grover's algorithm and Shor's algorithm.

Textbook(s)

All materials used in this course are provided on web page which will be informed in a class.

Reference books, course materials, etc.

T. Cormen, et al., Introduction to Algorithms, 3rd edition ,MIT Press, 2013, ISBN-13 978-0262033848.

Assessment criteria and methods

Programming exercise (approximately 7 times, 60%)
Final exam (40%)

Related courses

  • LAS.I121 : Computer Science I
  • LAS.I122 : Computer Science II
  • MCS.T204 : Introduction to Computer Science

Prerequisites (i.e., required knowledge, skills, courses, etc.)

No prerequisities are necessary, but enrollment in the related courses is desirable.

Contact information (e-mail and phone)    Notice : Please replace from "[at]" to "@"(half-width character).

Ryuhei Mori, mori[at]c.titech.ac.jp
Osamu Watanabe, watanabe[at]c.titech.ac.jp

Office hours

Contact by email in advance for an appointment.

Page Top