|
|
Lecture Schedule
(tentative)
|
The
syllabus (Course Information Form) given to students at
the beginning of the semester. |
|
The lecture and lab schedules
given in the syllabus are tentative and updated
here weekly. Look at
this table once a week. |
|
Almost
all the slides used during the semester will be available via the
following links or given to you. |
|
I may skip several slides during the lecture (The
slides given would be generally too much!). They are included in the
course material for completeness and to provide a good reference for your
future professional engineering life. |
|
To
follow the lecture and understand the materials presented in class
better, get the lecture slides and take the print-outs of them, and
please bring them
to class. |
|
Purposes for bringing slides to class: 1) To allow better concentration in lecture by reducing
note-taking pressure and to provide a study-aid before and after lecture. |
|
2) You can
take your notes on these slides and be active
during the lecture. You digest material much better when you actively
take notes from step-to-step demonstrations given by your
instructor than by just sitting and watching slides. |
|
Disclaimers: (a) I
may not follow these
slides exactly in class (b) I may also use
the whiteboard and give some extra notes which will not be posted here
as needed in class (c) Students are responsible for what I say
and teach in class. (d) Reading these slides is
not a substitute for attending lecture |
W |
D |
Lec |
Topics
Agile
Development Perspective |
Lab |
Topics |
Supplementary Notes and
Plan-and-Document Perspective |
Project |
HW |
1 |
24/9 |
Lec 0
Lec 1
|
Course
Overview
Introduction to SaaS and
Agile Development - Basic Concepts
What is Software
Engineering?, Software as a Service, Service Oriented Architecture, Cloud
Computing, Beautiful vs. Legacy Code, Software
Quality Assurance: Testing, Productivity: Conciseness,
Synthesis, Reuse, and Tools. |
|
Introduction to
Lab, Senior Design Project and COM 401
Installing VMs,
and Introduction to Courseware and development tools
|
|
|
|
2 |
1/10 |
Lec 1 |
Introduction to SaaS and
Agile Development - Processes
Software Development Processes: CMMI, Plan-and-Document
Processes: Waterfall, Spiral, RUP. Agile Development. |
Lec
3 |
SaaS
Framework: Introduction to Ruby
Overview and
Introduction to Ruby, Everything is an Object, Every
Operation is a Method Call |
|
Form Teams |
|
3 |
8/10 |
Lec
10 |
Project Management: Scrum and Pairs
(will be updated later)
It Takes a Team: Size and
Scrum, Pair Programming, Agile Design and Code Reviews?
Version Control for the 2-Pizza Team: Merge Conflicts,
Effective Branching, Fixing Bugs: The Five R’s |
|
SaaS
Framework: Introduction to Ruby
Ruby OOP, All Programming is Metaprogramming, Blocks, Iterators, Functional Idioms,
Mixins and Duck Typing
|
|
START Projects
Pick project/customer (8/10/2013)
|
|
|
15/10 |
|
National
Holiday - Kurban Bayramı |
4 |
22/10 |
Lec
2 |
The Architecture of SaaS
Applications
The Web as a
Client-Server System: TCP/IP Intro, Representation: HTML and
CSS, 3-Tier (Shared-Nothing) Architecture and Scaling,
Model-View-Controller Architecture, Active Record for
Models, Controllers, Routes, and RESTfulness, Templete Views |
Lec
4 |
SaaS Framework: Introduction to Rails
Rails Basics: From Zero to
CRUD, Databases and Migrations, Models: Finding, Updating,
Deleting, Models: Active Record Basics, Controllers and
Views, Debugging: When Things Go Wrong, Forms, Redirection
and the Flash, Finishing CRUD |
|
Rubby on Rails Tutorial, by M. Hartl, also teaches
tools such as Git, GitHub, RSpec, and explains how to
deploy programs to
Heroku which is a cloud platform as a service (PaaS).
|
|
|
|
5 |
29/10 |
|
National
Holiday - Cumhuriyet Bayramı |
6 |
5/11 |
Lec
7 |
Requirements: BDD and User Stories
Introduction to
Behavior-Driven Design and User Stories, SMART User Stories,
Points, Velocity, and Pivotal Tracker, Agile Cost
Estimation, Introducing Cucumber and Capybara, Running
Cucumber and Capybara, Lo-Fi UI Sketches and Storyboards |
Lec
5 |
SaaS
Framework: Advanced Rails
DRYing Out MVC, Single Sign-On
and Third-Party Authentication, Associations and
Foreign Keys, Through-Associations RESTful Routes for
Associations, DRYing Out Queries with Reusable Scopes |
|
Iter 0-1: Meet
w/customer, User stories on Tracker |
|
7 |
12/11 |
|
Requirements: BDD and User Stories
Enhancing Rotten Potatoes Again, Explicit vs. Implicit and
Imperative vs. Declarative Scenarios, Plan-And-Document
Perspective |
|
|
|
Iter 0-2: Lo-fi
mockup & storyboard & Initial stories on Tracker |
|
8 |
19/11 |
|
Midterm Exam |
|
|
|
|
|
9 |
26/11 |
Lec
8 |
Testing: Test-Driven
Development
Intro to Rspec and Unit Tests, FIRST, TDD,
and Red-Green-Refactor, Seams and Doubles, Expectations,
Mocks, Stubs, Setup |
Lec 6 |
SaaS Client
Framework: JavaScript
JavaScript: The Big Picture,
Client-Side JavaScript for Ruby Programmers, Functions and
Constructors, The Document Object Model and jQuery, Events
and Callbacks, AJAX: Asynchronous JavaScript And XML,
Testing JavaScript and AJAX, Single-Page Apps and JSON APIs |
|
Iter 1
(deploy + new stories) |
|
10 |
3/12 |
|
Testing: Test-Driven
Development
Fixtures and Factories, TDD for the Model
and Stubbing the Internet, Coverage, Unit vs. Integration
Tests, Other Testing Concepts; Testing vs. Debugging,
Plan-And-Document Perspective on Software Testing |
|
Iteration 1
Demonstration and Evaluation |
|
|
|
11 |
10/12 |
Lec 9 |
Maintenance: Legacy,
Refactoring, and Agile
What Makes Code
“Legacy” and How Can Agile Help? Exploring a Legacy
Codebase, Establishing Ground Truth With Characterization
Tests, Metrics, Code Smells, and SOFA, Method-Level
Refactoring, The Plan-And-Document
Perspective, Reflections, Fallacies, Pitfalls |
|
|
|
Iter
2 (deploy + new stories) |
|
12 |
17/12 |
Lec
11 |
Design
Patterns for SaaS Classes
Patterns, Antipatterns, and
SOLID Class Architecture, Just Enough UML, Single
Responsibility Principle, Open/Closed Principle, Liskov
Substitution Principle, Dependency Injection Principle,
Demeter Principle, The
Plan-And-Document Perspective on Design Patterns |
|
Iteration 2
Demonstration and Evaluation |
|
|
|
13 |
24/12 |
Lec 12 |
Performance,
Releases, Reliability, and Security
From Development to
Deployment, Quantifying Availability and Responsiveness,
Continuous Integration and Continuous Deployment, Upgrades
and Feature Flags, Monitoring |
|
|
|
Iter
3 (deploy + new stories) |
|
14 |
31/12 |
|
Performance,
Releases, Reliability, and Security
Caching: Improving
Rendering Time and Database Performance, Avoiding Abusive
Queries, Security: Defending Customer Data in Your App,
Fallacies and Pitfalls and Concluding Remarks |
|
Iteration 3
Final
Demonstration and Evaluation |
|
|
|
|