Skip to content

Oliviazjj/course

 
 

Repository files navigation

Object Oriented Development: SENG 330


Schedule and Topics - Fall 2017

The following schedule is subject to change.

Class Topics Resources Readings (do this before this class)
WK 0 Sep 6 No class. Register for Slack • Do Slack polls on Git/Github
Sep 8 Introduction/Overview Github help pagesGithub bootcamp Follow Assignment 0 invite & Send GH username to Omar
WK 1 Sep 12 Software process/lifecycles Cynefin video Agile Lifecycles
Sep 13 Software process/lifecycles the Agile Manifesto and background
Sep 15 Software Teams Conway's LawJoel Test Spotify culture video
Sep 18 Git / Github Tutorial at 5pm, ECS 125 Bring your laptop
WK 2 Sep 19 Software Analysis intro DDD book by Eric EvansDDD exampleDDD intro DZone Domain-driven design Quickly (pages 1-65) (free book download)
Sep 20 DDD approachStartup Slam presentation (DDD book 1-65)
Sep 22 Elicitation and requirements
WK 3 Sep 26 Use case modeling with UML Use Case DiagramsSystem Use Cases
Sep 27 Design modelling with UML UML class diagramsCRC diagrams
Sep 29 Assignment work session Assignment 1 (invite) due in Github midnight
WK 4 Oct 3 OO principles 1 SOLID principles simplified Martin on SOLID (including PDFs of first 5 principles)
Oct 4 OO principles 2 interesting codebases (continue SOLID reading)
Oct 6 OO principles Part the Third PlantUML example codeFowler, DI (continue SOLID reading)
WK5 Oct 10 OO principles cont.
Oct 11 Assn2 recap and refactoring exercise C&K metrics definitions
Oct 13 OO measures and tools SonarSource SIG Maintainable Code chapters 2+3
WK 6 Oct 17 Design Patterns 1 Fowler on Patterns • Assignment 2 (invite) due in Github Oct 16 23:59
Oct 18 Midterm Review
Oct 20 Midterm, in class (up to and incl. Oct 13) Midterm
WK 7 Oct 24 Design Patterns 2
Oct 25 Design Patterns 3
Oct 27 Project team work session and Standups
WK 8 Oct 31 Quality Attributes / Designing for testability
Nov 1 Designing for security
Nov 3 Designing for modularity and maintainability Modifiability tactics
WK9 Nov 7 Designing for CI and releasability Facebook CI article
Nov 8 Code reading
Nov 10 Project work standups and Q&A period
WK 10 Nov 14 Reading Break
Nov 15 Reading Break
Nov 17 Project work standups and Q&A period
WK 11 Nov 21 Design Paradigms / Functional and prototype paradigms
Nov 22 Safety critical and other design approaches
Nov 24 Overflow/slack
WK 12 Nov 28 Project demos Project demos due
Nov 29 Project demos
Dec 1 Top 3 project presentations; final exam review
Dec 6 2pm (tent.) Final Exam; do not make travel or other plans until the date is released by Central Scheduling

Preambular

Calendar Entry: Aspects of object-oriented analysis, design and development. Definition and comparison of object-oriented metrics. Overview of classical functional metrics and their effectiveness in measuring productivity for management or design quality of OO-systems. Verification methods for OO-software and how it differs from functional design testing. Maintenance and reuse issues.

(the official course syllabus is distributed via HEAT)

Past versions:

  • (none easily available from what I can tell, sorry)

Instructors

  • Neil Ernst, instructor. Room ECS 560, office hours shortly after class Tuesday/Wednesday, or by appt.
  • Omar Elazhary, teaching assistant

Course Overview

Object-oriented design and analysis emerged as a response to structured decomposition, popularized by the Xerox PARC work on Smalltalk in the 1970s, and has been the dominant programming paradigm since the 90s (Java, C++, Python, Objective C, and others are examples of OO languages). We will learn about what an "object-oriented approach" implies, compare it to other approaches (such as prototyping, functional programming, and imperative programming), and use OO to take a customer problem from poorly expressed requirements to working prototype.

After the course, students are able to:

  • understand the difference between software programming and software engineering
  • apply object-oriented design and analysis to common software problems and projects
  • work together in teams, with modern(ish) software tools.

Deliverables

The class will use Github and Slack to work on the project. Students will have to register their Github username (either a permanent one or a throwaway) with the instructors. Those with an objection to using Github please contact the instructor for workarounds. All Github activity is private to the class organization. Please see the privacy notice on the Connex site.

Slack will be the primary mechanism used for communication in the class. My rationale (apart from being tools used in practice) is to expose the class as a whole to questions about projects, assignment, and lectures.

University and department policies on professional conduct and integrity are applicable. Feel free to see me in person, or via UVic email, for personal questions.

Assignments

Two assignments both worth 10% of final mark, building towards the project. Due dates as below.

Project

35% of final mark.

Students will be assigned to teams and take a software system from initial requirements to working prototype. Due dates in calendar below.

Project Milestones

Details on specific project milestones will be released throughout the course. The project takes the form of a software application going through cycles of requirements, design, and implementation.

Midterm

Oct 17 20th, 15% of final grade.

Final

A final exam worth 30% will be scheduled by the university in exam period. Do not plan to travel until the date is finalized.

Resources

  1. Slack
  2. Github help pages
  3. Github bootcamp
Papers
Books

About

Course notes, exercises, slides

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published