Software Development (CSC 321 2016F) : Handouts


This is an approximate schedule. Expect topics and dates of topics to change. (I will try to keep due dates of assignments the same.)

Week 01: Getting Started
Date Topic Reading Lab Work Due
01 26 August 2016 An Introduction to the Course Quiz. What is this course? Course goals. Why this course? Course structure. (Possibly) setup time.
02 29 August 2016 Getting Started with Ruby Ruby Some Ruby Problems Reading: SaaSbook 3.1-3.4
03 31 August 2016 Deploying Rails Applications Setting up your first Rails app. Reading: Hartl 1
04 2 September 2016 Your First Rails Application Activity: Building a toy app. Debrief. Reading: Hartl 2
Week 02: Software Engineering Basics
Date Topic Reading Lab Work Due
05 5 September 2016 A Static Site Reflections on chapters 1-3. Testing. Starting our primary application. Reading: Hartl 3
06 7 September 2016 An Introduction to Software Engineering Planning for Client Meetings. Software Engineering: An Overview. Some Important Terms. Thoughts from the Readings. Reading: SaaS 1, 10.1-10.2, 7.1, 7.3-7.4
07 9 September 2016 Ruby, Revisited What is software engineering? Why study software engineering? (Revisited) A few more notes on Agile programming. Web technologies. Ruby-isms and Rails-isms. Reading: SaaS 3.5-3.8; Hartl 4
Week 03: Modeling
Date Topic Reading Lab Work Due
08 12 September 2016 User Stories User stories. Sample user stories. Some Ruby-isms. (If there's time.) Reading: SaaS 8.1-8.2
09 14 September 2016 Extending Your Rails Application (1) Work time. Reading: Hartl 5
10 16 September 2016 Modeling Basics Models. Databases. Migrations. And more. Reading: Hartl 6
Week 04: Rethinking Development
Date Topic Reading Lab Work Due
11 19 September 2016 Modeling, Continued Data Modeling. Exercise: A Sample Database Design. Analysis. Revisions.
12 21 September 2016 Software as a Service DRY. Thinking about SaaS. Rails, revisited. Reading: SaaS 2, 4
13 23 September 2016 Behavior-Driven Development TDD Basics. BDD Basics. Cucumber Basics. A Cucumber Example. Cucumber in Practice. Reading: SaaS 7
Week 05: Professional Responsibilities
Date Topic Reading Lab Work Due
14 26 September 2016 Codes of Ethics Professional Codes of Ethics. Additional Discussion Topics (suggested by students). Agile and Ethical. Reading: Don Gotterbarn, Keith Miller, and Simon Rogerson (October 1999). Computer Society and ACM approve Software Engineering Code of Ethics. IEEE Computer 32(10): 84-88. Peter G. Neumann (February 2015). Inside Risks: Far-sighted thinking about deleterious computer-related events. CACM 59 (2): 30-33. ACM Council (October 1992). ACM Code of Ethics and Professional Behavior.
15 28 September 2016 Test-Driven Development Review: Buggy code. Loop invariants. Surveillance. Reading: SaaS 8
16 30 September 2016 Legacy Code Global surveillance. Legacy code. Smells and refactoring. Some examples. Reading: SaaS 9, 10.4-10.9
Week 06: Miscellaneous
Date Topic Reading Lab Work Due
17 3 October 2016 Refactoring
18 5 October 2016 Codes of Ethics, Revisited Writing prompt. Codes of ethics, revisited. Reading: Arvind Narayaan and Shannon Vallor (March 2014). Why software engineering courses should include ethics coverage. Communications of the ACM 57(3): 23-25. Neil McBride (August 2012). The ethics of software engineering should be an ethics for the client. Communications of the ACM 55(8): 39-41. Deborah G. Johnson (October 2008). Computer experts: Guns-for-hire or professionals? Communications of the ACM 51(10): 24-26.
19 7 October 2016 UML
Week 07: Wrapup
Date Topic Reading Lab Work Due
20 10 October 2016 Design Patterns for SaaS Refactoring, revisited. Design patterns. The GoF list of patterns. Reading: SaaS 20
21 12 October 2016 Good Design, Revisited Design Patterns. The GoF List. Some Questions. SOLID. Reading: TBD
22 14 October 2016 Course Wrapup The subject matter(s) of the course. Debriefing. EOCE.