Text: Online C++ Essentials by Sharam Hekmat, Thinking in C++ by Bruce Eckel. These are preC++11 books. Having a hard copy of the above is often preferable to just using digital copy. It has been shown that reading and studying a hard-copy results in better understanding and retention. You can write comments in the book as well!
C++11 books :”Effective Modern C++” by Scott Meyers, “Programming: Principles and Practice Using C++” (2nd Edition) by Bjarne Stroustrup and the quick study book “A Tour of C++” by Bjarne Stroustrup as well.
FIRST THINGS FIRST: Send me an email now with the subject line CMPS OOP. I will build an email list so I can send info you the entire class.
NOTE: I expect a serious study of the topics we cover in class. If you do not clearly understand something it is your responsibility to ask questions and study any necessary additional tutorials until you do so. This class will take a lot of work so keep up. In other words I will assume that you are an adult and have the goal of becoming a professional computer scientist.
Week1: (MKL, Jan 17,19)
- Debugging code using visual studio, run to, breakpoints etc
- #define DEBUG and its use
- Documentation Requirements
- The standard template library (containers, algorithms)
- The templated vector<type> class and associated methods and iterators. See CPLUSPLUS.com
- HW0 (due Jan 22 at start of class): look up the methods on CPLUSPLUS.com that work with stacks and queues. Type each container name together with 5 methods and their meanings and turn in with your name on it. Write a code snippet for the stack that allocates a stack<int>, pushes 5 integers on the stack and then removes the top item and prints it. Do the same for the queue except remove the front item and print it.
- Project#0(due Jan 26 at the start of class): Vector warmup
Week2:(Jan 22,24,26) : Review of Classes
- Creating classes in visual studio C++. You are required to do it THIS way.
- Constructors, destructors. Copy constructors, Consequences of dynamic memory allocation in a class.
- Adding methods using MVSC support. Getters and Setters. You are required to do it THIS way.
- Creating a complex number class. Review complex numbers if they have become lost in your brain, particularly the operations on them, add,sub,mul, and divide. The zipped class in in BO 119 on the Y drive.
- Project#1(due Feb 5 at the start of class): Fractions(no dynamic memory)
- Command line execution in DOS. How I test your projects with different data sets.
Week3:(Jan 29,31, Feb2) Overloading
- Overloaded operators for Fractions and classes that have dynamic memory allocation. Add an overloaded add operator to your Fraction class and test it. Its prototype should be friend Fraction operator+(const Fraction & a, const Fraction & b); We can now do a=b+c; The builtin overloaded= works correctly here.
- Deep copy constructors. Overloaded assignment for dynamic memory objects. We will look a simple linked list class. The zipped class in in BO 119 on the Y drive.
- Know method and friend overloaded operator prototypes and implementations for the above. This includes the constructors, destructors, copy constructors, overloaded+,overloaded= , etc.
- Exam 1 on the 7th (all class discussions, homework and projects to date)
- Many of you used rolled your own GCD() algorithm with questionable success. Check the Euclidean algorithm.
- Dynamic memory destructor, copy constructor, overloaded assignment. Build a simple linked list in class. The zipped class in in BO 119 on the Y drive.
- Project#2A(due Feb 21) :Polynomials (using dynamic memory, ie a linked list) You will most likely have problems with this project so work seriously on it THIS weekend.
Week5: (Feb 12,14,16)
- Some C++ stl features. Range loops, stl:: initilizer_list<>, iterators etc
- rvalue, lvalues, moves etc (rvalue reference explained), ( a nice little video on this) (Alex Allian’s article) there are many others.
Week6: (Feb 19,21,23)
- Move constructors and Move assignments
- Project#2B(Due Mon Mar 5): Continue working on part A(using your version or mine) and add the overloaded+ and overloaded-. If you have had trouble with Eval() then convert it to using the pow() function. Modify the main program to use the overloaded friend functions instead of AddTerm. The implementation of these two overloads should NOT use AddTerm. Add them in the same way you would do a merge operation. Also include a move constructor and a move assignment and so the overload function’s return is efficient. The move constructor will be called when you return from the operator+ friend function. The move assignment will be called when the returned value is assigned to the left hand side of the assignment z (ie z=a+b). The data will be in the same format. Turn in requirements are the same as 2B. If you want my version of Poly and have turned in your version of the project then come by my office and I will give it to you. It is now on the Y drive in Room 119.
Week7: (Feb 26,28, Mar 2)
- SFML is a simple and fast multimedia library that you will use in the next project. You can either download your own library or go to 119 and copy mine from the Y drive. There are two copies, SFML-2.4.2 and SFML17-2.4.2, The first is for visual studio 17 and the second is for visual studio 17. The second one is not on the web site so I had to download the source and compile it for you. You must use your specific version for this to work. Get your required version and get it working.
- Where does your application look to find its necessary DLL’s. Setting up SFML using the library’s I gave you.
- When the above is working see here for other things to draw.
- Each object you draw you can set its initial pos, change its location, rotate it, scale it, change its size, color etc. These are all methods. See here.
- Project#3(due wed after spring break):Initial Graphing Practice.
- Some free fonts.
- Review for exam. Will pass out a review of the five methods required for modern C++.
Exam 2 on the 7th ( Review)
Week9: SPRING BREAK, a great time to catch up.
Weel10: (Mar 19,21,23)
- Building a life inheritance class structure to use with SFML.
- Project#4:Phase 1
- Exam 3 on wed 11th
Week15:(Apr 30, May 2,4)
Final Exam Wed May 9th at 8:00 am
Additional Documents and support
Some videos etc on Modern C++