Software Development (CSC 321 2016S) : Handouts

Schedule


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

Monday Wednesday Friday
Week 01: Getting Started
(01) 25 January 2016 An Introduction to the Course Quiz. What is this course? Course goals. Why this course? Course structure. (Possibly) work time. (02) 27 January 2016 Deploying Rails Applications A quick overview of Ruby. Setting up your first Rails app. Reading: Hartl 1 (03) 29 January 2016 Your First Rails Application Reflections from classes 1 and 2. Activity: Building a toy app. Debrief. Reading: Hartl 2
Week 02: Software Engineering Basics
(04) 1 February 2016 A Static Site Reflections on chapters 1-2, continued. Testing. Starting our primary application. Reading: Hartl 3 (05) 3 February 2016 An Introduction to Software Engineering The Semi-Flipped Classroom. Software Engineering: An Overview. Thoughts from the Readings. Reading: SaaS 1, 10.1-10.2, 7.1, 7.3-7.4 (06) 5 February 2016 User Stories User stories. Exercise: Developing user stories. Additional work time: Hartl 3. Reading: SaaS 3, 8.1-8.2; Hartl 4
Week 03: Software as a Service
(07) 8 February 2016 Extending Your Rails Application (1) A few Ruby-isms. HTML 5 structure. Work time. Reading: Hartl 5 (08) 10 February 2016 Modeling Basics Models. Databases. Migrations. And more. Reading: Hartl 6 (09) 12 February 2016 Software as a Service Learning from Video. DRY. Data Modeling. Thinking about SaaS. Rails, revisited. Reading: SaaS 2, 4
Week 04: BDD and TDD
(10) 15 February 2016 Modeling, Continued A Sample Database Design. Analysis. A Revised Design. Lessons. (11) 17 February 2016 Behavior-Driven Development Modeling Lessons. BDD Basics. Cucumber Basics. A Cucumber Example. Cucumber in Practice. Reading: SaaS 7 (12) 19 February 2016 Pause for Breath
Week 05: Software Design, Revisited
(13) 22 February 2016 Test-Driven Development Review: Buggy code. Loop invariants. Code smells. Test-driven development. Code coverage. Work time. Reading: SaaS 8 (14) 24 February 2016 Codes of Ethics Ugly Code, Revisited. Professional Codes of Ethics. Comments From 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. https://www.computer.org/cms/Computer.org/Publications/code-of-ethics.pdf. Peter G. Neumann (February 2015). Inside Risks: Far-sighted thinking about deleterious computer-related events. CACM 58 (2): 30-33. http://www.csl.sri.com/users/neumann/cacm235.pdf. ACM Council (October 1992). ACM Code of Ethics and Professional Behavior. http://www.acm.org/about/code-of-ethics/. (15) 26 February 2016 Codes of Ethics, Revisited Writing prompt. Three articles. Open questions. Possible approaches to prompt.
Week 06: A Quiet Week
(16) 29 February 2016 Legacy Code Legacy code. Smells and refactoring. Some examples. Reading: SaaS 9, 10.4-10.9 (17) 2 March 2016 UML (18) 4 March 2016 Professional 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. http://dl.acm.org/citation.cfm?id=2566966. Neil McBride (August 2012). The ethics of software engineering should be an ethics for the client. Communications of the ACM 55(8): 39-41. http://dl.acm.org/citation.cfm?id=2240250. Deborah G. Johnson (October 2008). Computer experts: Guns-for-hire or professionals? Communications of the ACM 51(10): 24-26. http://dl.acm.org/citation.cfm?id=1400190.
Week 07: Wrapup
(19) 7 March 2016 Design Patterns for SaaS Design patterns. The GoF list of patterns. More code smells. Reading: SaaS 11 (20) 9 March 2016 Good Design, Revisited Reading: TBD (21) 11 March 2016 Course Wrapup Notes on grading. The subject matter(s) of the course. EOCE. Debriefing. Final comments.