@ -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 ](#map s )
* [Search Trees ](#searchtree )
* [Sets, Skip Lists ](#set s )
* [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 = "map s" > < / a >
### Maps, Sets, Skip Lists
< a name = "set s" > < / 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
[ ] Test s
[ ] 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