2023 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)
Yasunaga Kenji  Yoshida Yusuke 
Class Format
Lecture / Exercise    (Face-to-face)
Media-enhanced courses
Day/Period(Room No.)
Tue5-8(M-123(H111))  Fri5-6(M-123(H111))  
Group
-
Course number
MCS.T213
Credits
3
Academic year
2023
Offered quarter
2Q
Syllabus updated
2023/4/26
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

Lectures are held on Tuesdays and Fridays 5-6 periods
Exercises are held on Tuesdays 7-8 periods at the computer laboratory
On each exercise day, students will be given exercise to implement algorithms by C language and a report assignment.

Course schedule/Required learning

  Course schedule Required learning
Class 1 Algorithm and recurrence formula: Euclidean algorithm. The ability to explain the Euclidean algorithm.
Class 2 [Exercise] Introduction to C programming language: Euclidean algorithm, number theoretic algorithms. Ability to write basic program codes in C programming language. Ability to implement number theoretic algorithms in C programming language.
Class 3 Order of computational complexity: binary search Ability to evaluate computational complexity of binary search. Ability to use big-O notation, etc.
Class 4 Divide-and-conquer 1: selection sort, insertion sort, computational complexity Ability to explain sorting algorithms including selection sort, and insertion sort.
Class 5 [Exercise] Binary search Ability to implement binary search algorithms
Class 6 Divide-and-conquer 2: merge sort Ability to explain merge sort and evaluate the complexity of sorting algorithms.
Class 7 Dynamic programming 1: Fibonacci number, partition number Ability to explain dynamic programming algorithms for Fibonacci numbers and partition numbers.
Class 8 (Exercise3) Divide-and-conquer: quicksort Ability of implementing quickselect and quicksort by using C programming language.
Class 9 Dynamic programming 2: knapsack problem Ability to explain typical dynamic programming algorithms such as knapsack problem, and longest increasing subsequence.
Class 10 Dynamic programming 3: edit distance Ability to explain dynamic programming algorithms for edit distance.
Class 11 [Exercise4 ]Dynamic programming Ability to implement dynamic programming algorithms for using C programming language.
Class 12 Data structure 1: list, queue, stack Ability to explain basic data structures including list, queue, and stack
Class 13 Data structure 2: balanced binary search tree Ability to explain balanced binary search tree
Class 14 [Exercise5] Data structure: malloc, pointer, balanced binary search tree Ability to implement a balanced binary search tree and its functionality.
Class 15 Graph algorithms: breadth-first search, depth-first search Ability to explain breadth-first search, depth-first search, and Dijkstra algorithm
Class 16 Data structure 3: heap, heap sort Ability to explain heap and heap sort
Class 17 [Exercise6] Data structure: heap, heap sort Ability to implement heap and heap sort by using C programming language.
Class 18 Divide-and-conquer 3: matrix multiplication, polynomial multiplication Ability to explain Karatsuba and Strassen algorithm.
Class 19 Divide-and-conquer 4: convolution problem, discrete Fourier transform, fast Fourier transform. Ability to explain the relationship between convolution problem and discrete Fourier transform. Ability to explain fast Fourier transform.
Class 20 [Exercise] Fast Fourier transform Ability to implement fast Fourier transform by C programming language.
Class 21 Randomized algorithm: universal hash function, hash table Ability to explain universal hash function and hash table.

Out-of-Class Study Time (Preparation and Review)

To enhance effective learning, students are encouraged to spend a certain length of time outside of class on preparation and review (including for assignments), as specified by the Tokyo Institute of Technology Rules on Undergraduate Learning (東京工業大学学修規程) and the Tokyo Institute of Technology Rules on Graduate Learning (東京工業大学大学院学修規程), for each class.
They should do so by referring to textbooks and other course material.

Textbook(s)

None required

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 assignments and reports

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.)

Only the Department of Mathematical and Computing Science students may take this course due to capacity of the computer laboratoly.
Students must have completed related courses or have equivalent knowledge.

Page Top