| Date | L# | Topic | 
  
    | Thu. Jan.12 
 | 01 | 
	See also: 
		Makefiles[(§ 1.4)]C++classsyntax[(§ 1.4)]public/privatemember fucntions, data members[(§ 1.5)]"the big three"(see also: C++ operator overloading guidelines)
[(§ 1.6.3, footnote 8, see also p.88)]operator overloading,friend operator<< | 
  
    | Tue. Jan.17 Lab 1:
 array_t | 02 | 
	Assignment 0: ray tracer[(§ 1.5.2)]parameter passing[(§ 1.4.2)]constmember function (accessor/mutuator)[(§ 1.6.2)]templates | 
  
    | Thu. Jan.19 
 | 03 | 
	[(§ 1.7.2, esp. last par.)]operator[][(§ 2.1)]Asymptotic function definitions, e.g., O(f(n))[(§ 2.3)]What to analyze[(§ 2.4)]Running time calculations[(§ 1.2.5)]Inductive proof | 
  
    | Tue. Jan.24 Lab 2:
 timer_t, bubblesort | 04 | 
	[(§ 1.2.5)]Inductive proofRecurrence relations
		
		telescoping sum
		recurisve backsubstitution
		[(§ 7.6.1)]Mergesort analysisHandy formulae
	 | 
  
    | Thu. Jan.26 
 | 05 | 
	DUE: Assignment 0 (at 23:59:59)
	     Solution[(§ 7.7.5)]Quicksort
		analysis (worst and best cases)[(§ 3.3)]STLvectorandlist(e.g.,vectorimplementation of insertion sort) | 
  
    | Tue. Jan.31 Lab 3: quicksort
 | 06 | 
	Assignment 1: parallelized ray tracer[(§ 6.3)]Binary Heap (usingvector<T>)
		insert()deleteMin()C++
		
			iostreamincludingifstreamandofstream;
		see the
		
			input/output with files tutorialA useful istreammember:getA useful istreammanipulator:ws | 
  
    | Thu. Feb.02 
 | 07 | 
	vectorandlistin the STL 
	[(§ 3.3)]vectorandlist 
	[(§ 3.3.1)]Iterators[(§ 3.5)]list_timplementation | 
  
    | Tue. Feb.07 
 Lab 4:
 ompandimg_tclass | 08 | Q & A | 
  
    | Thu. Feb.09 
 | 09 | 
	DUE: Assignment 1 (at 23:59:59)
	     Solutionlist_t<pairs_t>vs.list_t<pairs_t* >[(§ 3.6)]The Stack ADT[(§ 3.6.3)]Applications: Postfix Expressions and Infix to Postfix
			Conversionstd::ostringstream,std::istringstreamobjects | 
  
    | Tue. Feb.14 Lab 5: binary heap
 | 10 | 
	Assignment 2: ray tracer transmission[(§ 4.1)]Trees (common terms)[(§ 4.1.2)
		Traversals
	][(§ 4.2)
		Binary Trees
	][(§ 4.3)
		Binary Search Trees
	][(§ 4.3.1)
		]contains[(§ 4.3.2)
		]findMain,findMax | 
  
    | Thu. Feb.16 
 | 11 | 
	[(§ 4.3.3)]insertimplementation[(§ 4.3.4)]remove(erase) implementation[(§ 4.3.5)]destructor and copy assignment operator[(§ 4.6)]tree traversals | 
  
    | Tue. Feb.21 Lab 6:
 list_t | 12 | 
	[(§ 4.4)]AVL Trees[(§ 4.4.1)]single rotation[(§ 4.4.2)]double rotationRevision of text's AVL tree implementation
	AVL node insertion
	rotate_leftandrotate_writereduxAVL node deletion
	For comparison, see the 
		Eternally Confuzzled - Red Black Tree Tutorial
	 | 
  
    | Thu. Feb.23 
 | 13 | Quick Review 
	DUE: Assignment 2 (at 23:59:59)
	SolutionC++
	Big-Oh
	Heaps
	Binary Trees
	AVL Trees
	 | 
  
    | Tue. Feb.28 Lab 7: stack; infix notation
 | 14 | Midterm Exam (C++, big-oh notation, heaps, AVL trees) Assignment 3: AVL trees
 | 
  
    | Thu. Mar.01 
 | 15 | 
	[(§ 5.1)]Hashing[(§ 5.2)]Hash Function[(§ 5.3)]Separate Chaining[(§ 5.4)]Hash Tables Without Linked Lists | 
  
    | Tue. Mar.06 Lab 8: binary search trees I
 | 16 | Graphs 
	[(§ 9)]Graph definitions, representationUsing the std::map<std::map< > >Using a node_tto represent a graph vertex | 
  
    | Thu. Mar.08 | 17 | 
	DUE: Assignment 3 (at 23:59:59)
	Solution[(§ 9.3)]Dijkstra's shortest path algorithm[(§ 9.5)]Prim's minimum spanning tree algorithm | 
  
    | Tue. Mar.13 Lab 9: binary search trees II
 | 18 | 
	Assignment 4: photon emission[(§ 12.6)]kd-trees[(§ 1.6.4 and footnote at bottom of p.295)]Function Objects (functors) | 
  
    | Thu. Mar.15 
 | 19 | 
	[Qt][Qt Docs
	][Qt 4.6
	] | 
  
    | Tue. Mar.20 
 | — | Spring Break 
 | 
  
    | Thu. Mar.22 
 | — | Spring Break 
 | 
  
    | Tue. Mar.27 Lab 10: Qt photon visualizer
 Dr. D. away:
	
	ETRA
 
 | 20 | No class. | 
  
    | Thu. Mar.29 
 Dr. D. away:
	
	ETRA
 
 | 21 | No class. | 
  
    | Tue. Apr.03 Lab 11: kd-tree
 | 22 | 
	[(Figure 12.43, sort of)]kd-tree insertionnn, knn, range queries
	[wikipedia][Thinh Nguyen's lecture
	][Andrew Moore's tutorial
	] DUE: Assignment 4 (at 23:59:59)
	Solution
 Assignment 5: Qt kd-tree
 | 
  
    | Thu. Apr.05 
 | 23 | 
	menubar signals/slots, kd-tree construction
	kd-tree rendering
	void GLTexobj::initializeGL()void GLTexobj::resizeGL()void GLTexobj::paintGL()void GLTexobj::mousePressEvent(QMouseEvent* e)void GLTexobj::mouseReleaseEvent(QMouseEvent* e)for queries | 
  
    | Tue. Apr.10 Lab 11: cont'd
 | 24 | More on the kd-tree 
	the function object point_ckd-tree insertion with minandmaxnn-query and knn-query details
	 
 | 
  
    | Thu. Apr.12 
 | 25 | Photon mapping 
	Step 1: Shoot photons
		
		scale power by 1/n
		find photon min, max
			(for kd-tree bounding volume)
		insert photons into kd-tree
		Step 2: Trace rays
		
		find closest object (as before)
		get surface material properties (as before)
		compute ambient color contribution (as before)
		compute diffuse reflection contribution  (as before)
		compute specular reflection contribution
			(spawn reflection ray; as before)
		compute transmissive color contribution
			(spawn refraction ray; as before)
		compute specular highlight contribution (as before)
		compute photon power density (flux)
			
			knn query (k=20), get r
			for each photon accumulate flux
			add in scaled flux to color
			 | 
  
    | Tue. Apr.17 Lab 12: Dijkstra's shortest path
 | 26 | From C++ to Objective-C
	(see Pierre Chatelier's very well-written and useful
	
	document) 
	DUE: Assignment 5 (at 23:59:59)
	Solutionmain differences (dynamically allocated objects, no auto objects)
	member function calls' []syntaxclass interface and implementation
	memory management (important!)
	inheritance, protocols
	code parallelization via omp Assignment 6: photon mapper
 | 
  
    | Thu. Apr.19 
 | 27 | No class: Student Evaluations (online) | 
  
    | Tue. Apr.24 
 | 28 | Final Review | 
  
    | Thu. Apr.26 
 | 29 | No class: Reading Day DUE: Assignment 6
 | 
  
    | Wed. May.02 
 | 30 | FINAL EXAM 3:00pm-5:30pm |