Sitemap

A list of all the posts and pages found on the site. For you robots out there, there is an XML version available for digesting as well.

Pages

Posts

Demystifying Cache—From Bytes to Tags

8 minute read

Published:

Breaking down cache address bits is tricky. In this guide, we’ll step through in detail how to partition a 32-bit address and work through some problems to test your understanding :)

So What Is Carry Look Ahead

1 minute read

Published:

Someone asked me about carry lookahead during OH, and I felt that I didn’t explain it well enough. Here’s a better attempt:

FPGA Button UI

8 minute read

Published:

Embedded lab 1: code an FPGA to test the Collatz Conjecture over a range of numbers… with a user interface of buttons and switches

Columbia Fall 24 Recap

10 minute read

Published:

A few thoughts on the past semester. This is by no means a comprehensive review.

articles

README

1 minute read

Exam Cheat Sheets for ELEN 3801 Signals and Systems

Please obtain my permission before sharing this with others.

13 ELF

less than 1 minute read

4 Signals

5 minute read


Signals and System Calls

Sending Signals

#include <signal.h>
int kill(pid_t pid, int signo);
int raise(int signo);    // same as kill(), but yourself
  • Both return: 0 if OK, -1 on error
  • if pid < 0, the signal is sent to the process group with pgid == |pid|

6 Threads

17 minute read


Creating Threads

An execution inside a process (two functions in a process running at the same time), sharing the same address space (same heap, same static var, but can’t share stack space) ^4bba4d

  • When thread starts running, the OS assigns a new slab of space in the middle for stack.
    • Limit of stack space for each process
#include <pthread.h>
int pthread_create(pthread_t *thread, 
	                const pthread_attr_t *attr,
                    void *(*start_routine)(void *), 
                    void *arg); 
int pthread_join(pthread_t thread, void **retval);
  • thread: thread ID
  • attr: typically NULL, a fine-grain control of thread behavior
  • start_routine: input void *, return void *
  • arg: for start_routine(arg)
  • retval: stores the return value of start_routine() Returns 0 if OK, error number on failure

9 IO Blocking and Multiplexing

6 minute read


Nonblocking IO

Making slow (blocking forever) syscalls nonblocking

  • Call open() with O_NONBLOCK
  • Call fcntl() (file control) to turn on o_NONBLOCK file status flag on already opened fd
    • Will be recorded in the file table entry
  • Returns -1 and sets errno to EAGAIN if were to block

Gallery

less than 1 minute read

Authors: Ming Gong, Charlotte Chen

4321 SRAM

15 minute read

Authors: Ming Gong, Charlotte Chen

Digital SAT Math Test Bank

40 minute read

Digital SAT Math Advanced Hard-Focus Practice Set

Target Score Focus: 750–800
Design Elements: This problem set isolates the most complex, trick-prone structural patterns seen in recent Digital SAT Hard Modules. Problems focus on multi-step variable tracking, precise phrasing traps (“% shorter”, “displays as a constant”), coordinate radical constraints, and structural polynomial manipulations.

courses

AP

Welcome to AP!

Machine Learning

ODS Notes

I was too lazy to formally convert the Obsidian-MathJax workflow to Jekyll, so here are the pdfs, generated by Obsidian

  • Most notes are typed real-time during lectures. LMK for any typos.

projects

Cell Cycle

Biology video project covering the phases of cell division, featuring Keynote graphics and animations of DNA synthesis and cell division. video

Control Theory

A walkthrough of control theory and applications, including open loop control, PID, and computer simulation and tuning.

Omega Automata

Theory of infinite-word automata (ω-languages): Buchi, Muller, and Rabin acceptance conditions, and applications in modeling non-terminating systems.

Dog Cannot Catch

Outstanding award winner. A unified mathematical and computational framework to analyze why Fritz the dog misses catching objects.

Exponential and Logarithm

A rigorous dive into exponential and logarithm functions, revisiting exp and log with real analysis and extending \(x^r\) to all real \(r\)

Rogue Planets

Origin, detection, and simulation of rogue planets — unbound, planet-mass bodies drifting through the Galaxy.

HTTP Server and Client

HTTP server and client written in C from scratch, with a backend server loading a binary database and serving the frontend.

Blockchain

Fully functional peer-to-peer blockchain network in Python with proof-of-work, digital signatures, Merkle trees, and a GUI wallet.

ASP Zookeeper

(Subsets of) malloc, grep, chat server, gdb, ld, and a container manager

CircuitSim

An analog/digital circuit simulator on FPGA written in C and Verilog, featuring Modified Nodal Analysis and hardware-accelerated matrix inversion.

Two-Stage OTA

Two-stage operational transconductance amplifier with extensive DC/AC/step testing and PVT variation analysis.

64-Tap FIR Filter

Design and simulation of a 64-tap finite impulse response filter at 10 kS/s 16-bit fixed-point with MAC and full precision.

8-Bit Processor

A simple 8-bit processor core built and tested from scratch in Cadence Virtuoso.</span>

HardLock Chip

Detection of timing-based signal anomalies in autonomous and embedded systems

MyMake

Implementation of a subset of GNU make in C++ with Makefile parsing, recursive dependency graph resolution, and custom rule caching.

Freezer Scheduler and EZFS

Implementation of Linux utilities: in-kernel key-value store, custom round-robin scheduler, page walk, and a lightweight filesystem.

FFT Core

Design and VLSI implementation of a high-performance 1024-point Radix-2 DIF FFT core in TSMC 65nm CMOS with 400 MHz clock and 39.8 MS/s throughput.

publications

An Improved Machine Learning Model for Pure Component Property Estimation

2024

A new Gaussian Process-based modeling framework that predicts the physico-chemical properties of chemical species.

Recommended citation: Cao, X., Gong, M., Tula, A., Chen, X., Gani, R., & Venkatasubramanian, V. (2024). An improved machine learning model for pure component property estimation. Engineering, 39, 61–73. https://doi.org/10.1016/j.eng.2023.08.024
Download Paper

Loss Function Evaluation

2025

Accurate tracing of grain boundaries in microscopy images is vital in material science, yet current models need more data and a more accurate loss function. In this report, we present a twofold contribution to improving grain-tracing U-nets.

Download Paper

Interpreting Earth’s Inner Core Structure via Ultrasonic Scattering Experiments

2025

An experimental study of the scattering of ultrasonic compressional waves in an hcp Zn-Sn alloy, serving as an analog to the Fe alloy in Earth’s inner core to better understand the origin of inner core seismic attenuation.

Recommended citation: Ming Gong, Michael I. Bergman, An experimental ultrasonic method to determine a scattering quality factor, with application to earth's inner core, Physics of the Earth and Planetary Interiors, 2025, 107456, ISSN 0031-9201, https://doi.org/10.1016/j.pepi.2025.107456.
Download Paper | Download Slides

talks

teaching

Physics

Class Tutor, Bard College at Simon's Rock, 2023