Previous Lecture Lecture 17

Lecture 17, Thu 06/07

Final Review

Final Review

Note: Extra office hours in HFH 1151 @ 3 - 4pm Fri 6/8

Logistics
- Bring Student ID and writing utensil
	- Preferable ink or dark led
- Please write LEGIBLY
- No electronic devices
- No book, No notes
- 30% of your final grade

Room
- Similar to midterms, will take place in CHEM 1171
and Phelps 2510
	- Sent an email, if you didn't get it, let me know
- Seating chart will be posted for CHEM 1171
	- PLEASE SIT IN YOUR ASSIGNED SEAT

Format of the exam
- Similar to midterms, but designed to take two hours
to complete
- Be prepared for...
	- True / False
	- Short answer questions
	- Write a class / function / method that does ...
	- Fill in the blank
	- Exam is cummulative (more content to cover than
	previous midterms)

Topics
- Will cover everything from the start of the quarter
up to Tuesday 6/5 lecture (heaps)
- Covers lecture, labs, homework, and reading
- Makefiles
- STL (vector, map, unordered_map, string, iostream,...)
- Class Design
	- Abstract Data Types
	- Build process
	- .cpp, .h (linking)
	- Big Three (copy constructor, destructor,
	assignment operator)
	- Scope Resolution Operators
	- Templates
- Structs and Classes
	- Differences
	- Memory storage
	- Syntax
- Namespaces
	- Naming collusions (and how to avoid them)
	- Global namespace
- Binary Search
	- Algorithm
	- Running time
- Quadratic Sorting
	- bubblesort, selectionsort, insertionsort
	- Optimizations
	- Running times
- Hash Tables
	- Performance and functionality
	- open-address, double-hashing, chained-hashing 
	(pros / cons)
	- std::map, std::unordered_map
- Mergesort and Quicksort
	- Algorithm itself
	- Running times
	- Pros / cons
- Inheritance
	- Understand concepts and behavior
	- Understand memory allocation of base / sub class
	types
	- Hierarchy
- Polymorphism
	- Understand concepts and behavior
	- virtual vs. non-virtual
	- abstract classes and pure virtual functions
	- virtual destructors
- Exceptions
	- Try / catch / throw mechanisms and flow control
	- Inherited types and how they're caught
- Testing
	- understand main ideas and terminology
	- Do not need to know googletest specific framework
	- Should understand functions in tddFuncs.h 
	(used in the labs)
- Operating System Concepts
	- Role of the OS
	- OS kernel
	- Relationship to software / hardware
	- Processes
	- Threads
	- Basic UNIX commands
		- ps, top, jobs, ^C, ^Z, kill, ...
	- foreground vs. background processes
		- how it relates to the terminal application
	- fork / exec
		- Examples with command line instructions and
		unistd.h functions in an application.
- Heaps
	- MinHeap and MaxHeap
	- "complete" tree structure is
	- priority queues and heap implementation
	- array representation and index of children /
	parent of a node
	- Insertion and maintenance
	- Deletion (of root) and maintenance
		- heapify
	- Simple class implementation for it
	- Running time