Learning to Rank Relevant Files for Bug Reports using Domain Knowledge
- We developed a ranking model to recommend source code files to fix for a bug report.
- The ranking model is a weighted combination of multiple features that every feature is a unique type of information measuring the relevance between a source file and the bug report.
- The weight parameters of our ranking model is trained automatically using a learning-to-rank technique.
- Through evaluations on six large-scale open source Java projects, our model achieved significantly better results than the state-of-the-art approaches.
- Languages used in this project: Java, Python, SQL
- Tools/Libraries used in this project: Git, Bugzilla, MySQL, JDT ASTParser, Apache Tika, Beautiful Soup, NLTK, JUNG, SVM^rank
- Algorithms used in this project: VSM, SVM^rank, PageRank, HITS
- [Paper] [Slides]
Virtual Boat for Environmental Education
- We developed a 3-D virtual boat (VB) game running on iPad devices for a NSF GK-12 project to assist high school teaching in Ohio.
- Our VB game contains multiple scenarios in which each scenario corresponds to a dedicated lesson plan designed by a NSF GK-12 fellow.
- Our VB game and the corresponding lesson plans have been using in the classrooms of 9 high schools in Ohio.
- Software used in this project: Unity, Xcode, Google SketchUp, Autodesk Maya
- [Website] [Youtube]
The Winkler Method on iPad
- We developed a 3-D mobile chemical experiment game for high school education.
- The game mimics the classic Winkler Method that was used to detect dissolved oxygen in water.
- Software used in this project: Unity, Xcode, Google SketchUp
- We developed an interactive 3-D visualization tool for visualizing software projects’ version control repository.
- In the visualization, a source code file is represented as a set of cylinders in which a small cylinder refers to a specific revision of this file.
- Different colours of the cylinders refer to different developers/authors who contributed to the specific revisions.
- Software/Tools used in this project: Unity, Eclipse, SVN
- [Paper] [Youtube]
An OU Web Search Engine
- I developed a search engine for searching websites within the ohio.edu domain and other websites related to Ohio University (OU).
- I used Apache Nutch to crawl 117,620 web pages based on 10 OU websites as the seeds.
- I used Apache Solr to index these 117,620 pages.
- I built a search engine as a servlet running under Apache Tomcat. The servlet uses Apache Lucene libraries to search web pages within the index created by Solr.
- This search engine supports VSM, BM25, and the Smoothed Unigram Language Model. It also uses anchor text for searching.
- Languages used in this project: Java, HTML
- Tools/Libraries used in this project: Apache Nutch, Solr, Lucene, Tomcat, Servlet
- Algorithms used in this project: VSM, BM25, Smoothed Unigram Language Model
- [Demo] [Report]
Fast Face Detection with Small Training Dataset
- I developed a face detection program to automatically detect human faces from static images.
- This program applies Principle Component Analysis (PCA) to create an eigenface subspace from the training images.
- A training or a testing image can be represented as a weighted combination of the eigenfaces.
- Therefore, an image can be represented by its weight vector in a lower dimension.
- If the euclidean distance between the weight vector of a testing image and the weight vector of a human face image is below a threshold, then face detected.
- Languages used in this project: C++
- Tools/Libraries used in this project: OpenCV (compiled on Solaris)
- Algorithms used in this project: PCA
A Stock Exchange Application on iOS
- We developed an iOS stock exchange application that can be launched on iPhone and iPad.
- Users buy and sell stocks with virtual cash to compete for the most profitable day trader in the app.
- The app fullfiled the user requirements from 5 wide, LLC in Cincinnati.
- The app was developed by a small team with 4 developers that used SVN for version control and Redmine for issue tracking.
- Languages used in this project: Object-C (font-end), PHP (back-end), HTML (back-end), SQL (back-end)
- Tools/Libraries used in this project: Xcode, iOS 4.3 SDK, MySQL, Apache Webserver
- Version Control: Subversion
- Issue Tracking: Redmine
- Memberships: iOS Developer University Program – Ohio University (Electrical Engineering and Computer Science)
- [Youtube] [Report]
An IPv6 Router
- I developed an IPv6 router.
- It responses to ICMP Echo request, UDP Echo, ND request, Router Advertisement, RIPng advertisement, ICMP error message, time exceed, and udp port unreachable.
- It supports ARP table, routing table, and routing queues.
- I used both the Times 33 and the Times 31 algorithm for double hashing to avoid hash collisions.
- I used multi-threads in this project.
- Languages used in this project: C++
- Libraries used in this project: POSIX Threads
Booting Linux with U-Boot on PowerPC on a FPGA-DSP-based Digital Signal Processing Board
- I modified and ran U-Boot on IBM PowerPC that was integrated within the Xilinx Virtex-II Pro FPGA on a digital signal processing board.
- For debugging, I used U-Boot to load MontaVista Linux kernel and ramdisk image through TFTP.
- For stable release, I used U-Boot to burn itself, the MontaVista Linux kernel, and the JFFS2 filesystem to a NAND flash device on the board.
- Languages used in this project: C
- Tools used in this project: U-Boot, MontaVista Linux