Complexity Analysis
A system that handles 1,000 requests per second at USD 10,000 per month in compute costs is Funda…
An algorithm is a finite sequence of well-defined instructions that takes an input and produces a…
Complexity Analysis
A system that handles 1,000 requests per second at USD 10,000 per month in compute costs is Funda…
Arrays Strings
An array is a contiguous block of memory where each element occupies a fixed number of bytes and …
Linked Lists Stacks Queues
A deque (double-ended queue) is a linear collection that supports insertion and removal at both E…
Trees Graphs
A binary search tree (BST) is a binary tree where every node satisfies the : for any Node with ke…
Sorting
Algorithms Sorting Algorithms notes covering key definitions, core concepts, worked examples, and…
Dynamic Programming
Recognising which DP pattern applies to a problem is the key skill. This section
Graph Algorithms
Algorithms Advanced Data Structures notes covering key definitions, core concepts, worked example…
This resource is created not based on any curriculum, but a amalgamation of what
Career
General Systems Engineering Career notes covering key definitions, core concepts, worked examples…
Dev Environment
Modern terminal emulators use the GPU for rendering, enabling smooth scrolling and proper Unicode…
Examples
This program is a training system designed for casuals, it is expected to be executed three times…
Open Source
General Open Source Contribution notes covering key definitions, core concepts, worked examples, …
Productivity
The Pomodoro Technique breaks work into 25-minute focused intervals (pomodoros) separated by 5-mi…
Testing
Guide for integrating iframes in documentation.
Markdown Constructs
Use through . Do not skip levels (e.g., jumping from to ). The first heading In a page body shoul…
Git is a (DVCS) designed to track changes in source code During software development. Unlike cent…
Fundamentals
Understanding the three trees in Git terminology.
Branching And Merging
Branching is the mechanism that enables — multiple developers (or a single developer working on m…
Remotes And Workflows
for any other. In practice, one
Advanced Topics
Git reflog and reference logging.
Internals
The directory is the heart of a Git repository. It contains all metadata, object data, configurat…
Others
Intro
Git is a (DVCS) designed to track changes in source code During software development. Unlike cent…
Best Practices
git config —global user.name
Advanced Git Commands
Git Advanced Git Commands notes covering key definitions, core concepts, worked examples, and pra…
Every piece of software you write, compile, or deploy is subject to copyright law by default. Und…
1_fundamentals
Supervised learning is the field of training models to act as a mapping between a set of inputs t…
0_intro
Introduction to probabilistic machine learning concepts and methods.
Choosing the wrong algorithm based on input size: Big-O notation tells you how an algorithm scales, but constant factors matter for small inputs. A O(n^2) algorithm with small constants may outperform O(n log n) for small datasets. Always profile with realistic data sizes before optimising.
Ignoring version control discipline: Committing broken code, writing cryptic commit messages, or not branching for features creates a tangled history that is hard to debug. Use meaningful commit messages, feature branches, and pull requests for reviewable, bisectable history.
Not understanding licensing before using open-source code: Using GPL-licensed code in a proprietary project, or failing to include required attribution, creates legal liability. Always check the license of dependencies before incorporating them into your project.
Good software engineering is less about knowing every command and more about building a workflow that scales with complexity. Git lets you experiment without fear — branches are cheap, and the reflog means you can always recover. Understanding version control deeply means you stop fighting your tools and start using them to move faster. Licensing knowledge prevents legal trouble before it starts, and a solid dev environment means you spend less time fighting configuration and more time building.
The tools in this collection — Git, licensing, productivity systems, and probabilistic machine learning — all share a common theme: they help you manage complexity. Whether it is the complexity of a codebase across time (Git), the complexity of legal obligations (licensing), or the complexity of a ML pipeline (probabilistic ML), the principle is the same: structure your work so that each piece is understandable in isolation and composable with the rest.
Approach these notes by first understanding the fundamentals of each tool, then building up to advanced topics. The practice problems and flashcards are designed to reinforce the mental models you need — not just memorisation, but the kind of deep understanding that lets you troubleshoot novel situations.