A Personal History of Programming


Pre-College

In 2001 (I was 4), my family bought the first PC. Since then, I started to get familiar with computer basics and gradually grew interest in computers. After the first PC was broken in 2007, I assembled a new PC on my own with an Intel Pentium E2140. In 2008, I learned to program in Logo, an educational programming language known for its use of turtle graphics, as part of my primary school education. It appears to be my first exposure to programming, although I didn’t realize it at the time. I wasn’t seriously invovled in programming until 2010 when my mother sent me to participate in Olympiad in Informatics (OI) as she considered me to be talented in computer science. I was trained to program in Pascal and learned the basic data structures and algorithms. Same year, I learned to program in Visual Basic as part of my middle school education and I developed a greedy snake game for class presentation. I continued my OI training till the end of the first year of my high school. However, I was not quite successful in OI and the best award I earned was the second prize in Jiangsu province.

  • 2001 - [First exposure to computer]
  • 2007 - [Assembled a PC]
  • 2008 - Logo
  • 2010 - [Started OI training] Pascal, Visual Basic

College and Graduate School

When I entered college in 2015, I was determined to be a chemist. I barely coded during my freshman year, but I was introduced to Mathematica in my Physics class and was impressed by its capability of symbolic computation. I participated in iGEM (International Genetically Engineered Machine) competition during the summer of my freshman year, and used Pascal for genomic data processing. The competition turned out to be a complete failure and I transferred into Computer Science major after that (I have a blog post on this). Inspired by the historic success of AlphaGo over Lee Sedol, my interest in computer science was initially on machine learning. As I gain more experience in the field of computer science, my interest switched to computer systems and programming languages after my junior year.

  • 2015 - Mathematica
  • 2016 - [Transferred into Computer Science major] Python, C, Verilog
  • 2017 - Java, MIPS Assembly, C++, MATLAB
  • 2018 - Ada, Scheme, SML, Scala, SQL
  • 2019 - [Went to Master of Computer Science at UIUC] Go, LLVM
  • 2020 - OCaml