Our world-class faculty at Carnegie Mellon lead the field in research exploring these complex social network. Ranging from the analysis and identification of terrorist threats to sophisticated studies of online community health and efficacy, we seek to deepen our understanding of the science underpinning many of the interconnected networks which comprise much of our lived experience.
Research
In S3D, our research focuses on the intersection of software, systems and society. We apply rigorous scientific approaches to address the most challenging and impactful sociotechnical issues of our day. Our work not only moves the field forward, it moves us closer to a better world.
Our work can broadly be categorized into Software Engineering and/or Societal Computing, each consisting of several cross disciplinary-thrusts.
Analysis & Assurance
As software becomes a more critical part of the economy and of our daily lives, its developers and users need assurance that the software has desired properties. We are developing new analysis techniques and tools that verify new kinds of properties of both specification and code, and which scale to larger systems and more diverse configurations than ever before.
Faculty
Fraser Brown
Vincent Hellendoorn
Eunsuk Kang
Christian Kästner
Claire Le Goues
Heather Miller
Rohan Padhye
Bill Scherlis
Example Research
TypeChef
Alloy*: An Analysis Engine for Higher-Order Logic Specifications
APIs & Frameworks
Most programming today makes use of APIs and Frameworks, as a key enabler of code reuse. How should these APIs and Frameworks be designed, to maximize their quality, including usability, helping programmers avoid errors, and maintainability of the API and the resulting code? What tools (often plugins for IDEs) and documentation can best help programmers learn and use APIs and Frameworks?
Faculty
Heather Miller
Brad Myers
Josh Sunshine
Example Research
API Usability
Applied Systems and Infrastructure
Whether it's building smart grids which use historical usage data to estimate consumption or promoting public health through the medicalization of off-the-shelf consumer electronics, an understanding of the problem being addressed and the challenges the solution gives rise to is critical.
It is here that our work on applied systems and infrastructure thrives. In a world where sensors are embedded in our roads and Internet of Things technologies generate massive amounts of data, how do we engineer such systems to do the most good while preventing misuse? Our cross-cutting faculty address such concerns in an interdisciplinary fashion, leveraging computer science, big data analysis, electrical and computer engineering, alongside social sciences to forge breakthroughs which will shape the world of responsibly developed technology to come
Faculty
Yuvraj Agarwal
Lujo Bauer
Justin Chan
Fei Fang
Mayank Goel
Zico Kolter
Norman Sadeh
Example Research
EduSense: Classroom Sensing Systems
MITES
Protection Assistant for Wildlife Security
Architecture & Design
Software design involves a sequence of decisions that determine the overall structure of a system and allocation of behaviors to its parts. Research in software design explores representations of design decisions and constraints, tools for reasoning about the impact of these decisions, and techniques for ensuring that the decisions are properly implemented. Software architecture is the study of design at scale, with emphasis on high-level structures and interactions that govern the overarching design and evolution of the system. Learn more about the history of Software Architecture at Carnegie Mellon.
Faculty
David Garlan
Eunsuk Kang
Bradley Schmerl
Mary Shaw
Example Research
ABLE Group
A Contract-Based Framework for System Decomposition
Autonomous Systems
Autonomous systems are systems that perceive information about the state of themselves and the environment they are running in, and adapt their behavior or structure to respond to changes in that state. Examples of autonomous systems are elastic cloud applications, robots and self-driving cars, and many control systems. The challenge with such systems is to develop software engineering techniques to (a) develop such systems in a principled and cost-effective manner, (b) assure that the systems work as expected as they make changes to their own behavior, and (c) build trust in their decisions by explaining them, or working with human operators. Research at CMU is looking into each of these aspects.
Faculty
Jonathan Aldrich
David Garlan
Claire Le Goues
Bradley Schmerl
Example Research
Model-Based Adaptation of Robotic Systems
Explainable Systems: Improving Confidence in Autonomous System
Runtime Safety Monitoring of Intelligent Vehicles
Complex Socio-Technical Systems
We live and work in complex, adaptive and evolving socio-technical systems. This expansive and interdependent web of technology and social interaction gives rise to a number of complex challenges from both technical and social perspectives.
The opportunities to examine the relationships between technology and the social consequences to which it gives rise is vast. And our research in Complex Socio-Technical Systems brings together a renowned set of cross-disciplinary faculty to address these questions using tools and methods drawn from network science, social network analysis, big data analytics, statistical analysis, and the social sciences.
Faculty
Andrew Begel
Kathleen M. Carley
Jim Herbsleb
Norman Sadeh
Bogdan Vasilescu
Example Research
Diversity in Online Software TeamsBadges on npm Packages
Computing Technology and Policy
Technology is invariably guided by policy. Whether it is public policy originating from government bodies or corporate policy, the technology landscape is bound and shaped by policy. And while it is important that current technologies comply with existing laws and policies, we must also strive to shape the future of technology. Both through the public and private sectors, it is imperative that a robust understanding of socio-technical implications lead to actionable policy that guides technology in a direction which betters the world.
Faculty
Travis Breaux
Kathleen M. Carley
Lorrie Cranor
Norman Sadeh
Example Research
Personalized Privacy Assistant
Usable Privacy Policy Project
Developer Tools
Developers use a wide variety of tools in the course of their normal work, across the entire software engineering life-cycle. These include compilers, debuggers, integrated development environments (IDE), and tools that do static analysis, visualization, web analytics, etc. These tools help developers enter code efficiently and correctly, understand existing code, and evaluate the code for an increasing variety of properties, including correctness across various dimensions, performance, and even the usability of the resulting design. Research focuses on increasing the range of what can be automatically evaluated, the quality of the resulting code and developers’ insights, and improving the usability of the tools so developers can use them successfully.
Faculty
Vincent Hellendoorn
Brad Myers
Rohan Padhye
Bradley Schmerl
Joshua Sunshine
Bill Scherlis
Example Research
ACME Project
Support for Exploratory Programming
Natural Programming
Distributed Systems
Nowadays, most software applications involve multiple devices. For example, a mobile app might interact with one or dozens of other cloud services, or a data scientist might search for insights in a dataset that sits in the memory spanning many computers. These applications are distributed systems, and are challenging and error-prone to develop. Research on programming for distributed systems focuses on ensuring the correctness of computations that span multiple compute nodes, improving the performance and reliability of these systems, and exploring new techniques for composing and reusing software abstractions in the design and implementation of these systems.
Faculty
Yuvraj Agarwal
Heather Miller
Example Research
Programming language support for eventual consistency
Composition and correctness of eventually consistent datatypes
Composition of serverless functions
Mites -- a Scalable Hardware-Software Stack for General-Purpose IoT
MLIoT -- A Training/Serving System for ML for the IoT
Verifying configurations of microservices
Languages
Programming languages are the most basic tool of the software engineer, and language research provides fundamental advances in our ability to express programs and their designs. ISR’s research focuses on language and type system abstractions that provide strong theoretical guarantees while at the same time increasing the productivity of developers and helping them avoid introducing defects.
Faculty
Jonathan Aldrich
Fraser Brown
Heather Miller
Brad Myers
Example Research
Obsidian: a Safer Blockchain Programming Language
Usable Design-Driven Assurance in the Wyvern Language
Natural Programming
Network Science and Social Networks
The whole world is networked. From the most inconspicuous administrative to the most notorious arms dealer, we are all connected through those with whom we interact. And, as technology becomes a more pervasive force in our daily lives, many of these networks can be observed, measured, analyzed, and understood through the data that they produce.
Faculty
Kathleen M. Carley
Jim Herbsleb
Norman Sadeh
Example Research
Multi-Source Assessment of State Stability
Online Extremist Community Detection
Organizations
Organizations focuses on the human and organizational aspects of software development: how people organize to develop software and how these organizations influence the structure and quality of the resulting software.
Faculty
Andrew Begel
Jim Herbsleb
Claire Le Goues
Joshua Sunshine
Bogdan Vasilescu
Example Research
Breaking APIs
Diversity in Online Software Teams
Privacy and Security
In today's interconnected world, security and privacy are becoming ever more central to software. Our research helps to ensure that software's privacy policies meet the needs of users and serve the public interest; that software systems conform to these privacy and security policies; and that systems can adapt and continue to provide service even while under attack.
Faculty
Example Research
Mobile App Privacy - Brandeis Project
Self-Protection/Security-Related Self-Adaptation
Modeling and Analysis of Cross-Layer Security Attacks
Matcha -- Creating Accurate Mobile App Labels
IoT Security and Privacy Labels
Requirements
Modern information systems must conform to a complex set of requirements that include functional requirements to satisfy stakeholder goals, as well as, policy and legal requirements to conform to societal norms. Systems that cut across individual and societal needs include mobile and web-based applications developed using lightweight, agile methods, and traditional plan-driven designs in health, finance and aviation. In each category, requirements engineering is concerned with the use of different forms of expression, from natural language to formal logic, to describe and (semi-automatically) reason about problems and solutions at-scale. This topic combines research from natural language processing, formal methods, knowledge representation and judgement and decision-making to predict how systems are intended to operate and how and why they might fail to operate, correctly.
Faculty
Travis Breaux
Example Research
Composable and Usable Security and Privacy Requirements
Handling Risk and Uncertainty in Security Requirements Analysis
Harmonizing Multi-Jurisdictional Privacy and Security Policy.
Software Data Analysis
Software Data Analysis is a field that analyzes the rich data available in software repositories (e.g., version control systems, archived communications, online communities) to uncover interesting and actionable information about software systems, software development projects, and the teams managing them.
Faculty
Vincent Hellendoorn
Jim Herbsleb
Claire Le Goues
Joshua Sunshine
Bogdan Vasilescu
Example Research
Repository Badges on npm
Statistical Name Recovery