Date | L# | Topic |
Thu. Jan.12
|
01 |
[(§ 1.4)]
C++ class syntax
[(§ 1.4)]
public/private member 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<<
See also:
Makefiles
|
Tue. Jan.17
Lab 1: array_t
|
02 |
[(§ 1.5.2)]
parameter passing
[(§ 1.4.2)]
const member function (accessor/mutuator)
[(§ 1.6.2)]
templates
Assignment 0: ray tracer
|
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 proof
- Recurrence relations
- telescoping sum
- recurisve backsubstitution
[(§ 7.6.1)]
Mergesort analysis
- Handy formulae
|
Thu. Jan.26
|
05 |
[(§ 7.7.5)]
Quicksort
analysis (worst and best cases)
[(§ 3.3)]
STL vector and list
(e.g., vector implementation of insertion sort)
DUE: Assignment 0 (at 23:59:59)
Solution
|
Tue. Jan.31
Lab 3: quicksort
|
06 |
[(§ 6.3)]
Binary Heap (using vector<T> )
insert()
deleteMin()
- C++
iostream
including
ifstream
and
ofstream ;
see the
input/output with files tutorial
- A useful
istream member:
get
- A useful
istream manipulator:
ws
Assignment 1: parallelized ray tracer
|
Thu. Feb.02
|
07 |
vector and list in the STL
[(§ 3.3)]
vector and list
[(§ 3.3.1)]
Iterators
[(§ 3.5)]
list_t implementation
|
Tue. Feb.07
Lab 4: omp and img_t class
|
08 |
Q & A
|
Thu. Feb.09
|
09 |
list_t<pairs_t> vs.
list_t<pairs_t* >
[(§ 3.6)]
The Stack ADT
[(§ 3.6.3)]
Applications: Postfix Expressions and Infix to Postfix
Conversion
std::ostringstream , std::istringstream
objects
DUE: Assignment 1 (at 23:59:59)
Solution
|
Tue. Feb.14
Lab 5: binary heap
|
10 |
[(§ 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
Assignment 2: ray tracer transmission
|
Thu. Feb.16
|
11 |
[(§ 4.3.3)]
insert implementation
[(§ 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 rotation
- Revision of text's AVL tree implementation
- AVL node insertion
rotate_left and rotate_write
redux
- AVL node deletion
- For comparison, see the
Eternally Confuzzled - Red Black Tree Tutorial
|
Thu. Feb.23
|
13 |
Quick Review
- C++
- Big-Oh
- Heaps
- Binary Trees
- AVL Trees
DUE: Assignment 2 (at 23:59:59)
Solution
|
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, representation
- Using the
std::map<std::map< > >
- Using a
node_t to represent a graph vertex
|
Thu. Mar.08 |
17 |
[(§ 9.3)]
Dijkstra's shortest path algorithm
[(§ 9.5)]
Prim's minimum spanning tree algorithm
DUE: Assignment 3 (at 23:59:59)
Solution
|
Tue. Mar.13
Lab 9: binary search trees II
|
18 |
[(§ 12.6)]
kd-trees
[(§ 1.6.4 and footnote at bottom of p.295)]
Function Objects (functors)
Assignment 4: photon emission
|
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 insertion
- nn, 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_c
- kd-tree insertion with
min and max
- nn-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)
- main differences (dynamically allocated objects, no auto objects)
- member function calls'
[] syntax
- class interface and implementation
- memory management (important!)
- inheritance, protocols
- code parallelization via
omp
DUE: Assignment 5 (at 23:59:59)
Solution
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 |