Added gauntlet notes.

This commit is contained in:
John Washam 2016-06-06 10:11:16 -07:00
parent d4f157713e
commit 22b74937b5
1 changed files with 32 additions and 8 deletions

View File

@ -35,24 +35,42 @@
* - Efficiency with Algorithms, Performance with Data Structures: https://youtu.be/fHNmRkzxHWs
- review: https://www.youtube.com/watch?v=Rub-JsjMhWY
compilers:
* - compilers:
* - https://class.coursera.org/compilers-004/lecture/1
* - https://class.coursera.org/compilers-004/lecture/2
* - C++: https://www.youtube.com/watch?v=twodd1KFfGk
* - Understanding Compiler Optimization (C++): https://www.youtube.com/watch?v=FnGCDLhaxKU
how computers process a program:
- https://www.youtube.com/watch?v=42KTvGYQYnA
- https://www.youtube.com/watch?v=Mv2XQgpbTNE
- https://www.youtube.com/watch?v=h8T3PWauYF4
* - how computers process a program:
* - https://www.youtube.com/watch?v=42KTvGYQYnA
* - https://www.youtube.com/watch?v=Mv2XQgpbTNE
----------------------------------------------------------------
The Gauntlet:
Each day I take one subject from the list below, watch videos about that subject, and write an implementation in:
C
C++ - without using built-in types
C++ - using built-in types, like STL's std::list for a linked list
Python - without using built-in types
and write tests to ensure I'm doing it right
Why code in all of these?
Practice, practice, practice, until I'm sick of it, and can do it with no problem (some have many edge cases and bookkeeping details to remember)
Work within the raw constraints (without garbage collection (except Python))
Make use of built-in types so I have experience using the built-in tools for real-world use (not going to write my own linked list implementation in production)
----------------------------------------------------------------
linked lists
- https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays
- singly-linked
- https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists
* - Description: https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists
* - C Code (can jump to 6 minutes in): https://www.youtube.com/watch?v=KjtPAW5jyo8
- Java Code: https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/uwobd/core-java-code-for-a-linked-list
- doubly-linked
- https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists
- Description: https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists
- reverse a singly-linked list
- why you should avoid linked lists:
- https://www.youtube.com/watch?v=YQs6IC-vgmo
stacks
- see: https://class.coursera.org/algs4partI-010/lecture
- https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks
@ -62,6 +80,12 @@ queues
arrays
- https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays
- https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays
- Time
- O(1) to add/remove at end (amortized for allocations for more space), index, or update
- O(n) to insert/remove elsewhere
- Space
- contiguous in memory, so proximity helps performance
- space needed = size of object * number of items to store
Vectors
- Vector calculus ?
heaps