2018 Data Structures and Algorithms

Font size  SML

Register update notification mail Add to favorite lecture list
Academic unit or major
Undergraduate major in Computer Science
Koike Hideki 
Course component(s)
Lecture / Exercise
Day/Period(Room No.)
Tue5-6(W321)  Fri5-8(W321)  
Course number
Academic year
Offered quarter
Syllabus updated
Lecture notes updated
Language used
Access Index

Course description and aims

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.

Student learning outcomes

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

Competencies that will be developed

Intercultural skills Communication skills Specialist skills Critical thinking skills Practical and/or problem-solving skills

Class flow

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

  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

Reference books, course materials, etc.

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

Assessment criteria and methods

Midterm exam (30%)
Programming exercise or report (40%)
Final exam (30%)

Related courses

  • GRE.C101 : Foundations of Computer Science I
  • GRE.C102 : Foundations of Computer Science II
  • CSC.T243 : Procedural Programming Fundamentals
  • CSC.T253 : Advanced Procedural Programming
  • LAS.I121 : Computer Science I
  • LAS.I122 : Computer Science II

Prerequisites (i.e., required knowledge, skills, courses, etc.)

No prerequisities. It is desirable to finish the related courses.

Page Top