<commit_before>##Resources (by type)

**Lecture**

Task | Type | Link | Notes
-----|------|------|------
Watch | Lecture | [Week 5](https://www.youtube.com/watch?v=RsIP1gRneOs)|
Watch | Lecture | [Week 5, continued](https://www.youtube.com/watch?v=3p_Scm7qSfU)

**Lecture Notes**

Task | Type | Link | Notes
-----|------|------|------
Read | Lecture Notes | [Week 5 / More On Pointers](http://cdn.cs50.net/2015/fall/lectures/5/m/notes5m/notes5m.html#more_on_pointers) | need to malloc or youll get a seg fault
Read | Lecture Notes | [Week 5 / CS50 Library](http://cdn.cs50.net/2015/fall/lectures/5/m/notes5m/notes5m.html#cs50_library) | under the hood GetString and GetInt. Make into a Follow-Along?
Read | Lecture Notes | [Week 5 / Memory and Valgrind](http://cdn.cs50.net/2015/fall/lectures/5/m/notes5m/notes5m.html#memory_and_valgrind) | example use of valgrind to find a leak and an invalid write
Read | Lecture Notes | [Week 5 / Linked Lists](http://cdn.cs50.net/2015/fall/lectures/5/m/notes5m/notes5m.html#linked_lists)
Read | Lecture Notes | [Week 5 / Stacks & Queues](http://cdn.cs50.net/2015/fall/lectures/5/m/notes5m/notes5m.html#stacks_queues)
Read | Lecture Notes | [Week 5, continued / Linked Lists, continued](http://cdn.cs50.net/2015/fall/lectures/5/w/notes5w/notes5w.html#linked_lists_continued) | recap on LLs pros and cons
Read | Lecture Notes | [Week 5, continued / Searching](http://cdn.cs50.net/2015/fall/lectures/5/w/notes5w/notes5w.html#searching) | impl of function that searches for a value in an LL
Read | Lecture Notes | [Week 5, continued / Stacks & Queues](http://cdn.cs50.net/2015/fall/lectures/5/w/notes5w/notes5w.html#stacks_queues) | 2 impls of a stack data structure. first built on array,has fixed capacity, second built on malloc with ability to realloc. Then 2 impls of a queue. We might want to give examples of when stacks and queues are useful.
Read | Lecture Notes | [Week 5, continued / Memory](http://cdn.cs50.net/2015/fall/lectures/5/w/notes5w/notes5w.html#memory) Stack and Heap, buffer overflow attack
Read | Lecture Notes | [Week 5, continued / More Data Structures](http://cdn.cs50.net/2015/fall/lectures/5/w/notes5w/notes5w.html#more_data_structures) | binary search tree
Read | Lecture Notes | [Week 5, continued / Compression](http://cdn.cs50.net/2015/fall/lectures/5/w/notes5w/notes5w.html#compression) | stripping redundancy from data storage. examples: images of flags, videos, huffman coding. Not sure where this fits in but is very cool.
Read | Lecture Notes | [Week 5, continued / Hash Tables](http://cdn.cs50.net/2015/fall/lectures/5/w/notes5w/notes5w.html#hash_tables) | 2 examples, first linear probing, then an array of linked-lists
Read | Lecture Notes | [Week 5, continued / Tries](http://cdn.cs50.net/2015/fall/lectures/5/w/notes5w/notes5w.html#tries) | relatively quick. note that this is how an actual paper dictionary sorts words


**Walkthroughs**

Task | Type | Link | Notes
-----|------|------|------
Watch | Walkthrough | [scanf-0](https://www.youtube.com/watch?v=l1sfaAyt6ac&list=PLhQjrBD2T381hO-XiBPrps4fzt4rVY3E8&index=1)
Watch | Walkthrough| [scanf-1](https://www.youtube.com/watch?v=4zS7RTnRuWY&index=2&list=PLhQjrBD2T381hO-XiBPrps4fzt4rVY3E8)
Watch | Walkthrough | [scanf-2](https://www.youtube.com/watch?v=TJK6l_SBLnk&list=PLhQjrBD2T381hO-XiBPrps4fzt4rVY3E8&index=3)



**Shorts**

Task | Type | Link | Notes
-----|------|------|------
Watch | Short | [CS50 Library](http://cs50.tv/2012/fall/shorts/cs50_library/cs50_library-720p.mp4)
Watch | Short | [Singly Linked Lists](http://cs50.tv/2012/fall/shorts/singly_linked_lists/singly_linked_lists-720p.mp4)
Watch | Short | [Valgrind](http://cs50.tv/2012/fall/shorts/valgrind/valgrind-720p.mp4)
Watch | Short | [Hash Tables](https://www.youtube.com/watch?v=h2d9b_nEzoA&index=1&list=PLhQjrBD2T3825srGzBvJGMWJX4PATLYaq)
Watch | Short | [Queues](https://www.youtube.com/watch?v=SLOrrO7DlYo&list=PLhQjrBD2T3825srGzBvJGMWJX4PATLYaq&index=2)
Watch | Short | [Trees](https://www.youtube.com/watch?v=mFptHjTT3l8&list=PLhQjrBD2T3825srGzBvJGMWJX4PATLYaq&index=3)
Watch | Short | [Trees](https://www.youtube.com/watch?v=NKr6gWcXkIM&list=PLhQjrBD2T3825srGzBvJGMWJX4PATLYaq&index=4)

**Doug**

Task | Type | Link | Notes
-----|------|------|------
Watch | Doug's Playlist | [File Pointers](https://www.youtube.com/watch?v=QOD2hHiHpn0&index=1&list=PLhQjrBD2T382ZqJSoJqAnX7dXVi5-YaRh) | move to Module 4?
Watch | Doug's Playlist | [Singly-Linked Lists](https://www.youtube.com/watch?v=ZoG2hOIoTnA&index=2&list=PLhQjrBD2T382ZqJSoJqAnX7dXVi5-YaRh) 
Watch | Doug's Playlist | [Doubly-Linked Lists](https://www.youtube.com/watch?v=HmAEzp1taIE&list=PLhQjrBD2T382ZqJSoJqAnX7dXVi5-YaRh&index=3)
Watch | Doug's Playlist | [Stacks](https://www.youtube.com/watch?v=9Tp8wHD66lw&list=PLhQjrBD2T383tuTZvvexny73B9-sl2aEj)
Watch | Doug's Playlist | [Queues](https://www.youtube.com/watch?v=10jRKWI9s1k&list=PLhQjrBD2T383tuTZvvexny73B9-sl2aEj&index=2)
Watch | Doug's Playlist | [Hash Tables](https://www.youtube.com/watch?v=tjtFkT97Xmc&index=3&list=PLhQjrBD2T383tuTZvvexny73B9-sl2aEj)
Watch | Doug's Plyalist | [Tries](https://www.youtube.com/watch?v=TRg9DQFu0kU&list=PLhQjrBD2T383tuTZvvexny73B9-sl2aEj&index=5)
Watch | Doug's Playlist | [Data Structures Summary](https://www.youtube.com/watch?v=YiwRCN_SMuA&list=PLhQjrBD2T383tuTZvvexny73B9-sl2aEj&index=4)
Watch | Doug's Playlist | []()


**Section**

Task | Type | Link | Notes
-----|------|------|------
Watch | Andi's Section | [Week 5](https://www.youtube.com/watch?v=bzitGDs5BXk)


**Study**

Task | Type | Link | Notes
-----|------|------|------
Study | CS50 Study | [pointers, malloc, linked lists, hash tables, tries, trees, stacks, queues](https://study.cs50.net/?toc=pointers,malloc,linked_lists,hashtables,tries,trees,stacks,queues)


### Confusing Stuff
* linked lists and all the other data strctures are all built out of structs and pointers, so as a prerequisite they should be comfortable with those concepts
* malloc vs arrays. Both are pointers to contiguous chunks of memory, so what's the difference?
  * arrays are fixed-size, whereas memory that was `malloc`ed can be `realloc`ed
  * malloc memory comes from the heap, arrays from the ___ (TODO idk)
  * does malloc require all its data to be of the same type? (TODO idk)
* Sometimes I need to free memory, but other times I dont. What gives?
  * you only need to free memory that came from the heap (was `malloc`ed)
  * but what if I didn't call malloc myself, e.g. GetString()? 
    * A better rule of thumb is: anything that's a pointer needs to be freed when youre done. 
* When do I need to malloc something? 
  * Whenever you need memory that will outlast the current function
* hash-tables involve nested data structures, e.g.
  * an array of linked-lists
  * a trie of arrays<commit_msg>group resources by topic<commit_after>### Resources (by topic)

##### More on Pointers, Memory

Task | Type | Link | Notes
-----|------|------|------
Read | Lecture Notes | [Week 5 / More On Pointers](http://cdn.cs50.net/2015/fall/lectures/5/m/notes5m/notes5m.html#more_on_pointers) | need to malloc or youll get a seg fault
Read | Lecture Notes | [Week 5 / CS50 Library](http://cdn.cs50.net/2015/fall/lectures/5/m/notes5m/notes5m.html#cs50_library) | under the hood GetString and GetInt. Make into a Follow-Along?
Read | Lecture Notes | [Week 5 / Memory and Valgrind](http://cdn.cs50.net/2015/fall/lectures/5/m/notes5m/notes5m.html#memory_and_valgrind) | example use of valgrind to find a leak and an invalid write
Read | Lecture Notes | [Week 5, continued / Memory](http://cdn.cs50.net/2015/fall/lectures/5/w/notes5w/notes5w.html#memory) Stack and Heap, buffer overflow attack
Watch | Walkthrough | [scanf-0](https://www.youtube.com/watch?v=l1sfaAyt6ac&list=PLhQjrBD2T381hO-XiBPrps4fzt4rVY3E8&index=1)
Watch | Walkthrough| [scanf-1](https://www.youtube.com/watch?v=4zS7RTnRuWY&index=2&list=PLhQjrBD2T381hO-XiBPrps4fzt4rVY3E8)
Watch | Walkthrough | [scanf-2](https://www.youtube.com/watch?v=TJK6l_SBLnk&list=PLhQjrBD2T381hO-XiBPrps4fzt4rVY3E8&index=3)
Watch | Short | [CS50 Library](http://cs50.tv/2012/fall/shorts/cs50_library/cs50_library-720p.mp4)
Watch | Short | [Valgrind](http://cs50.tv/2012/fall/shorts/valgrind/valgrind-720p.mp4)

##### Data Structures

Task | Type | Link | Notes
-----|------|------|------
Read | Lecture Notes | [Week 5 / Linked Lists](http://cdn.cs50.net/2015/fall/lectures/5/m/notes5m/notes5m.html#linked_lists)
Read | Lecture Notes | [Week 5 / Stacks & Queues](http://cdn.cs50.net/2015/fall/lectures/5/m/notes5m/notes5m.html#stacks_queues)
Read | Lecture Notes | [Week 5, continued / Linked Lists, continued](http://cdn.cs50.net/2015/fall/lectures/5/w/notes5w/notes5w.html#linked_lists_continued) | recap on LLs pros and cons
Watch | Short | [Singly Linked Lists](http://cs50.tv/2012/fall/shorts/singly_linked_lists/singly_linked_lists-720p.mp4)
Read | Lecture Notes | [Week 5, continued / Searching](http://cdn.cs50.net/2015/fall/lectures/5/w/notes5w/notes5w.html#searching) | impl of function that searches for a value in an LL
Read | Lecture Notes | [Week 5, continued / Stacks & Queues](http://cdn.cs50.net/2015/fall/lectures/5/w/notes5w/notes5w.html#stacks_queues) | 2 impls of a stack data structure. first built on array,has fixed capacity, second built on malloc with ability to realloc. Then 2 impls of a queue. We might want to give examples of when stacks and queues are useful.
Read | Lecture Notes | [Week 5, continued / Hash Tables](http://cdn.cs50.net/2015/fall/lectures/5/w/notes5w/notes5w.html#hash_tables) | 2 examples, first linear probing, then an array of linked-lists
Read | Lecture Notes | [Week 5, continued / Tries](http://cdn.cs50.net/2015/fall/lectures/5/w/notes5w/notes5w.html#tries) | relatively quick. note that this is how an actual paper dictionary sorts words
Watch | Short | [Hash Tables](https://www.youtube.com/watch?v=h2d9b_nEzoA&index=1&list=PLhQjrBD2T3825srGzBvJGMWJX4PATLYaq)
Watch | Short | [Queues](https://www.youtube.com/watch?v=SLOrrO7DlYo&list=PLhQjrBD2T3825srGzBvJGMWJX4PATLYaq&index=2)
Watch | Short | [Trees](https://www.youtube.com/watch?v=mFptHjTT3l8&list=PLhQjrBD2T3825srGzBvJGMWJX4PATLYaq&index=3)
Watch | Short | [Tries](https://www.youtube.com/watch?v=NKr6gWcXkIM&list=PLhQjrBD2T3825srGzBvJGMWJX4PATLYaq&index=4)
Watch | Doug's Playlist | [Singly-Linked Lists](https://www.youtube.com/watch?v=ZoG2hOIoTnA&index=2&list=PLhQjrBD2T382ZqJSoJqAnX7dXVi5-YaRh) 
Watch | Doug's Playlist | [Doubly-Linked Lists](https://www.youtube.com/watch?v=HmAEzp1taIE&list=PLhQjrBD2T382ZqJSoJqAnX7dXVi5-YaRh&index=3)
Watch | Doug's Playlist | [Stacks](https://www.youtube.com/watch?v=9Tp8wHD66lw&list=PLhQjrBD2T383tuTZvvexny73B9-sl2aEj)
Watch | Doug's Playlist | [Queues](https://www.youtube.com/watch?v=10jRKWI9s1k&list=PLhQjrBD2T383tuTZvvexny73B9-sl2aEj&index=2)
Watch | Doug's Playlist | [Hash Tables](https://www.youtube.com/watch?v=tjtFkT97Xmc&index=3&list=PLhQjrBD2T383tuTZvvexny73B9-sl2aEj)
Watch | Doug's Plyalist | [Tries](https://www.youtube.com/watch?v=TRg9DQFu0kU&list=PLhQjrBD2T383tuTZvvexny73B9-sl2aEj&index=5)
Watch | Doug's Playlist | [Data Structures Summary](https://www.youtube.com/watch?v=YiwRCN_SMuA&list=PLhQjrBD2T383tuTZvvexny73B9-sl2aEj&index=4)
Watch | Doug's Playlist | []()
Read | Lecture Notes | [Week 6 / Data Structures Recap](http://cdn.cs50.net/2015/fall/lectures/6/m/notes6m/notes6m.html#data_structures_recap)

##### TBD

Task | Type | Link | Notes
-----|------|------|------
Read | Lecture Notes | [Week 5, continued / Compression](http://cdn.cs50.net/2015/fall/lectures/5/w/notes5w/notes5w.html#compression) | stripping redundancy from data storage. examples: images of flags, videos, huffman coding. Not sure where this fits in but is very cool.
Watch | Andi's Section | [Week 5](https://www.youtube.com/watch?v=bzitGDs5BXk)
Study | CS50 Study | [pointers, malloc, linked lists, hash tables, tries, trees, stacks, queues](https://study.cs50.net/?toc=pointers,malloc,linked_lists,hashtables,tries,trees,stacks,queues) | malloc is good, do sooner rather than later



###Resources (by type)

**Lecture**

Task | Type | Link | Notes
-----|------|------|------
Watch | Lecture | [Week 5](https://www.youtube.com/watch?v=RsIP1gRneOs)|
Watch | Lecture | [Week 5, continued](https://www.youtube.com/watch?v=3p_Scm7qSfU)

**Lecture Notes**

Task | Type | Link | Notes
-----|------|------|------
Read | Lecture Notes | [Week 5 / More On Pointers](http://cdn.cs50.net/2015/fall/lectures/5/m/notes5m/notes5m.html#more_on_pointers) | need to malloc or youll get a seg fault
Read | Lecture Notes | [Week 5 / CS50 Library](http://cdn.cs50.net/2015/fall/lectures/5/m/notes5m/notes5m.html#cs50_library) | under the hood GetString and GetInt. Make into a Follow-Along?
Read | Lecture Notes | [Week 5 / Memory and Valgrind](http://cdn.cs50.net/2015/fall/lectures/5/m/notes5m/notes5m.html#memory_and_valgrind) | example use of valgrind to find a leak and an invalid write
Read | Lecture Notes | [Week 5 / Linked Lists](http://cdn.cs50.net/2015/fall/lectures/5/m/notes5m/notes5m.html#linked_lists)
Read | Lecture Notes | [Week 5 / Stacks & Queues](http://cdn.cs50.net/2015/fall/lectures/5/m/notes5m/notes5m.html#stacks_queues)
Read | Lecture Notes | [Week 5, continued / Linked Lists, continued](http://cdn.cs50.net/2015/fall/lectures/5/w/notes5w/notes5w.html#linked_lists_continued) | recap on LLs pros and cons
Read | Lecture Notes | [Week 5, continued / Searching](http://cdn.cs50.net/2015/fall/lectures/5/w/notes5w/notes5w.html#searching) | impl of function that searches for a value in an LL
Read | Lecture Notes | [Week 5, continued / Stacks & Queues](http://cdn.cs50.net/2015/fall/lectures/5/w/notes5w/notes5w.html#stacks_queues) | 2 impls of a stack data structure. first built on array,has fixed capacity, second built on malloc with ability to realloc. Then 2 impls of a queue. We might want to give examples of when stacks and queues are useful.
Read | Lecture Notes | [Week 5, continued / Memory](http://cdn.cs50.net/2015/fall/lectures/5/w/notes5w/notes5w.html#memory) Stack and Heap, buffer overflow attack
Read | Lecture Notes | [Week 5, continued / More Data Structures](http://cdn.cs50.net/2015/fall/lectures/5/w/notes5w/notes5w.html#more_data_structures) | binary search tree
Read | Lecture Notes | [Week 5, continued / Compression](http://cdn.cs50.net/2015/fall/lectures/5/w/notes5w/notes5w.html#compression) | stripping redundancy from data storage. examples: images of flags, videos, huffman coding. Not sure where this fits in but is very cool.
Read | Lecture Notes | [Week 5, continued / Hash Tables](http://cdn.cs50.net/2015/fall/lectures/5/w/notes5w/notes5w.html#hash_tables) | 2 examples, first linear probing, then an array of linked-lists
Read | Lecture Notes | [Week 5, continued / Tries](http://cdn.cs50.net/2015/fall/lectures/5/w/notes5w/notes5w.html#tries) | relatively quick. note that this is how an actual paper dictionary sorts words


**Walkthroughs**

Task | Type | Link | Notes
-----|------|------|------
Watch | Walkthrough | [scanf-0](https://www.youtube.com/watch?v=l1sfaAyt6ac&list=PLhQjrBD2T381hO-XiBPrps4fzt4rVY3E8&index=1)
Watch | Walkthrough| [scanf-1](https://www.youtube.com/watch?v=4zS7RTnRuWY&index=2&list=PLhQjrBD2T381hO-XiBPrps4fzt4rVY3E8)
Watch | Walkthrough | [scanf-2](https://www.youtube.com/watch?v=TJK6l_SBLnk&list=PLhQjrBD2T381hO-XiBPrps4fzt4rVY3E8&index=3)
source code? | |



**Shorts**

Task | Type | Link | Notes
-----|------|------|------
Watch | Short | [CS50 Library](http://cs50.tv/2012/fall/shorts/cs50_library/cs50_library-720p.mp4)
Watch | Short | [Singly Linked Lists](http://cs50.tv/2012/fall/shorts/singly_linked_lists/singly_linked_lists-720p.mp4)
Watch | Short | [Valgrind](http://cs50.tv/2012/fall/shorts/valgrind/valgrind-720p.mp4)
Watch | Short | [Hash Tables](https://www.youtube.com/watch?v=h2d9b_nEzoA&index=1&list=PLhQjrBD2T3825srGzBvJGMWJX4PATLYaq)
Watch | Short | [Queues](https://www.youtube.com/watch?v=SLOrrO7DlYo&list=PLhQjrBD2T3825srGzBvJGMWJX4PATLYaq&index=2)
Watch | Short | [Trees](https://www.youtube.com/watch?v=mFptHjTT3l8&list=PLhQjrBD2T3825srGzBvJGMWJX4PATLYaq&index=3)
Watch | Short | [Tries](https://www.youtube.com/watch?v=NKr6gWcXkIM&list=PLhQjrBD2T3825srGzBvJGMWJX4PATLYaq&index=4)

**Doug**

Task | Type | Link | Notes
-----|------|------|------
Watch | Doug's Playlist | [File Pointers](https://www.youtube.com/watch?v=QOD2hHiHpn0&index=1&list=PLhQjrBD2T382ZqJSoJqAnX7dXVi5-YaRh) | move to Module 4?
Watch | Doug's Playlist | [Singly-Linked Lists](https://www.youtube.com/watch?v=ZoG2hOIoTnA&index=2&list=PLhQjrBD2T382ZqJSoJqAnX7dXVi5-YaRh) 
Watch | Doug's Playlist | [Doubly-Linked Lists](https://www.youtube.com/watch?v=HmAEzp1taIE&list=PLhQjrBD2T382ZqJSoJqAnX7dXVi5-YaRh&index=3)
Watch | Doug's Playlist | [Stacks](https://www.youtube.com/watch?v=9Tp8wHD66lw&list=PLhQjrBD2T383tuTZvvexny73B9-sl2aEj)
Watch | Doug's Playlist | [Queues](https://www.youtube.com/watch?v=10jRKWI9s1k&list=PLhQjrBD2T383tuTZvvexny73B9-sl2aEj&index=2)
Watch | Doug's Playlist | [Hash Tables](https://www.youtube.com/watch?v=tjtFkT97Xmc&index=3&list=PLhQjrBD2T383tuTZvvexny73B9-sl2aEj)
Watch | Doug's Plyalist | [Tries](https://www.youtube.com/watch?v=TRg9DQFu0kU&list=PLhQjrBD2T383tuTZvvexny73B9-sl2aEj&index=5)
Watch | Doug's Playlist | [Data Structures Summary](https://www.youtube.com/watch?v=YiwRCN_SMuA&list=PLhQjrBD2T383tuTZvvexny73B9-sl2aEj&index=4)
Watch | Doug's Playlist | []()


**Section**

Task | Type | Link | Notes
-----|------|------|------
Watch | Andi's Section | [Week 5](https://www.youtube.com/watch?v=bzitGDs5BXk)


**Study**

Task | Type | Link | Notes
-----|------|------|------
Study | CS50 Study | [pointers, malloc, linked lists, hash tables, tries, trees, stacks, queues](https://study.cs50.net/?toc=pointers,malloc,linked_lists,hashtables,tries,trees,stacks,queues) | malloc is good, do sooner rather than later


### Confusing Stuff
* linked lists and all the other data strctures are all built out of structs and pointers, so as a prerequisite they should be comfortable with those concepts
* malloc vs arrays. Both are pointers to contiguous chunks of memory, so what's the difference?
  * arrays are fixed-size, whereas memory that was `malloc`ed can be `realloc`ed
  * malloc memory comes from the heap, arrays from the ___ (TODO idk)
  * does malloc require all its data to be of the same type? (TODO idk)
* Sometimes I need to free memory, but other times I dont. What gives?
  * you only need to free memory that came from the heap (was `malloc`ed)
  * but what if I didn't call malloc myself, e.g. GetString()? 
    * A better rule of thumb is: anything that's a pointer needs to be freed when youre done. 
* When do I need to malloc something? 
  * Whenever you need memory that will outlast the current function
* hash-tables involve nested data structures, e.g.
  * an array of linked-lists
  * a trie of arrays
{'fraction_non_alphanumeric': 0.15156637962914046, 'fraction_numerical': 0.05230070262560093, 'mean_word_length': 4.703525158180175, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 54, 'lorem ipsum': 0, 'www.': 51, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6073876', 'n_tokens_mistral': 7994, 'n_tokens_neox': 7194, 'n_words': 1468}