About

The Software Improvement (SWIM) Lab at Virginia Commonwealth University, led by Dr. Kostadin Damevski, is dedicated to advancing the state of the art in software maintenance and software engineering research. Our primary goal is to improve programmers' productivity and develop new methods and tools for evolving and maintaining high quality software systems. Specifically, we are interested in the following research topics:

  • Recommendation systems for software engineering
  • Modeling software changes over time
  • Mining and understanding informal software documentation available on the Web
  • Mining of software repositories
  • Software architectures
  • Empirical studies


News

  • Feb 2019: Congratulations to John Coogle for successfully defending his M.S. Thesis
  • June 2018: Our paper on opportunistic code reuse in interaction traces won the MSR 2018 Mining Challenge.
  • May 2018: Released a new tool KnowHows to the Slack Apps Directory.
  • Mar 2018: Congrats to Agnieszka Ciborowska for her accepted paper @ MSR 2018 in Gothenburg, Sweden.
  • Mar 2018: Congrats to Chase Greco and Tyler Haden for their paper on the StackInTheFlow tool @ ICSE 2018 in Gothenburg, Sweden.
  • Jan 2018: Our TSE paper, "Predicting Future Developer Behavior in the IDE Using Topic Models", was selected as one of the journal-first publication to be presented at the International Conference on Software Engineering (ICSE 2018) in Gothenburg, Sweden.


  • People

    • Dr. Kostadin Damevski
    • Manziba Akanda Nishi -- Ph.D. Student
    • Agnieszka Ciborowska -- Ph.D. Student
    • ...we are actively looking for people to join SWIM Lab. please contact Dr. Damevski if interested.

    Alumni

    • John Coogle -- M.S. Student -- ZoomCharts
    • Chase Greco -- M.S. Student -- CoStar
    • Tyler Haden -- B.S. Student -- Ippon
    • Jared Beller -- High School Student (Deep Run), 2018
    • Kevin Ngo -- High School Student (Deep Run), 2017 -- Carnegie Mellon University


    Recent Projects

    • Interaction-Aware Recommendation Systems for Software Engineers -- Recommendations are vital to improving complex cognitive tasks like software development. This project investigates integrating developer activity into recommendation systems.
      • Predicting future activity of a software developer. [IEEE TSE 2017]
      • StackInTheFlow behavior-driven recommendation system. [ICSE 2018 Tool]
    • Mining and Understanding Informal Developer Communications -- Extracting information from various sources of developer communication, such as Q&A sites (e.g. StackOverflow), multi-participant chat (e.g. Slack), issue trackers, etc. in order to make it more accessible to developers or improve its quality.
      • Slack Q&A Chats. [MSR 2019]
      • Software Development Tutorials. [MSR 2019 - Challenge]
      • Examining available sources. [SANER 2017 ERA]
    • Modeling Software Changes Over Time -- Using changesets and edit histories to create models that can predict future activities, extract high-level actions.
      • Changeset-based feature location. [TSE 2018]


    Older Projects

    • Analysis of Developer Activity Logs -- Leveraging large scale datasets of developer micro-interactions with the IDE, in the field, to understand how they perform certain software engineering tasks. This research leads to recommendation systems that integrate such complex usage data.
    • Code Search (Feature Location)


    Software

    In order of most to least recent.

    • KnowHows -- KnowHows is a Slack app that allows developers to query for channel participants that have knowledge of a specific development topic or API.
    • StackInTheFlow -- StackInTheFlow is a recommendation system that suggests Stack Overflow articles in IntelliJ.
    • Sando Code Search Tool -- Sando is a Visual Studio extension that helps developers locate relevant code in a large code base. (over 22K downloads, as of February 2016)
    • SenSee Android App -- SenSee is an Android application that collects data from each of the device's sensors and includes the ability to store this data on DropBox.