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 pages • Github 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 Law • Joel 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 Evans • DDD example • DDD intro DZone | Domain-driven design Quickly (pages 1-65) (free book download) |
Sep 20 | DDD approach • Startup Slam presentation | (DDD book 1-65) | |
Sep 22 | Elicitation and requirements | ||
WK 3 Sep 26 | Use case modeling with UML | Use Case Diagrams • System Use Cases | |
Sep 27 | Design modelling with UML | UML class diagrams • CRC 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 code • Fowler, 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 |
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)
- Neil Ernst, instructor. Room ECS 560, office hours shortly after class Tuesday/Wednesday, or by appt.
- Omar Elazhary, teaching assistant
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.
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.
Two assignments both worth 10% of final mark, building towards the project. Due dates as below.
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.
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.
Oct 17 20th, 15% of final grade.
A final exam worth 30% will be scheduled by the university in exam period. Do not plan to travel until the date is finalized.
- HeadFirst Design Patterns -- (on course reserve)