PROJECTS

Research Group

students working around a computer

Improving Programming Skills through Explanations

Most computer science students have difficulty with technical interviews even though they are familiar with the necessary data structures. As part of this project, students work on problems taken from a popular coding challenge site, Leetcode, and create detailed explanations for each of the questions. The solutions are intended not just to solve the problem, but explore different ways of approaching the problem as well as understand how to tackle similar problems. These lesson plans are being gathered at the T4G Stepik Course to be used as a resource for future courses.
For this project, the preferred programming language is C++, but the explanations are language independent

Current members: Bill Zhao, Boyan Hristov, Jonathan Young, Kez Danielle May, Samuel A. Munford
Past Members: Isabel Giang, Mitchell Dang, Taylor Eyler
Project Category: CS Education

Generating Hints for Programming Problems Without a Solution

Providing good quality feedback on programming questions is a challenging task. Intelligent Tutoring Systems that address this problem are built by hand which limits their scope and make them difficult to maintain. In this project, we explore how hints can be generated automatically using only the problem descriptions. We are experimenting with using a subset of problems taken from Leetcode as input and using various machine learning algorithms to classify problems.

Current members: Victor Suciu, Isabel Giang, Bill Zhao, Jessica Runandy, Mitchell Dang
Project Category: Artificial Intelligence

students working around a computer
students working around a computer

The Evolution of Computer Science Education

Online streaming platforms such as Twitch.tv, while originally created as a form of entertainment for viewers to watch people play video games, have expanded to more instructional applications including the livestreaming of programming. We are exploring the benefits of streaming platforms, such as twitch and youtube, in education. We have analyzed the follower rates and comment rates for popular streamers that do live programming to highlight trends in this area.


Current members: Taylor Eyler, Erica Ferguson, David Liu
Project Category: CS Education

Unity Mechanics

Unity3D is a popular game engine for independent game developers as well as large game development studios. There are a large number of tutorials to create different types of games in Unity3D. When steps in these tutorials are omitted or accidentally skipped, it is difficult for users to recover as they often do not have a deep understanding of each of the steps. An alternative approach is to create examples of common game mechanics and have developers put these mechanics together for their own game. This approach puts the focus on choosing the correct combination of game mechanics rather than following a template for a game that is difficult to change. We are building a web page of the 100 most common mechanics at Unity Mechanics for Programmers with sample implementations located at GitHub


Current members: Nick Young
Project Category: CS Education

students working around a computer
students working around a computer

Building a Mind

Inferences, being able to reach a conclusion based on a set of premises, is a crucial step in reasoning. Truth-Maintenance systems can be used to track beliefs as well as the dependencies of these beliefs. A contradiction in this framework requires a revision of beliefs to update the knowledge base. We are building a python based truth-maintenance system to explore different types of reasoning.


Current Members: Rachael Kim, Kayla Sprague
Past members: Austin Rich
Project Category: Artificial Intelligence

Providing Automated Feedback on Programming Assignments

Providing feedback to novice programmers is critical in helping them develop their skills. Feedback from graders and instructors are often limited due to time constraints. Compiler messages are often difficult to interpret. While there are automated tools that can check for code style, code coverage, perform static analysis etc, these tools are often too difficult for novices to use. We are working on a set of tools that takes advantage of GitHub Actions framework. The tools are embedded within this framework and run automatically when files are uploaded to GitHub. The feedback can be further customized based on instructor preferences or tailored to include multiple input-output tests to be run on specific assignments. The results are displayed via a web page, making it easier for novices to understand the results. We are developing the tools that can be used in future introductory Java courses.


Current members: Gabe Acuna, Ed Abshire
Project Category: Artificial Intelligence

students working around a computer