Browse Source

adding list of applications/practice to do

master
Charles Reid 5 years ago
parent
commit
1808c37b13
  1. 239
      TODOSoftwareEngineering.md

239
TODOSoftwareEngineering.md

@ -1,7 +1,33 @@
# TODO List - Software Engineering
Table of Contents:
* [Data Structures](#Data Structures)
* [Arrays](#arrays)
* [Linked Lists](#ll)
* [Stacks and Queues](#sq)
* [Trees](#trees)
* [Priority Queues and Heaps](#priorityq)
* [Dictionaries](#dict)
* [Hash tables](#hash)
* [Maps, Sets, Skip Lists](#maps)
* [Search Trees](#searchtree)
* [Graphs](#graphs)
* [Advanced Data Structures (Skiena)](#adv)
* [Data Structures and Libraries](#lib)
* [Algorithms](#algorithms)
* [Practice and Applications](#practice)
* [Project Euler](#euler)
* [ICPC](#icpc)
* [Google Code Jam](#codejam)
<a name="data_structures"></a>
## Data Structures
<a name="arrays"></a>
### Arrays/Array Lists
[X] Arrays and Array-Based Sequences: Python
@ -50,6 +76,7 @@
---
<a name="ll"></a>
### Linked Lists
[X] Linked lists: Java
@ -87,6 +114,7 @@
---
<a name="sq"></a>
### Stacks Queues
[X] Stacks and Queues: Python
@ -144,78 +172,148 @@
---
### Skiena: Algorithms, Advanced Data Structures, Programming Challenges
[ ] Advanced Data Structures: Dictionaries, Priority Queues, Binary Trees, Hash Tables
- 06/02, 06/03
<a name="trees"></a>
### Trees
[ ] Trees: Python
- 06/07 - 06/09
- Books:
- Skiena Chapter 3
- Goodrich Python Chapter 8
- Goodrich trees coverage includes patterns, abstract methods
- Wiki notes:
- [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/Template:TreesFlag](https://charlesreid1.com/wiki/Template:TreesFlag)
- End of chapter questions:
- Skiena chapter 3 question solutions on wiki
Git code:
(This ended up being quite a jump in a different direction.
Much more practical focus on algorithms, only the most useful data structures,
only the core of each data structure, basic operations and big-O analysis.)
---
## Trees
o
[ ] Trees: Python
- 06/07
[ ] Trees: Java
- 06/10 - 06/13
- Books:
- Goodrich Python Chapter 8
- Goodrich trees coverage includes interfaces/abstract classes/virtual methods
- Goodrich Java Chapter 8
- Goodrich trees coverage includes interfaces, abstract classes, virtual methods
- 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)
- [https://charlesreid1.com/wiki/Binary_Trees/Inorder](https://charlesreid1.com/wiki/Binary_Trees/Inorder)
- [https://charlesreid1.com/wiki/Trees/Postorder](https://charlesreid1.com/wiki/Trees/Postorder)
- [https://charlesreid1.com/wiki/Trees/Operations_Performance](https://charlesreid1.com/wiki/Trees/Operations_Performance)
- End of chapter questions:
- 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)
- 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.
- Example: implementing a stack node alone, rather than a full stack object, made it really fast to add and remove things.
---
[ ] Trees: binary search trees
[ ] Trees: heap trees
------
<a name="priorityq"></a>
### Priority Queues and Heaps
[ ] Trees: priority queues
[ ] Trees: balanced search trees
[ ] Trees: red black trees
[ ] Trees: tree traversal
[ ] Trees: heap trees
## Dictionaries
<a name="dict"></a>
### Dictionaries
[ ] Dictionaries/Maps
<a name="hash"></a>
## Hash Tables
[ ] Hash tables
## Graphs
<a name="maps"></a>
### Maps, Sets, Skip Lists
<a name="searchtree"></a>
### Search Trees
[ ] Trees: binary search trees
[ ] Trees: balanced search trees
[ ] Trees: red black trees
### Graphs
[ ] Graphs: directed and undirected
[ ] Graphs: graph <--> adjacency matrix/list
[ ] Graphs: BFS, DFS
## Guava
<a name="adv"></a>
## Skiena: Algorithms, Advanced Data Structures, Programming Challenges
[ ] Advanced Data Structures: Dictionaries, Priority Queues, Binary Trees, Hash Tables
- 06/02, 06/03
- Books:
- Skiena Chapter 3
- Wiki notes:
- [https://charlesreid1.com/wiki/Dictionaries](https://charlesreid1.com/wiki/Dictionaries)
- [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.
Much more practical focus on algorithms, only the most useful data structures,
only the core of each data structure, basic operations and big-O analysis.)
<a name="lib"></a>
## Data Structures Libraries
Some libraries that provide data structures in Java.
### Guava
[ ] Google Guava Library
---
### Apache Commons
[ ] Apache Commons Library
---
<a name="algorithms"></a>
## Algorithms
### Complexity and Big O Notation
[X] Algorithm complexity and big-oh notation
- 05/26, 05/27
- Books:
@ -235,10 +333,13 @@ o
---
### Timing
[ ] Algorithms: Timing/Verification
- 06/04 - verifying linked list is O(1)
- Wiki note:
- [https://charlesreid1.com/wiki/Linked_Lists/Java/Timing](https://charlesreid1.com/wiki/Linked_Lists/Java/Timing)
- 06/10-06/11 - verifying tree operations are O(1)
- [https://charlesreid1.com/wiki/Trees/Operations_Performance](https://charlesreid1.com/wiki/Trees/Operations_Performance)
- Books:
- Goodrich (both Java and Python books) discuss big-O timing for data structures
- Several end of chapter questions address timing/complexity
@ -246,13 +347,27 @@ o
---
### Types of Problems
[ ] Algorithms: NP, NP-Complete, Approximation
### Types of Solutions
[ ] Algorithm/Solution Taxonomy
### Recursion
[ ] Algorithms: Recursion
[ ] Search Algorithms
[ ] Search Algorithms: Sequential search
[ ] Search Algorithms: Binary search
[ ] Algorithms: Backtracking
### Search
[ ] Sequential search
[ ] Binary search
### Sort
[ ] Sort Algorithms
[ ] Algorithms: Selection sort
@ -260,8 +375,13 @@ o
[ ] Algorithms: Quick sort
[ ] Algorithms: Heap sort
### Strings
[ ] String algorithms
[ ] Algorithms: Substring search
[ ] Pattern Matching
[ ] Dynamic Compression
[ ] Tries
[ ] Graph algorithms
[ ] Tree algorithms
@ -296,6 +416,16 @@ o
### Computational Physics
[ ] Linear Systems
[ ] Parallel Algorithms
[ ] Parallel Optimization
### Applied
[ ] Systems: Processing and Threads
@ -359,3 +489,46 @@ o
[ ] Garbage Collection
<a name="practice"></a>
## Practice and Applications
### 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:
[https://charlesreid1.com:3000/cs/euler](https://charlesreid1.com:3000/cs/euler)
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)
### ICPC
Solutions to ICPC (International Competitive Programming Competition) problems:
[https://charlesreid1.com:3000/charlesreid1/icpc](https://charlesreid1.com:3000/charlesreid1/icpc)
Several of these also documented on the wiki:
[http://charlesreid1.com/wiki/ICPC_PNW_2016](http://charlesreid1.com/wiki/ICPC_PNW_2016)
[http://charlesreid1.com/wiki/Hilbert_Sort](http://charlesreid1.com/wiki/Hilbert_Sort)
### Code Jam
Solutions to Google Code Jam problems:
[https://charlesreid1.com:3000/charlesreid1/code-jam](https://charlesreid1.com:3000/charlesreid1/code-jam)

Loading…
Cancel
Save