about
Hello! I am Caleb Greene, an incoming Computer Science Engineering student at the University of Michigan College of Engineering (Class of 2030), with a focus in cybersecurity, cryptography, and computational research.
In my recent independent research, I applied Claude Shannon’s information theory to quantify cognitive decision-making under time pressure to a dataset of 22,500 chess games. To support this, I developed a PGN database parser in Go to extract and organize data from a 29.9GB file containing 91,549,148 chess games, subsequently analyzing the cleaned dataset with Python.
In cybersecurity, I compete in regional and international Capture the Flag (CTF) competitions and develop open-source tools and technical write-ups. Additionally, I am a competitive programmer proficient in various languages, including Python, Java, Go, and C++. In my own time, I develop open-source software, including a tool to merge players’ user interfaces, which has received 300+ downloads and 2000+ video demo views, with positive community feedback.
Some of my notable placements include finishing 2nd in the 26th Annual Programming Contest at Commonwealth University - Bloomsburg; and ranking 7th out of ~97 college competitors at an ISC2 NJ Chapter Capture the Flag competition, where I served as my team's leading scorer.
Outside of technology and academics, I am a jazz drummer who has toured across six European countries and was selected for the All-District Jazz Band; a multi-sport athlete, playing both varsity basketball and varsity volleyball; and a chess player ranked in the 99th percentile worldwide online.
Please check out my exhibits page or contact page to learn more about my projects and competitions!
skills
Image showing captured ICMP Echo Requests from a Raspberry Pi to my local machine using the packet analyzer Wireshark. (local machine's firewall blocked ICMP Echo Replies)
Programming & Software Development
Cybersecurity
Tools & Platforms
exhibits
I conducted independent research quantifying the degradation of human decision-making under time pressure through chess. By combining Claude Shannon's Theory of Information with chess engine evaluations of 22,500 chess games, I was able to study how people of various skill levels perform under different amounts of time allocated.
Please click here to learn more!
ISC2 NJ Chapter: Capture the Flag for Novices 2025
A cybersecurity competition in which I competed as one of the few high school students, facing off against competitors from various colleges in New Jersey and the surrounding areas. My team solved all 57 challenges across all categories, with the categories being: OSINT, Forensics, Cryptography, Steganography, and Web Exploitation. My team placed 4th out of 27 teams, and I ranked 7th out of approximately 97 competitors, serving as my team’s top scorer.
Designed a lightweight GUI app to teach and explore RSA cryptography using Python, letting users calculate RSA keys and factor them using Pollard’s Rho integer factorization algorithm, displaying the factors along with the computation time and number of iterations.
Authored technical write-ups for the CMU Africa picoMini CTF competition, including challenge setups, custom Python scripts, and Linux commands, used across Web Exploitation, Binary Exploitation, Cryptography, and Forensics.
Check out my GitHub for my full project portfolio!
Quantifying the Degradation of Human Decision-Making Under Time Pressure Through the Self-Information of Chess
Read the full paper here!
Abstract
Though it is well established that time pressure has detrimental effects on human cognition, its relative effects across different levels of competency remain largely unquantified. To address this gap, we extend Claude Shannon's work in information theory to the game of chess. To quantify the quality of human decision-making in a chess game, we calculate the probability of all legal moves in a given position from engine evaluations using a softmax function. Then, we sum the Shannon information of each played move in a single game to obtain the game's total surprisal. By applying this framework to a large dataset of $22,500$ chess games from the lichess.org Open Database, our results show that time pressure does not affect individuals of different skill levels uniformly. Highly skilled players effectively utilize additional time to improve decision quality, decreasing surprisal, whereas less skilled players exhibit poor baseline decision quality, high surprisal, which does not improve with additional time. These findings highlight the importance of distinguishing between skill-based and time-based limiting factors in any cognitive performance-based context, such as timed test-taking.
Engineered an optimized PGN database extractor in Go to parse a 29.9GB database containing 91,549,148 chess games, sorting them into separate CSV files based on time control and skill group, while filtering games by ply (game length) and Elo difference.
Developed a Python program to calculate the surprisal of 22,500 chess games using a custom softmax function to create probability distributions of all legal chess moves in each position from Stockfish 17.1 (Linux x64, AVX2) chess engine evaluations, finally implementing Claude Shannon’s theory of information to quantify move surprisal in bits.
Mathematical Framework
$$p_i=\frac{e^{E_i/\Delta_0}}{\sum_{x\in L}e^{E_x/\Delta_0}}$$
A softmax function calculates the probability of a move from a set of all legal moves $L$ in a position, where $E_i$ is the evaluation $E$ of the played move, and $E_x$ is the evaluation $E$ of the move $x$ in the set $L$.
$$C = \sum_{i=1}^{n} -\log_2(p_i)$$
The total surprisal $C$ of a game can be expressed as the summation of the self-information of each move, where the upper limit $n$ represents the total number of plies in the game, such that:
$$\bar{C}_\text{per move} = \frac{1}{N} \sum_{i=1}^{N} \frac{C_i}{n_i}$$
To calculate the average surprisal $\bar{C}$ per move across all games in a given time control, let $N$ represent the total number of games, $C_i$ represent the total information of game $i$, and $n_i$ represent the total number of plies in game $i$. The average surprisal per move is then:
Greene, C. J. (2026). Quantifying the Degradation of Human Decision-Making Under Time Pressure Through the Self-Information of Chess. Zenodo. https://doi.org/10.5281/zenodo.18664813
Creative Commons Attribution 4.0 International License
Contact
Elements
Text
This is bold and this is strong. This is italic and this is emphasized.
This is superscript text and this is subscript text.
This is underlined and this is code: for (;;) { ... }. Finally, this is a link.
Heading Level 2
Heading Level 3
Heading Level 4
Heading Level 5
Heading Level 6
Blockquote
Fringilla nisl. Donec accumsan interdum nisi, quis tincidunt felis sagittis eget tempus euismod. Vestibulum ante ipsum primis in faucibus vestibulum. Blandit adipiscing eu felis iaculis volutpat ac adipiscing accumsan faucibus. Vestibulum ante ipsum primis in faucibus lorem ipsum dolor sit amet nullam adipiscing eu felis.
Preformatted
i = 0;
while (!deck.isInOrder()) {
print 'Iteration ' + i;
deck.shuffle();
i++;
}
print 'It took ' + i + ' iterations to sort the deck.';
Lists
Unordered
- Dolor pulvinar etiam.
- Sagittis adipiscing.
- Felis enim feugiat.
Alternate
- Dolor pulvinar etiam.
- Sagittis adipiscing.
- Felis enim feugiat.
Ordered
- Dolor pulvinar etiam.
- Etiam vel felis viverra.
- Felis enim feugiat.
- Dolor pulvinar etiam.
- Etiam vel felis lorem.
- Felis enim et feugiat.
Icons
Actions
Table
Default
| Name |
Description |
Price |
| Item One |
Ante turpis integer aliquet porttitor. |
29.99 |
| Item Two |
Vis ac commodo adipiscing arcu aliquet. |
19.99 |
| Item Three |
Morbi faucibus arcu accumsan lorem. |
29.99 |
| Item Four |
Vitae integer tempus condimentum. |
19.99 |
| Item Five |
Ante turpis integer aliquet porttitor. |
29.99 |
|
100.00 |
Alternate
| Name |
Description |
Price |
| Item One |
Ante turpis integer aliquet porttitor. |
29.99 |
| Item Two |
Vis ac commodo adipiscing arcu aliquet. |
19.99 |
| Item Three |
Morbi faucibus arcu accumsan lorem. |
29.99 |
| Item Four |
Vitae integer tempus condimentum. |
19.99 |
| Item Five |
Ante turpis integer aliquet porttitor. |
29.99 |
|
100.00 |