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 (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)