Compare commits

...

6 Commits

5 changed files with 317 additions and 153 deletions

View File

@@ -67,7 +67,7 @@ List of topics focusing on theoretical components:
* Nonparametric Methods * Nonparametric Methods
* Decision Trees * Decision Trees
* Lienar iscrimination * Linear discrimination
* Miultilyaer Perceptrons * Miultilyaer Perceptrons
* Local Models * Local Models
* Kernel Machines * Kernel Machines
@@ -76,7 +76,6 @@ List of topics focusing on theoretical components:
* Graphical Models * Graphical Models
* Combining Multiple Learners * Combining Multiple Learners
* Reinforcement Learning * Reinforcement Learning
* Design and Analysis of Machine Learning Experiments * Design and Analysis of Machine Learning Experiments
@@ -84,8 +83,7 @@ List of topics focusing on theoretical components:
A long and full list of types of models under each sub-heading: A long and full list of types of models under each sub-heading:
* Regression * Regression: **Modeling relationship between variables, iteratively refined using an error measure.**
* **Modeling relationship between variables, iteratively refined using an error measure.**
* Linear Regression * Linear Regression
* Logistic Regression * Logistic Regression
* OLS (Ordinary Least Squares) Regression * OLS (Ordinary Least Squares) Regression
@@ -93,55 +91,47 @@ A long and full list of types of models under each sub-heading:
* MARS (Multivariate Adaptive Regression Splines) * MARS (Multivariate Adaptive Regression Splines)
* LOESS (Locally Estimated Scatterplot Smoothing) * LOESS (Locally Estimated Scatterplot Smoothing)
* Instance Based * Instance Based: **Build up database of data, compare new data to database; winner-take-all or memory-based learning.**
* **Build up database of data, compare new data to database; winner-take-all or memory-based learning.**
* k-Nearest Neighbor * k-Nearest Neighbor
* Learning Vector quantization * Learning Vector quantization
* Self-Organizing Map * Self-Organizing Map
* Localy Weighted Learning * Localy Weighted Learning
* Regularization * Regularization: **Extension made to other methods, penalizes model complexity, favors simpler and more generalizable models.**
* **Extension made to other methods, penalizes model complexity, favors simpler and more generalizable models.**
* Ridge Regression * Ridge Regression
* LASSO (Least Absolute Shrinkage and Selection Operator) * LASSO (Least Absolute Shrinkage and Selection Operator)
* Elastic Net * Elastic Net
* LARS (Least Angle Regression) * LARS (Least Angle Regression)
* Decision Tree * Decision Tree: **Construct a model of decisions made on actual values of attributes in the data.**
* **Construct a model of decisions made on actual values of attributes in the data.**
* Classification and Regression Tree * Classification and Regression Tree
* CHAID (Chi-Squared Automatic Interaction Detection) * CHAID (Chi-Squared Automatic Interaction Detection)
* Conditional Decision Trees * Conditional Decision Trees
* Bayesian * Bayesian: **Methods explicitly applying Bayes' Theorem for classification and regression problems.**
* **Methods explicitly applying Bayes' Theorem for classification and regression problems.**
* Naive Bayes * Naive Bayes
* Gaussian Naive Bayes * Gaussian Naive Bayes
* Multinomial Naive Bayes * Multinomial Naive Bayes
* Bayesian Network * Bayesian Network
* BBN (Bayesian Belief Network) * BBN (Bayesian Belief Network)
* Clustering * Clustering: **Centroid-based and hierarchical modeling approaches; groups of maximum commonality.**
* **Centroid-based and hierarchical modeling approaches; groups of maximum commonality.**
* k-Means * k-Means
* k-Medians * k-Medians
* Expectation Maximization * Expectation Maximization
* Hierarchical Clustering * Hierarchical Clustering
* Association Rule Algorithms * Association Rule Algorithms: **Extract rules that best explain relationships between variables in data.**
* **Extract rules that best explain relationships between variables in data.**
* Apriori algorithm * Apriori algorithm
* Eclat algorithm * Eclat algorithm
* Neural Networks * Neural Networks: **Inspired by structure and function of biological neural networks, used ofr regression and classification problems.**
* **Inspired by structure and function of biological neural networks, used ofr regression and classification problems.**
* Radial Basis Function Network (RBFN) * Radial Basis Function Network (RBFN)
* Perceptron * Perceptron
* Back-Propagation * Back-Propagation
* Hopfield Network * Hopfield Network
* Deep Learning * Deep Learning: **Neural networks that exploit cheap and abundant computational power; semi-supervised, lots of data.**
* **Neural networks that exploit cheap and abundant computational power; semi-supervised, lots of data.**
* Convolutional Neural Network (CNN) * Convolutional Neural Network (CNN)
* Recurrent Neural Network (RNN) * Recurrent Neural Network (RNN)
* Long-Short-Term Memory Network (LSTM) * Long-Short-Term Memory Network (LSTM)
@@ -149,8 +139,7 @@ A long and full list of types of models under each sub-heading:
* Deep Belief Network (DBN) * Deep Belief Network (DBN)
* Stacked Auto-Encoders * Stacked Auto-Encoders
* Dimensionality Reduction * Dimensionality Reduction: **Find inherent structure in data, in an unsupervised manner, to describe data using less information.**
* **Find inherent structure in data, in an unsupervised manner, to describe data using less information.**
* PCA * PCA
* t-SNE * t-SNE
* PLS (Partial Least Squares Regression) * PLS (Partial Least Squares Regression)
@@ -164,8 +153,7 @@ A long and full list of types of models under each sub-heading:
* Regularized Discriminant Analysis * Regularized Discriminant Analysis
* Linear Discriminant Analysis * Linear Discriminant Analysis
* Ensemble * Ensemble: **Models composed of multiple weaker models, independently trained, that provide a combined prediction.**
* **Models composed of multiple weaker models, independently trained, that provide a combined prediction.**
* Random Forest * Random Forest
* Gradient Boosting Machines (GBM) * Gradient Boosting Machines (GBM)
* Boosting * Boosting
@@ -174,4 +162,3 @@ A long and full list of types of models under each sub-heading:
* Stacked Generalization (Blending) * Stacked Generalization (Blending)
* Gradient Boosted Regression Trees * Gradient Boosted Regression Trees

View File

@@ -15,22 +15,13 @@ See [ThePlan.md](/ThePlan.md)
### Software Engineering ### Software Engineering
The basic concepts, the full topic list, the to do list. Full list of software engineering topics: [SoftwareEngineering.md](/SoftwareEngineering.md)
See [SoftwareEngineering.md](/SoftwareEngineering.md) Schedule and task list (ended August 2017): [TODOSoftwareEngineering.md](/TODOSoftwareEngineering.md)
### TODO Software Engineering
See [TODOSoftwareEngineering.md](/TODOSoftwareEngineering.md)
-------- --------
### Machine Learning ### Machine Learning
The basic concepts and the detailed topic list. Full list of machine learning topics: [MachineLearning.md](/MachineLearning.md)
See [MachineLearning.md](/MachineLearning.md)
### TODO Machine Learning
See [TODOMachineLearning.md](/TODOMachineLearning.md)

View File

@@ -9,9 +9,11 @@
* Parabolas * Parabolas
* Points, spaces, curves, 2D vs 3D * Points, spaces, curves, 2D vs 3D
* Solutions of linear algebraic equations * Solutions of linear algebraic equations
* Linear system, matrix solvers * Linear system, matrix solvers
* Interpolation and extrapolation * Interpolation and extrapolation
* Integration * Integration
@@ -36,28 +38,21 @@
* Chapter 2 - solutions of linear algebraic equations * Chapter 2 - solutions of linear algebraic equations
* Chapter 3 - interpolation and extrapolation * Chapter 3 - interpolation and extrapolation
* Chapter 4 - Integration of Functions * Chapter 4 - Integration of Functions
* Chapter 5 - Evaluation of Functions * Chapter 5 - Evaluation of Functions
* Chapter 6 - Special Functions * Chapter 6 - Special Functions
* Chapter 7 - Random numbers
Chapter 7 - Random numbers * Chapter 8 - Sorting and selection
Chapter 8 - Sorting and selection * Chapter 9 - Root finding and nonlinear equations
Chapter 9 - Root finding and nonlinear equations * Chapter 10 - Minimization and maximization
Chapter 10 - Minimization and maximization * Chapter 11 - Eigensystems
* Chapter 12 - Fast Fourier Transform
Chapter 11 - Eigensystems * Chapter 13 - Fourier and spectral applications
Chapter 12 - Fast Fourier Transform * Chapter 14 - Statistical description of data
Chapter 13 - Fourier and spectral applications * Chapter 15 - Modeling of data
Chapter 14 - Statistical description of data * Chapter 16 - Classification and Inference
* Chapter 17 - Integration of ODEs
Chapter 15 - Modeling of data * Chapter 18 - Two-point boundary solution
Chapter 16 - Classification and Inference * Chapter 19 - Integral equations and inverse theory
Chapter 17 - Integration of ODEs * Chapter 20 - PDEs
* Chapter 21 - Computational geometry
Chapter 18 - Two-point boundary solution
Chapter 19 - Integral equations and inverse theory
Chapter 20 - PDEs
Chapter 21 - Computational geometry

View File

@@ -1,7 +1,7 @@
# TODO List - Software Engineering # TODO List - Software Engineering
Table of Contents: Table of Contents:
* [Data Structures](#Data Structures) * [Data Structures](#data-structures)
* [Arrays](#arrays) * [Arrays](#arrays)
* [Linked Lists](#ll) * [Linked Lists](#ll)
* [Stacks and Queues](#sq) * [Stacks and Queues](#sq)
@@ -12,10 +12,7 @@ Table of Contents:
* [Search Trees](#searchtrees) * [Search Trees](#searchtrees)
* [Graphs](#graphs) * [Graphs](#graphs)
* [Advanced Data Structures (Skiena)](#adv) * [Advanced Data Structures (Skiena)](#adv)
* [Data Structures and Libraries](#lib) * [Study Guides](#studyguides)
* Guava
* Apache Commons
* Others
* [Algorithms](#algorithms) * [Algorithms](#algorithms)
* [Complexity and Big O Notation](#bigO) * [Complexity and Big O Notation](#bigO)
* [Timing](#timing) * [Timing](#timing)
@@ -28,16 +25,17 @@ Table of Contents:
* [OOP](#oop) * [OOP](#oop)
* [Java](#java) * [Java](#java)
* [Practice and Applications](#practice) * [Practice and Applications](#practice)
* [Blogging and Wrtiting](#blogging) * [Blogging and Writing](#blogging)
* [Project Euler](#euler) * [Project Euler](#euler)
* [ICPC](#icpc) * [ICPC](#icpc)
* [Google Code Jam](#codejam) * [Google Code Jam](#codejam)
* [Engineering Interview Notes](#interview-notes)
<a name="data_structures"></a> <a name="data-structures"></a>
## Data Structures ## Data Structures
<a name="arrays"></a> <a name="arrays"></a>
@@ -81,7 +79,6 @@ Table of Contents:
- Fisher Yates [https://charlesreid1.com/wiki/Arrays/Java/FisherYates](https://charlesreid1.com/wiki/Arrays/Java/FisherYates) - Fisher Yates [https://charlesreid1.com/wiki/Arrays/Java/FisherYates](https://charlesreid1.com/wiki/Arrays/Java/FisherYates)
- Python list [https://charlesreid1.com/wiki/Arrays/Java/PythonList](https://charlesreid1.com/wiki/Arrays/Java/PythonList) - Python list [https://charlesreid1.com/wiki/Arrays/Java/PythonList](https://charlesreid1.com/wiki/Arrays/Java/PythonList)
- Removing elements - Removing elements
- Code: - Code:
- Python-style list in Java: [https://charlesreid1.com:3000/cs/java/src/master/arrays/python-list/PythonList.java](https://charlesreid1.com:3000/cs/java/src/master/arrays/python-list/PythonList.java) - Python-style list in Java: [https://charlesreid1.com:3000/cs/java/src/master/arrays/python-list/PythonList.java](https://charlesreid1.com:3000/cs/java/src/master/arrays/python-list/PythonList.java)
- Usage of the Array data type: [https://charlesreid1.com:3000/cs/java/src/master/arrays](https://charlesreid1.com:3000/cs/java/src/master/arrays) - Usage of the Array data type: [https://charlesreid1.com:3000/cs/java/src/master/arrays](https://charlesreid1.com:3000/cs/java/src/master/arrays)
@@ -111,7 +108,7 @@ Table of Contents:
--- ---
[ ] Linked lists: Python [X] Linked lists: Python
- Singly liked lists: 06/04 - Singly liked lists: 06/04
- Books: - Books:
- Goodrich Python Chapter 7 - Goodrich Python Chapter 7
@@ -120,7 +117,6 @@ Table of Contents:
- [https://charlesreid1.com/wiki/Linked_Lists](https://charlesreid1.com/wiki/Linked_Lists) - [https://charlesreid1.com/wiki/Linked_Lists](https://charlesreid1.com/wiki/Linked_Lists)
- [https://charlesreid1.com/wiki/Linked_Lists/Python](https://charlesreid1.com/wiki/Linked_Lists/Python) - [https://charlesreid1.com/wiki/Linked_Lists/Python](https://charlesreid1.com/wiki/Linked_Lists/Python)
- [https://charlesreid1.com/wiki/Linked_Lists/Python/Single](https://charlesreid1.com/wiki/Linked_Lists/Python/Single) - [https://charlesreid1.com/wiki/Linked_Lists/Python/Single](https://charlesreid1.com/wiki/Linked_Lists/Python/Single)
- End of chapter questions:
- Code: - Code:
@@ -138,8 +134,6 @@ Table of Contents:
- Wiki notes: - Wiki notes:
- [https://charlesreid1.com/wiki/StacksQueues](https://charlesreid1.com/wiki/StacksQueues) - [https://charlesreid1.com/wiki/StacksQueues](https://charlesreid1.com/wiki/StacksQueues)
- [https://charlesreid1.com/wiki/StacksQueues/Python](https://charlesreid1.com/wiki/StacksQueues/Python) - [https://charlesreid1.com/wiki/StacksQueues/Python](https://charlesreid1.com/wiki/StacksQueues/Python)
- End of chapter questions:
- (none)
- Code: - Code:
- Python: [https://charlesreid1.com:3000/cs/python/src/master/stacks-queues-deques/](https://charlesreid1.com:3000/cs/python/src/master/stacks-queues-deques/) - Python: [https://charlesreid1.com:3000/cs/python/src/master/stacks-queues-deques/](https://charlesreid1.com:3000/cs/python/src/master/stacks-queues-deques/)
- Array-based stack: [https://charlesreid1.com:3000/cs/python/src/master/stacks-queues-deques/stacks/ArrayStack.py](https://charlesreid1.com:3000/cs/python/src/master/stacks-queues-deques/stacks/ArrayStack.py) - Array-based stack: [https://charlesreid1.com:3000/cs/python/src/master/stacks-queues-deques/stacks/ArrayStack.py](https://charlesreid1.com:3000/cs/python/src/master/stacks-queues-deques/stacks/ArrayStack.py)
@@ -164,9 +158,6 @@ Table of Contents:
- [https://charlesreid1.com/wiki/StacksQueues/Java/LinkedStack](https://charlesreid1.com/wiki/StacksQueues/Java/LinkedStack) - [https://charlesreid1.com/wiki/StacksQueues/Java/LinkedStack](https://charlesreid1.com/wiki/StacksQueues/Java/LinkedStack)
- [https://charlesreid1.com/wiki/StacksQueues/Java/LinkedQueue](https://charlesreid1.com/wiki/StacksQueues/Java/LinkedQueue) - [https://charlesreid1.com/wiki/StacksQueues/Java/LinkedQueue](https://charlesreid1.com/wiki/StacksQueues/Java/LinkedQueue)
- [https://charlesreid1.com/wiki/StacksQueues/Java/LinkedDeque](https://charlesreid1.com/wiki/StacksQueues/Java/LinkedDeque) - [https://charlesreid1.com/wiki/StacksQueues/Java/LinkedDeque](https://charlesreid1.com/wiki/StacksQueues/Java/LinkedDeque)
- End of chapter questions:
- Goodrich
- To do
- Implementations/Code: - Implementations/Code:
- Array based stack: [https://charlesreid1.com:3000/cs/java/src/master/stacks-queues-deques/stacks/ArrayStack.java](https://charlesreid1.com:3000/cs/java/src/master/stacks-queues-deques/stacks/ArrayStack.java) - Array based stack: [https://charlesreid1.com:3000/cs/java/src/master/stacks-queues-deques/stacks/ArrayStack.java](https://charlesreid1.com:3000/cs/java/src/master/stacks-queues-deques/stacks/ArrayStack.java)
- Array based queue: [https://charlesreid1.com:3000/cs/java/src/master/stacks-queues-deques/queues/ArrayQueue.java](https://charlesreid1.com:3000/cs/java/src/master/stacks-queues-deques/queues/ArrayQueue.java) - Array based queue: [https://charlesreid1.com:3000/cs/java/src/master/stacks-queues-deques/queues/ArrayQueue.java](https://charlesreid1.com:3000/cs/java/src/master/stacks-queues-deques/queues/ArrayQueue.java)
@@ -196,13 +187,12 @@ Table of Contents:
- Goodrich trees coverage includes patterns, abstract methods - Goodrich trees coverage includes patterns, abstract methods
- Wiki notes: - Wiki notes:
- [https://charlesreid1.com/wiki/Template:TreesFlag](https://charlesreid1.com/wiki/Template:TreesFlag) - [https://charlesreid1.com/wiki/Template:TreesFlag](https://charlesreid1.com/wiki/Template:TreesFlag)
- End of chapter questions:
--- ---
[ ] Trees: Java [X] Trees: Java
- 06/10 - 06/13, 06/15 - 06/16 - 06/10 - 06/13, 06/15 - 06/16
- Books: - Books:
- Goodrich Java Chapter 8 - Goodrich Java Chapter 8
@@ -218,13 +208,14 @@ Table of Contents:
- Skiena: [https://charlesreid1.com/wiki/Tree/LogN_Min_Search](https://charlesreid1.com/wiki/Tree/LogN_Min_Search) - Skiena: [https://charlesreid1.com/wiki/Tree/LogN_Min_Search](https://charlesreid1.com/wiki/Tree/LogN_Min_Search)
- Expression trees: [https://charlesreid1.com/wiki/Expression_Trees](https://charlesreid1.com/wiki/Expression_Trees) - Expression trees: [https://charlesreid1.com/wiki/Expression_Trees](https://charlesreid1.com/wiki/Expression_Trees)
- Another, more lightweight implementation of trees - Another, more lightweight implementation of trees
- Important thing is not to have the fanciest implementation, but to have one that is fast and that works for your application. - The important thing is not to have the fanciest implementation, but to have one that is fast and that works for your application.
- Example: implementing a stack node alone, rather than a full stack object, made it really fast to add and remove things. - Example: implementing a stack node alone, rather than a full stack object, made it really fast to add and remove things.
- Sorted trees: - Sorted trees:
- Not covered in the Goodrich book...?? - Not covered in the Goodrich book...??
- See Skiena for coverage... - See Skiena for coverage...
- Weiss C++ book also has good coverage. - Weiss C++ book also has good coverage.
- Sorted trees means balanced trees, and balanced trees introduces myriad strategies. - Sorted trees means balanced trees
- Balanced trees introduces myriad strategies.
--- ---
@@ -243,9 +234,9 @@ Table of Contents:
- Timing Notes: - Timing Notes:
- Spent a lot of time wrestling with the sorted and unsorted implementations. The unsorted was *way* slower than expected. - Spent a lot of time wrestling with the sorted and unsorted implementations. The unsorted was *way* slower than expected.
- Not sure what's going on. Need to go through and implement them according to the book. - Not sure what's going on. Need to go through and implement them according to the book.
- Finally got classes worked out, 6/22. Better-documented process. Documentation could still use some improvement. Consolidation still an issue. - Finally got classes worked out, 6/22.
- Better-documented process. Documentation could still use some improvement. Consolidation still an issue.
- Package? Thinking like you are building an API. Maven. - Package? Thinking like you are building an API. Maven.
- End of chapter questions:
- Git Code: - Git Code:
- Non-tree sorted/unsorted priority queues: use a built-in list data type - Non-tree sorted/unsorted priority queues: use a built-in list data type
- [https://charlesreid1.com:3000/cs/java/src/master/priority-queues/AbstractPriorityQueue.java](https://charlesreid1.com:3000/cs/java/src/master/priority-queues/AbstractPriorityQueue.java) - [https://charlesreid1.com:3000/cs/java/src/master/priority-queues/AbstractPriorityQueue.java](https://charlesreid1.com:3000/cs/java/src/master/priority-queues/AbstractPriorityQueue.java)
@@ -256,15 +247,23 @@ Table of Contents:
--- ---
[ ] Trees: heap trees [X] Trees: heap trees
- 06/23 - 06/23
- Books: - Books:
- Goodrich Python/Java books covering priority queue theory/concepts - Goodrich Python/Java books covering priority queue theory/concepts
- Online videos:
- [Heaps and heap sort (MIT 6.006)](https://www.youtube.com/watch?v=B7hVxCmfPtM)
- Wiki notes: - Wiki notes:
- Binary search trees - Java Priority queues: [https://charlesreid1.com/wiki/Priority_Queues/Java](https://charlesreid1.com/wiki/Priority_Queues/Java)
- Heap sort - Priority queue ADT: [https://charlesreid1.com/wiki/Priority_Queues/ADT](https://charlesreid1.com/wiki/Priority_Queues/ADT)
- Priority queue (stored in sorted order): [https://charlesreid1.com/wiki/Priority_Queues/Sorted](https://charlesreid1.com/wiki/Priority_Queues/Sorted)
- Priority queue (stored in unsorted order): [https://charlesreid1.com/wiki/Priority_Queues/Unsorted](https://charlesreid1.com/wiki/Priority_Queues/Unsorted)
- Heaps: [https://charlesreid1.com/wiki/Priority_Queues/Heap](https://charlesreid1.com/wiki/Priority_Queues/Heap)
- Heaps with Java: [https://charlesreid1.com/wiki/Priority_Queues/Java](https://charlesreid1.com/wiki/Priority_Queues/Java)
- Custom comparators with priority queues: [https://charlesreid1.com/wiki/Priority_Queues/Comparators](https://charlesreid1.com/wiki/Priority_Queues/Comparators)
- End of chapter questions: - End of chapter questions:
- Git Code - max oriented priority queue: [https://charlesreid1.com/wiki/Maximum_Oriented_Priority_Queue](https://charlesreid1.com/wiki/Maximum_Oriented_Priority_Queue)
- stack implementation of pq: [https://charlesreid1.com/wiki/Priority_Queues/Stack](https://charlesreid1.com/wiki/Priority_Queues/Stack)
@@ -278,26 +277,26 @@ Table of Contents:
[ ] Dictionaries/Maps/Hash Tables [ ] Dictionaries/Maps/Hash Tables
- 06/02 - 06/03 - Skiena advanced data structures - 06/02 - 06/03 - Skiena advanced data structures
- 06/19 - 06/21 - Goodrich book - 06/19 - 06/21 - Goodrich book
- 06/23 - 06/25 - Videos
- Books: - Books:
- Skiena Chapter 3 - Skiena Chapter 3
- Goodrich Chapter 10 - FIRST HALF - Goodrich Chapter 10 - FIRST HALF
- Online Videos: - Online Videos:
- MIT 6.006 Intro to Algorithms: Erik Demaine - [Hashing with chaining (MIT 6.006)](https://www.youtube.com/watch?v=0M_kIqhwbFo)
- [Lecture 8: Hashing with chaining](https://www.youtube.com/watch?v=0M_kIqhwbFo) - [Table doubling (MIT 6.006)](https://www.youtube.com/watch?v=BRO7mVIFt08)
- [Lecture 9: Table doubling](https://www.youtube.com/watch?v=BRO7mVIFt08) - [Open addressing, crypto hashing (MIT 6.006)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb)
- [Randomization: universal hashing, perfect hashing (MIT 6.046)](https://www.youtube.com/watch?v=z0lJ2k0sl1g)
- Wiki notes: - Wiki notes:
- End of chapter questions: - [https://charlesreid1.com/wiki/Hash_Functions](https://charlesreid1.com/wiki/Hash_Functions)
- [https://charlesreid1.com/wiki/Maps](https://charlesreid1.com/wiki/Maps)
- [https://charlesreid1.com/wiki/Maps_in_Java](https://charlesreid1.com/wiki/Maps_in_Java)
- Git code: - Git code:
- [https://charlesreid1.com:3000/cs/java/src/master/hash](https://charlesreid1.com:3000/cs/java/src/master/hash)
- Map interface: [https://charlesreid1.com:3000/cs/java/src/master/hash/Map.java](https://charlesreid1.com:3000/cs/java/src/master/hash/Map.java)
--- - AbstractMap class: [https://charlesreid1.com:3000/cs/java/src/master/hash/AbstractMap.java](https://charlesreid1.com:3000/cs/java/src/master/hash/AbstractMap.java)
- Unsorted array map: [https://charlesreid1.com:3000/cs/java/src/master/hash/UnsortedArrayMap.java](https://charlesreid1.com:3000/cs/java/src/master/hash/UnsortedArrayMap.java)
- Exploring hash functions: [https://charlesreid1.com:3000/cs/java/src/master/hash/HashFunctions.java](https://charlesreid1.com:3000/cs/java/src/master/hash/HashFunctions.java)
<a name="hash"></a> - Exploring hashCode() function: [https://charlesreid1.com:3000/cs/java/src/master/hash/ObjectHashCode.java](https://charlesreid1.com:3000/cs/java/src/master/hash/ObjectHashCode.java)
## Hash Tables
[ ] Hash tables: (Detail topic?)
--- ---
@@ -309,6 +308,21 @@ Table of Contents:
[ ] Sets and Skip Lists [ ] Sets and Skip Lists
- 06/26 - 06/30
- Books:
- Goodrich Chapter 10 - SECOND HALF
- Online videos:
- [Randomization: skip lists (MIT 6.046)](https://www.youtube.com/watch?v=2g9OSRKJuzM)
- Other code:
- phishman data structures code
- Wiki notes:
- [https://charlesreid1.com/wiki/Skip_Lists](https://charlesreid1.com/wiki/Skip_Lists)
- [https://charlesreid1.com/wiki/Java/ConcurrentSkipList](https://charlesreid1.com/wiki/Java/ConcurrentSkipList)
- [https://charlesreid1.com/wiki/SkipList](https://charlesreid1.com/wiki/SkipList)
- TODO - need to finish the implementation notese at the last link
- Git code:
- SkipList class: [https://charlesreid1.com:3000/cs/java/src/master/hash/SkipList.java](https://charlesreid1.com:3000/cs/java/src/master/hash/SkipList.java)
- TODO - need to implement a timing class for SkipList
--- ---
@@ -317,25 +331,58 @@ Table of Contents:
<a name="searchtrees"></a> <a name="searchtrees"></a>
### Search Trees ### Search Trees
[ ] Trees: binary search trees [ ] Trees: search trees (binary, AVL, splay, 2-4, heap)
- 07/01 - 07/03
- Books:
- Goodrich Chapter 11
- Online Videos:
- [Binary search trees (MIT 6.006)](https://www.youtube.com/watch?v=9Jry5-82I68)
- [AVL trees (MIT 6.006)](https://www.youtube.com/watch?v=FNeL18KsWPc&index=6&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb)
- [B-Trees insertion and sort](https://www.youtube.com/watch?v=k5J9M5_IMzg)
- Wiki notes:
- Binary search trees [https://charlesreid1.com/wiki/Binary_Search_Trees](https://charlesreid1.com/wiki/Binary_Search_Trees)
- Binary search tree navigation
- Binary search tree insertion and deletion
- OOP: Hooks, virtual method alternatives, positions vs nodes, key-value pairs
- AVL search tree
[ ] Trees: balanced search trees
[ ] Trees: red black trees
--- ---
<a name="graphs"></a> <a name="graphs"></a>
### Graphs ### Graphs
[ ] Graphs: directed and undirected [ ] Graphs
- Books:
[ ] Graphs: Adjacency Matrix and List Representations of Graphs - Goodrich Chapter 14
- Wiki notes:
[ ] Graphs: Traversals (BFS, DFS) - Graph theory:
- Definitions: [https://charlesreid1.com/wiki/Graphs/Definitions](https://charlesreid1.com/wiki/Graphs/Definitions)
- Matching: [https://charlesreid1.com/wiki/Graphs/Matching](https://charlesreid1.com/wiki/Graphs/Matching)
- Connectivity: [https://charlesreid1.com/wiki/Graphs/Connectivity](https://charlesreid1.com/wiki/Graphs/Connectivity)
- First theorem of graph theory: [https://charlesreid1.com/wiki/First_Theorem_of_Graph_Theory](https://charlesreid1.com/wiki/First_Theorem_of_Graph_Theory)
- Implementations:
- Data structures: [https://charlesreid1.com/wiki/Graphs/Data_Structures](https://charlesreid1.com/wiki/Graphs/Data_Structures)
- Adjacency matrix:
- Adjacency list:
- Adjacency map: [https://charlesreid1.com/wiki/Graphs/Java/Adjacency_Map](https://charlesreid1.com/wiki/Graphs/Java/Adjacency_Map)
- Edge list:
- Guava: [https://charlesreid1.com/wiki/Graphs/Guava](https://charlesreid1.com/wiki/Graphs/Guava)
- Algorithms:
- Traversal: [https://charlesreid1.com/wiki/Graphs/Traversal](https://charlesreid1.com/wiki/Graphs/Traversal)
- BFS: [https://charlesreid1.com/wiki/Graphs/Breadth_First_Traversal](https://charlesreid1.com/wiki/Graphs/Breadth_First_Traversal)
- DFS: [https://charlesreid1.com/wiki/Graphs/Depth_First_Traversal](https://charlesreid1.com/wiki/Graphs/Depth_First_Traversal)
- Finding cycles: [https://charlesreid1.com/wiki/Graphs/Finding_Cycles](https://charlesreid1.com/wiki/Graphs/Finding_Cycles)
- Connected components: [https://charlesreid1.com/wiki/Graphs/Finding_Connected_Components](https://charlesreid1.com/wiki/Graphs/Finding_Connected_Components)
- Reachability: [https://charlesreid1.com/wiki/Graphs/Reachability](https://charlesreid1.com/wiki/Graphs/Reachability)
- Transitive closure: [https://charlesreid1.com/wiki/Graphs/Transitive_Closure](https://charlesreid1.com/wiki/Graphs/Transitive_Closure)
- Floyd Warshall: [https://charlesreid1.com/wiki/Graphs/Floyd_Warshall](https://charlesreid1.com/wiki/Graphs/Floyd_Warshall)
- Shortest path: [https://charlesreid1.com/wiki/Graphs/Shortest_Path](https://charlesreid1.com/wiki/Graphs/Shortest_Path)
- Edge relaxation: [https://charlesreid1.com/wiki/Graphs/Edge_Relaxation](https://charlesreid1.com/wiki/Graphs/Edge_Relaxation)
- Dijkstra: [https://charlesreid1.com/wiki/Graphs/Dijkstra](https://charlesreid1.com/wiki/Graphs/Dijkstra)
@@ -353,9 +400,6 @@ Table of Contents:
- Wiki notes: - Wiki notes:
- [https://charlesreid1.com/wiki/Dictionaries](https://charlesreid1.com/wiki/Dictionaries) - [https://charlesreid1.com/wiki/Dictionaries](https://charlesreid1.com/wiki/Dictionaries)
- [https://charlesreid1.com/wiki/Priority_Queues](https://charlesreid1.com/wiki/Priority_Queues) - [https://charlesreid1.com/wiki/Priority_Queues](https://charlesreid1.com/wiki/Priority_Queues)
- End of chapter questions:
- Skiena chapter 3 question solutions on wiki
Git code:
(This ended up being quite a jump in a different direction. (This ended up being quite a jump in a different direction.
Much more practical focus on algorithms, only the most useful data structures, Much more practical focus on algorithms, only the most useful data structures,
@@ -363,22 +407,42 @@ only the core of each data structure, basic operations and big-O analysis.)
---
<a name="studyguides"></a>
### Study Guides
[ ] Data structures study guides
- Arrays study guide - finished 7/5
- [https://charlesreid1.com/wiki/Arrays_Study_Guide](https://charlesreid1.com/wiki/Arrays_Study_Guide)
- Lists study guide - finished 7/5
- [https://charlesreid1.com/wiki/Lists_Study_Guide](https://charlesreid1.com/wiki/Lists_Study_Guide)
- Stacks and queues study guide - finished 7/55
- [https://charlesreid1.com/wiki/Stacks_Queues_Study_Guide](https://charlesreid1.com/wiki/Stacks_Queues_Study_Guide)
- Priority queues/heaps study guide - finished 7/6
- [https://charlesreid1.com/wiki/Priority_Queues_Study_Guide](https://charlesreid1.com/wiki/Priority_Queues_Study_Guide)
- Hash tables study guide - finished 7/6
- [https://charlesreid1.com/wiki/Hash_Tables_Study_Guide](https://charlesreid1.com/wiki/Hash_Tables_Study_Guide)
- Trees study guide - finished 7/7
- [https://charlesreid1.com/wiki/Trees_Study_Guide](https://charlesreid1.com/wiki/Trees_Study_Guide)
- Maps and sets study guide - finished 7/9
- [https://charlesreid1.com/wiki/Maps_and_Sets_Study_Guide](https://charlesreid1.com/wiki/Maps_and_Sets_Study_Guide)
- Search trees study guide - finished 7/9
- [https://charlesreid1.com/wiki/Search_Trees_Study_Guide](https://charlesreid1.com/wiki/Search_Trees_Study_Guide)
<a name="lib"></a> <a name="lib"></a>
## Data Structures Libraries ## Data Structures Libraries
Some libraries that provide data structures in Java. Some libraries that provide data structures in Java.
* Guava - [https://charlesreid1.com/wiki/Graphs/Guava](https://charlesreid1.com/wiki/Graphs/Guava)
### Guava * Apache Commons
[ ] Google Guava Library
---
### Apache Commons
[ ] Apache Commons Library
---
@@ -390,6 +454,7 @@ Some libraries that provide data structures in Java.
[X] Algorithm complexity and big-oh notation [X] Algorithm complexity and big-oh notation
- 05/26, 05/27 - 05/26, 05/27
- Revisiting 7/15
- Books: - Books:
- Goodrich et al: Data Structures and Algorithms in Python - Goodrich et al: Data Structures and Algorithms in Python
- Skiena: Algorithm Design Manual - Skiena: Algorithm Design Manual
@@ -435,21 +500,60 @@ Some libraries that provide data structures in Java.
[ ] Algorithms: Backtracking [ ] Algorithms: Backtracking
<a name="search"></a> <a name="search"></a>
### Search ### Search
[ ] Sequential search [ ] Sequential search
[ ] Binary search [ ] Binary search
- 07/16
- Books:
- Skiena Chapter 4
- Useful variations on binary search
- Basic principle of search: sorting is easy and is something algorithm designers should always try
- Binary search is possible once you have a sorted array
- End of chapter questions:
- Skiena chapter 4 question solutions on wiki
<a name="sort"></a> <a name="sort"></a>
### Sort ### Sort
[ ] Sort Algorithms [ ] Sort Algorithms
[ ] Algorithms: Selection sort - 07/13-07/15 - Skiena
- Books:
- Skiena Chapter 4
- Merge sort, selection sort, heap sort, insertion sort, and quick sort covered
- Focus is on utility of sorting for enabling algorithm design
- Wiki notes:
- [https://charlesreid1.com/wiki/Algorithms/Sort](https://charlesreid1.com/wiki/Algorithms/Sort)
- [https://charlesreid1.com/wiki/Algorithmic_Analysis_of_Sort_Functions](https://charlesreid1.com/wiki/Algorithmic_Analysis_of_Sort_Functions)
Fast:
[ ] Algorithms: Merge sort [ ] Algorithms: Merge sort
[ ] Algorithms: Quick sort
[ ] Algorithms: Heap sort [ ] Algorithms: Heap sort
[ ] Algorithms: Quick sort
Slower:
[ ] Algorithms: Selection sort
[ ] Algorithms: Insertion sort
### Divide and Conquer
[ ] Divide and Conquer algorithm approach
- Several MIT lectures from 07/01-07/15
- 07/13-07/15 - Skiena
- Books:
- Skiena Chapter 4
- Divide and conquer algorithms
- Master theorem
- (Light on explanation of the Master Theorem)
- Wiki notes:
- [https://charlesreid1.com/wiki/Divide_and_Conquer](https://charlesreid1.com/wiki/Divide_and_Conquer)
- [https://charlesreid1.com/wiki/Divide_and_Conquer/Master_Theorem](https://charlesreid1.com/wiki/Divide_and_Conquer/Master_Theorem)
<a name="strings"></a> <a name="strings"></a>
### Strings ### Strings
@@ -514,21 +618,15 @@ Some libraries that provide data structures in Java.
(For full list, see CS flag on wiki) (For full list, see CS flag on wiki)
[ ] Interfaces, Abstract Classes, Virtual Methods Java topics:
* Interfaces, Abstract Classes, Virtual Methods
[ ] Interfaces * Interfaces
* Testing (Unit testing)
[ ] Testing (Unit testing) * Timing
* Memory Usage
[ ] Timing * Garbage Collection
* Lambda functions
[ ] Memory Usage * Decorators
[ ] Garbage Collection
[ ] Lambda functions
[ ] Decorators
@@ -576,27 +674,31 @@ Notes:
- Part 2 - Solution - Part 2 - Solution
- Part 3 - Code - Part 3 - Code
- blog post: [http://charlesreid1.github.io/cse-143-final-project-hilbert-sort-1-the-problem.html](http://charlesreid1.github.io/cse-143-final-project-hilbert-sort-1-the-problem.html) - blog post: [http://charlesreid1.github.io/cse-143-final-project-hilbert-sort-1-the-problem.html](http://charlesreid1.github.io/cse-143-final-project-hilbert-sort-1-the-problem.html)
- git code: - git code: [https://charlesreid1.com:3000/cs/finalproject-143/src/master/hilbert/HilbertSort.java](https://charlesreid1.com:3000/cs/finalproject-143/src/master/hilbert/HilbertSort.java)
[ ] Project Euler Blogging [ ] Project Euler Blogging
* Even Fibonacci numbers - performance, comparisons of methods to get Fib numbers, some maths - 07/14 - continued fractions
- Even Fibonacci numbers - performance, comparisons of methods to get Fib numbers, some maths
- Continued fractions
- Published 07/14
- blog post: part 1: newton's method [http://charlesreid1.github.io/computing-square-roots-part-1-using-newtons-method.html](http://charlesreid1.github.io/computing-square-roots-part-1-using-newtons-method.html)
- blog post: part 2: continued fractions: [http://charlesreid1.github.io/computing-square-roots-part-2-using-continued-fractions.html](http://charlesreid1.github.io/computing-square-roots-part-2-using-continued-fractions.html)
Timing and performance: Timing and performance:
* Results of big-O computations and verifications - Results of big-O computations and verifications
OOP: OOP:
* Data structures, checklists, and cheat sheets - Data structures, checklists, and cheat sheets
Other ideas: Other ideas:
* Mind maps of concepts and relations, plus links and code - Mind maps of concepts and relations, plus links and code
* Helpful YouTube videos and projects they lead to - Helpful YouTube videos and projects they lead to
* Particularly insightful mathematical questions, - Particularly insightful mathematical questions,
* Post-chapter questions and answers - Post-chapter questions and answers
@@ -611,6 +713,10 @@ Notes:
[ ] Project Euler [ ] Project Euler
- 06/14 - 06/17 - 06/14 - 06/17
- 06/23 - Decathlete (first 10 solved) - 06/23 - Decathlete (first 10 solved)
- 07/01-07/02 - up to 15, 51, 100, 500
- 07/04 - 16, 17, 52, 53, 100
- 07/08 - 501 (sink)
- 07/10-07/13 - 500 thru 502 (more sinks)
- Wiki notes: - Wiki notes:
- [https://charlesreid1.com/wiki/Project_Euler](https://charlesreid1.com/wiki/Project_Euler) - [https://charlesreid1.com/wiki/Project_Euler](https://charlesreid1.com/wiki/Project_Euler)
- Git code: - Git code:
@@ -638,3 +744,91 @@ Solutions to Google Code Jam problems:
[https://charlesreid1.com:3000/charlesreid1/code-jam](https://charlesreid1.com:3000/charlesreid1/code-jam) [https://charlesreid1.com:3000/charlesreid1/code-jam](https://charlesreid1.com:3000/charlesreid1/code-jam)
<a name="interview-notes"></a>
## Engineering Interview Notes
Link: [https://www.youtube.com/watch?v=ko-KkSmp-Lk](https://www.youtube.com/watch?v=ko-KkSmp-Lk)
Algorithms:
* Discuss space and time complexity
* System design and OOP
Resume:
* Be prepared to prove what is on your resume
Design questions:
* Work with your interviewer
Analysis questions:
* Ensure you understand all aspects of the problem
* Give multiple solutions
Code questions:
* Be able to come up with efficient code in a short amount of time
Coding:
* Be familiar with at least one coding language (C++ or Java)
* APIs
* OO design
* How to test
* Corner cases and edge cases
Algorithms:
* Time and space complexity
* How to improve or change
Data structures:
* As many as humanly possible
Testing:
* Unit testing
* Corner cases, edge cases
* End to end integration tests
* Security tests
NP Complete
* What does NP complete actually *mean*?
* TSP
* Knapsack problem
* Recognize these when they are presented in alternate forms
Math:
* Discrete math problems
* Counting, probability, combinatorics
Recursion:
* Practice
Operating systems:
* Processes, threads, concurrency issues
* Semaphores, mutexes, locks
* Resource allocation
* Context switching - an issue with the operating system and underlying hardware
* Scheduling
System design:
* Knowledge, theory, judgement for real world code
* Class hierarchies, distributed systems, design of systems under constraints
The Internet:
* Routers, domains, servers, load balancers, firewalls
* How search works
Tips:
* Explain and clarify - even if discarding ideas, vocalize the process
* Clarification: "Are there time or space complexity requirements?"
* Keep thinking through the problem - the first solution is not the best, so come up with more
* Practice physically writing your code
* Should be bug free

View File

@@ -58,8 +58,5 @@ Code:
- [C](https://git.charlesreid1.com/cs/c) - [C](https://git.charlesreid1.com/cs/c)
- [C++](https://git.charlesreid1.com/cs/cpp) - [C++](https://git.charlesreid1.com/cs/cpp)
Practice writing out on a whiteboard and/or on paper,
before implementing on computer.
Get a big drawing pad from the art store.