haw230 / cs246e-notes

Object oriented programming notes

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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, reading sections are referenced to this book.

Table of Contents

  1. Program Input / Output
  2. Linear Collections and Modularity
  3. Linear Collections and Memory Management
  4. Copies
  5. Moves
  6. I want a constant vector
  7. Tampering
  8. Efficient Iteration
  9. Staying in bounds
  10. I want a vector of chars
  11. Better Initialization
  12. I want a vector of Posns
  13. Less Copying!
  14. Memory management is hard!
  15. Is vector exception safe?
  16. Insert/remove in the middle
  17. Abstraction over containers
  18. Heterogeneous Data
  19. I'm leaking!
  20. I want a class with no objects
  21. The copier is broken
  22. I want to know what kind of Book I have
    1. A Big Unit on Object Oriented Design
  23. Shared Ownership
  24. Abstraction over Iterators
  25. I want an ever faster vector
  26. Collecting Stats
  27. Resolving Method Overrides at Compile Time
  28. Polymorphic Cloning
  29. Logging
  30. Total Control
  31. I want total control over vectors and lists
  32. A fixed-size allocator
  33. I want a (tiny bit) smaller vector class

Other

  1. Valgrind + GDB
  2. Recursive Descent

Index

Work in progress (feel free to contribute)!

A

B

  • Basic Guarantee

C

D

E

  • Exception Safety

F

G

H

I

J

K

L

M

  • Makefile
  • Member Initialization List
  • Move Assignment
  • Move Constructor

N

O

P

  • Partial Assignment
  • Polymorphism
  • Pure Virtual Function

Q

R

  • Reference
  • Reinterpret Cast
  • Resource Acquisition is Initialization (RAII)
  • Round Bracket Initialization
  • Run-Time Type Information (RTTI)
  • Rvalue Reference

S

T

  • Template
  • Template Metaprogramming

U

V

W

X

Y

Z

Course Information (Fall 2017)

Brad Lushman
DC 3110
bmlushma@uwaterloo.ca
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:

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

About

Object oriented programming notes