Employment

  • Present 2022

    Associate Professor

    Carnegie Mellon University, Pittsburgh, PA USA

  • 2022 2019

    Principal Researcher

    Microsoft Research, Redmond, WA USA

  • Present 2013

    Affiliate Professor

    University of Washington, Information School, Seattle, WA USA

  • 2019 2014

    Senior Researcher

    Microsoft Research, Redmond, WA USA

  • Winter 2013

    Visiting Lecturer

    University of Washington, Information School

  • 2014 2006

    Researcher

    Microsoft Research, Redmond, WA USA

  • Summer 1997

    Intern

    Xerox PARC Computer Science Laboratory, Palo Alto, CA USA
    Supervisor: Michael Spreitzer

  • 2001 1993

    UROP

    (Undergraduate Research Opportunities Program)

    MIT Media Lab, Cambridge, MA USA
    Supervisor: Mitchel Resnick

  • Summer 1992

    Research Intern

    NYU Medical Center: Institute for Environmental Medicine, Sterling Forest, NY USA
    Supervisor: Toby G. Rossman

  • Summer 1990

    Intern

    NY Medical College: Biochemistry and Molecular Biology, Valhalla, NY USA
    Supervisor: Yuk-Ching Tse-Dinh

  • 1992 1988

    SIGOp: Apple II Special Interest Group

    Mnematics Videotex, Inc., Sparkill, NY USA

Education

  • Ph.D. 2005

    Ph.D. in Computer Science

    University of California at Berkeley

    Advisor: Susan L. Graham

  • M.Eng.1997

    Master of Engineering in Electrical Engineering and Computer Science

    Massachusetts Institute of Technology

    Advisor: Mitchel Resnick

  • B.S.1996

    Bachelor of Science in Computer Science and Engineering

    Massachusetts Institute of Technology

    Advisor: Mitchel Resnick

  • High School Regents Diploma1992

    Rank: 2 out of 443, Average 102.7

    Ramapo Senior High School, Spring Valley, NY

Honors and Awards

  • 2019
    ACM Distinguished Member
  • 2005
    Demitri Angelakos Memorial Award
  • 1992
    National Merit Scholarship
    Salutatorian of High School Class of 1992
    Leo V. Dustman Award in Mathematics
    Mel Sobel Microscopes Scholarship Award
    New York State Science Supervisors Association Award

Research Colleagues

I have worked with many very smart researchers, students, and visitors at at CMU and Microsoft.

CMU Students

Gabrielle Ohlson

PhD Student, CMU Robotics Institute

JiWoong Jang

PhD Student, Human-Computer Interaction Institute

Looking for PhD Students!

If you are intersesting in applying to graduate school and would like to help build the inclusive technology workplace of the future, please send me some email.

Send me your name, school/company, research interests, curriculum vita, and some ideas of what you'd like to investigate while you're here at CMU.

Microsoft Researchers

Saleema Amershi

Sr. Principal Research Manager, HAX

Microsoft Research, Redmond

Adam Fourney

Principal Researcher, HAX

Microsoft Research, Redmond

Ed Cutrell

Sr. Principal Research Manager, Ability

Microsoft Research, Redmond

John Tang

Principal Researcher, Ability

Microsoft Research, Redmond

Merrie Morris

Director and Principal Scientist, People + AI Research

Google, Seattle

Mary Czerwinski

Sr. Principal Research Manager, HUE

Microsoft Research, Redmond

Rob DeLine

Sr. Principal Researcher, VIDA

Microsoft Research, Redmond

Tom Zimmermann

Senior Principal Researcher, ESE

Microsoft Research, Redmond

Chris Bird

Principal Researcher, ESE

Microsoft Research, Redmond

Gina Venolia

Retired

Microsoft Research, Redmond

Kael Rowan

Principal Research Software Design Engineer, HUE

Microsoft Research, Redmond

Nachi Nagappan

Software Engineer

Facebook, Seattle

Microsoft Interns

Maulishree Pandey

University of Michigan, School of Information, PhD Student

Summer 2021

Shakiba Davari

Virginia Tech, PhD Student

Summer 2021

Venkatesh Potluri

University of Washington, Seattle, PhD Student

Summer 2020

Jazette Johnson

University of California, Irvine, PhD Student

Summer 2020

Naba Rizvi

University of California, San Diego, PhD Student

Summer 2020

David Widder

Carnegie Mellon University, PhD Student

Spring 2020

Annuska Zolyomi

University of Washington, Bothell, Asst. Teaching Professor

Winter 2019

Grant Williams

Microsoft, Applied Data Scientist and Software Engineer

Summer 2018

Michael Hilton

Carnegie Mellon University, Asst. Teaching Professor

Summer 2017

Sarah D'Angelo

Google, Software Engineer

Summer 2016

Hana Vrzáková

Microsurgery Cente, KYS, Head of Medical ICT Development

Summer 2015

Nicolas Bettenburg

KUY.io Inc., Founder

Summer 2012

Anja Guzzi

Delft University of Technology, PhD Graduate

Summer 2011

Alicia Grubb

Smith College, Asst. Professor

Summer 2010

Khoo Yit Phang

The Mathworks, Senior Team Lead

Summer 2009

Libby Hemphill

Resource Center for Minority Data, ICPSR, Director and University of Michigan, Assc. Professor

Summer 2008

Reid Holmes

University of British Columbia, Assc. Professor

Fall 2007

Christopher Poile

Mattermost, Software Developer

Summer 2006

Lucas Layman

University of North Carolina, Wilmington, Asst. Professor

Summer 2006

Visiting Researchers @ MSR

Yvonne Dittrich

IT University of Copenhagen, Professor

Spring 2014

Thomas Fritz

University of Zurich, Associate Professor

2013

Jonathan Sillito

BYU, Associate Professor

Summer 2013

Beth Simon

University of California at San Diego, Teaching Professor

Spring 2007

Older Research Projects

  • image

    Codebook

    Microsoft Research

    Social Media for Software Engineers

    We use social networking to connect people and artifacts in software development-related repositories.

  • image

    Deep Intellisense

    Microsoft Research

    Dig up the Dirt on your Code

    Deep Intellisense is a Visual Studio 2008 plugin that surfaces information from various silos (source control, bug tracking, mailing lists, etc.) to provide developers with instant context-sensitive feedback on any source code they are reading in the editor. Deep Intellisense works with Visual Studio Team Foundation System projects (such as those hosted on CodePlex), email archives (from Outlook) and Sharepoint sites.

  • image

    Agile Methods

    Microsoft Research

    Studies of Agile Development at Microsoft

  • image

    Onboarding New Software Engineers

    Microsoft Research

    Studies of Collocated and Remote Onboarding

  • image

    Software Team Coordination

    Microsoft Research

    Studies of Inter-team Coordination

  • image

    Programming by Voice

    University of California at Berkeley

    SPEED: SPEech EDitor: Code Dictation, Editing by Voice, Commenting by Voice

    Programmers who suffer from repetitive stress injuries find it difficult to program by typing. Speech interfaces can reduce the amount of typing, but existing programming-by-voice techniques make it awkward for programmers to enter and edit program text. We used a human-centric approach to address these problems. We first studied how programmers verbalize code, and found that spoken programs contain lexical, syntactic and semantic ambiguities that do not appear in written programs. Using the results from this study, we designed Spoken Java, a semantically identical variant of Java that is easier to speak. Inspired by a study of how voice recognition users navigate through documents, we developed a novel program navigation technique that can quickly take a software developer to a desired program position.

    Spoken Java is analyzed by extending a conventional Java programming language analysis engine written in our Harmonia program analysis framework. Our new XGLR parsing framework extends GLR parsing to process the input stream ambiguities that arise from spoken programs (and from embedded languages). XGLR parses Spoken Java utterances into their many possible interpretations. To semantically analyze these interpretations and discover which ones are legal, we implemented and extended the Inheritance Graph, a semantic analysis formalism which supports constant-time access to type and use-definition information for all names defined in a program. The legal interpretations are the ones most likely to be correct, and can be presented to the programmer for confirmation.

    We built an Eclipse IDE plugin called SPEED (for SPEech EDitor) to support the combination of Spoken Java, an associated command language, and a structure-based editing model called Shorthand. Our evaluation of this software with expert Java developers showed that most developers had little trouble learning to use the system, but found it slower than typing.

    Although programming-by-voice is still in its infancy, it has already proved to be a viable alternative to typing for those who rely on voice recognition to use a computer. In addition, by providing an alternative means of programming a computer, we can learn more about how programmers communicate about code.

  • image

    Harmonia

    University of California at Berkeley

    A Framework for Language-Aware Programming Tools

    Harmonia is an open, extensible framework for constructing interactive, language-aware programming tools. Harmonia is a descendent of our earlier projects, Pan and Ensemble and utilizes many analysis technologies developed for those projects. Harmonia includes an incremental GLR parser (which admits a more natural syntax specification than LR), a static semantic analysis engine, and other language-based facilities. Program source code is represented by annotated abstract syntax trees augmented with non-linguistic material such as whitespace and comments. The analysis engine can support any textual language that has formal syntactic and semantic specifications. The incremental nature of the analysis supports a history mechanism that is used both for history-based diagnostic information and for contextual rollback. New languages can be easily added to Harmonia by giving the system a syntactic and semantic description, which is compiled into a dynamically loadable extension for that language. Among the languages for which descriptions exist are Java, Cool (a teaching language), XML, Scheme, Cobol, C, and C++. Other languages are being added to Harmonia as resources permit.

    The language technology implemented in the Harmonia framework is being used in two current research projects: support for high-level interactive transformations and programming by voice. Our research in interactive program transformations focuses on the problem of programmers' expression and interaction with a programming tool. We are combining the results from psychology of programming, user-interface design, software visualization, program analysis, and program transformation to create a novel programming environment that enables the programmer to express source code manipulations in a high-level conceptual manner. Programming by voice research augments traditional text editing by allowing the developer dictate chunks of program source code as well as verbalize high-level editing operations. This research helps to lower frustrating barriers for software developers that suffer from repetitive strain injuries and other related disabilities that make typing difficult or impossible.

    Harmonia can be used to augment text editors to robustly support the language-aware editing and navigation of documents, including those that are malformed, incomplete, or inconsistent (i.e. the document can remain in that state indefinitely). We have integrated Harmonia into XEmacs by creating a new Emacs "mode" that provides interactive, on-line services to the end user in the program composition, editing and navigation process.

  • image

    StarLogo, StarLogo TNG

    Massachusetts Institute of Technology

    Parallel Programming for Kids!

    StarLogo is a programmable modeling environment for exploring the workings of decentralized systems -- systems that are organized without an organizer, coordinated without a coordinator. With StarLogo, you can model (and gain insights into) many real-life phenomena, such as bird flocks, traffic jams, ant colonies, and market economies.

    In decentralized systems, orderly patterns can arise without centralized control. Increasingly, researchers are choosing decentralized models for the organizations and technologies that they construct in the world, and for the theories that they construct about the world. But many people continue to resist these ideas, assuming centralized control where none exists -- for example, assuming (incorrectly) that bird flocks have leaders. StarLogo is designed to help students (as well as researchers) develop new ways of thinking about and understanding decentralized systems.

    StarLogo is a specialized version of the Logo programming language. With traditional versions of Logo, you can create drawings and animations by giving commands to graphic "turtles" on the computer screen. StarLogo extends this idea by allowing you to control thousands of graphic turtles in parallel. In addition, StarLogo makes the turtles' world computationally active: you can write programs for thousands of "patches" that make up the turtles' environment. Turtles and patches can interact with one another -- for example, you can program the turtles to "sniff" around the world, and change their behaviors based on what they sense in the patches below. StarLogo is particularly well-suited for Artificial Life projects.

    StarLogo TNG is The Next Generation of StarLogo modeling and simulation software. While this version holds true to the premise of StarLogo as a tool to create and understand simulations of complex systems, it also brings with it several advances - 3D graphics and sound, a blocks-based programming interface, and keyboard input - that make it a great tool for programming educational video games.

    Through TNG we hope to:

    1. Lower the barrier to entry for programming with a graphical interface where language elements are represented by colored blocks that fit together like puzzle pieces.
    2. Entice more young people into programming through tools that facilitate making games.
    3. Use 3D graphics to make more compelling and rich games and simulation models.

Filter by type:

Sort by year:

Teaching Experience

  • Spring 2023

    Software Engineering for Startups

    CMU

    Co-taught with Michael Hilton

  • Summer 2022

    Educating Autistic Software Engineers Coding Camp

    Clemson University

    Co-taught with Paige Rodeghero

  • Summer 2021

    Computer Game Coding Camp

    Clemson University

    Co-taught with Paige Rodeghero

  • Summer 2020

    Clemson Game Coding Camp

    Clemson University

    Co-taught with Paige Rodeghero

  • Spring 2018

    INFO 461: Cooperative Software Development

    University of Washington, Information School

    Course Instructor

  • Winter 2013

    INFO 461: Cooperative Software Development

    University of Washington, Information School

    Course Instructor

  • Spring 2001

    CS301: Teaching Techniques for Computer Science

    University of California at Berkeley

    Co-taught with Daniel D. Garcia

  • Spring 2000

    CS164: Introduction to Compilers

    University of California at Berkeley

    Graduate Student Instructor. Course taught by Alexander Aiken and George Necula

  • Fall 1997

    CS61a: Structure and Interpretation of Computer Programs

    University of California at Berkeley

    Graduate Student Instructor. Course taught by Brian Harvey

Contact and Meet Me

I would be happy to speak with you about my research, CMU, or any questions you have about your own work.

  •    work: ude.umc@legeba
  •    personal: moc.legebwerdna@legeba
  •    moc.evil@legeba
  •      abegel
  •    @abegel
  •    andrewbegel

CMU Office

Please come my office at TCS 441.

TCS Hall is at 4665 Forbes Ave. Pittsburgh, PA 15213.