Supplementary Material ESaS-I

Course book:
Engineering Software as a Service: An Agile Approach Using Cloud Computing

Chapters 2.1-2.3 (Foundations)

Topics covered: Client-server, TCP/IP, HTML/CSS

Video CS169 v13 w3l1s7:
CS169 v13 w3l1s7

Video CS169 v13 w3l1s8:
CS169 v13 w3l1s8

Disabling CSS styles in Safari:

Quiz (Slide 20):
Quiz (Slide 20)

Chapter 2.4 (Architecture of SasS)

Topics covered: 3-tier architecture

Video CS169 v13 w3l1s9:
CS169 v13 w3l1s9

Examples for PHP embedded in HTML (server-side):

Examples for JavaScript embedded in HTML (client-side):

Heroku Dynos:

Quiz (Slide 31):
Quiz (Slide 31)

WEBrick replaced by Puma

Definition shared-nothing architecture:
“A shared-nothing architecture (SN) is a distributed-computing architecture in which each update request is satisfied by a single node (processor/memory/storage unit). The intent is to eliminate contention among nodes. Nodes do not share (independently access) memory or storage. One alternative architecture is shared everything, in which requests are satisfied by arbitrary combinations of nodes. This may introduce contention, as multiple nodes may seek to update the same data at the same time.”

Chapter 2.5 (MVC)

Topics covered: model-view-controller

Video CS169 v13 w3l2s1:
CS169 v13 w3l2s1

Example for Sinatra:

Quiz (MCV):
Quiz (MCV)

Chapter 2.6 (Models)

Topics covered: models, databases, and active record

Video CS169 v13 w3l2s3:
CS169 v13 w3l2s3

Definition of Active Record:
“In software engineering, the active record pattern is an architectural pattern found in software that stores in-memory object data in relational databases. It was named by Martin Fowler in his 2003 book Patterns of Enterprise Application Architecture. The interface of an object conforming to this pattern would include functions such as Insert, Update, and Delete, plus properties that correspond more or less directly to the columns in the underlying database table. The active record pattern is an approach to accessing data in a database. A database table or view is wrapped into a class. Thus, an object instance is tied to a single row in the table. After creation of an object, a new row is added to the table upon save. Any object loaded gets its information from the database. When an object is updated, the corresponding row in the table is also updated. The wrapper class implements accessor methods or properties for each column in the table or view.”

Quiz (Model):
Quiz (MCV)

Chapter 2.7 (Controllers)

Topics covered: controllers, routes, and REST

Video CS169 v13 w3l2s5:
CS169 v13 w3l2s5

Guide on “Rails Routing from the Outside In”:

Quiz (RESTful routes):
Quiz (RESTful routes)

Chapter 2.8 (Views)

Topics covered: template views, Haml

Video CS169 v13 w3l2s7:
CS169 v13 w3l2s7

Ruby Closures 101:

Transform View:

Haml Tutorial:

Quiz (Rails views):
Quiz (Rails views)

Chapter 2.9-2.10 (Summary)

Topics covered: architecture, patterns, scalability

Video CS169 v13 w3l2s9:
CS169 v13 w3l2s9

Top 15 famous websites built with Ruby on Rails:

Quiz (SaaS scalability):
Quiz (SaaS scalability)

Chapter 3.1 (Introduction to Ruby)

Topics covered: naming conventions, variables, arrays, hashes, methods, comparisons, regular expressions, strings, symbols

Video CS169 v13 w2l1s10:
CS169 v13 w2l1s10

Statically typed vs. dynamically typed programming languages:

Quiz (Ruby regex):
Quiz (SaaS scalability)

Chapter 3.2-3.3 (Objects and Method Calls)

Topics covered: objects, methods, “poetry mode”

Video CS169 v13 w2l2s1:
CS169 v13 w2l2s1

Quiz (Ruby methods):
Quiz (Ruby methods)

Chapter 3.4 (Ruby OOP)

Topics covered: classes, inheritance, instance variables, attr_accessor

Video CS169 v13 w2l2s3:
CS169 v13 w2l2s3

Quiz (Instance methods):
Quiz (Instance variables)

Chapter 3.5 (Metaprogramming)

Topics covered: metaprogramming, reflection

Video CS169 v13 w2l2s5:
CS169 v13 w2l2s5

Quiz (Metaprogramming):
Quiz (Metaprogramming)

Chapter 3.6 (Iterators and Functional Idioms)

Topics covered: iterators, blocks, lambda expressions, other functional idioms

Video CS169 v13 w2l2s7:
CS169 v13 w2l2s7

Lamdba expressions in Ruby:
“the convention followed in Ruby is to use {} for single line lambdas and do ... end for lambdas that are longer than a single line.”

Difference between print and puts:

Quiz (Iterators and Functional Idioms):
Quiz (Iterators and Functional Idioms)

Chapter 3.7 (Mixins and Duck Typing)

Topics covered: duck typing, Ruby modules, mixins, spaceship operator, composition vs. inheritance

Video CS169 v13 w2l2s9:
CS169 v13 w2l2s9

Duck Typing:
“It is a term used in dynamic languages that do not have strong typing. The idea is that you don’t need a type in order to invoke an existing method on an object - if a method is defined on it, you can invoke it. The name comes from the phrase ‘If it looks like a duck and quacks like a duck, it’s a duck’.”

Difference between Ruby classes and modules:

The Spaceship Operator <=>:
“Basically instead of returning 1 (true) or 0 (false) depending on whether the arguments are equal or unequal, the spaceship operator will return 1, 0, or −1 depending on the value of the left argument relative to the right argument.”

Quiz (Ruby modules):
Quiz (Ruby modules)

Composition vs. Inheritance: How to Choose?

Chapter 3.8 (Yield)

Topics covered: blocks, iterators

Video CS169 v13 w3l1s1:
CS169 v13 w3l1s1

Ruby blocks and yield statement:

The Ultimate Guide to Blocks, Procs & Lambdas: