Browse Source

Some cleanup of priority queues, table of contents, and end of document.

master
Charles Reid 8 years ago
parent
commit
d0ca5d7dd1
  1. 191
      TODOSoftwareEngineering.md

191
TODOSoftwareEngineering.md

@ -7,14 +7,27 @@ Table of Contents: @@ -7,14 +7,27 @@ Table of Contents:
* [Stacks and Queues](#sq)
* [Trees](#trees)
* [Priority Queues and Heaps](#priorityq)
* [Dictionaries](#dict)
* [Dictionaries and Maps](#dict)
* [Hash tables](#hash)
* [Maps, Sets, Skip Lists](#maps)
* [Search Trees](#searchtree)
* [Sets, Skip Lists](#sets)
* [Search Trees](#searchtrees)
* [Graphs](#graphs)
* [Advanced Data Structures (Skiena)](#adv)
* [Data Structures and Libraries](#lib)
* Guava
* Apache Commons
* Others
* [Algorithms](#algorithms)
* [Complexity and Big O Notation](#bigO)
* [Timing](#timing)
* [Types of Hard Problems](#hard)
* [Recursion](#recursion)
* [Search](#search)
* [Sort](#sort)
* [Strings](#strings)
* [Bits and Bytes](#bits)
* [OOP](#oop)
* [Java](#java)
* [Practice and Applications](#practice)
* [Project Euler](#euler)
* [ICPC](#icpc)
@ -190,10 +203,11 @@ Table of Contents: @@ -190,10 +203,11 @@ Table of Contents:
[ ] Trees: Java
- 06/10 - 06/13
- 06/10 - 06/13, 06/15 - 06/16
- Books:
- Goodrich Java Chapter 8
- Goodrich trees coverage includes interfaces, abstract classes, virtual methods
- Weiss C++ book: good coverage of binary search tree ADT.
- Wiki notes:
- [https://charlesreid1.com/wiki/Binary_Trees/LinkedBinTree](https://charlesreid1.com/wiki/Binary_Trees/LinkedBinTree)
- [https://charlesreid1.com/wiki/Trees/Preorder](https://charlesreid1.com/wiki/Trees/Preorder)
@ -209,33 +223,59 @@ Table of Contents: @@ -209,33 +223,59 @@ Table of Contents:
- Sorted trees:
- Not covered in the Goodrich book...??
- See Skiena for coverage...
- Weiss C++ book also has good coverage.
- Sorted trees means balanced trees, and balanced trees introduces myriad strategies.
------
<a name="priorityq"></a>
### Priority Queues and Heaps
[X] Trees: Priority Queues: Java
- 06/19 - 06/21
- Books:
- Goodrich Python/Java books covering priority queue theory/concepts
- Wiki notes:
- [https://charlesreid1.com/wiki/Priority_Queues](https://charlesreid1.com/wiki/Priority_Queues)
- [https://charlesreid1.com/wiki/Priority_Queues/Java](https://charlesreid1.com/wiki/Priority_Queues/Java)
- [https://charlesreid1.com/wiki/Priority_Queues/Timing_and_Performance](https://charlesreid1.com/wiki/Priority_Queues/Timing_and_Performance)
- Timing notes:
- Spent a lot of time on the unsorted
- End of chapter questions:
- Git Code:
- base class [https://charlesreid1.com:3000/cs/java/src/master/priority-queues/PriorityQueueBase.java](https://charlesreid1.com:3000/cs/java/src/master/priority-queues/PriorityQueueBase.java)
- sorted [https://charlesreid1.com:3000/cs/java/src/master/priority-queues/SortedPriorityQueue.java](https://charlesreid1.com:3000/cs/java/src/master/priority-queues/SortedPriorityQueue.java)
- unsorted [https://charlesreid1.com:3000/cs/java/src/master/priority-queues/UnsortedPriorityQueue.java](https://charlesreid1.com:3000/cs/java/src/master/priority-queues/UnsortedPriorityQueue.java)
<a name="priorityq"></a>
### Priority Queues and Heaps
[ ] Trees: priority queues
[ ] Trees: heap trees
<a name="dict"></a>
### Dictionaries
### Dictionaries, Maps, Hash Tables
[ ] Dictionaries and Maps
- 06/02 - 06/03 - Skiena advanced data structures
- 06/19 - 06/21 - Goodrich book
- Books:
- Skiena Chapter 3
- Goodrich Chapter 10 - FIRST HALF
- Online Videos:
- MIT 6.006 Intro to Algorithms: Erik Demaine
- [Lecture 8: Hashing with chaining](https://www.youtube.com/watch?v=0M_kIqhwbFo)
- [Lecture 9: Table doubling](https://www.youtube.com/watch?v=BRO7mVIFt08)
- Wiki notes:
- End of chapter questions:
- Git code:
[ ] Dictionaries/Maps
@ -247,13 +287,13 @@ Table of Contents: @@ -247,13 +287,13 @@ Table of Contents:
<a name="maps"></a>
### Maps, Sets, Skip Lists
<a name="sets"></a>
### Sets, Skip Lists
<a name="searchtree"></a>
<a name="searchtrees"></a>
### Search Trees
[ ] Trees: binary search trees
@ -262,6 +302,7 @@ Table of Contents: @@ -262,6 +302,7 @@ Table of Contents:
<a name="graphs"></a>
### Graphs
[ ] Graphs: directed and undirected
@ -273,7 +314,7 @@ Table of Contents: @@ -273,7 +314,7 @@ Table of Contents:
<a name="adv"></a>
## Skiena: Algorithms, Advanced Data Structures, Programming Challenges
### Skiena: Algorithms, Advanced Data Structures, Programming Challenges
[ ] Advanced Data Structures: Dictionaries, Priority Queues, Binary Trees, Hash Tables
- 06/02, 06/03
@ -315,6 +356,7 @@ Some libraries that provide data structures in Java. @@ -315,6 +356,7 @@ Some libraries that provide data structures in Java.
<a name="algorithms"></a>
## Algorithms
<a name="bigO"></a>
### Complexity and Big O Notation
[X] Algorithm complexity and big-oh notation
@ -336,6 +378,7 @@ Some libraries that provide data structures in Java. @@ -336,6 +378,7 @@ Some libraries that provide data structures in Java.
---
<a name="timing"></a>
### Timing
[ ] Algorithms: Timing/Verification
@ -350,26 +393,27 @@ Some libraries that provide data structures in Java. @@ -350,26 +393,27 @@ Some libraries that provide data structures in Java.
---
### Types of Problems
<a name="hard"></a>
### Types of Hard Problems
[ ] Algorithms: NP, NP-Complete, Approximation
### Types of Solutions
[ ] Algorithm/Solution Taxonomy
<a name="recursion"></a>
### Recursion
[ ] Algorithms: Recursion
[ ] Algorithms: Backtracking
<a name="search"></a>
### Search
[ ] Sequential search
[ ] Binary search
<a name="sort"></a>
### Sort
[ ] Sort Algorithms
@ -378,6 +422,7 @@ Some libraries that provide data structures in Java. @@ -378,6 +422,7 @@ Some libraries that provide data structures in Java.
[ ] Algorithms: Quick sort
[ ] Algorithms: Heap sort
<a name="strings"></a>
### Strings
[ ] String algorithms
@ -397,101 +442,61 @@ Some libraries that provide data structures in Java. @@ -397,101 +442,61 @@ Some libraries that provide data structures in Java.
### Object Oriented Programming
[ ] Object oriented programming
[ ] Object oriented design: basics
[ ] Object oriented design: inheritance diagrams
[ ] Object oriented design: polymorphism
[ ] Object oriented design: design patterns
### Mathematics
<a name="bits"></a>
### Bits and Bytes
[ ] Bits and Bytes
[ ] Mathematics: Combinatorics
[ ] Mathematics: Probability
[ ] Mathematics: Linear Algebra (computational)
[ ] Mathematics: FFT
[ ] Combinatorics
### Computational Physics
[ ] Linear Systems
[ ] Parallel Algorithms
[ ] Parallel Optimization
<a name="oop"></a>
## Object Oriented Programming
[ ] Object oriented programming
### Applied
[ ] Systems: Processing and Threads
[ ] Systems: Caching
[ ] Systems: Memory
[ ] Systems: System routines
[ ] Systems: Messaging systems
[ ] Systems: Serialization
[ ] Systems: Queue systems
[ ] Scaling: Systems design
[ ] Scaling: Scalability
[ ] Scaling: Data handling
### Security
[ ] Crypto Security: Information Theory
[ ] Crypto Security: Parity and Hamming Code
[ ] Crypto Security: Entropy
[ ] Crypto Security: Birthday/Hash Attacks
[ ] Crypto Security: Public Key Cryptography Math
### HPC/Supplemental
[ ] Supplemental: Unicode
[ ] Supplemental: Garbage Collection
[ ] Supplemental: Networking
[ ] Supplemental: Compilers
[ ] Supplemental: Compression
[ ] Supplemental: Endianness
[ ] Parallel programming: Basic concepts/algorithms
[ ] Object oriented design: basics
[ ] Object oriented design: inheritance diagrams
[ ] Object oriented design: polymorphism
[ ] Object oriented design: design patterns
## Language-Specific
<a name="java"></a>
## Java
[X] Exceptions in Java
- 05/31
- Java API Docs
- Books:
- Java API Docs, Java Collections classes, StackOverflow
- Wiki note:
- Wiki notes:
- [https://charlesreid1.com/wiki/Java/Exceptions](https://charlesreid1.com/wiki/Java/Exceptions)
- Code:
[ ] Decorators
(For full list, see CS flag on wiki)
[ ] Interfaces, Abstract Classes, Virtual Methods
[ ] Tests
[ ] Interfaces
[ ] Unit testing
[ ] Testing (Unit testing)
[ ] Timing
[ ] Memory Usage
[ ] Garbage Collection
[ ] Lambda functions
[ ] Decorators
@ -502,18 +507,22 @@ Some libraries that provide data structures in Java. @@ -502,18 +507,22 @@ Some libraries that provide data structures in Java.
### Project Euler
Some of the Project Euler questions can be answered with the apt use of a single data structure
and a simple algorithm. Others take a little more effort.
Project Euler solutions are all in the git repo at git.charlesreid1.com:
Computations involving crazy numbers that can be made a little more reasonable
with a little thought and effort.
[https://charlesreid1.com:3000/cs/euler](https://charlesreid1.com:3000/cs/euler)
The goal there is to complete 50 Project Euler questions.
The goal there is to complete *at least* 50 Project Euler questions.
Some of these are documented on the wiki:
------
[https://charlesreid1.com/wiki/Project_Euler](https://charlesreid1.com/wiki/Project_Euler)
[ ] Competitive Programming and Project Euler Solutions
- 06/14 - 06/17
- Prime numbers, sieves, containers, etc.
- Wiki notes:
- Not all the problems are documented on the wiki, but several are. There are blog posts too.
- [https://charlesreid1.com/wiki/Project_Euler](https://charlesreid1.com/wiki/Project_Euler)
- Git code:
- Project Euler solutions are all in the git repo at git.charlesreid1.com:
- [https://charlesreid1.com:3000/cs/euler](https://charlesreid1.com:3000/cs/euler)
### ICPC

Loading…
Cancel
Save