This is meant to shore up computer science fundamentals for the self taught programmer.
-
Bradfield School of Computer Science Practical Algorithms and Data Structures
-
Stephen Grider's Coding Interview Bootcamp on Udemy
-
Rithm School Computer Science Fundamentals with Javascript
-
Khan Academy Algorithms course
Courses and Reading
- Read "Analysis" section of Practical Algorithms and Data Structures
-
Review time complexity of anagram solutions
-
(todo) Complete "Introduction to Big O Notation" from Computer Science Fundamentals with Javascript
-
(todo) Complete "Asymptotic notation" section of Algorithms course
-
"Stack 'Em Up With Stacks" section of Udemy course (stack implementation)
-
Read "Stacks" section of Practical Algorithms and Data Structures
Abstract Data Type of a Stack:
- Stack() creates a new, empty stack
- push(item) adds the given item to the top of the stack and returns nothing
- pop() removes and returns the top item from the stack
- peek() returns the top item from the stack but doesn’t remove it (the stack isn’t modified)
- is_empty() returns a boolean representing whether the stack is empty
- size() returns the number of items on the stack as an integer
- Review balancedPairings and convertToBinary.
-
Read "Queues" section of Practical Algorithms and Data Structures
-
"The Queue" and "Underwater Queue Weaving" section of Udemy course (queue implementation)
Abstract Data Type of a Queue:
- Queue() creates a new queue that is empty. It needs no parameters and returns an empty queue.
- enqueue(item) adds a new item to the rear of the queue. It needs the item and returns nothing.
- dequeue() removes the front item from the queue. It needs no parameters and returns the item. The queue is modified.
- is_empty() tests to see whether the queue is empty. It needs no parameters and returns a boolean value.
- size() returns the number of items in the queue. It needs no parameters and returns an integer.
- Review hot potato
- Read "Deques" section of Practical Algorithms and Data Structures
New items can be added at either the front or the rear. Likewise, existing items can be removed from either end. In a sense, this hybrid linear structure provides all the capabilities of stacks and queues in a single data structure.
- Review palindrome checker
- Read "Lists" section of Practical Algorithms and Data Structures
When discussing the list abstract data type, we consider a list to be a collection of items where each item holds a relative position with respect to the others.
The members of a list are commonly refered to as nodes. When each node holds a reference to the next node in the list, we call this a singly linked list. When each node holds a reference to both the next and previous nodes in the list, we call this a doubly linked list.
Linked list traversal refers to the process of systematically visiting each node in a linked list.
-
"Linked List" section of Udemy course (linked list implementation)
-
Review midpoint from Udemy course
-
Bradfield CS: Searching
-
Rithm School: Searching, Sorting, Intermediate Sorting
- Bradfield CS: Trees
- Rithm School: Hash Map / Hash Table
- Rithm School: Dynamic Programming