Nicolas Ong
Edmonton, AB nicolasong.com Nicolas.J.Ong@gmail.com linkedin.com/in/NicolasOng github.com/NicolasOng download
Experience
Supervised by Professor Nathan Sturtevant.
-
Built an AlphaZero implementation from scratch in JAX/Flax, with parallelized self-play that sped up training by 2x on a compute cluster
-
Analyzing AlphaZero training dynamics on solved Chinese Checkers, using game-theoretic ground truth to diagnose training anomalies and evaluate model accuracy
CMPUT 272 – Formal Systems and Logic in Computing Science (Fall 2024); INT-D 161 – Artificial Intelligence Everywhere (Winter 2025, Fall 2025).
-
Self-taught formal logic and proof material each week to a sufficient level to present solutions and field student questions live for a class section of ~100 students
-
Marked quizzes, exams, and mini-essays; held office hours; and supported students through course forums and email
-
Authored weekly quiz and final exam questions through multiple rounds of instructor feedback, developing an eye for questions that test conceptual understanding over memorization, calibrated for a non-specialist audience
-
Built a Python script using the Canvas REST API to bulk-collect peer review scores that Canvas provided no native export for, navigating several interconnected API objects to reconstruct per-student data
-
Designed a Python + Google Sheets pipeline to automate peer review grading: the script pulled raw scores via API, the sheet computed weighted averages, flagged anomalies, and generated a CSV for bulk Canvas grade upload
The Natlang Lab works on NLP research.
-
Worked on an entity linking research project supervised by Professor Anoop Sarkar and his PhD student Hassan Shavarani
-
Read entity linking papers and reproduced their results using their public repositories and models
-
Conducted follow-up experiments on the reproduced entity linking methods
-
Wrote and published a paper (Unified Examination of Entity Linking in Absence of Candidate Sets) in the NAACL 2024 Conference
-
Delivered case management software to clients by coordinating with the product team, operations team, and the clients
-
Collaboration in agile development teams done using software such as JIRA, Teams, and GitHub
-
Built Redmane Canada's first live interface using the Azure ecosystem and REST APIs, saving the client thousands of hours per year of manual data transfer between our system and theirs
-
Used C#, .NET, and related libraries to implement client requirements for their software solution
-
Used Transact-SQL scripts and queries into the database to automate development work, investigate issues, and solve identified problems
-
Led design sessions with clients to determine their organizational needs and how we can solve them
-
Trained clients to use our software, ensuring a smooth transition for their organization to our solution
-
Performed maintenance on production systems through regular monitoring
-
Coordinated duties within a team in a fast-paced and quickly changing environment for long (sometimes 9+ hour) shifts
-
Handled rapidly growing dish piles while prioritizing tasks based on height of pile, line cooks' needs, and workplace maintenance
-
Hauled and organized flats
-
Assisted in setting up the lighting for the studio and the construction of the set
Education
Enrolled in the Master of Science (Thesis) in Computing Science program
-
Procedural Content Generation via ML: Studied generative methods for game content including Markov chains, CNNs, VAEs, GANs, diffusion models, and reinforcement learning-based generation
-
Reinforcement Learning: Studied MDPs, policy iteration, Monte Carlo methods, temporal-difference learning (SARSA, Q-learning), function approximation, and deep RL
-
Experimental Mobile Robotics: Studied differential drive kinematics, computer vision, sensor fusion, path planning, and localization using ROS and OpenCV
-
Neurosymbolic Programming: Studied program synthesis methods including top-down and bottom-up search, neural-guided search, stochastic methods, latent space learning, and transformer-based synthesis
Bachelor of Science (with Distinction), Major in Computing Science, 3.73 GPA
-
Awarded President's and Dean's Honour Roll and scholarships for excellence in grades
-
Created complex SQL queries, utilizing knowledge of relational algebra and calculus
-
Parallel Programming: Worked with multi-threaded applications, race conditions, critical sections, mutual exclusion locks, and semaphores
-
Learned programming paradigms - functional, concurrent, and distributed - with Haskell, Go, and Erlang
-
Used TensorFlow and MATLAB to build Convolutional Neural Networks and traditional edge+point detection systems
-
Wrote a Quantum Program Simulator to run any quantum program (sequence of gates) the user writes
-
Studied various NLP techniques, such as RNNs, LSTM, ELMo Embeddings, BERT, Word2vec, etc
-
Hand wrote machine learning algorithms such as entropy-minimizing random forests, k-modes clustering, and LOF anomaly detection
-
Learned CPU architecture, wrote in Assembly, and developed various OS components such as memory management
-
Studied internet protocols from each layer (eg: DNS, TCP, CSMA/CD, etc) and other networking topics such as Data Centers and VoIP
Projects
Learned about robotics and computer vision using the Duckiebot platform. This was for CMPUT 503 at the University of Alberta. I wrote a summary of my experience with the course.
-
Worked with ROS/rospy - nodes, topics, services, messages, and rosbags.
-
Performed localization using odometry with the robot's wheel encoders.
-
Collected the generated odometry data; used it to visualize the robot's path.
-
Used OpenCV for computer vision - color detection, apriltag detection, and lane detection.
-
Implemented PID controllers to perform lane following.
-
Bonus: Built a PyBullet Simulation to compare PID and MPC controllers balancing balls on a plate. Report.
Based on the "Ray Tracing in One Weekend" series. Video.
-
Developed in C++ using the graphics library Vulkan
-
Implemented Ray Tracing principles in a compute shader, which then renders the final image directly onto the swapchain's images
-
Utilized GPU-accelerated computation to calculate each pixel's data in parallel
A blockchain networking protocol based on Bitcoin's original whitepaper with networking, proof of work, longest chain, and mining functions. GitHub.
-
Learned about blockchains by developing a blockchain networking protocol based on Bitcoin's original whitepaper
-
Major features include networking capability, proof of work, longest chain, and mining functions
-
Utilized multiprocessing and concurrency to develop a simulated socket interface, allowing one machine to simulate multiple nodes over the internet
-
Used TCP sockets at the application layer to allow a single machine to act as a node for this program on the internet
-
Extracted relevant information from big data (OpenStreetMap dataset) using Spark and Hadoop on SFU's compute cluster
-
Feature engineering with Pandas and Numpy, training and optimization with scitkit-learn (Random Forest, Pipelines, and Grid Search), visualization with Plotly
-
Trained a model that can explain 35% of a hotel's score knowing only its location
The player controls a spaceship and eats asteroids to grow. Asteroids are eaten by slicing parts off. Video.
-
Written in Lua using the LOVE2D framework and Box2D for the physics engine
-
Created procedurally generated asteroids and asteroid fields using Perlin noise
-
Wrote a line-of-sight algorithm so the player can't see behind asteroids
A social media website organized according to the "tree" data structure. Live demo. Video.
-
Became a full-stack web developer - learned node.js/PostgreSQL for the server-side framework, and javascript/HTML/CSS for the client-side
-
Deployed with cloud services such as Amazon's AWS (S3 for image hosting; SES for confirmation emails), and Heroku (Platform for node.js app hosting; Postgres for database hosting)
-
Designed the database's structure for the website and created a Entity-Relationship Diagram to visualize it
App where users rank items and create tier lists. Features a Versus Mode where users sort items with comparisons. Google Play Store page. Screenshot.
-
Developed in the Android Studio environment and released to the Google Play Store
-
Designed the application using Java for the model and controller, XML for the view, and SQLite for the item database