Muchang Bahng

Personal Notes: Software and Technology

The following are the topics I have studied (and will be planning to study) during my time in the Korean military until November 2022. As these notes are primarily for my personal use, I did not spend as much time writing them in a manner that is clear for all readers. But since it would be a waste not to share them, I uploaded them on this website. All of my personal notes are free to download, use, and distrbute under the Creative Commons "Attribution- NonCommercial-ShareAlike 4.0 International" license. Please contact me if you find any errors in my notes or have any further questions. I have used the LaTeX editing program Overleaf to create my notes; diagrams are often drawn using the tikz package or iPad Notes.

Classic Theory

  • Introduction: Computers, Internet Protocol, Networks, UDP/TCP, DNS/HTTPS, Binary Representation of Data
  • Information Theory: Shannon Entropy, Data Compression
  • Finite Computation: AON-CIRC Programs, Syntactic Sugar, NAND-CIRC Programs
  • Uniform Computation: Infinite Functions, Deterministic Finite Automata, Regular Expressions, Turing Machines, Turing Completeness, Cellular Automata, Lambda Calculus, Uncomputable Functions
  • Efficient Algorithms: Modeling Running Time, Time Hierarchy Theorem, Non-Uniform Computation, Polynomial Time Reductions, Traveling Salesman Problem, Graph Problems, 3SAT, NP Hard/Completeness
  • Randomized Computation: Probabilistic Computation, Monte Carlo Algorithms

Computer Systems

  • C Programming Language
  • Memory, CPUs
  • Assembly
  • Compilers, Linkers

Quantum_Computing [PHYS 627]

  • Quantum Mechanics: Bra-ket Notation, State Space, Unitary Evolution, General & Projective Measurements, POVM, Distinguishable Quantum States, Composite Systems as Tensor Product Spaces, Heisenberg Uncertainty Principle, Entanglement
  • Qubits & Quantum Circuits: Superposition, Born's Rule, Change of Computational Basis, Bloch Sphere, Global & Relative Phase, Logic Gates (Pauli matrices, Hadamard, CNOT, etc.), No-Cloning Theorem, Bell States, Teleportation
  • Quantum Algorithms: Reversible extensions of classical gates, Quantum Parallelism, Deutch-Jozsa Algorithm

Blockchain

  • Cryptography & Encoding: Symmetric, Asymmmetric Encryption, SHA256 Hash Function, Digital Signatures, Elliptic Curve Cryptography, Base58Check, WIF Format
  • Cryptocurrency Wallets: Bitcoin Keys, Addresses, WIF-Compression, Hierarchical Deterministic Wallets, (Hardened) (Extended) Child Key Derivation, HD Wallet Key Path
  • Transaction Chains: UTXO, Fees, Orphan Transaction Pool
  • Standard Transactions: Locking/Unlocking Scripts, Script Language, P2PKH, P2SH, P2PK, MultiSig, OP_RETURN Scripts
  • Bitcoin Network: Full Nodes, SPV nodes, Bootstrapping, UTXO pools, networking, three-way handshake
  • Blockchain: Block Header, Linking Blocks, Merkle Trees & Paths
  • Mining: Coinbase transaction, Proof-of-Work, Difficulty Targeting, Network Block Validation, Blockchain Forks, Hash Rate, Mining Pools, Consensus Attacks

Data Structures & Algorithms [CS201]

  • Java OOP: Classes, Inheritance, Public/Private Methods/Attributes
  • Performance: Runtime Complexity and Memory Allocation
  • Collections: Lists (ArrayLists, LinkedLists), Sets (HashSets, TreeSets), Maps (HashMaps, TreeMaps)
  • Algorithms: Iteration vs Recursion, Sorting (Selection Sort, MergeSort), Searching

Linux Operating System and Configuration

  • Introduction: Vim Configuration, Distributions, Package Managers, Display Servers, Windows Managers, Desktop Environments, File Tree, Shells, Terminal Emulators, Boot Configuration
  • Booting: Hardware, BIOS and UEFI, File Systems
  • Note Taking: LaTeX, VimTex
  • Networking: Topologies, IP, TCP, UDP, SSL, TLS, HTTP, SSH
  • Driver and Hardware Configuration
  • Development: Git, Python, Conda

Databases [CS316]

  • Relational Algebra:
  • Functional Dependencies:
  • Entity-Relation Diagrams:

Algorithms [CS330]

  • Fundamental Operations: Addition, Subtraction, Multiplication, Division, Bit vs Value Runtime
  • Graphs: DFS, BFS, Shortest Path, Bipartite Graphs, Graph Colorings, Minimum Spanning Trees

Simultaneous Localization and Mapping [CS394]

  • Hardware: Sensors (GPS, LiDAR), Cameras, IMUs, Lens, Wireless Connections, Sparse/Dense Maps
  • Image Processing: Feature Points, ORB Algorithm, Segmentation, Image Pyramids, Camera Parameterization, World/Camera Coordinates, Intrinsic/Extrinsic Matrix
  • Transformations: Lie Groups, Lie Algebras, SO(3), SE(3), Euler Angles, Quaternions, Exponential Map
  • Frontend: Visual Odometry, Keyframes, Mappoints, Epipolar Geometry, Triangulation, Essential/Fundamental Matrix, 8-Point Algorithm,
  • Backend: Filters, Extended Kalman Filter (EKF), Nonlinear Optimization, Graph Optimization, Bundle Adjustment, Sliding Window Filters, Pose Graphs, Sparse Optimization
  • Beyond: Loop Closing, EdgeSLAM, Multi-Agent Collaborative SLAM

Performance Testing ORB-SLAM3 in Virtual Emulators [CS394]

  • Research Independent Study done in Duke's I3^T Lab in Spring 2023.

Web Development

  • HTML: Tags, Attributes
  • CSS: Selectors, Importing CSS rules, Attributes
  • JavaScript: Changing HTML elements
  • Web APIs: REST API, HTTP Protocol, Requests
  • Webscraping & Parsing: Scrapy, BeautifulSoup, LXML
  • React:
  • Django:

Basics & Command Line

  • System Hardware: Non-Volatile Drives (Floppy Disk, HDD, SSD), Volatile Storage (RAM, CPU Caches)
  • Program Lifecycle Phases: High/Low-Level Languages, Source Code, Language Processor (Compiler, Assembler, Interpreter), Compile Time, Runtime, Executable
  • Shell Commands: Navigation, Files & Directory, Network & Connectivity Commands
  • Environment Variables: PATH variable
  • Git: Git Commands, Github
  • Python Environments: Base vs Virtual Environments, Venv, Conda, Pip

Python

  • Virtual Environments & FileSystem
  • Basics: Syntax, String Interpolation, Data Structures, Functions & Scope, Classes
  • Intermediate: References, Regular Expressions, API Calls, Datetime Package
  • Object Oriented Programming: Iterators/Generators, Built-in Types, Dunder Methods
  • Data Science: Numpy, Pandas, SciPy, TensorFlow, PyTorch
  • Parallel Programming: Parallelism, GPUs, Numba

Julia

  • Virtual Environments & FileSystem: REPL Commands
  • Basics: Syntax, Data Structures, Functions, Structs, Modules
  • Intermediate: Types, Parametric Types

JavaScript (HTML+CSS)

  • Basics: Syntax, Data Structures, Functions, Classes

Solidity (Ethereum)

  • Basics: Remix, Types, Functions (View/Pure), Visibility (External, Public, Internal, Private), Contracts, Error Handling (Require, Assert, Revert), Global Variables, Memory vs Storage, Structs, Arrays, Mappings, Loops, Conditionals, Datetime, Constructors, Inheritance, Modifiers (Owner Permissions), Fallback Functions
  • Contracts: Basic Funding/Withdrawing Contracts

C++ (Download)

  • C++ is probably the lowest-level language that I will cover here. People run C++ in a separate IDE like NetBeans, but I do it in VSCode. Unfortunately, it is quite difficult setting it up in VSCode, so refer to this and this in setting up.
  • Types, Conditionals, Arrays, Vectors, Loops, Strings, Math
  • Functions, Pointers, Exception Handling, Classes/Objects, Inheritance, Structs

SQL

Bash

  • Linux Environment: Ubuntu 22.04
  • Vim Text Editor: Command Line and Insert Modes
  • Bash Scripting:
  • OpenSSH: