Information Technology Seminar I: Schedule

Practical Object-Oriented Design

Aoyama Gakuin University, Summer 2019, Martin J. Dürst (last updated 2019-08-23)

(links to presentations and minutes are only accessible with a password)

Chapter and page numbers refer to Practical Object-Oriented Design - An Agile Primer Using Ruby, Second Edition, Sandi Metz, Pearson Addison-Wesley, 2019.

Code for this book is available at https://github.com/skmetz/poodr2 (use Download ZIP if you don't want to install git). To execute, move to the directory where the code is and start irb with irb --simple-prompt. Once in irb, use require 'absolute_program_name' or require_relative 'relative_program_name'.

April 10
Introduction: Martin J. Dürst
Homework for April 17: Install Ruby (install the latest versions of Ruby 2.5 (or Ruby 2.4) from RubyInstaller (including Devkit), or make sure that your cygwin installation includes a recent Ruby version)
For a gentle introduction to Ruby, please also see Programming Basics II (2011)
April 17 (Martin J. Dürst)
Introduction to Ruby
April 24 (minutes: 瀧平)
a) 1. Object-Oriented Design (pp. 1-13): Ju
b) 2. Designing Classes with a Single Responsibility (pp. 15-23): 木下
May 1: 即位の日、休講
May 8 (minutes: 木下)
c) Writing Code That Embraces Change (pp. 24-35): 野口
d) 3. Managing Dependencies (pp. 37-48): 川西
May 15 (minutes: 野口)
e) Remove Argument-Order Dependencies (pp. 48-59): 佐藤
f) 4. Creating Flexible Interfaces (pp. 61-72): 三倉
May 22 (minutes: 川西)
g) Seeking Context Independence (pp. 72-84): 松下
h) 5. Reducing Costs with Duck Typing (pp. 85-95): 瀧平
May 29 (minutes: Ju)
i) Writing Code That Relies on Ducks (pp. 95-103): 山下
j) 6. Acquiring Behavior through Inheritance (pp. 105-116): 吉村
June 5 (minutes: 三倉)
A) Finding the Abstraction (pp. 116-129): 野口
B) Managing Coupling between Superclasses and Subclasses (pp. 129-140): 佐藤
June 12 (minutes: 佐藤)
C) 7. Sharing Role Behavior with Modules (pp. 141-158): 松下
D) Writing Inheritable Code, 8. Combining Objects with Composition (pp. 158-176): 瀧平
June 19 (minutes: 松下)
E) Manufacturing Parts (pp. 176-191): 山下
F) 9. Designing Cost-Effective Tests (pp. 193-208): 木下
June 26 (minutes: 山下)
G) Injecting Dependencies Using Classes (pp. 208-227): 吉村
H) Using Role Tests to Validate Doubles (pp. 227-244): 三倉
July 3 (minutes: 吉村)
I) 99 Bottles of OOP, Chapter 1: Ju
J) 99 Bottles of OOP, Chapter 6: 川西
July 10: Research at the Software Lab (reports by teachers and B4/M1 students)
Yoshiyuki Shoji
Tsukasa Sawaura
July 17: Research at the Software Lab (reports by teachers and B4 students)
Martin Dürst
Keita Sugitani
July 24: Research at the Software Lab (reports by B4/M1/M2 students and interns)
David Gomez: Implementing Sparse Matrices with Ruby
Kanami Inaba: SVG and SVuGy
(July 27 to August 3: Term final exams)