I currently work at Hudson River Trading in the core development team in Singapore, mostly using modern C++.
I completed my undergraduate studies in computer science and applied mathematics at the National University of Singapore (NUS) in January 2022. This was a double degree programme, and I graduated with a Bachelor of Computing (BComp) in Computer Science, as well as a Bachelor of Science (BSc) in Applied Mathematics. I am a recipient of the NUS Merit Scholarship.
I have participated in many algorithmic programming competitions, such as the ACM-ICPC World Finals, the International Olympiad in Informatics (IOI), and the Google Code Jam. When opportunities arise, I continue to participate in such competitions.
I also tinker with technologies and write some code during my free time. See below for some of my personal projects.
Interests:
Blog Posts:
Work Experience:
This was an eleven-week summer internship with the core development team at HRT's Singapore office, and I worked mostly using modern C++.
I extended their common market data framework with the ability for dual-process market data feeds to perform a rollover of the order book. Order and trade data needed to be obtained from the two processes and coordinated to perform the rollover. I then implemented this feature for around ten markets that required rollover functionality, enabling those market data feeds to run in the lower-latency dual-process mode.
I also worked on an internal tool that intelligently explains HRT- and trading-specific terms, incorporating domains such as symbols, log files, hosts, and a glossary. This involved calling into various code in the core trading libraries, as well as implementing new functionality in the trading libraries to get the information I required. I built a CLI as well as a web frontend for this tool, allowing HRT employees to easily look up any term.
I also completed two other smaller projects: I rewrote a C++ compile-time interface detection library to support inherited interfaces using decltype/declval-style detection, which required reading through and fixing a number of complex libraries that depended on the old interface detection library in esoteric ways. The other project was to write a tool to playback UDP and TCP packets that were previously captured from an exchange, in order to simulate the exchange for testing market data feeds. This required ensuring correct packet ordering across multi-connection feeds, and in particular those that required the coordination of simultaneous UDP and TCP connections.
Personal Software Projects:
Check out my GitHub account for my other software projects.
Competitive Programming (other than being a contestant):
Competitive Programming:
Olympiad Mathematics:
NUS Degree Certificates/Transcripts and Academic Awards:
I have graduated from my undergraduate studies at NUS, and have attained an Honours (Highest Distinction) for both computer science and applied mathematics. The "Honours (Highest Distinction)" degree classification is awarded to students with a CAP of 4.50 and above (out of 5.00) — a criteria that I far surpass.
I was the valedictorian in my graduating cohort for the Bachelor of Computing. Read my blog post about my experience or watch the YouTube video.
In recognition of being the top student in both computer science and mathematics, I have been awarded these awards:
The Dean's List is awarded to students in the top 5% of their cohort each semester. Students are only eligible for the Dean's List after their freshmen year, and they must take at least two modules from their host faculty in that semester. As a student enrolled in a double degree programme, I am eligible for either faculty's Dean's List only when I take at least two modules offered by that faculty in the same semester.
Module coordinators may occasionally award recommendation letters to students for outstanding performance in their modules.
BComp (CS) Focus Area Certificates are awarded to students with outstanding performance in the modules satisfying that focus area.
NUS Teaching Awards:
The Honor List of Student Tutors is awarded by NUS School of Computing each academic year to recognise excellence in teaching among its student tutors. The exact criteria for this award is not known, but it is believed to be derived from the student feedback collected at the end of each semester.
NUS Modules Taught:
NUS School of Computing provides opportunities for undergraduate students to be teaching assistants, usually by conducting tutorial and lab classes. Undergraduate teaching assistants are chosen by the module coordinator, and usually have done well when they took the module as students.
Note: NUS introduced a new module balloting system in AY 19/20 Sem 1, which significantly reduced students' incentive for providing feedback.
NUS Modules Taken:
Here is an exhaustive list of modules that I have taken in NUS. Where available, you may use my cheatsheets for your studies (but I cannot guarantee the correctness or completeness of any information on them). If you want the LaTeX source, you have to ask for it.
I also maintain a page on general module planning advice here.
AY 13/14 Sem 2 (A-levels H3 programme)
AY 17/18 Sem 1
AY 17/18 Sem 2
AY 17/18 Summer Break
AY 18/19 Sem 1
AY 18/19 Sem 2
AY 18/19 Summer Break
AY 19/20 Sem 1
AY 19/20 Sem 2
AY 20/21 Sem 1
AY 20/21 Sem 2
AY 21/22 Sem 1
About DMC1401CS Design Your Own Module (DYOM): Students may propose their own module (called a DYOM), which counts as a 4MC CS/CU unrestricted elective. There is generally no restriction on the kind of topic allowed, as long as they can find a supervisor (an NUS professor) and a sufficient number of interested students. At the point of writing, a minimum of ten students is required (though this may be negotiable), and each student may take up to two DYOMs in total. For information about starting and running a DYOM in general, see this page. For SoC-specific guidance, see this page (maintained by students). Some people in NUS Hackers might also be able to provide guidance.