Tue and Thu, 4:00-5:20pm
BAT 150

Prof. Danny Dig (digd@eecs.oregonstate.edu)
Office: 3043 Kelly Engineering Center Center
Phone: (541) 737-8216
Hours: By appointment


Change is the heart of software development. As new platforms appear, some batch
systems have been retrofitted with first a web interface, then a web service
interface, and now interfaces to mobile devices. Unfortunately, programmers
perform most software changes manually, through low-level text edits, which are
almost never reused. This makes software development time-consuming,
error-prone, and expensive. It is widely known that at least two-thirds of
software costs are due to evolution, with some industrial surveys claiming 90%.

The purpose of this course is to expose students to seminal topics and recent
trends in the field of software engineering and more specifically in software evolution. The topic of this course varies with each offering. For Fall 2014, the theme of the course will be "Software Evolution for Mobile Devices & Cloud". Mobile devices represent the environment where end-users spend most of their time. According to Gartner, by 2016 more than 300 billion apps will be downloaded annually. In this course, we will explore state-of-the-art techniques for how to evolve existing apps. We will be investigating (i) what are the common changes that app developers make, and (ii) how can we automate such changes to improve programmer productivity and software quality. Examples of changes include making an app more responsive, moving code and data between the mobile device and the cloud, etc. Our exploration will consist of in-class discussions of the literature and team projects that encourage risk taking.

The course will offer an opportunity for students to pursue research-oriented
term projects in small teams (2-4 students). Students may pursue any project of
their choosing that explores the intersection of software evolution, mobile
development, cloud.

Course Objectives

  • expand student's knowledge more broadly about Software Engineering research and become familiar with the state of the art research in a sub-area of Software Engineering
  • develop critical thinking abilities by being able to assess the quality of published research and pose new research questions
  • practice giving scientific presentations and teaching others
  • engage in active learning activities in class, such as research discussions
  • practice developing a research project through all its stages: formulating a research problem, posing research questions, gathering related work, designing a solution, evaluating the solution empirically, writing a research paper
  • have fun learning something

Course Syllabus


Date Presenter Readings
09/30 Danny Dig
  • Mihai Codoban
  • Caius Brindescu
  • Danny Dig
  • Michael Hilton

All Students

Pitch Project Idea

  • Danny Dig
  • Sruti
  • Tahmid
  • Pooria
  • All students

Project Milestone 1

  • Invited guest speaker: Prof Alex Groce

Research on Software Testing

  • Shane
  • Will J
  • Kendall
  • Pranjal
  • All students

Project Milestone 2

  • Yu Lin
  • Danny Dig
  • Hongyan
  • William
  • Francesco
  • All Students

Project Milestone 3