CMU hosts seminar on user interfaces to understand code
This past Wednesday, Carnegie Mellon’s Human-Computer Interaction Institute (HCII) hosted a seminar by Steven Reiss, a professor in the Department of Computer Science at Brown University who has recently focused his research on developing user interfaces that help programmers visualize and understand code. Reiss spoke about his main project, which involves code search, but takes it a step further and allows people to understand the code that they searched for. This project, known as S6, searches code repositories such as Github and Open Hub for files, and tests these files for qualities such as their ability to compile successfully or pass basic checks and tests before running.
The process behind S6 differs from the majority of other available code searches. Searching for code on websites such as Github through their own search engines is often ineffective and difficult. Different styles in code often lead to this ineffectiveness, since variable names and function names will change based on each programmer. When a user does find results for their search in this type of open source environment, the files would then need to be sorted and understood. In open source environments, it is common to find complex files that are difficult to understand and also incomplete files that cannot be compiled.
S6 fixes these issues by finding files related to a user’s search and presenting the files in a graphical form. For example, users can search for code by using keywords, test cases, contracts, signatures, and security constraints. The system will then browse through the repositories and return options to the user in an environment known as the “Rebus,” where users can browse through the different function calls of listed repository codes.
The program also allows users to edit the code and check to see if the code in the search results still work correctly, making the process of searching for a working file much easier.
As of right now, however, S6 has not extended to codes with external dependencies. This means that if a file depends on an outside module or imported file, S6 will not be able to successfully compile and interact with the file. The complexities of files that are not leaf packages, meaning stand alone packages that do not require outside resources, make the installation and implementation of external packages a challenge.
Reiss has been studying this idea of implementing external dependencies in S6. “Some things they’ll work for, and some things they won’t,” Reiss said. “If there’s a specific sequence of things that you must do to build an event and that thing is located somewhere in the system, you may never find it in the repository.” Reiss plans to look more into this area, but acknowledges that the process will take time.
Reiss’ research and projects continue to span several sectors of computer science. He worked on projects such as S6 and a user interface-based development environment known as the Code Bubble that focus on connecting programmers to visualizations of code. Reiss has also worked on smaller projects, including the sign outside of his office door at Brown that tells people whether or not he’s there. This sign is a simple digital picture frame, but the frame is programmed to connect to several data sets that inform Reiss’ location, such as motion sensors in the office room and calendar updates from Google Calendar. Reiss’ projects and research branch in multiple directions today, but will continue to help provide users better interfaces to understand code.