KO
|
EN
gitlite โ search
Search
#typescript
#ai-agents
#ai
#dsh-plugin
#deepseek-harness
#open-source
#cli
#claude-code
#codex
#developer-tools
#react
#windows
cs246e-notes
โ 84
Open GitHub โ
Object oriented programming notes
Download README (.md)
Explore Similar Repositories
imagemin-lint-staged
:
imagemin CLI designed for lint-staged usage with sensible defaults
intent_classifier
:
No description available.
copernicus
:
An alternative implementation of the Bitcoin Cash protocol, written in Golang
service
:
๐ฆ Dependency injection / inversion of control framework.
producthunt-preview
:
ProductHunt product previewer ๐
// repository documentation
Was this content helpful?
โ 0
(0 ratings)
Select Rating:
โ
โ
โ
โ
โ
Submit Feedback
Recent Feedback
×
Download README
Do you want to download the
README.md
file for
cs246e-notes
?
Download (.md)
# CS 246 Enriched (Object Oriented Programming) Notes _Course information at the bottom of the page._ These notes cover CS 246E in Fall 2017, the first offering of the course. The textbook used is [The C++ Programming Language](http://www.stroustrup.com/4th.html), reading sections are referenced to this book. ## Table of Contents 1. [Program Input / Output](Notes/problem_1.md) 1. [Linear Collections and Modularity](Notes/problem_2.md) 1. [Linear Collections and Memory Management](Notes/problem_3.md) 1. [Copies](Notes/problem_4.md) 1. [Moves](Notes/problem_5.md) 1. [I want a constant vector](Notes/problem_6.md) 1. [Tampering](Notes/problem_7.md) 1. [Efficient Iteration](Notes/problem_8.md) 1. [Staying in bounds](Notes/problem_9.md) 1. [I want a vector of chars](Notes/problem_10.md) 1. [Better Initialization](Notes/problem_11.md) 1. [I want a vector of Posns](Notes/problem_12.md) 1. [Less Copying!](Notes/problem_13.md) 1. [Memory management is hard!](Notes/problem_14.md) 1. [Is vector exception safe?](Notes/problem_15.md) 1. [Insert/remove in the middle](Notes/problem_16.md) 1. [Abstraction over containers](Notes/problem_17.md) 1. [Heterogeneous Data](Notes/problem_18.md) 1. [I'm leaking!](Notes/problem_19.md) 1. [I want a class with no objects](Notes/problem_20.md) 1. [The copier is broken](Notes/problem_21.md) 1. [I want to know what kind of Book I have](Notes/problem_22.md) 1. [A Big Unit on Object Oriented Design](Notes/object_oriented_design.md) 1. [Shared Ownership](Notes/problem_23.md) 1. [Abstraction over Iterators](Notes/problem_24.md) 1. [I want an ever faster vector](Notes/problem_25.md) 1. [Collecting Stats](Notes/problem_26.md) 1. [Resolving Method Overrides at Compile Time](Notes/problem_27.md) 1. [Polymorphic Cloning](Notes/problem_28.md) 1. [Logging](Notes/problem_29.md) 1. [Total Control](Notes/problem_30.md) 1. [I want total control over vectors and lists](Notes/problem_31.md) 1. [A fixed-size allocator](Notes/problem_32.md) 1. [I want a (tiny bit) smaller vector class](Notes/problem_33.md) ## Other 1. [Valgrind + GDB](Notes/tutorial_1.md) 1. [Recursive Descent](Notes/tutorial_7.md) ## Index Work in progress (feel free to contribute)! ### A - Abstract Class - [20](Notes/problem_20.md) - Adapter Pattern - [A Big Unit on OO Design](Notes/object_oriented_design.md) - Anonymous Namespace - [3](Notes/problem_3.md) - Argument-Dependent Lookup (ADL) - [3](Notes/problem_3.md) ### B - Basic Guarantee - [14](Notes/problem_14.md) ### C - Class - [7](Notes/problem_7.md) - Cohesion - [A Big Unit on OO Design](Notes/object_oriented_design.md) - Const Cast - [21](Notes/problem_21.md) - Const Overloading - [6](Notes/problem_6.md) - Concrete Class - [20](Notes/problem_20.md) - Contravariance Problem - [A Big Unit on OO Design](Notes/object_oriented_design.md) - Copy and Swap Idiom - [4](Notes/problem_4.md) - Copy Constructor - [4](Notes/problem_4.md) - Copy/Move Elision - [5](Notes/problem_5.md) - Coupling - [A Big Unit on OO Design](Notes/object_oriented_design.md) - The Curiously Recurring Template Pattern (CRTP) - [26](Notes/problem_26.md) ### D - Decorator Pattern - [A Big Unit on OO Design](Notes/object_oriented_design.md) - Destructor - [3](Notes/problem_3.md) - Dependency Inversion Principle - [A Big Unit on OO Design](Notes/object_oriented_design.md) - Dynamic Cast - [21](Notes/problem_21.md) ### E - Exception Safety - [14](Notes/problem_14.md) ### F - Factory Method Pattern - [A Big Unit on OO Design](Notes/object_oriented_design.md) - Friend - [8](Notes/problem_8.md) - Forwarding Reference - [13](Notes/problem_13.md) ### G ### H ### I - Initializer List - [11](Notes/problem_11.md) - Inline - [6](Notes/problem_6.md) - Interface Segregation Principle - [A Big Unit on OO Design](Notes/object_oriented_design.md) - Iterator - [8](Notes/problem_8.md) ### J ### K ### L - Liskov Substitution Principle - [A Big Unit on OO Design](Notes/object_oriented_design.md) ### M - Makefile - [1](Notes/problem_1.md) - Member Initialization List - [3](Notes/problem_3.md) - Move Assignment - [5](Notes/problem_5.md) - Move Constructor - [5](Notes/problem_5.md) ### N - Namespaces - [2](Notes/problem_2.md) - Non-Virtual Interface (NVI) Idiom - [A Big Unit on OO Design](Notes/object_oriented_design.md) - Nothrow Guarantee - [14](Notes/problem_14.md) - Nullptr - [2](Notes/problem_2.md) ### O - Observer Pattern - [A Big Unit on OO Design](Notes/object_oriented_design.md) - Open/Closed Principle - [A Big Unit on OO Design](Notes/object_oriented_design.md) ### P - Partial Assignment - [21](Notes/problem_21.md) - Polymorphism - [18](Notes/problem_18.md) - Pure Virtual Function - [20](Notes/problem_20.md) ### Q ### R - Reference - [1](Notes/problem_1.md) - Reinterpret Cast - [22](Notes/problem_22.md) - Resource Acquisition is Initialization (RAII) - [14](Notes/problem_14.md) - Round Bracket Initialization - [11](Notes/problem_11.md) - Run-Time Type Information (RTTI) - [21](Notes/problem_21.md) - Rvalue Reference - [5](Notes/problem_5.md) ### S - Separate Compilation - [1](Notes/problem_1.md) - SFINAE (Substitution Failure Is Not An Error) - [25](Notes/problem_25.md) - Single Responsiblity Principle - [A Big Unit on OO Design](Notes/object_oriented_design.md) - SOLID Principles of OO Design - [A Big Unit on OO Design](Notes/object_oriented_design.md) - Static Cast - [22](Notes/problem_22.md) - Strong Guarantee - [14](Notes/problem_14.md) - Superclass - [18](Notes/problem_18.md) ### T - Template - [10](Notes/problem_10.md) - Template Metaprogramming - [24](Notes/problem_24.md) ### U - Unique Pointer - [14](Notes/problem_14.md) - Universal Reference - [13](Notes/problem_13.md) - UML - [A Big Unit on OO Design](Notes/object_oriented_design.md) ### V - Virtual - [18](Notes/problem_18.md) - Virtual Constructor Pattern - [A Big Unit on OO Design](Notes/object_oriented_design.md) - Visitor Pattern - [A Big Unit on OO Design](Notes/object_oriented_design.md) - Vtable - [18](Notes/problem_18.md) ### W ### X ### Y ### Z ## Course Information (Fall 2017) _Brad Lushman_ _DC 3110_ _bmlushma@uwaterloo.ca_ _[https://www.student.cs.uwaterloo.ca/~cs246e](https://www.student.cs.uwaterloo.ca/~cs246e)_ Must use Linux: **Windows:** putty.exe - connect to linux.student.cs.uwaterloo.ca - enable X11 forwarding - win scp **Mac/Linux:** - terminal, ssh userid@linux.student.cs.uwaterloo.ca Also Install xwindows server, eg. Xming, XQuartz **TUTORIAL ATTENDANCE IS MANDATORY!** ## Goals: - Meet the CS 246 objectives, more breadth, more depth - A course on abstraction - Demand-driven, problem-oriented presentation, introduce C++ concepts as needed - Linux tools on the side/tutorials