COSC 1436 Final Exam Review
The exam will be given on Thursday, May 9, 2013 at 8:00 AM in CI- 128 or Tuesday,
May 14 at 1:45 PM in room CI-112. You will have two hours and 15 minutes to
complete the exam. The exam is a comprehensive exam that covers the entire course,
but focuses on Gaddis chapters 15, 16, 17, 18, and 19. You are allowed a
student prepared, original, handwritten, one-page reference sheet.
I will also provide the inside front and back cover from Gaddis.
Most of the exam will be problems, of several basic types:
- Coding. You will be given a simple problem, typically a function (may be
a member of a class), and be asked to code the function. These problems will
be small and directly reflect what we have discussed in class and programs
written for labs.
- You will be given a code segment or a complete program and asked to look
at the code and determine what will be the result of running this code.
- You will be given a problem/situation on a UNIX/LINUX system. Determine
what command(s) are needed?
There will be some short answer questions.
Exam 1 & 2 Material. Exam 1 & 2 material will be included in
this exam. If the score you receive on this exam exceeds the score you received
on one of the other exams, this score will replace the other score.
COSC 1436 Class Objectives. The following are the formal class objectives
for COSC 1436. You can assume that there will be at least one question/problem
that demonstrates your knowledge in each of these areas.
- Be able to use the UNIX operating system to manage and manipulate files
and folders and to create, compile, and execute computer programs of intermediate
- Understand and effectively use single and multidimensional arrays.
- Understand and effectively use basic searching and sorting algorithms.
- Have a basic understanding of algorithm efficiency and be able to determine
the Big-O efficiency of an algorithm.
- Have a basic understanding of the concept of object-oriented programming
through the use of abstract data types, including structs and classes.
- Develop, implement, and effectively use classes to create list and stack
- Understand and effectively use dynamic memory allocation to create and manipulate
variables within computer programs.
- Know how to pass and return a class from a function
- Be able to use default operators in C++ classes and functions
- What are the characteristics of good object oriented design in a non-GUI
- When should a class be passed by reference and by value? Why would we use
the 'const' key word on variables passed by references?
- How does assignment work for classes in C++? When can you use the assignment
operator, when should you overload the assignment operator, and when would
the copy constructor be used?
- Objects can have both methods and behaviors. How is each used in object
oriented programming and what is their relationship. How do messages affect
- Be able to overload constructors and methods and know why we need this capability.
- Know how to use static members and why
- Why do we need operator overloading in C++ classes?
Exceptions and Templates.
- Why are exceptions needed?
- Know how to throw an exception.
- Know how to catch an exception.
- Be able to throw and catch exceptions using object oriented programming
- Be able to pass error information in an exception class and receive
that information in a calling program
- Know how to use templates with functions
- Be able to use a function template with multiple types of data
- Know how to use templates in a class
- Know why we need stacks and be able to give examples why knowing these data
structures is so important?
- What are the common stack operations?
- What are function templates and why do we use them?
- Be able to take a stack class, similar to those found in the text, and write
a program/function that uses this class.
- Be able to show how a stack works at the diagram level and be able to code
the top, push, and pop methods.
Pointer-Based Linked List.
- Know why we need linked lists and be able to give examples where a link
list is used
- What are the common linked list operations?
- Be able to take a class or a function that is designed for a single data
type and turn it into a templated function/class that can be used for multiple
- Be able to take a templated link list class, similar to those discussed
in class, and write a driver program that uses this class.
- Be able to show how a linked list works at the diagram level and be able
to code the addNode, deleteNode, traverse, and find methods.