From 22b74937b580874c4b413bed219ca78c62cc1287 Mon Sep 17 00:00:00 2001 From: John Washam Date: Mon, 6 Jun 2016 10:11:16 -0700 Subject: [PATCH] Added gauntlet notes. --- plan.txt | 40 ++++++++++++++++++++++++++++++++-------- 1 file changed, 32 insertions(+), 8 deletions(-) diff --git a/plan.txt b/plan.txt index 1ca6f96..9c553f4 100644 --- a/plan.txt +++ b/plan.txt @@ -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