### 2016　Introduction to Algorithms and Data Structures

Font size  SML

Undergraduate major in Mathematical and Computing Science
Instructor(s)
Watanabe Osamu  Ito Toshiya  Mori Ryuhei
Course component(s)
Lecture / Exercise
Day/Period(Room No.)
Tue5-8(W833)  Fri3-4(W833)
Group
-
Course number
MCS.T213
Credits
3
2016
Offered quarter
2Q
Syllabus updated
2016/4/27
Lecture notes updated
-
Language used
Japanese
Access Index ### Course description and aims

Algorithm is a core for designing software for computers, and the concept of data structure is a key to implement algorithms as computer programs. This course covers the basics of algorithms and data structures. By using concrete examples, students learn basic frameworks of algorithm design including, binary search, divide-and-conquer, dynamic programming, randomized method. Introduction to C programming language is given, and students make C programs that implement example algorithms at exercise sessions. Students also learn the concepts of basic data structures and actual ways to use these data structures in C programming. Some well-known algorithms for processing graphs and strings are given for leading students to future topics of algorithms.

### Student learning outcomes

At the end of this course, students will be able to:
1) Design standard algorithms for computational tasks.
2) Implement standard algorithms as C programs by using appropriate data structures.
3) Explain the concept of efficiency of algorithms and evaluate algorithms' efficiency quantitatively.

### Keywords

binary search, divide-and-conquer, dynamic programming, randomized method, linear list, heap, binary search tree, graph algorithms, string algorithms

### Competencies that will be developed

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

### Class flow

At the end of about two lectures, students are given exercise problems related to what is taught in the two lectures. At each exercise session, students learn how to make and execute C programs, and make programs for homework subjects.

### Course schedule/Required learning

Course schedule Required learning
Class 1 Introduction to algorithms: Algorithms and their relation to computer hardware and software
Class 2 Algorithm description method and computational complexity Describe an algorithm as a pseudo code and evaluate its efficiency (i.e., time complexity).
Class 3 Introduction to C programming language Understand basic control statements and usage of arrays.
Class 4 Programming exercise: Introduction to C programming language Make simple C programs.
Class 5 Algorithm desgin by recursion: Binary search and its recursive design, and introduction to divide-and-conqure Understand the concept of recursion.
Class 6 Algorithm design by devide-and-conqure Construct a recurive algorithm for some simple computational problem.
Class 7 Programming exercise: Divide-and-conqure Programming by following the divide-and-conqure method.
Class 8 Dynamic programming (1): Memorization method
Class 9 Dynamic programming (2): Solution search Construct an algorithm for some standard problem following recursion, memorization, and solution search steps.
Class 10 Programming exercise: Dynamic programming Programming following the Dynamic programming technique (i.e., recursion, memorization, and solution finding method).
Class 11 Randomized algorithm Analysis of a randomized algorithm.
Class 12 Data structure: Heap Understand the heap structure and its efficiency.
Class 13 C programming language: record, pointer Understand the usage of record and the notion of pointer.
Class 14 Programming exericise: Record and pointer Programming by using records and pointers.
Class 15 Programming exericise: Advanced usage of pointers Programming by using memory allocation commands..
Class 16 Data structure using pointer: linear list and binary search tree Programming methods by using linear list and binary search tree.
Class 17 Programming exercise: List structure Programming by using linear list and binary search tree.
Class 18 Hash Analysis of hash.
Class 19 Famous algorithm (1): Shortest path algorithm Understanding shortest path algorithms.
Class 20 Famous algorithm (2): Pattern matching algorithm Understanding of pattern matching algorithms.
Class 21 Algorithms in practice: algorithms for control and measurement Understanding of algorithms.for control and measurement.
Class 22 Programming exercise: C programming of practical algorithms Programming one of the algorithms explained at classes 13, 14, and 15.

### Textbook(s)

All materials used in class are provided during each class; they can be found on OCW-i after each class.

### Reference books, course materials, etc.

T. Cormen, C. Leiserson, and R. Rivest,and C.Stein, Introduction to Algorithms, 3rd edition ,MIT Press, 2013, ISBN-13: 978-0262033848.

### Assessment criteria and methods

Exercise problems at class (approximately 6 times) (10%)
Programming exercise problems at exercise session (5 times) (30%)
Algorithm design project homework (30%)
Final exam (30%)

### Related courses

• LAS.I121 ： Computer Science I
• LAS.I122 ： Computer Science II
• MCS.T204 ： Introduction to Computer Science

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

No prerequisities are necessary, but enrollment in the related courses is desirable.

### Contact information (e-mail and phone)    Notice : Please replace from "[at]" to "@"(half-width character).

Osamu Watanabe watanabe[at]is.titech.ac.jp
Ryuhei Mori mori[at]is.titech.ac.jp

### Office hours

Contact by e-mail in advance for an appointment. 