COP-3337, Intermediate Programming
- August 24: Introduction and Administrivia
- Check out the web site.
- Get your accounts in order.
- Compiling and running programs.
- Simple syntax: types, I/O, expressions, statements.
- Functions: declaration vs. definition.
- Call by value and call by reference.
- August 26: Arrays (Chapter 1)
- vector class.
- Parameter passing: call by constant reference.
- resizing and push_back
- August 31: strings and files (Chapter 1, Appendix A)
- September 2: Exam #1
- Open book. Bring any references that you want.
- September 7: Structs and Classes: Part I
- Read Chapter 2.
- Basics of structs
- Classes: interfaces, member functions, visibility
- Separation of interface and implementation
- Constructors and Destructors
- Default parameters
- September 9: Structs and Classes: Part II
- Accessor/Mutator
- Scope :: operator
- ifndef/endif and separate compilation
- Static members
- Const and non-const methods
- Assignment #2
- September 14: Class is cancelled due to Hurricane Floyd
- September 16: Classes: Part III
- *this
- Operator overloading
- Friends
- September 21: Classes: Part IV
- Review of classes Part I-III.
- The big three: destructor, operator= and copy constructor
- Implicit type conversions
- Explicit constructors
- Initializer lists
- Constant and reference data member
- Example: The Rational class
- September 23: Templates: Part I
- Read Chapter 3
- Why templates
- Function templates
- Class templates: interface
- Illustration of the MemoryCell class
- Specifying the requirements of the template type
- September 28: Templates: Part II
- September 30: Templates: Part III; Mostly other stuff
- Separate compilation issues
- Exceptions
- Reference return types
- vector and operator[]
- (day class only)matrix
- October 5: More operator[] and Assignment #5
- Review of operator[]
- Maps and Assignment #5
- October 7: Exam #2
- October 12: Class is cancelled
- October 14: Stacks and Queues: Part I
- Exam recap
- Basics of running-time analysis.
- Properties and uses of the stack and queue.
- Array implementations.
- Introduction to pointer variables.
- October 19: Stacks and Queues: Part II
- Linked list implementation of queues.
- new and delete.
- Deep versus shallow copying
- October 21: More linked lists
- More details about new, delete.
- Implementing deep copy assignment operator.
- Traversing linked lists.
- Common errors.
- Implementing Set with linked lists.
- A Set class using linked lists (uncommented):
LSet.h
LSet.cpp
TestLSet.cpp
LSet_int.cpp
- October 26: STL Part I
- Basic ideas
- Iterators
- Lists vs Vectors
- October 28: STL Part II
- The Pair pattern
- Sets and maps
- The concordance example
- String streams
- November 2: Recursion Part I
- Discussion of Assignment #8
- Basics of recursion: base cases and making progress
- The procedure stack
- November 4: Recursion Part II
- Basics of recursion: assume recursive call works
- Printing integers
- Introduction to Subset sum problem
- November 9: Recursion Part III
- Subset sum problem
- Code for SubsetSum.cpp
- Discussion of Assignment #9: Turnpike reconstruction
- November 11: No class -- Veteran's Day
- November 16: Inheritance Part I
- IS-A relationships
- Implementing a derived class
- Constructors
- November 18: Inheritance Part II
- Defaults for the Big Three in the derived class
- Protected members
- Slicing
- Static vs. dynamic binding
- virtual keyword
- The virtual destructor
- November 23: Class is cancelled.
- November 25: No class -- Thanksgiving
- November 30: Inheritance Part III
- Abstract member functions and classes
- Wrapping pointer variables
- The Shape example
- Brief discussion of Assignment #10
- December 2: Wrap-up
- Catching exceptions
- Call by value and polymorphism do not mix
- Static binding of parameters
- Derived class methods hide base class methods
- Primitive arrays: new[] and delete[]
- Preview of COP-3338
- Thursday December 9: Final exam
- Day class: 9:30 AM - 12:10 PM
- Night class: 3:30 PM - 6:10 PM