Information Technology Seminar I: Schedule

Practical Object-Oriented Design

Aoyama Gakuin University, Summer 2020, Martin J. Dürst (last updated 2020-07-13)

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

Chapter and page numbers refer to 99 Bottles of OOP - A Practical Guide to Object-Oriented Design (Ruby Edition, The Milk Version), Sandi Metz & Katrina Owen, Potato Canyon Software, 2017.

Code for this book is available at (Download ZIP unfortunately doesn't work; download individual files if you don't want to install (tortoise)svn or git). To execute, move to the directory where the code is and start irb with irb. Once in irb, use load 'bottles.rb' and then Happy singing!

May 6
Introduction: Martin J. Dürst
Homework for May 13: Install Ruby (install the latest versions of Ruby 2.7 (or Ruby 2.6) from RubyInstaller (with 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)
May 13 (Martin J. Dürst)
Introduction to Ruby
May 20 (minutes: 中平)
a) Front matter, Introduction, Rediscovering Simplicity (~1.1.1, pp. 1-15): 吉武
b) 1.1.2 Speculatively General, 1.1.3 Concretely Abstract (pp. 15-21): 中島
May 27 (minutes: 吉武)
c) 1.1.4 Shameless Green, 1.2 Judging Code (pp. 21-28): 神野
d) Test Driven Development (pp. 29-35): 川原
June 3 (minutes: 中島)
e) 2.4 Understanding Transformations (pp. 35-42): Yu
f) 2.7 Exposing Responsibilities (pp. 42-50): 石川
June 10 (minutes: 川原)
g) 2.11 Avoiding the Echo Chamber (pp. 50-58): 矢野
h) 3.2 Starting with the Open/Closed Principle (pp. 58-63): 中平
June 17 (minutes: 矢野)
i) 3.7 Converging on Abstractions (pp. 63-74): 平山
j) 4. Practicing Horizontal Refactoring (pp. 75-82): 関野
June 24 (minutes: 関野)
A) 4.4 Choosing Meaningful Defaults (pp. 82-92): 吉武
B) 4.7 Taking Bigger Steps (pp. 92-102): 神野
July 1 (minutes: 神野)
C) 5. Separating Responsibilities (pp. 103-111): 中島
D) 5.2 Extracting Classes (pp. 111-124): Yu
July 8 (minutes: Yu)
E) 5.3 Appreciating Immutability (pp. 124-133): 矢野
F) 6. Achieving Openness (pp. 134-147): 平山
July 15 (minutes: 平山)
G) 6.3.3 Prevailing with Polymorphism (pp. 148-169): 石川
H) Metaprogramming: 川原
July 22 (minutes: 石川)
I) SVuGy - Exploring the Space between Procedural and Declarative Graphics: 中平
J) Ruby on Rails: The Rails Doctrine: 関野
July 29: Research at the Software Lab
August 5: Research at the Software Lab
August 12: Research at the Software Lab