CIS 3142
Programming Paradigms in C++
Final Exam Topic List
The Structure of the Exam
- Questions will consist of CodeLab coding exercises
- A Zoom meeting will be active for the duration of the exam to allow for questions. Keeping your video on is totally optional
- You will be unable to paste any code into the submission area; thus if you want to work in your IDE, take into account the extra tie it will take
to retype your submission.
As before, the exam is cumulative; below are the topics covered since the last exam.
Topics
- You only have to know the material covered in all the various lecture notes, the labs, and in class.
- don't worry about the Advice portions.
The topics covered since the last exam are:
- Chapters 6-19 (skipping 13 and 14)
- While we didn't cover the lecture notes for the chapters in Part II (Chapters 16-19), the supplementary topic notes cover that material; we just
didn't go over the advice sections (in any event, the only relevant material is from the labs).
- Labs 5-7; while 8 is optional, it covers the canonical form, which you are responsible for
Again, the exam consists completely of coding questions (in CodeLab); and as the labs cover just about all the topics covered
in the notes, try to get to as many labs as you can — even if you don't finish them completely
- This will also help your overall grade when you submit whatever work you did to CodeLab
In particular, you should be able to:
- code a class, and know what goes in the .h file and the .cpp file
- code a C-style module of non-member functions, again knowing what to put into the .h and .cpp files
- be able to code a basic C++ application that uses files, classes, arrays, dynamic memory, templates, and a simple use of a vector (as in Lab 4.2)
- be able to overload an operator on a class
- in particular, the << operator
- know how to define binary and unary operators as member or non-member functions; and which operators
are typically made members or non-members.
- be able to code a simple class or function template
- write a simple copy constructor, assignment operator, and/or destructor
- work with C-style strings
- know how to construct the proper signature for a function (i.e., parameter types and return type)
- know how to use dynamic memory allocation
The exam will be open book, open net, open everything, except for other people … you may not communicate with anyone else, whether or not they
are in the class.
Canonical Form
Although canonical form was on the last exam, it was presented fairly close to the exam, and many of you did not get a chance to complete the corresponding lab,
so exam 2 covered only an overview. On this exam, you should be able to code the three functions of the form (copy constructor, assignment operator, and destructor).
Of particular value is the array class presented in class, as well as the String class assigned as a lab.
Templates
You should be able to write a simple class and/or function template; in particular you should be able to take a 'normal' function and/or class, and be able to
identify where the template parameter should go (i.e., the element type of an array, as shown in class).
STL
You should know the basic concepts of the STL... that it stands for Standard Template Library, corresponds functionally to Java's Collection Framework, and
is implemented using templates (and not inheritance, like Java).
And as always, the labs (in particular Labs 7 and 8 which cover operator overloading and the canonical form) are useful for making sure you understand the above concepts.
---------------------------------