This course teaches the basics of data structures and algorithms in computer science. In the first half period, students will learn basic data structures and algorithms, In the second half period, students will learn advanced topics of algorithms.
Each student will obtain:
(1) knowledge of data types and algorithms which are bases of computer science
(2) implementation of these data types and algorithms in C programming language
(3) knowledge of each algorithm's efficency
list, stack, tree, binary search, graph algorithm, sorting, divide-and-conquer, dynamic programming, string matching
Intercultural skills | Communication skills | ✔ Specialist skills | Critical thinking skills | ✔ Practical and/or problem-solving skills |
After each two lectures, one excersise is done. In the excersise, students will learn how to implement the data structures and algorithms in C programming language.
Course schedule | Required learning | |
---|---|---|
Class 1 | Introduction to algorithms | Understand what is algorithm. |
Class 2 | Abstract data types, computational efficiency | Understand abstract data types, computational efficiency. |
Class 3 | Programming exercise | Learn basic of C Programming |
Class 4 | Basic data types: lists, stacks, queues | Understand lists, stacks, and queues. |
Class 5 | Basic data types: graphs, trees, binary trees | Understand graphs, trees, and binary trees. |
Class 6 | Programming exercise | Learn how to write basic data structures |
Class 7 | Basic data types: dictionary, hash | Understand dictionaries and hash |
Class 8 | Ordered sets: heaps, binary search trees, balanced tree | Learn ordered sets such as heaps, binary search trees, balanced trees |
Class 9 | Programming exercise | Learn how to program sets |
Class 10 | Sorting: bubble sort, insertion sort, merge sort | Learn basic sorting algorithms |
Class 11 | Sorting: heap sort, quicksort | Learn advanced sorting algorithms |
Class 12 | Programming exercise | Learn how to write sorting alborithms |
Class 13 | Divide-and-Conquer algorithms | Learn divide-and-conquer algorithms |
Class 14 | Dynamic Programming | Learn dynamic programming algorithms |
Class 15 | Programming exercise | Specified in the class |
Class 16 | Optimization problem: resource allocation problem, knapsack problem | Understand optimization problem |
Class 17 | Graphs: minimal tree, shortest paths | Understand graph problem including minimal trees and shortest paths problem. |
Class 18 | Programming exercise | Specified in the class |
Class 19 | String matching | Understand string matching algorithm |
Class 20 | Computational geometry | Undetstand computational geometry |
Class 21 | Programming exercise | Specified in the class |
Class 22 | Advanced algorithms | Learn more advanced algorithms |
Suppliment materials are provided in the class
Toshihide Ibaraki：Algorithms and Data Structures in C (in Japanese)，Ohmsha，ISBN 978-4-274-21604-6
Cormen, Leiserson, Rivest, Stein: Introduction to Algorithms, 3rd edition, MIT Press, ISBN 978-0262033848
Midterm exam (30%)
Programming exercise or report (40%)
Final exam (30%)
No prerequisities. It is desirable to finish the related courses.