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, and binary search tree
  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 Balancing
  17. Advanced Algorithm: Dynamic Programming
  18. Super Application: Computational Origami
Handout distributed on the first day.
Final report
Final report is now available. The dead line is February 8.

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