Skip to content

Commit

Permalink
topics and intro to big o notation
Browse files Browse the repository at this point in the history
  • Loading branch information
GouthamShiv committed Jun 21, 2022
1 parent 54151e4 commit 51b38a4
Show file tree
Hide file tree
Showing 4 changed files with 222 additions and 0 deletions.
31 changes: 31 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,35 @@
# javascript-dsa

Data Structures and Algorithms with Javascript

This material is created by attending this [Udemy course](https://www.udemy.com/share/101X5s3@epD9k8IzwG2M-l0Xvkjkl86zC81vfrZFb0q-mBUX0Mf5bwg2Pqd59Gpz685PgzLT/)

## Topics

> 1. Big O Notation
> 2. Analyzing Performance of Arrays and Objects
> 3. Problem Solving Approach
> 4. Problem Solving Patterns
> 5. Recursion
> 6. Searching Algorithms
> 7. Sorting Algorithms
> 8. Data Structures
- Singly Linked Lists
- Doubly Linked Lists
- Stacks
- Queues
- Binary Search Trees
- Tree Traversal
- Binary Heaps
- Hash Tables
- Graphs
- Graph Traversal
- Dijkstra's Algorithm
59 changes: 59 additions & 0 deletions index.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## `Topics`\n",
"\n",
"> [1. Big O Notation](./material/01-big-o-notation/00-index.ipynb)\n",
"\n",
" - [Need for **Big O Notation**](./material/01-big-o-notation/01-big-o-notation.ipynb)\n",
" - [Describe what **Big O Notation** is](./material/01-big-o-notation/01-big-o-notation.ipynb)\n",
" - Simplify `Big O Expressions`\n",
" - Define `time complexity` and `space complexity`\n",
" - Evaluate the `time complexity` and `space complexity` of different algorithms using `Big O Notation`\n",
" - Touch upon `logarithm`\n",
" \n",
"> [2. Analyzing Performance of Arrays and Objects]()\n",
"\n",
"> [3. Problem Solving Approach]()\n",
"\n",
"> [4. Problem Solving Patterns]()\n",
"\n",
"> [5. Recursion]()\n",
"\n",
"> [6. Searching Algorithms]()\n",
"\n",
"> [7. Sorting Algorithms]()\n",
"\n",
"> [8. Data Structures]()\n",
"\n",
" - Singly Linked Lists\n",
" - Doubly Linked Lists\n",
" - Stacks\n",
" - Queues\n",
" - Binary Search Trees\n",
" - Tree Traversal\n",
" - Binary Heaps\n",
" - Hash Tables\n",
" - Graphs\n",
" - Graph Traversal\n",
" - Dijkstra's Algorithm\n"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "JavaScript (Node.js)",
"language": "javascript",
"name": "javascript"
},
"language_info": {
"name": "javascript"
},
"orig_nbformat": 4
},
"nbformat": 4,
"nbformat_minor": 2
}
43 changes: 43 additions & 0 deletions material/01-big-o-notation/00-index.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"[back](../../index.ipynb)\n",
"\n",
"---\n",
"## `Big O Notation`\n",
"\n",
" - [Need for **Big O Notation**](./01-big-o-notation.ipynb)\n",
" - [Describe what **Big O Notation** is](./01-big-o-notation.ipynb)\n",
" - [Simplify **Big O Expressions**]()\n",
" - [Define **time complexity** and **space complexity**]()\n",
" - [Evaluate the **time complexity** and **space complexity** of different algorithms using **Big O Notation**]()\n",
" - [Touch upon **logarithm**]()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"---\n",
"[next](./01-big-o-notation.ipynb)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "JavaScript (Node.js)",
"language": "javascript",
"name": "javascript"
},
"language_info": {
"name": "javascript"
},
"orig_nbformat": 4
},
"nbformat": 4,
"nbformat_minor": 2
}
89 changes: 89 additions & 0 deletions material/01-big-o-notation/01-big-o-notation.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"[back](./00-index.ipynb)\n",
"\n",
"---\n",
"## `Big O Notation`"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `What's the idea here?`"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"- Usually there could be more than one solution for any given problem and how do we know what's best?\n",
"- For example, consider a problem where we have two valid solutions, both different not just in terms of variable names but in terms of the approach, where one uses loops and the other recursion to accomplish the same task.\n",
"- How would we know which one is the best?\n",
"- That's what is `Big O` really about, a system / way of generalizing code and comparing them and it's performance with other piece of code."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `Scenario`"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"- Write a function that accepts a string input and returns a reversed copy\n",
"- There are a lot of ways in which this can be achieved, but how to categorize them as to which one is best, which one is good etc\n",
"- And instead of giving labels or color-code based on the performance, we can have numerical representation of the performance of the code and that is what `Big O` would provide."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `Who cares?`"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"- For smaller instance it might not be required to know the performance, but what if for an interview purpose / at work, we have a large set of data? and a particular algorithm might save one hour every time it runs, so performance would matter at that time.\n",
"- It's important to have a precise vocabulary to talk about how our code performs.\n",
"- It is also useful to discuss trade-offs between different approaches. Where one might great at handling large set of data and other one might be always consistent, but it might take more time upfront.\n",
"- Also, while debugging, it might help understand things that are slowing it down."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"---\n",
"[next]()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "JavaScript (Node.js)",
"language": "javascript",
"name": "javascript"
},
"language_info": {
"name": "javascript"
},
"orig_nbformat": 4
},
"nbformat": 4,
"nbformat_minor": 2
}

0 comments on commit 51b38a4

Please sign in to comment.