There is a critical need for better software design, development, test, and propagation processes.
Software Engineering and Programming Languages
How CrowdStrike Stopped Everything
The CrowdStrike global IT outage put millions of systems and their data out of reach.
If computing science wants to really be a science, we need to think about how we encourage people to defend their scientific claims with reproducible results.
The Vulnerability-Adaptive Protection Paradigm
Resiliency solutions for autonomous machines make trade-offs between resiliency and cost.
Operational and Analytic Data Cycles
In highly effective environments, operational and analytic data cycles never end.
A recounting of the past half-century of database technology.
Gradual Differentially Private Programming
The adoption of type systems in recent years has been facilitated by gradual typing.
Requirements Engineering in Latin America: The Case of the WER
The Workshop on Requirements Engineering, a platform for research that addresses emerging trends and challenges, has been a springboard for emerging scholars.
Recent Advances on Principles of Concurrent Data Structures
Exploring new static and dynamic techniques on proving linearizability.
Ensuring application security from design to operation with DevSecOps.
Free and Open Source Software–and Other Market Failures
Computing has scientific roots, and if it is not open source, it is not science.
A Four-Stage Approach for Hiring Women on Your Engineering Team
Zero-Knowledge Proofs and Their Role within the Blockchain
An examination of the intricate world of zero-knowledge proofs and how they may be used to enhance blockchain security and privacy.
Utilizing Microservice Architectures in Scalable Web Applications
Microservices can be deployed and scaled independently, which facilitates faster development cycles and more resilient applications.
The Rise of the AI Co-Pilot: Lessons for Design from Aviation and Beyond
Co-pilot is a useful metaphor for describing how AI technology is intended to act in relation to human users.
From Open Access to Guarded Trust
Engineers stand at a unique confluence, where the exhilarating promise of innovation meets the sobering responsibility of trust stewardship.
Vendor Software Solutions in a Cloudy World
JavaScript Language Design and Implementation in Tandem
Technical Perspective: The Software-Centric Approach of SYNERGY
The advantages of a software rather than hardware approach to FPGA virtualization.
Compiler-Driven FPGA Virtualization with SYNERGY
SYNERGY virtualizes FPGAs to be used effectively in datacenters.
Nand to Tetris: Building a Modern Computer System from First Principles
Shape the Future of Computing
ACM encourages its members to take a direct hand in shaping the future of the association. There are more ways than ever to get involved.
Get InvolvedCommunications of the ACM (CACM) is now a fully Open Access publication.
By opening CACM to the world, we hope to increase engagement among the broader computer science community and encourage non-members to discover the rich resources ACM has to offer.
Learn More