授業科目名 年度 学期 開講曜日・時限 学部・研究科 全担当教員 単位数
34616:データ構造とアルゴリズム(G1) 2019 春セメスター 金3 情報理工学部 白 楊 2

キャンパス

BKC

授業施設

フォレストハウス101号教室

授業で利用する言語

英語

授業の概要と方法

Recent advances in computer technology have increased CPU speed and RAM capacity, allowing us to easily make and run programs without much time and memory optimization efforts. However faster and more memory-efficient algorithms and data structures are desired. This course covers the basic concepts of data structures and algorithms to write, time and memory efficient, programs to solve problems using computers. The Python language is used to implement programming examples and exercises to explain and demonstrate the concepts.

受講生の到達目標

After completion of the course the student is expected to :
* understand and be able to explain the basics of problem solving using computer's algorithms
* understand and be able to explain the basics of algorithm complexity analysis.
* be able to select and apply the most appropriate data structures and algorithms to solve a given problem.
* understand and be able to effectively implement various data structures and algorithms for problem solving.

事前に履修しておくことが望まれる科目

'Introduction to Programming Language'
'Programming Language'
'Programming Practice I'
'Computing Mathematics'
'Mathematical Foundations for Computer Science'

授業スケジュール

授業回数/
担当教員(複数担当の場合)
テーマ
キーワード・文献・補足事項等
w01

Algorithm Analysis (Chapter 3)

asymptotic analysis, big-oh notation, comparative analysis

w02

Recursion (Chapter 4)

examples, analysis, tail recursion, linear/binary/multiple recursion

w03

Array-Based Sequences (Chapter 5)

python sequence types, low-level arrays, dynamic arrays, multi-dimensional data sets, examples

w04

Stacks, Queues, and Deques (Chapter 6)

definitions, implementations, reversing data using stacks, circular arrays

w05

Linked Lists (Chapter 7)

singly/doubly/circularly linked lists, positional lists, sorting positional lists, link-based vs array-based sequences

w06

Trees (Chapter 8)

definition, depth and height, binary trees, tree traversals algortihms

w07

Priority Queues (Chapter 9)

definition, heaps, sorting with a priority queue

w08

Mid-term Review and Quiz

w01-w08 review and short test

w09

Maps, Hash Tables, and Skip Lists (Chapter 10)

maps and dictionaries, hash functions, sorted maps, skip list, sets, multisets and multimaps

w10

Search Trees (Chapter 11)

binary/balanced search trees, AVL/Splay/(2,4)/Red-Black Trees

w11

Sorting and Selection (Chapter 12)

merge sort, quick sort, selection prune-and-search

w12

Text Processing (Chapter 13)

Knuth-Morris-Pratt pattern matching algorithm, dynamic programming, text compression, tries

w13

Graph Algorithms (Chapter 14)

definition, data structures for graphs, graph traversals, shortest paths, dijkstra's algortitm, minimum spanning trees

w14

Memory Management and B-Trees (Chapter 15)

memory allocation, garbage collection, memory hierachies and caching, external searching and B-trees, external memory sorting

w15

Main algorithms and data structures review

review and applications (examples) of the algorithms and data structures covered in the course

授業実施形態

授業外学習の指示

Students should prepare for the class by reading the relevant chapters in the textbook or book references.

成績評価方法

種別 割合(%) 評価基準等
定期試験(筆記) 50

Ability to solve the questions provided in the final exam

レポート試験
(統一締切日を締切とするレポート)

上記以外の試験・レポート、平常点評価
(日常的な授業における取組状況の評価)
50

Attendance, assignments and the mid-term exam

成績評価方法(備考)

受講および研究に関するアドバイス

Students should review, for at least 2-hours a week, the examples given during the class and solve the practice examples provided.

教科書

書名 著者 出版社 ISBNコード 備考
Data Structures and Algorithms in Python Paperback – 2016 Michael T. Goodrich,‎ Roberto Tamassia,‎ Michael H. Goldwasser Wiley india Pvt. Ltd; 1st edition (2016) ISBN-10: 812656217X

教科書(使用頻度、その他補足)

Course classes will be mainly based on the contents of the textbook. A brief summary of the materials will be provided in the class.

参考書

書名 著者 出版社 ISBNコード 備考
Introduction to Algorithms, 3rd Edition (MIT Press) 3rd Edition Thomas H. Cormen,‎ Charles E. Leiserson,‎ Ronald L. Rivest,‎ Clifford Stein The MIT Press; 3rd edition (July 31, 2009) ISBN-10: 0262033844
Data Structures and Algorithms in Java 6th Edition Michael T. Goodrich,‎ Roberto Tamassia,‎ Michael H. Goldwasser Wiley; 6 edition (January 28, 2014) ISBN-10: 1118771338
Problem Solving with Algorithms and Data Structures Using Python (2nd Ed) (online!) Bradley N. Miller,‎ David L. Ranum Franklin, Beedle & Associates; 2nd edition (August 22, 2011) ISBN-10: 1590282574 http://interactivepython.org/runestone/static/pythonds/index.html
Python Algorithms: Mastering Basic Algorithms in the Python Language 2nd ed. Edition Magnus Lie Hetland Apress; 2nd ed. edition (September 4, 2014) ISBN-10: 148420056X
Data Structures and Algorithms with Python 2015th Edition Kent D. Lee,‎ Steve Hubbard Springer; 2015 edition (January 13, 2015) ISBN-10: 3319130714

参考書(使用頻度、その他補足)

The Cormen-Leiserson-Rivest-Stein book covers a wide variaty of algorithms and data structures. A must read.

参考になるwwwページ

Supporting materials for the classes topics will be avaliable and continously updated at http://www.ritsumei.ac.jp/~gulliver/dsaa

授業内外における学生・教員間のコミュニケーションの方法

学生との直接対話,その他(教員より別途指示)

備考