Introduction to Algorithms and Data Structures

Course goal
To understand the meaning and importance of algorithms.
Course content
A formal procedure for solving a problem is called an ``algorithm'' and a way of storing data in a computer is called a data structure. There may be a number of combinations of algorithms and data structures for a problem, in general. It is important to evaluate them by computation time and space requirement to choose the best combination. It is not sufficient to understand conventional algorithms, but it is more meaningful to master how to design algorithms. In this lecture, a general but basic scheme for algorithm design through validation of correctness of algorithms and investigation of improvement of algorithm efficiency is explained.
References
Tentative Schedule
  1. Intruduction to Introduction to Algorithms
  2. Foundation of Algorithms (1): Basic model
  3. Foundation of Algorithms (2): Simple basic algorithms
  4. Searching (1): Sequential search
  5. Searching (2): Block search
  6. Searching (3): Binary Search and Hash method
  7. Fundation of Algorithms (3): Big-O notation
  8. Data Structure (1): Data structures for search algorithms
  9. Data Structure (2): Operations on linked lists
  10. Data Structure (3): Stack, Queue, and Heap
  11. Sorting (1): Bubble sort and Insertion sort
  12. Sorting (2): Heap sort and Merge Sort
  13. Sorting (3): Quick sort, complexity of sort algorithms, and counting sort
  14. Data Structure (4): Data structures for graphs
  15. Graph Algorithms (1): Breadth-first search and Depth-first search
  16. Data Structure (5): Dynamic Search Tree and its balancing
  17. Super Apllication: Computational Origami
Final report
Final report is now available. Please send a PDF file to Uehara by email (uehara@jaist.ac.jp) until February 11.

Last modified: Thu Jan 25 15:10:24 JST 2018
by Ryuhei Uehara (uehara@jaist.ac.jp)
Valid HTML 4.0!