Headshot placeholder

Julien Chagnon

3rd Year Computer Engineering Student

at Queen's University

See Resume PDF icon Follow me on LinkedIn LinkedIn logo

Hello! I’m Julien Chagnon, a bilingual (French/English) computer engineering student at Queen’s University in my 3rd year.

About Me

Through my coursework, labs, and independent projects, I have built strong programming experience across C/C++, Python, Java, JavaScript, Assembly (Nios II), with proficiency in both Windows and Linux development environments. I frequently work with libraries and tools such as Scikit-learn, Pandas, and Matplotlib for machine learning, data analysis, and visualization.

My interests also extend into hardware systems and embedded design. I have applied VHDL, LTspice, and Arduino-based prototyping in hands-on labs and team design projects, as well as CAD modeling using SolidWorks. I also have experience in data management using SQL and spatial mapping using GeoJSON format.

In recognition of my academic performance, I was awarded the Dean’s Scholar Distinction at Queen’s University for both the 2024–2025 and 2025–2026 academic sessions, an honour given to top-performing students in the Faculty of Engineering and Applied Science.

Me (Left) in my FREC attire
Hover or tap to read Pictured on the left

I'm involved in extracurricular activities at Queen’s, for instance I was a member of the First-Year Engineering Committee (FREC) where I helped organize events and initiatives for incoming engineering students as a means to get involved within the Queen's Engineering community. As part of the role, I wore the iconic FREC outfit and dyed my body purple.

Biking with my brother and dad
Hover or tap to read Pictured on the right

Outside of computer engineering, I’m passionate about outdoor sports like mountain biking, skiing, and kiteboarding, which are activities I enjoy regularly in and around my hometown of Ottawa with my family. The photo attached shows my dad, brother, and me at Mont Tremblant bike resort in Québec.

Projects

Hover to expand window size, click to keep open.


Road Learning Tool

React, JavaScript, SQL
Road Learning Tool map view (satellite basemap, white highlighted roads)

I developed an interactive Road Learning Tool using React and JavaScript, build using Vite. Its core is a custom MapView that instantiates MapLibre GL to render a satellite basemap overlaid with local vector tiles. The rendering logic manages three distinct layers: base roads, a dynamic highlight layer for user selection, and a symbol layer that renders road labels along geometry paths.

The frontend features a custom lookup index that normalizes user-entered road names and references into stable tokens to drive fuzzy matching for map additions. This drives the input search system, compiling user inputted road additions to the map into real-time MapLibre filters. Quiz Mode reuses this logic to create an interactive loop: isolating target roads, validating user guesses against the index, and instantly updating styling based on answer correctness.

Data is processed via a SQL pipeline that streams large GeoJSON inputs to extract road features. A specialized shell script wraps Tippecanoe to generate local vector tiles (.pbf). Specifically for the tiling process, I used an AI-assisted IDE to optimize Tippecanoe’s CLI configuration, refining normalization and feature-dropping behavior to preserve road detail while keeping tile sizes performant across zoom levels.

32-Bit RISC Processor Design

Verilog, FPGA

Designed and implemented a custom 32-bit RISC processor in Verilog, deployed on an Altera DE0-CV FPGA development board. The processor features a single-bus datapath architecture with sixteen general-purpose registers, an ALU supporting arithmetic, logical, shift, and rotation operations, as well as multiplication and division with dedicated HI/LO registers.

The processor was developed incrementally, starting with the core datapath and register transfer mechanisms, then adding the memory subsystem with RAM, MAR, and MDR for load and store instructions, followed by a control unit implemented as a finite state machine to automate instruction fetch, decode, and execution cycles. The final stage deployed the complete processor onto a Cyclone V FPGA with I/O interfacing through switches, LEDs, and seven-segment displays.

The control unit FSM supports a complete instruction set including arithmetic, immediate, memory access, conditional branching, jump-and-link, and I/O operations. The processor was verified through simulation and operates at 1 MHz on the FPGA hardware.

Running and Jumping Detection using Machine Learning

Python, scikit-learn

I developed a complete human activity recognition system that processes raw smartphone accelerometer data to distinguish between walking and jumping. Following a structured workflow encompassing data collection, hierarchical HDF5 storage, signal visualization, preprocessing, feature extraction and normalization, classifier training, and GUI deployment, we leveraged Python’s scientific stack (pandas, h5py, scipy, scikit-learn) to import CSV files from an accelerometer app, clean and smooth the time series with forward-fill and moving-average filters, extract a suite of 40 statistical features per 5-second window, train a logistic regression classifier to over 95% accuracy, and finally package the process into a Tkinter desktop application.

A function segments incoming CSV data into time-based windows and feeds them through the trained logistic-regression model and normalization scaler (loaded via joblib), allowing the classify_csv routine to generate real-time predictions on user data. On the GUI side, the user interface was built using Tkinter, with classification results visualized using matplotlib. Colour coded overlays indicate detected activity types alongside timestamped labels.

Autonomous Taxi Car – ELEC 392 Competition

Python, YOLOv5
1st in Competition
📄 Final Report

As part of a semester-long ELEC 392 design project, our three-person team designed and built an autonomous taxi car that competed against other teams in a simulated urban environment called Quackston. The car was tasked with picking up and dropping off fares around a 20ft x 16ft course while obeying intersections, stop lines, and crosswalks. Our vehicle placed first overall in the competition, also winning best in fare scoring (reputation) and best in safety (lowest violation count).

Built on a Sunfounder PiCar-X base with a Raspberry Pi 4B, the car used its three onboard greyscale sensors to identify the road tape, intersections, stop lines, and crosswalks. A PID line-following controller (Kp=17, Kd=1) consumed the normalized greyscale error to compute steering angles, achieving a line-following success rate above 95% during competition. Tank-turn pivots using opposing rear wheel directions handled intersection turns at roughly 80% reliability.

The car traversed a finite state machine built from a yEd GraphML map of the entire course, parsed at runtime with xml.etree.ElementTree. The GraphNavigator class advanced one node each time the greyscale sensors detected an intersection, and used breadth-first search to compute the shortest path between any two nodes. Per-edge flags embedded in the graph (PIVOT_MIN_SPIN, BRANCH_OVERSHOOT_TIME, INTERSECTION_HOLD, HUG, SPEED, etc.) allowed individual intersections to be tuned without code changes, which proved essential during the late-stage on-mat tuning week.

Pickup and dropoff locations had no tape markings, so the car interfaced with the course-wide Vehicle Positioning and Fare System (VPFS) over an HTTP/SocketIO REST API to receive fare assignments and poll its overhead-tracked position. A background thread polled the /whereami endpoint at 0.1s intervals to detect proximity to fare endpoints without blocking the main 50 Hz control loop, while a fare-scoring function ranked candidate fares by payout / (turns + 1) to favour high-paying, low-turn routes.

While not used in the final competition implementation, I also trained a custom YOLOv5 vision model on six traffic-sign categories (Stop, Yield, No-Entry, Duck, Left-Oneway, Right-Oneway) using a self-collected dataset annotated in Roboflow. The model was quantized to INT8 and compiled for the Google Coral Edge TPU USB accelerator, running inference live on the Pi camera feed. It was ultimately disabled for competition because deterministic greyscale sensing proved more reliable than camera-based detection under variable lighting, a tradeoff that directly contributed to our top safety and overall scores.

Dynamic Time Allocating Calendar

C++, Qt
Qt calendar displaying classes and study blocks

As part of a semester-long Agile software development project, our team designed and implemented a dynamic time allocating calendar that intelligently adapts a student’s weekly schedule in real time. Built in C++ using the Qt framework, the application imports academic timetables directly from Queen’s University’s SOLUS system via .ics files and integrates them with user-entered events. The different time blocks consist of classes parsed from the .ics file, fixed events, and tasks which prompt the user for an estimated effort in hours and dynamically allocate study sessions around the existing schedule. Unlike static scheduling tools, this system dynamically redistributes the study sessions as new deadlines are added or priorities change, using a weighted time-allocation algorithm to balance workload.

The project followed the Agile Scrum methodology, with development structured around two-week sprints. Our programming was also managed through GitLab, with each feature tracked through milestones, issues, and merge requests across team members.

911 Dispatcher Training Device

Arduino, HTML, CSS, JavaScript
📄 Final Report

As part of a client-based design project, our team partnered with the Toronto Police Service to modernize the Perfex training device, a 911 dispatcher testing platform built around manual time checks and paper-based modules that is becoming outdated. We translated all five original test stations (short-story recall, reading aloud, copying critical information, simulated telephone dispatch, and map indexing) into a cohesive web interface seamlessly integrated with an Arduino taskbox housed in a portable briefcase with the goal of increasing test accuracy and repeatability.

Specifically, my roles included translating the physical layout of the original Perfex device into the physical Arduino taskbox, mapping push-buttons, sliders, and rotary encoders to mirror the look and feel of the legacy device's five stations. I co-developed the embedded Arduino code that generated physical stimuli tests through user prompts, timestamping every user action and allowing me to implement a real-time scoring system.

On the web side, I also aided our team to develop an HTML, CSS, and JavaScript web interface that replaced all paper testing modules with a modern interactive experience. Audio prompts are streamed using the Web Audio API, and spoken responses are recorded in-browser using MediaRecorder. For interactive modules like map indexing and transcription, the website validates answers in real time against expected inputs and calculates both accuracy and reaction times. Once all modules are complete, results are sent to a Node.js server which stores the data and generates a downloadable PDF report.

Fluid and Powder Dispensing Device

Arduino
📄 Final Report

As part of a semester-long engineering design project in first year, I worked on the development of an Automated Fluid Dispenser designed for precise, autonomous mixing of pharmaceutical solutions within strict space, material, and safety constraints. The team prepared and submitted interim reports at key milestones.

My contributions to the project focused heavily on both the system design and the software development. I wrote the complete Arduino C++ codebase, which included coordinating three subsystems: a servo-powered powder dispensing mechanism, a motor rotating turntable, and a peristaltic pump liquid delivery system. The code used arrays to store and iterate over preset dosing instructions for five test tubes dispensing increments between 1 g and 2 g of powder per tube (± 0.2 g) and delivering 20 mL of liquid per tube, controlled with start and emergency stop buttons. I implemented precision timing and motion control logic to ensure accurate dosing, along with real-time interrupt checks for safety overrides.

SolidWorks assembly for the device

Beyond programming, I contributed to designing a full SolidWorks sketch of the final assembly for 3D printed components, ensuring the gearbox, limit switch system, and test tube platform met both functional and dimensional requirements. As well as authored sections of our extensive design reports.

Work History

  • Ericsson Logo

    Radio Software Developer Intern, Ericsson

    As a Radio Software Developer Intern, I develop and execute manual and automated test strategies using Python to verify 5G/LTE Radio software functionality. I configure lab environments and operate analysis tools including Signal Analyzers, Oscilloscopes, IXIA, and VIAVI UE Simulators to support product verification. I collaborate with design and product support teams to align testing priorities and integrate new features, and document test results while tracking software, hardware, and procedural issues to support fault identification and resolution.

  • Ottawa City Logo

    Traffic Services Intern, City of Ottawa

    As a Traffic Services Intern, I applied data analysis techniques to interpret pedestrian and vehicle survey data to enhance roadway safety across Ottawa. I used GIS tools to map and analyze traffic patterns for investigations and implemented automated form collection workflows using Microsoft Power Automate to streamline data processes.

  • City of Ottawa Logo

    Graffiti Management Assistant, City of Ottawa

    In this role, I managed a city-wide graffiti database, tracking service requests and task completion for cleanup operations. I actively participated in graffiti removal using specialized equipment such as pressure washers and heaters, while adhering to strict safety protocols for handling corrosive chemicals and maintaining gear.

  • Mountain Bike Kids Logo

    Camp Counsellor, Mountain Bike Kids

    I supervised and engaged with campers aged 8 to 14, leading mountain biking outings and day trips while ensuring safety and enjoyment. I also maintained communication with parents to address camper needs and resolve concerns, fostering a positive and inclusive camp environment.

  • Pedalheads Logo

    Trail Instructor, PedalHeads

    I managed groups of campers aged 4 to 8 in trail riding programs, ensuring safety and engagement throughout each session. I designed and delivered age-appropriate activities to support bicycle skill development, helping young riders build confidence and coordination in a fun and supportive environment.

Education

Bachelor of Applied Science in Computer Engineering, Queen’s University in Kingston (2023–2027)

  • Granted distinction of Dean’s Scholar (2024–2025 and 2025–2026 Academic Years) – Stephen J.R. Smith Faculty of Engineering and Applied Science; awarded for outstanding performance.
  • Cumulative GPA: 3.57

Certifications

Ontario G Class Driver’s License Clean Record

Standard First Aid/CPR-C and AED Certification Valid through 2026 | Obtained 2024

AODA Accessibility Training Completed 2025