Research Project Title:
(Re)Thinking Software Design
abstract:Software design involves coming up with a plan and solution to solve a problem through writing code. Given the problem, there are several ways to approach this design process. One way is to focus on the internal structure of the code and consider the structure in terms of decisions about abstractions, modularity, and template patterns. Instead of focusing on this internal structure, we want to start by seriously reasoning about the desired behavior of the software and how this concept of a desired behavior can affect the subsequent structural design and implementation phases.
Software is so prevalent in our lives today, and many students today aim to enter the software-writing industry. In large software projects, one rarely has the opportunity to think about the overarching design or to reason about the behavior and its implications. I hope to gain insight into these high-level design principles and also to learn more about what research is like.