![example cover photo](/assets/images/intro-3.jpg)
Hi! I'm Will 😄!
A forth-year computer science student at
UBC, and
a dedicated and passion driven software engineer 👨💻!
Skills
Languages: Java JavaScript TypeScript Go Python C C++ Ruby Shell_Script
Tools: Git Terminal Vim SQL/NoSQL JetBrains_IDEs Jira_Server Markup_Languages
Concepts: OO_Design RESTful_Design OS Machine_Learning AI Database Language_Interpret
Work Experience
University of British Columbia
2018.01 - Present
Teaching Assistant for CPSC 310, CPSC 221, and CPSC 210
- Supervising students building up a full-stack web application project as a scrum master.
- Guiding students apply RESTful API design principles and advanced Object-Oriented design patterns to their design.
- Illustrating basic algorithms (like sorting, graphs) and Abstract Data Type with their common implementations.
- Teaching basic concepts and design patterns in Object-Oriented programming languages via Java.
- Helping students debugging their code and designing their minimum viable products.
NetApp
2018.09 - 2019.6
Software Engineer Intern in StorageGRID Team
- Extended new features and fixed bugs for StorageGRID, a Distributed Object Storage platform supports AWS S3 and Swift protocols.
- Implemented and refactored our open source S3 Compatible Storage performance measurement tool, s3tester.
- Setted up daily load testing infrastructure on Bamboo to monitor performance impacts.
- Updated and configured JIRA server to better support Agile development and code contribution inside team.
Research Experiences
Projects
SSC Master ![GitHub Repository](https://WillCZhang.github.io/assets/images/github.png)
Key words: Android | Full-Stack | MongoDB | Web Crawler | Parser | Algorithms | Multithreading
- Implemented an Android application using Java including both material UI design and backend system.
- Implemented a full-stack web version of it using Node.js and MongoDB as backend and jQuery frontend.
- Crawled and parsed courses data from more than 18000 websites on UBC Student Service Centre (SSC).
- Designed an algorithm storing all the data in local cache files and, using an index file, mapping them with the user inputs in the search bar, in such way, only required data were added to the application.
- Used multiple threads process in Android and asynchronous in Node.js to speed up the process.
2048 Game ![GitHub Repository](https://WillCZhang.github.io/assets/images/github.png)
Keywords: Java Swing | Algorithms | Data Abstraction
- Built a 2048 game from scratch and designed an algorithm to handle each move user made
- Designed data structures and algorithms to handle frontend events
Daily Planner ![GitHub Repository](https://WillCZhang.github.io/assets/images/github.png)
Keywords: React-Redux | Meteor | Full-Stack | Scalable Server | Database Design | Algorithms
- Designed an algorithm to estimate the commute time between two geolocations, achieved 95% accuracy.
- Implemented a scalable backend so that API calls were minimized and not affected by the number of requests.
- Implemented a web frontend with page routing using React, AntDesign, and Redux.
- Designed the core structure that connects users and their preferences into an analyzable way for applying machine learning models in the future.
Credit Card Late Payment Prediction
Keywords: Supervised Machine Learning | Python
- Estimated whether a person will fail to pay their credit card bills using variety of machine learning models (e.g. Logistic Regression model with L1/L2 regularization, Random Forest model, SVM, Neural Network model, etc.) and several feature selection methods (e.g. feature scaling, change of basis, etc.) and eventually achieved 0.17 error rate in predicting test dataset
- Rendered all the results (including graphs and tables) in Jupiter using Python
Smart Hospital Management Web App
Keywords: Full-Stack Development | JavaScript | PostgreSQL Database
- Implemented a Node.js server backend that handles each request sent from the frontend and write queries to communicate with the PostgreSQL database
- Wrote JavaScript on the frontend to render the data sent back from the server using tables and graphs
Insight UBC Web Application
Keywords: Domain Specific Language Design | Database Management | Library Functions Implementation | Testing
- Implemented a RESTful web server using TypeScript as a backend and Bootstrap designed a front-end
- Wrote a query language interpreter that performs valid query requests for the POST method
- Used recursive function calls to rewrite TypeScript library functions like Document.getElementById()
- Parsed data from both JSON files and HTML files and managing them in a local database
- Handled all the possible exception cases, returned specific error messages and error codes as RESTful endpoints, and tested the whole project using Mocha achieved 97% of the overall test line coverage
Image Compression C++ Assignment
Keywords: Pointer | Image Compressing | Image Transformation
- Implemented an image representation using pointers that built up a tree to store each pixel
- Wrote an image compression algorithm that blurred the pixels with similar RGB values to an average value
- Performed transformation functions on the image representation