I have a broad interest in software development (both mobile and web platform), and intelligent systems. I am graduating in Dec 2014, and I am currently seeking an internship position in software developing in winter or summer 2015 before going to graduate school or direct full-time job if it is really attractive.
I have taken courses in: Machine Learning (EECS 545), Introduction to Secruity (EECS 388), Operating System (EECS 482), Database (EECS 484), Artificial Intelligence (EECS 492), Software Engineering (EECS 481) Computer Organization (EECS 370) and Data structure and Algorithms (EECS 281).
Courses included: Data Structure & Algorithms, Computer Architecture, and Digital Signal Processing
Courses currently taking: Operating System, Database management, artificial intelligence and theory of computation
Shanghai Jiao Tong University (SJTU) Shanghai, China
B.S.E, Electrical and Computer Engineering GPA 3.93/4.00 Sep. 2011–Aug.2013
Coursework included: C/C++, Discrete Math, Circuits, Logic Design, Electromagnetics, and other Math courses (Calculus, Complex Analysis, Differential Equation, Linear Algebra, and Probability and Statistics).
Proficient in C++
Other Related skills: Mathematica, Verilog, Latex, Arduino board, Cadence, Visual Studio, Sublime Text, Eclipse, and Emacs
University of Michigan EECS Department
Jan. 2014 - current
Programmer (part-time on campus job)
Update the existing database interface to simplify the procedure for information collecting like facultys teaching and publication, and to support advanced query.
Overview: Cloud Manager is a sub project of the pocketCloud app during my internship at Dell. It serves as an Proof of concept project before integration the various common Cloud platorms including Google Drive, Dropbox, Box into the pocketCloud app. Cloud manager can access the common cloud platforms and do file operations, transfering, sharing, previewing in one single app.
Unity Game Developing
Gravity Ball game
Overview: The project Gravity Ball has the target audience of kids with Autrism Spectual Discorder (ASD). The patients with the diease mostly have trouble sensing the position of the gravity center, and can not judge the right power to be exerted on when doing the daily activities. Therefore, the game Gravity Ball is played on a huge textile interface, the player should press the texilte with the appropriate pressure to rotate the maze in order to guide the ball into the goal position. The rotation of the maze imitates the graviy. The software part of the project is developed in Unity and is written in C# script.
Simplified QQ chatting platform
Overview: QQ is a popular online chatting platform (function as MSN) in China. This simplified QQ can achieve basic chatting between users. The program is written in java, implemented in MVC model. The interface is written by java Swing, and the server is written by socket. Hash table is used to manage the threads of the connections between users.
Coded individually in April 2012 while I audited the online java course
Overview: This Pokemon defense game is a traditional tower defense game with the characters of pokeman (a famous Japanese cartoon). The game require two players, and each of their goal is to kill the king of the other. Java socket is used to synochronize the two player's information.
This is a course project collarated by five people.
Overview: This is a shooting game implemented in java. The player has a tank and aims to kill all the enemy tanks before his life has used up. The interface of the game is written in java Swing. All the tanks, bullets as well as the explosion are threads.
Coded individually in March 2012 while I audited the online java course
Overview: Uh-hah, this is just the page you are browsing now. The website is coded purely myself, without any template. The purpose for writing this site is twofolds: 1. to provide a professional profile. 2. To practive web front-end design skill. It is really tough for a programmer to do the decoration. lol
Coded individually in Jan. 2014
Operating System Programming
thread library implementation
Overview: This project implements a version of the thread library and monitor library on uninprocessor and multiprocessor system. The functionality of the program includes:
Thread yielding, joining.
Mutex lock, unlock,
wait, signal, broadcast of the condional variable
Overview: External Pager manages virtual memory for application process. There is a simulated memory and disk size for the project. The pager handles address space creation, read and write faults, address space destruction, and simple arguments passing between address spaces, and also implements the system call vm_syslog. It also allows several thread to share a single page. Clock algorithm is used when evicting pages from memory.
Network file server
Overview: Network file server is a multi-thread secure network file server. Clients will send network messages to send request of file creation, file deleting, file reading and file appending. The project uses C++ pthread rw lock, and uses socket programming to receive the package from the clients. Encryption and Decryption is used for the package and seesion id and nonce is used to thwart replay attacks.
C++ Algorithm implementation
Minimum Spanning Tree & Traveling Salesman Problem
Overview: This program is a work of the last project in EECS 281 at the University of Michigan. The input of the program is a set of points with their 3D positions. Assume each two points are connected and their distance is the sum of the difference in position index in the three dimensions. The program can do three things:
find the minimum spanning tree of the points.
find the exact shortest route that trasverse all the points exactly once and ends up backing to the origin. (exact traveling salesman problem)
find an almost shortest route that satisfy the above criteria, but much faster. (faster traveling salesman problem)
Priority queue implementation
Overview: Priority queue is a widely used data structure. This implementation is part of the project of the EECS 281 class in University of Michigan. The code contain four different priority queue implementations, including normal array implementations, sorted array implementations, binary heap implementations, and pairing heap implentations. The interface of the priority queue and the detailed implentations is viewable after downloading the source code.
Overview: This project Divides into the following three parts.
SQL injection attack: sql injection when no defense, sql injection when the quotation mark is filtered and sql injection to dump the whole database.
CSRF attack: Log into a website with the attacker's account with the user unnoticed so that user's behavior can be tracker within the attacker's account. Did attack on both cases with and without token.
Overview: This project involves cracking the password of a WEP encrypted network and use wireshark to get the packets and observe network activity. It also includes getting the server private key from a server with their key not well saved, so that the https message can be decrypted and secret content can be viewed.
Overview: This project exploits the buffer overflow and integer overflow of the program with secruity issue and tries to modify the stack and injects the shellcode into the program. The attack deals with situation including no defense, has limited buffer overflow, has DEP protection, and has stack address randomization.
Programming involved math research
Algorithms for π calculation
Overview: This is a research dedicated to compare several algorithms in the history for calculating the π, in other words, calculating 3.1415926535... with more and more digits. Three parts are included in the research:
Critical mathematical prove of the AGM algorithm, the most efficient log(N) algorithm found till today to calculate π. This algorithm can calculate 100,000 digits after the decimal points in three seconds.
Algorithm analysis of the several other algorithms for π calculation in terms of the time complexity
Implementation of the AGM algorithm using mathematica programming language.
Statistics Research of the M&Ms, Murders in London, and the National Football League
Overview: This is a statistics research containing three different subjects as shown in the title. The last part of the research is to build a linear regression model for the performance of the football player with respect to some potential factors. I wrote a matlab program to facilitate the modeling.
Embeded system programming
Cell phone Checking & Controlling System for the School Dormitory
Overview: This checking & controlling system enable students to check whether their dorm doors are locked and lights are off from remote place by sending text message, and to turn off the lights and close the door if they carelessly forget it remotely by sending short message. The system is a embedded system with both sensors, mechanical part and the circuit part. The arduino board, and the GSM module is used as a center controller to respond to the text message received and send signals to the mechnical system to close the doors and turn off the lights. I took fully charge of the C++ program on the arduino board.