CS247: Software Engineering Principles
My favourite course in 2B. Ross Evans is insane at teaching. He knows C++ unlike Derek…
A class that focuses on Design Patterns and C++.
Concepts
- ADT Design
- explicit keyword
- The Big Five
- Tampering and Forgery
- Modules and Interfaces
- Representation Invariants and Abstraction Functions
- UML Modelling
Lectures
- CS247 Lecture 1
- CS247 Lecture 2
- CS247 Lecture 3
- CS247 Lecture 4
- CS247 Lecture 5
- CS247 Lecture 6
- CS247 Lecture 7
- CS247 Lecture 8
- CS247 Lecture 9
- CS247 Lecture 10
- CS247 Lecture 11
- CS247 Lecture 12
- CS247 Lecture 13
- CS247 Lecture 14
- CS247 Lecture 15
- CS247 Lecture 16
- CS247 Lecture 17
- CS247 Lecture 18
- CS247 Lecture 19
- CS247 Lecture 20
- CS247 Lecture 21
- CS247 Lecture 22
- CS247 Lecture 23
Combined: CS247 Lectures
Final
-
Review lost marks on midterm
- vptr question
- some random multiple choice questions
-
Add in design pattern for Constructor notetodo
-
How do operators get inherited with polymorphism?
-
Review complete Lec 22, and Exception Handling, Exception Safety L12 and L22
-
CRTP, Visitor pattern.
-
RAII and SOLID: RAII is basically managing memory by using smart_ptr. SOLID is good programming practice for longevity of program.
-
Virtual Methods AND Inheritance
-
Generally, we don not call the constructor directly with a pointer, because of the following issues: L13 → basically use
make_unqiue<>
-
Write out Visitor Pattern, not satisfied, now use the CRTP pattern
-
2 problems with
shared_ptr
: cycle and double deletion? -
static_cast doesn’t allow you to cast an AbstractBook* to an int* for example. reinterpret_cast does.
-
Why the ordering obscure when defining a unique pointer inside of a function call? A: The ordering is not only obscure when defining a unique pointer, it can also occur with other functions. In c++14, there is no specification/standard of the ordering, so it is obscure.
Thoughts on final:
- He ended up just asking about the Observer and (I forgot what other) Design Pattern.
- Some True and False questions. Need to explain why it’s false.
- Easy overall
Midterm
From Lecture 1 to Lecture 11 (middle somewhere). Understand the big 5 ahhhhh.
Questions: https://docs.google.com/document/d/1yBlP1CHDUH5gxp0wspMzOOMV9iYvjfRQ-JJDe8w0coI/edit#
- When to declare a function as List?
- Does a class (let’s call it B) within a class (let’s call it A) have access to A’s private fields?
- What does the keyword
explicit
mean?
How to Run Assignments Scrips
…