.. _ToDo:
.. raw:: html
.. |--| unicode:: U+2013 .. en dash
.. |---| unicode:: U+2014 .. em dash, trimming surrounding whitespace
:trim:
.. index:: ! todo
TODO List
=========
.. raw:: html

# No Category

.. raw:: html
.. TODO::
:tag: Exercise
This exercise ought to get expanded to a much richer set of
variations on the question.
.. raw:: html
.. TODO::
:tag: Revision
Rewrite along these lines: Here are two measures of "out of order":
inversions and min-swaps. Selection sort (especially w/
optimization) meets min-swaps, but that's not a useful measure in
general. Insertion sort tracks inversions, it is I + n. Now, if we
had an exchange sort, what would cost be? Go on to the proof.
.. raw:: html
.. TODO::
:tag: Revision
Rewrite along these lines: A classic form of code tuning is "test
to save work". For each of our three sorting algorithms, we have a
potential "test to save work" "optimization". The question is: When
is the cost of test worth the work saved? Let's look at each of the
three.
.. raw:: html

# AV

.. raw:: html
.. todo::
:type: AV
To make students more engaged in the GrowthRates exercise, we may
need a tool that allows students to input two growth rate functions.
Then the tool should plot the graph of both functions and mark
their crossing point. The student also should be allowed to play
with the constant values for both functions and see that this only
changes the crossing point but doesn't change which function grows
faster than the other.
.. raw:: html
.. TODO::
:type: AV
Fix and return hashAV.html to here.
The following visualization lets you test out different combinations
of hash function and collision resolution, on your own input data.
.. raw:: html
.. TODO::
:type: AV
Provide a unified AV that can allow the user to pick which topsort
(DFS or Queue), with or without cycles in the graph. The start of
this is in ``AV/Development/TopSort/topSortAV*`` (for just random DFS),
``AV/Development/TopSort/qTopSortAV.*`` (for just random queue-based
topsort), and ``AV/Development/TopSort/topSortAVs*`` (tries to unify).
.. raw:: html
.. TODO::
:type: AV
Provide an AV that runs on a random graph. An initial version is in
``AV/Development/TopSort/dijkstraAV.*``.
.. raw:: html
.. TODO::
:type: AV
AV here to demonstrate the minVertex implementation.
.. raw:: html
.. TODO::
:type: AV
Add version where you can click to get the node inserted.
.. raw:: html
.. TODO::
:type: AV
Make a proper visualization for perfect hashing, that lets the user
specify a set of input keys, computes the hash function, then lets
the user input keys to the table. A proper explanation for the
process should be part of the visualization.
.. raw:: html
.. todo::
:type: AV
Practice fft algorithm. Maybe only practice the final for loop since
the rest of the algorithm is recursivly dividing the polynomial and
performing fft on the smaller polynomials.
.. raw:: html

# Code

.. raw:: html
.. TODO::
:type: Code
Why does the code look for an unvisited value first?
Is there an easier way?
.. raw:: html

# Equation cross-reference

.. raw:: html
.. TODO::
:type: Equation cross-reference
Throughout this module, there are references to equations, both
on this page and in the Summations module. These should be made
into proper cross-references rather than hard-coded equation numbers.
.. raw:: html

# Exercise

.. raw:: html
.. TODO::
:type: Exercise
Need exercises for inserting to and deleting from doubly linked lists.
.. raw:: html
.. TODO::
:type: Exercise
Battery of MCQs for content.
.. raw:: html
.. TODO::
:type: Exercise
Consider the Quicksort implementation for this module, where the
pivot is selected as the middle value of the partition.
Give a permutation for the values 0 through 7 that will cause
Quicksort to have its worst-case behavior.
There are a number of possible correct answers. To assess the
answer, will need to run Quicksort over student's
partition, and verify that at each step it will generate new
partitions of size 6, 5, 4, 3, 2, then 1.
.. raw:: html
.. TODO::
:type: Exercise
This is a good question, but its not nearly enough for a chapter
summary.
.. raw:: html
.. TODO::
:type: Exercise
Add a battery of questions to test knowledge of the
implementations.
.. raw:: html
.. TODO::
:type: Exercise
Summary exercise for graph traversals.
.. raw:: html
.. TODO::
:type: Exercise
Summary battery of questions for Dijkstra's algorithm
.. raw:: html
.. TODO::
:type: Exercise
Proficiency exercise for Prim's algorithm.
.. raw:: html
.. TODO::
:type: Exercise
Summary battery of questions for Prim's and Kruskal's algorithms.
.. raw:: html
.. TODO::
:type: Exercise
Need an exercise to study lower bound on Colletz function
.. raw:: html

# Explanation

.. raw:: html
.. TODO::
:type: Explanation
The slideshow should subsume the next paragraph and the caption.
.. raw:: html

# Figure

.. raw:: html
.. TODO::
:type: Figure
Replace this figure with an applet that demonstrates the use of
handles.
.. raw:: html

# Proficiency Exercise

.. raw:: html
.. TODO::
:type: Proficiency Exercise
Provide a proficiency exercise that randomly alternates between
proficiency for DFS-based and queue-based Topsort.
The bare beginnings of an exercise can be found in
``AV/Development/TopSort/topSortDFSPE.*``
.. raw:: html

# Slideshow

.. raw:: html
.. todo::
:type: Slideshow
We need to think about a technique for visualizing the running time
of some loop constructs. This can be very similar to how we
visualize reaching the closed form solution of summations.
.. raw:: html
.. TODO::
:type: Slideshow
The figure above and the following text should all be rolled into
a slideshow.
.. raw:: html
.. TODO::
:type: Slideshow
Replace this figure with a slideshow that demonstrates the use of
reference counts (including the problem with cycles).
.. raw:: html
.. TODO::
:type: Slideshow
Put here a visualization that demonstrates the use of reference
counts.
.. raw:: html
.. TODO::
:type: Slideshow
Replace this figure with an AV that demonstrates DSW.
.. raw:: html
.. TODO::
:type: Slideshow
Replace the above figure with a slideshow that incorporates the
following paragraph.
.. raw:: html
.. TODO::
:type: Slideshow
Replace the following paragraph with a slideshow.
.. raw:: html
.. TODO::
:type: Slideshow
Incorporate the following into a slideshow.
.. raw:: html
.. TODO::
:type: Slideshow
Incorporate the following paragraph into a slideshow with the
figure below it.
.. raw:: html
.. TODO::
:type: Slideshow
Provide a slideshow to demonstrate the following example.
.. raw:: html
.. TODO::
:type: Slideshow
This slideshow illustrates Dijkstra's algorithm using the heap.
The start vertex is A.
All vertices except A have an initial value of :math:`\infty`.
After processing Vertex A, its neighbors have their D estimates
updated to be the direct distance from A.
After processing C (the closest vertex to A),
Vertices B and E are updated to reflect the shortest
path through C.
The remaining vertices are processed in order B, D,
and E.
Changes in the D array should be shown along with this.
.. raw:: html
.. TODO::
:type: Slideshow
Slideshow to demonstrate the relative costs of the two algorithms.
.. raw:: html
.. TODO::
:type: Slideshow
Replace the previous diagram with a slideshow illustrating the
concept of MCST.
.. raw:: html
.. TODO::
:type: Slideshow
Implement a slideshow demonstrating the Priority Queue version of
Prim's algorithm
.. raw:: html
.. TODO::
:type: Slideshow
Slideshow of Book Figure 6.16: shows full and complete \Kary\ trees
for K=3. In practice, most applications of \Kary\ trees limit them
to be either full or complete.
Full and complete 3-ary trees.
(a)~This tree is full (but not complete).
(b)~This tree is complete (but not full).}{ThreeTree}
.. raw:: html

# Summary Questions

.. raw:: html
.. TODO::
:type: Summary Questions
Provide a summary battery of questions.
.. raw:: html

# Text

.. raw:: html
.. TODO::
:type: Text
Where did that last claim about the linear probing cost come from?
.. raw:: html

# exercise

.. raw:: html
.. TODO::
:type: exercise
We need a proficiency exercise.
.. raw:: html

# text

.. raw:: html
.. TODO::
:type: text
Give an example of this type of representational change.
.. raw:: html
.. TODO::
:type: text
Explain how Perfect Hashing works.