CS 247 - Software Engineering Principles
Introduction
About these notes
A lot of the time, these notes will not be "comprehensive"
While these notes try to match what's happening in class, many times, especially when there are a lot of diagrams, I will just say to "look at the slides."
That said, enjoy!
Basic Info
Who's Teaching this term?
Her name's Caroline Kierstead, you can reach her at [email protected]
Her office is at MC 4009, and if you (for some reason) need to call her, her ext. is x36226
Where are things posted?
The main website: https://www.student.cs.uwaterloo.ca/~cs247/
Piazza: https://piazza.com/class/j1zdnej6n0o5yt
Office Hours?
Nothing set in stone yet, but tentatively you can meet after the lecture ends.
Mark Breakdown
- 15% - Assignments
- 5% - Assignment 1
- 5% - Assignment 2
- 5% - Assignment 3
- 15% - Project
- 7% - Deliverable 1
- 8% - Deliverable 2
- 20% - Midterm
- 50% - Final Exam
NOTE: A passing mark must be achieved on the exam portion of the course (Midterm and Exam, weighted accordingly) to pass the course.
Course Outline
- ADT Design
- Modules and Interfaces
- Exceptions
- Interface Specification
- OO Design Principles
- Design Patterns
- UML Modelling
- Generic Programming (templates, STL)
- Testing and Debugging
Compiler to use
Make sure your projects run atop Ubuntu 16.04, and g++-5 -std=c++14 -Wall
Q: What is Software Engineering
A: SE is a collection of practices, principles, tools, techniques, etc... that aim to:
- make quality software
- improve developer productivity
- improve scalability of large systems
- improve evolvability
Like other engineering discipline, there is a focus on both safety and economy.
The Ultimate Goal: improve product quality and designer productivity
Attend class!
Data from CS 247 2011