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, selection sort | Learn basic sorting algorithms |
Class 11 | Sorting: heap sort, merge sort, quicksort | Learn advanced sorting algorithms |
Class 12 | Programming exercise | Learn how to write sorting alborithms |
Class 13 | Mid term exam. | |
Class 14 | Divide-and-conquer | Learn divide-and-conquer |
Class 15 | Graph algorithms: graph data structures, depth first search, breadth first search | Learn graph algorithms: |
Class 16 | Graph algorithms: shortest path (Dijkstra, Floyd-Warshall), minimum spanning tree (Kruskal, Prim) | Learn graph algorithms: |
Class 17 | Programming exercise | Specified in the class |
Class 18 | String matching | Understand string matching algorithm |
Class 19 | String matching | Understand string matching algorithm |
Class 20 | Programming exercise | Specified in the class |
Class 21 | Advanced algorithms | Learn more advanced algorithms |
Class 22 | Final exam. |
Suppliment materials are provided in the class
Toshihide Ibaraki：Algorithms and Data Structures in C (in Japanese)，Ohmsha，ISBN 978-4-274-21604-6
R. Sedgewick: Algorithms in C, Parts 1-4: Fundamentals, Data Structures, Sorting, Searching (English Edition).
R. Sedgewick: Algorithms in C, Part 5: Graph Algorithms (English Edition)
Midterm exam (30%)
Programming exercise or report (40%)
Final exam (30%)
No prerequisities. It is desirable to finish the related courses.