| name | language-fundamentals-skill |
| description | Master programming languages from Python to Rust. Learn core concepts like variables, OOP, functional programming, algorithms, data structures, and competitive programming techniques. Use when exploring programming languages, learning CS fundamentals, or preparing for technical interviews. |
Language & Fundamentals Skill
Complete guide to programming languages and computer science fundamentals from absolute beginner to expert level.
Quick Start
Choose Your Learning Path
Beginner → Intermediate → Advanced → Expert
↓ ↓ ↓ ↓
Syntax Paradigms Patterns Optimization
Get Started in 5 Steps
-
Pick a Language:
- Start: Python, JavaScript, or Go
- Choose based on your goals
-
Learn Fundamentals:
- Variables and data types
- Control flow (if, loops, functions)
- Basic data structures
-
Understand OOP/FP:
- Choose paradigm (OOP preferred for beginners)
- Classes, inheritance, polymorphism
- Or: Functions, immutability, higher-order functions
-
Master Algorithms & DS:
- Arrays, linked lists, trees, graphs
- Sorting, searching, dynamic programming
-
Practice & Specialize:
- LeetCode or CodeWars (50+ problems)
- Build projects in your chosen language
Programming Languages Overview
Tier 1: Best for Beginners
Python
JavaScript
- Why: Runs everywhere (browser, Node.js, mobile)
- Use Cases: Web frontend, backend (Node), full-stack
- Roadmap: https://roadmap.sh/javascript
- Key Concepts:
const name = "Alice";
let count = 0;
const greet = (name) => `Hello, ${name}!`;
const user = { name: "Alice", age: 30 };
const numbers = [1, 2, 3, 4, 5];
async function fetchData() {
const data = await fetch('/api/data');
return data.json();
}
- Learning Time: 3-6 months to intermediate
- Job Market: 🟢 Excellent (web development dominant)
Tier 2: Popular & Powerful
Go (Golang)
- Why: Fast, simple, excellent for concurrency
- Use Cases: Cloud infrastructure, microservices, DevOps tools
- Roadmap: https://roadmap.sh/golang
- Key Concepts:
package main
import "fmt"
func greet(name string) string {
return fmt.Sprintf("Hello, %s!", name)
}
go func() {
fmt.Println("Running concurrently")
}()
type Reader interface {
Read(p []byte) (n int, err error)
}
- Learning Time: 4-8 months to intermediate
- Job Market: 🟢 Growing (DevOps, cloud, microservices)
Java
TypeScript
Rust
- Why: Memory safety, performance, no garbage collector
- Use Cases: System programs, embedded, performance-critical
- Roadmap: https://roadmap.sh/rust
- Key Concepts:
let s1 = String::from("hello");
let s2 = s1;
let s3 = &s1;
let s4 = &mut s1;
match value {
Some(x) => println!("Value: {}", x),
None => println!("No value"),
}
- Learning Time: 8-16 months to intermediate
- Job Market: 🟡 Growing (systems programming, Web3)
Tier 3: Specialized
C++
- Why: Maximum performance, used in games, systems
- Use Cases: Game engines, high-performance computing
- Roadmap: https://roadmap.sh/cpp
- Job Market: 🟢 Solid (games, systems, performance)
PHP
- Why: Web server scripting language (legacy but still common)
- Use Cases: Web development, server-side rendering
- Roadmap: https://roadmap.sh/php
- Job Market: 🟡 Declining (but still many jobs)
Kotlin
- Why: Modern JVM language, official Android language
- Use Cases: Android development, JVM applications
- Roadmap: https://roadmap.sh/kotlin
- Job Market: 🟡 Growing in Android ecosystem
Swift
- Why: Modern iOS/macOS language
- Use Cases: iOS, macOS, watchOS development
- Roadmap: https://roadmap.sh/swift
- Job Market: 🟢 Solid (iOS development)
Computer Science Fundamentals
Data Structures
Essential DS Cheat Sheet:
| Structure | Insert | Search | Delete | Use Case |
|---|
| Array | O(n) | O(n) | O(n) | Random access |
| Linked List | O(1) | O(n) | O(1) | Sequential access |
| Hash Table | O(1)* | O(1)* | O(1)* | Key-value storage |
| Binary Tree | O(log n)* | O(log n)* | O(log n)* | Hierarchical data |
| Graph | - | O(V+E) | - | Networks, relationships |
*Average case, depends on implementation
Essential Algorithms
1. Sorting Algorithms
Quick Sort: O(n log n) average, in-place, most common
Merge Sort: O(n log n) guaranteed, stable, parallel-friendly
Heap Sort: O(n log n), in-place
Bubble Sort: O(n²) - avoid, only for learning
2. Searching
Binary Search: O(log n) on sorted arrays
Linear Search: O(n) on unsorted
Hash Lookup: O(1) average
3. Dynamic Programming
Common patterns:
- Fibonacci (overlapping subproblems)
- Longest Common Subsequence (optimal substructure)
- Knapsack Problem (decision trees)
Big O Complexity Analysis
O(1) → Constant (best)
O(log n) → Logarithmic
O(n) → Linear
O(n log n)→ Linearithmic
O(n²) → Quadratic
O(n³) → Cubic
O(2ⁿ) → Exponential
O(n!) → Factorial (worst)
Space Complexity: Same analysis applies to memory usage
Programming Paradigms
Object-Oriented Programming (OOP)
The dominant paradigm. Four pillars:
1. Encapsulation - Hide internal state, expose interface
2. Inheritance - Reuse code through class hierarchies
3. Polymorphism - Same interface, different implementations
4. Abstraction - Deal with essential features only
Example in Python:
class Animal:
def __init__(self, name):
self.__name = name
def speak(self):
pass
class Dog(Animal):
def speak(self):
return f"{self.__name} says Woof!"
Functional Programming (FP)
Alternative paradigm gaining popularity.
Core concepts:
- Pure functions - No side effects
- Immutability - Don't modify data
- First-class functions - Functions as values
- Higher-order functions - Functions that operate on functions
Example in JavaScript:
const add = (a, b) => a + b;
const map = (fn, arr) => arr.map(fn);
const newList = [...oldList, newItem];
Interview Preparation
LeetCode Problem Categories
Target these in order of importance:
-
Arrays & Hashing (25% of interviews)
- Two Sum, Contains Duplicate
- Valid Anagram, Group Anagrams
-
Two Pointers (15%)
- Valid Palindrome
- Max Water Container
-
Sliding Window (15%)
- Best Time to Buy Stock
- Longest Substring Without Repeating
-
Stack (10%)
- Valid Parentheses
- Daily Temperatures
-
Binary Search (10%)
- Binary Search, Search in Rotated Array
-
Linked List (10%)
- Reverse Linked List
- Merge k Sorted Lists
-
Trees & Graphs (10%)
- Inorder/Preorder/Postorder Traversal
- Lowest Common Ancestor
-
Greedy & DP (5%)
Study Plan
Week 1-2: Arrays, Hashing, Two Pointers (Master basics)
Week 3-4: Strings, Sliding Window (Pattern recognition)
Week 5-6: Linked Lists, Stack (Data structure manipulation)
Week 7-8: Trees, Graphs (Traversals and patterns)
Week 9-10: Dynamic Programming (Complex problems)
Week 11-12: Mock interviews (Practice under pressure)
Competitive Programming
For algorithm competitions and contests:
Key Concepts
- Time limits: Usually 1-2 seconds
- Memory limits: Usually 256MB
- Input/Output optimization critical
- Mathematical insight often needed
Common Techniques
- Brute Force: Solve correctly first
- Optimization: Reduce time complexity
- Math: Number theory, combinatorics
- Graph Theory: DFS, BFS, shortest paths
- DP: Overlapping subproblems
Platforms
- Codeforces: Most popular, weekly contests
- AtCoder: High-quality, Japanese contests
- TopCoder: Longer format competitions
- HackerRank: Good for learning
Learning Resources
By Language
- Python: Real Python, Codecademy
- JavaScript: Eloquent JavaScript, freeCodeCamp
- Go: Official tour, Go by Example
- Rust: The Rust Book, Rust by Example
Algorithms & Data Structures
- Introduction to Algorithms (MIT)
- Data Structures Easy to Advanced Course
- LeetCode Solutions: Community explanations
Practice Platforms
- LeetCode: 3000+ problems, mock interviews
- CodeWars: Gamified learning
- HackerRank: Structured problem sets
- Project Euler: Math-heavy problems
Skill Progression Checklist
Source: https://roadmap.sh/python, https://roadmap.sh/javascript, https://roadmap.sh/java, and more