I am currently an undergraduate studying computer science and applied mathematics at the National University of Singapore (NUS). This is a double degree programme, which will allow me to graduate 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 should graduate in November 2021.
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.
- Algorithmic problem solving
- High-performance software development
- Lock-free and wait-free parallel programming
- C++ programming language
- Rust programming language
- (and there might be more …)
May – July 2020
This was a ten-week internship at the Singapore office. I built a low-latency order gateway to enable Jump to trade on a new exchange. I also worked on improving various tools for testing and analysing past data, including using C++20 coroutines to bring usability improvements to some of these tools. The internship culminated with a presentation on C++20 coroutines to the core development team in Jump's Asian offices.
June – August 2019
This internship comprised a four-week training programme at the Chicago headquarters, and then six weeks of work at the Singapore office. I worked on the portion of the trading platform that receives market data, which is used by trading teams to efficiently receive and parse data from exchanges. My work improved the compilation time and execution performance of the trading platform.
Personal Software Projects:
January 2020 – Present
Technologies: Rust, WebAssembly, TypeScript
August 2018 – Present
Native File Dialog Extended (NFDe) is an abstraction over the platform-specific file and directory pickers on Windows, Mac, and Linux. It is based on Native File Dialog
, and adds additional features such as friendly filter names and a C++ wrapper. NFDe was originally designed for use with Circuit Sandbox, but I still maintain it and it is now depended on by other third-party projects.
Technologies: C, C++, Objective-C
August 2019 – Present
Fluminurs is a CLI tool and library to download files, announcements, videos, and other resources from LumiNUS, NUS's online learning management system, using a reverse-engineered API. I was a casual contributor in 2019 and 2020, but joined the development team in 2021 and took a more active role in developing new features.
May – August 2018
Circuit Sandbox is a digital sandbox game where users can create arbitrarily complex circuits out of simple components. To support large and complex simulations efficiently, Circuit Sandbox uses many careful optimisation techniques, such as lock-free multi-threading and C++ template metaprogramming. Circuit Sandbox is a collaboration with Kuan Wei Heng
, for our Independent Software Development Project (Orbital)
module at NUS.
Technologies: C++17, Boost, SDL2
Jelly is a browser-based compiler for Brainfuck
Check out my GitHub account for my other software projects.
January – March 2017
January – March 2018
January – July 2020
January – March 2021
The National Olympiad in Informatics
is the main algorithmic problem solving competition for secondary school and junior college students in Singapore, modelled after the International Olympiad in Informatics. Each year, around 200 students take part in the contest. The scientific committee prepares and ensures quality control the tasks in the competition. In 2017, I reviewed and tested the competition tasks. In 2018, I designed and prepared some tasks which were eventually used in the competition. In 2020 and 2021, I was in charge of the scientific committee, and led the team in task selection and preparation, to ensure the quality and fairness of the competition tasks.
- ??? at ACM-ICPC World Finals 2020 (postponed to 2021)
- 1st at ACM-ICPC Asia Kuala Lumpur On-Site Regional Contest 2019
- 4th at ACM-ICPC Asia Bangkok On-Site Regional Contest 2019
- 62nd at ACM-ICPC World Finals 2019
- 7th at ACM-ICPC Asia Singapore On-Site Regional Contest 2018
- 1st at ACM-ICPC Asia Yangon On-Site Regional Contest 2018
- 5th at ACM-ICPC Asia Jakarta On-Site Regional Contest 2017
- 338th (round 3) in 2021
- 163th (round 3) in 2020
- 51st (round 3) in 2019
- 295th (round 3) in 2018
- 834th (round 2) in 2017
- 166th (round 3) in 2016
- 952nd (round 2) in 2015
- 155th in 2017
- 79th in 2016
- Bronze Medal in 2013
- Participation in 2012 :(
- Doing some problems, with the aim of creating the fastest solution for each problem I solve
- Silver Award (Open Category) in 2014
- Silver Award (Open Category) in 2013
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.
- AY 19/20 Honor List of Student Tutors
- AY 18/19 Honor List of Student Tutors
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.
AY 20/21 Sem 2 (January – April 2021)
Conducted tutorial sessions for 2 classes (34 students in total); graded one written assignment.
AY 20/21 Sem 1 (August – November 2020)
Conducted lab sessions for 3 classes (51 students in total); designed, implemented, and graded one of the assignments. Sessions were conducted online due to the pandemic.
AY 19/20 Sem 1 (August – November 2019)
Conducted lab sessions for 3 classes (61 students in total); designed, implemented, and graded one of the assignments.
AY 18/19 Sem 1 (August – November 2018)
Conducted lab sessions for 1 class (14 students) and tutorial sessions for 1 class (19 students); designed and implemented one of the assignments.
AY 17/18 Sem 2 (January – April 2018)
Conducted lab sessions for 1 class (36 students). Although a lab class in name, this was more like a tutorial class with weekly presentations and discussions that reinforced the content covered in the lectures. I worked with Lin Si Jie
and Lim Heng Guang to teach this class.
Note: NUS introduced a new module balloting system in AY 19/20 Sem 1, which significantly reduced students' incentive for providing feedback.
NUS Academic 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.
- AY 20/21 Sem 2 Dean's List for NUS School of Computing | Digital certificate
- AY 20/21 Sem 2 Dean's List for NUS Faculty of Science | Digital certificate
- Certificate of Distinction in the Programming Languages Focus Area of the Bachelor of Computing in Computer Science | Digital certificate
- Certificate of Distinction in the Algorithms & Theory Focus Area of the Bachelor of Computing in Computer Science | Digital certificate
- AY 19/20 Sem 1 Dean's List for NUS School of Computing
- AY 19/20 Sem 1 Dean's List for NUS Faculty of Science
- Recommendation Letter for CS4261
- AY 18/19 Sem 2 Dean's List for NUS School of Computing
- AY 18/19 Sem 1 Dean's List for NUS School of Computing
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
- CS2100 Computer Organisation | Review | Cheatsheet
- CS2105 Introduction to Computer Networks | Review | Cheatsheet
- CS3233 Competitive Programming
- CS3233R Competitive Programming (R)
- ES2660 Communicating in the Information Age | Review
- GER1000 Quantitative Reasoning | Review
- IS1103 IS Innovations in Organisations and Society | Review
- MA2104 Multivariable Calculus | Review | Cheatsheet
AY 17/18 Summer Break
AY 18/19 Sem 1
AY 18/19 Sem 2
- CP3108B Independent Work (self-directed training for ICPC World Finals)
- CS3203 Software Engineering Project | Review
- CS4231 Parallel and Distributed Algorithms | Review | Cheatsheet
- MA2108S Mathematical Analysis I (S) | Review
AY 18/19 Summer Break
- CP3200 Internship (summer internship at Jump Trading)
AY 19/20 Sem 1
AY 19/20 Sem 2
AY 20/21 Sem 1
AY 20/21 Sem 2
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.
Personal Non-Software Projects: