Variational Typing and Its Applications -- Sheng Chen
Static type checking helps to detect and prevent a large set of runtime errors. However, traditional type systems fall short in many situations. In particular, they do not scale up to software product lines, often produce imprecise error locations, and also sometimes fail to properly reflect new programming constructs. In this talk, I will introduce variational typing and its underlying principles. The study of variational typing originated from the problem of typing software product lines and has led to many successful applications. As an example, I will show how variational typing improves the precision and expressiveness of traditional type systems.
MDP State Abstraction in Monte Carlo Tree Search -- Jesse Hostetler
Markov decision problems (MDPs) model sequential decision-making under uncertainty. At each time step the agent finds itself in a state and must choose an action to maximize future reward. Monte Carlo Tree Search (MCTS) methods solve an MDP one state at a time by building a lookahead tree of possible futures and choosing the action that leads to the best outcomes. The size of the tree, and the time required to build it, is O([AB]^d), where A is the number of actions, B is the number of possible stochastic outcomes of an action, and d is the depth of the tree. In general, searching to a greater depth results in better decisions, but limited time budgets restrict the size of the tree that can be built. Our work focuses on reducing the stochastic branching factor B through the use of state abstraction. State abstraction reduces the effective size of the state space by treating some states as equivalent, but an overly coarse abstraction can lead to a suboptimal solution. In this talk, I will first summarize our recent theoretical results about qualities of abstractions that ensure bounded performance loss when applied in MCTS. I will then present preliminary results of our ongoing work toward algorithms that progressively refine a state abstraction during search, to match the abstraction granularity to the time budget.
Evaluating Test Driven Development (TDD) process for real-world developers -- Michael Hilton
There are many ways for developers to evaluate the product of their work, however, there are very few ways for them to evaluate their process. We developed a tool which will classify developer commits into the appropriate TDD phase, as well as a visualization that will allow developers to evaluate their process. We present both a novel TDD classification algorithm as well as an empirical evaluation of the classifier. We also show how our visualization allows developers to quickly and easily review their TDD process.
There will be refreshments after the colloquium