COM 401 Software Engineering

Home
Up

 


   Lecture Schedule (tentative)

bullet

The syllabus (Course Information Form) given to students at the beginning of the semester.

bullet

The lecture and lab schedules given in the syllabus are tentative and updated here weekly. Look at this table once a week.

bullet

Almost all the slides used during the semester will be available via the following links or given to you.

bullet

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.

bullet

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.

bullet

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.

bullet

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.

bullet

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

bullet

Lec 1-Supp - Some Fundamentals

   
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

bullet

Ruby for beginners: tryruby.org   codecademy.com

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

 

bullet

Getting Started with Rails


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

bullet

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

bullet

Getting Started Pivotal Tracker, story-based project planning tool  

bullet

Cucumber Part 1 and Part 2

bullet

BDD with Rails

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
 

 

bullet

Requirements Engineering-Classical Plan-and-Document Perspective

bullet

UML

bullet

IEEE IEEE Std 830-1998 - Software Requirements Specifications (SRS)

bullet

Senior Design Project I Report Template

bullet

RAD Samples

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
bullet

Cucumber/RSpec Cycle Part 1 and Part 2

bullet

HTML, CSS, etc.: W3 Schools   codecademy.com   codeavengers

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
bullet

Introduction to Design Patterns

bullet

Design Patterns Examples in Java

 

 
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      

  

 

Home | COM 401 Software Engineering | Policies and Regulations