Timeline

  • Sep. 2016~
    Master of Science in Computer Science, Carnegie Mellon University
  • Sep. 2012~Jun. 2016
    Undergraduate of School of Electronic Engineering and Computer Science, Peking University
  • May 2014~Jun. 2016
    Research Assistant at Software Engineering Institute, Peking University
  • Jul. 2015~Sep. 2015
    Research Internship at Carnegie Mellon University
  • Feb. 2015~Jun. 2015
    Teaching Assistant of Algorithm Design and Analysis

Skills and Backgrounds

PROGRAMMING: Java, C, C++, Web, Functional, Python, Assembly
SOFTWARE: SE, PL, Compilers, Network, Web, OS, ML
HARDWARE: Organization, Architecture, Microelectronics, Circuits
MATHEMATICS: Algorithms, Algebra, Discrete, Calculus, Statistics
TOOLS: Git, Linux, LaTeX, MATLAB
ENGLISH: TOEFL 106 (Speaking 23) | GRE 157+170 (AW 3.5)

Personal

Besides a programmer, you can also regard me as:

  •      —  A qualified Accordion Musician at Level 10 (Top Level);
  •      —  A semi-professional WeiQi Player at Amateur Don 2;
  •      —  A good Chinese Calligrapher at Level 5;
  •      —  A qualified Hi-Fi listener certified by PHILIPS Golden-Ear;
  •      —  A sports fan especially in Soccer and Golf;
  •      —  A lover of Classical Music, Coffee, and Bridge.

If you share any interest with me, feel free to contact me in the ways below.

Contact Me

WeChat

  •    Gmail
  •    PKU Mail
  •    CMU Mail
  •    shiyqw@tom.com
  •    Yangqingwei Shi
  •    #Yangqingwei Shi
  •    Yangqingwei Shi
  •    Yangqingwei Shi
  •    史杨勍惟

Research Projects

  • Dynamic Mutation Analysis    with B.Wang and Y.Xiong

          A novel model of mutation analysis that analyzes mutants during the execution of the program, and forks the execution only when a mutant leads to a new system state.

  • Language Based Architectural Control    with J.Aldrich

           A module system based on Wyvern Language to enforce the architectural behavior by integrating these architectural descriptions directly into the language.

  • Dynamic QR Code    with M. Liu and K. Bian

           A novel QR code system which accepts inputs from many phone sensors besides the phone camera, and dynamically vary its output according to various contexts where the code is published.

Publications

动态变异测试的设计与实现
(Dynamic Mutation Analysis: Design and Implementation)

Y.Shi (Advised by Y.Xiong)
Undergraduate Thesis View PDF

Abstract

变异测试是一种通过细节改变源代码的软件测试方法,用来帮助测试者评估 测试集的质量。变异测试的一个重要瓶颈在于其可扩展性。研究人员已经提出了 各种不同的变异测试加速技术,这些方法的本质是是移除变异测试中的冗余部 分。然而,这些技术都是静态的,所以无法消除变异体执行过程中的冗余部分。
本论文的目标是设计并实现一个动态变异测试技术:在变异测试的执行过程 中对变异体进行动态分析,并且仅在变异体将会产生新的系统状态的时候,通过 创建新的进程来执行变异体。本论文提出了一个可以用来实现动态编译测试的抽 象模型,此模型支持不同变异算子的动态变异测试。本论文在 LLVM 的框架上实 现了一个 C 语言变异测试加速工具 AccMut。我们的实验表明动态变异测试技术 可以在 Major Framework(目前最快的静态变异测试加速技术)的基础上进一步 加速变异测试,加速比达到 2.22X。
在本论文的最后,我们将我们的模型扩展到了软件产品线测试上。

Mutation analysis is used to help evaluating the quality of existing software tests by modifying a program in small ways. One important bottleneck of mutation analysis is its scability. Researches have proposed different techniques to accelerate the mutation analysis, such as removing redundant computations in mutation anal- ysis. However, all these techniques are static, and thus cannot remove redundancy that occurs in part of mutant execution.
The purpose of this thesis is to design a technique that accelerates the muta- tion analysis dynamically, which analyzes the mutants during the execution of the program and forks the execution only when a mutant leads to a new system state. We proposed an abstract model for implementing dynamic mutation analysis for different types of mutation operators. We developed an acceleration tool “AccMut” on C programming language on top of LLVM. Our experiment show that our ap- proach can further accelerate mutation analysis with a speedup 2.22X over Major Framework, a state-of-the-art approach.
At the end of this paper, we extend our model to software product line testing.

基于移动环境感知技术的动态二维码生成和识别方法
(Generation and Recognition of Contextual Dynamic QR Code)

K.Bian, M.Liu, Y.Shi, Q.Chen, S.Zhang
Patent Accepted By State Intellectual Property Office of China, No. 20150138126JX

Abstract

本发明公开一种基于移动环境感知技术的动态二维码生成和识别方法。该方法基于静态的二维码信息模板,进一步地动态识别环境特征信息并且生成动态二维码信息,从而在用户扫码之后,通过智能移动设备的环境感知技术抓取环境信息,进而解码出最适合用户所处移动环境的二维码信息。本发明可以向下兼容传统的静态二维码技术,无需增加硬件成本,实现起来方便快捷,可用于任何使用二维码的设备与应用,如智能手机、ATM机、平板电脑、广告显示屏、传统媒体、身份验证系统等设备。
This invention published a method for generating and recognizing contextural dynamic QR Code. The method generates dynamic QR Code context based on a static template and some dynamic contextual features so that it can decode the most suitable text information based on the mobile context from the contextual information caught by smart mobile devices after users' scanning. This invention has downward compatibility to traditional static QR Code technology and can be implemented easily without additional hardware cost. It can be applied in any devices or applications which support QR Code scanning, such as smart phones, ATM machines, Tablets, Advertisment Screens, traditional media and ID vertification system and so on.

Awards and Honors

  • 2013

    2012-2013 Outstanding Academic Award of Peking University

    For High GPA Students

  • 2013

    2013 Peking University Game AI Competition

    Rank 26

  • 2014

    2014 Peking Univesity ACM-ICPC Programming Competition

    3rd Price

  • 2014

    Wusi Scholarship of Peking University

    For Top 20% Students

  • 2014

    "Beauty of Programming" Contest, Microsoft

    Rank 341 of 6517

  • 2015

    Peking University Young Scientist Symposium

    3rd Price

  • 2016

    Peking University Excellent Undergraduate Thesis

    For Top 30% Thesis

Course Projects

  • Poem Search Engine     

    Introduction to Computing [Honor Track],     FALL 2012
    — A Search Engine to search the best Chinese poem according to your keywords.
    — Using TD-IDF to compute the similarity between two poems.
    — Hybrid Programming of C and MATLAB.
  • 3D Reconstruction       

    Introduction to Computing [Honor Track],     FALL 2012
    — Reconstruction of 3D image with a group of 2D images.
    — Using SVD decomposition and least square method for reconstruction.
  • Vi-like Text Editor       

    Practice of Data Structure and Algorithms,     FALL 2013
    — A text-editor based on Linux NCurses Library.
    — Support vi-like operations: move by index, by line and by word; pageup/pagedown; insert; delete; search; replace and save.
  • Frequent Pattern Mining       

    Practice of Data Structure and Algorithms,     FALL 2013
    — Seven different implementations of two traditional frequent pattern mining method, Apriori and FP-Tree.
    — Detailed comparison and complexity analysis for total seven implementations
  • ICS Labs

    Introduction to Computer Systems (CMU 15-213),     FALL 2013
    — All 8 Labs Finished: Data Lab, Bomb Lab, Buffer Lab, Arch Lab, Cache Lab, Malloc Lab, Shell Lab, Proxy Lab
  • Metaheuristics for Float-Point Inaccuracy Detection

    Algorithm Design and Analysis,     SPRING 2014
    — Using two algorithms to search for the most significant float-point inaccuaracy in a limited time.
    — Using generetic algorithm to search for the area and using simulated annealing to search for the exact input.
  • Scheme Metacircular Evaluator       

    Structrue and Interpretation of Computer Programs (UC-Berkley CS-61A),     SPRING 2014
    — A traditional metacircular scheme interpretor written by scheme.
    — Some extensions: support logistic operators, support while loop, support timing.
  • Mini Java Compiler       

    Practice for Compiler Design (UCLA CS-132),     FALL 2014
    — A five-step compiler from Java to MIPS.
    — Using JavaCC for lexing and parsing.
    — Using Linear Scan for register allocation.
  • TuanJuPKU           

    Software Engineering,     SPRING 2015
    — A Platform for PKU Unions.
    — A middle-scale group projects with detailed documents.
    — Two interfaces for users, Webpage for union administor and Android application for union member.
  • Complexity-Control Programming Language       

    Design Principle of Programming Languages,     SPRING 2015
    — An imperative programming language written by OCaml for computational complexity control.
    — Any well-typed program can be computed in polynomial time.
    — Any program can be computed in polynomial time on Turing Machine can be written in our language.
    — An implementation of "A Type System for Complexity Flow Analysis", Marion, Jean-Yves, LICS 2011.
  • Face Mock Show     

    Computer Network [Honor Track],     SPRING 2015
    — A social network application for mocking other's face and get a score.
    — Using Face++ For Face Recognization.
    — Using Python Flask for building website.
    — Using bootstrap and HTML 5 for mobile adaption on WeChat.
  • NachOS     

    Practice on Operating System (Designed by UC-Berkeley),     SPRING 2016
    — An operating system runs on i386 platform.
    — Implemented thread scheduling and synchronizing, file system, virtual address and system calls.