Skip to content

Instantly share code, notes, and snippets.

Problem Set: Lists of Permutations

Problem Description

You are tasked with writing a function joinAll(lls) which takes in a list of lists of strings and returns every permutation of elements from those lists, joined together with underscores (_).

Requirements:

  1. The input is a list of lists of strings (e.g., [ ["a","b"], ["c"], ["d","e"] ]).
  2. Each output string should be formed by picking exactly one element from each list in order, then joining them with underscores.

🛡️ Network Security Learning Path (Zero → High-Paid Expert)

This roadmap combines structured curriculum (week-by-week) and milestone checkpoints so you can track progress whether you study part-time or full-time.


📚 Phase 0: Foundations (6–9 months | ~500 hrs)

Goal: Build computer, networking, and programming basics.

Building a Simple HTTP Server in Java: Problem Set

Introduction

This problem set guides you through building a basic HTTP server from scratch using Java's standard library, specifically the java.net.ServerSocket and java.net.Socket classes. The goal is to create a server that handles simple GET requests, parses incoming HTTP requests, and sends valid HTTP responses. We'll break it down into "tickets" – small, incremental tasks that build upon each other, simulating a real-world project workflow.

Prerequisites:

  • Basic Java knowledge (sockets, I/O streams, file handling, string manipulation).
  • No external libraries are allowed; use only Java's standard library (e.g., java.net, java.io, java.nio.file).
  • Test your server using tools like curl (e.g., curl http://localhost:8080/) or a web browser.

Building a Simple HTTP Server in JavaScript: Problem Set

Introduction

This problem set guides you through building a basic HTTP server from scratch using Node.js's http module. The goal is to create a server that handles simple GET requests, parses incoming HTTP requests, and sends valid HTTP responses. We'll break it down into "tickets" – small, incremental tasks that build upon each other, simulating a real-world project workflow.

Prerequisites:

  • Basic JavaScript knowledge (Node.js, objects, file system operations).
  • No external libraries are allowed; use Node.js's built-in modules (e.g., http, fs, url).
  • Test your server using tools like curl (e.g., curl http://localhost:8080/) or a web browser.

Building a Simple HTTP Server in Python: Problem Set

Introduction

This problem set guides you through building a basic HTTP server from scratch using Python's standard library (primarily the socket module). The goal is to create a server that can handle simple GET requests, parse incoming HTTP requests, and send valid HTTP responses. We'll break it down into "tickets" – small, incremental tasks that build upon each other, simulating a real-world project workflow.

Prerequisites:

  • Basic Python knowledge (sockets, strings, file I/O).
  • No external libraries are allowed; stick to Python's built-in modules.
  • Test your server using tools like curl (e.g., curl http://localhost:8080/) or a web browser.

AWS Deployment Guide

Assuming you have an AWS IAM console login with admin privileges (which gives you full access to create resources). We'll deploy your Next.js 14 app (with API routes as backend) using AWS Amplify for hosting the frontend and backend, and AWS RDS for a PostgreSQL database (replacing Supabase). AWS Amplify is beginner-friendly as it handles deployment, CI/CD, and scaling automatically.

Important Notes Before Starting:

  • This assumes your app is in a Git repository (e.g., GitHub). If not, push it to GitHub first.
  • We'll use the AWS Management Console (web interface) for all steps—no CLI needed.
  • Costs: AWS has a free tier, but RDS and Amplify may incur small charges (e.g., ~$0.025/hour for a basic RDS instance). Monitor via AWS Cost Explorer.
  • Security: Use environment variables for secrets (e.g., DB connection strings, API keys). Avoid hardcoding them.
  • Time Estimate: 1-2 hours for setup, plus deployment time.

Guide to Adding a New Database User in Atlas

This guide provides step-by-step instructions for creating a new database user in Atlas, including setting up authentication and assigning privileges.

Step 1: Access the Database Users Tab

  1. Navigate to the Database Access page in Atlas.
  2. Click the Database Users tab if it is not already displayed.

Step 2: Open the Add New Database User Dialog

  1. On the Database Users tab, click the Add New Database User button to open the dialog box.

Deep Dive into Recursion: Concepts, Algorithms, and Use Cases

This document provides an in-depth exploration of recursion, a programming technique where a function calls itself to solve smaller instances of a problem. We cover its concepts, mechanics, algorithms, visualization with Mermaid diagrams (using correct syntax), and implementation in JavaScript with examples. Additionally, we explore three practical use cases, compare recursion with iteration, and discuss optimization techniques like tail recursion and memoization.

Recursion Overview

Recursion involves a function solving a problem by breaking it into smaller subproblems of the same type, each solved by calling the function again. It relies on:

  • Base Case: A condition that stops recursion to prevent infinite calls.
  • Recursive Case: The part where the function calls itself with a modified input.

Deep Dive into Hash Tables: Concepts, Algorithms, and Use Cases

This document provides an in-depth exploration of the Hash Table data structure, covering its concepts, operations, algorithms, collision resolution techniques, and practical use cases. Each operation is explained, visualized with Mermaid diagrams (using correct syntax), and implemented in JavaScript with example usage. We also explore variations and three real-world use cases to demonstrate the hash table's utility.

Hash Tables Overview

A Hash Table (or hash map) is a data structure that maps keys to values using a hash function to compute an index into an array. It provides average-case O(1) time complexity for lookups, insertions, and deletions, making it ideal for fast data retrieval.

Properties

  • Operations:

Deep Dive into Queues: Concepts, Algorithms, and Use Cases

This document provides an in-depth exploration of the Queue data structure, covering its concepts, operations, algorithms, and practical use cases. Each operation is explained, visualized with Mermaid diagrams (using correct syntax), and implemented in JavaScript with example usage. Additionally, we explore variations like Circular Queues and Priority Queues, and three real-world use cases to demonstrate the queue's utility.

Queues Overview

A Queue is a linear data structure that follows the First-In-First-Out (FIFO) principle, where elements are added (enqueued) at the rear and removed (dequeued) from the front. Queues are fundamental for managing tasks in order of arrival, such as job scheduling or breadth-first search.

Properties

  • Operations: