A Four-Stage Approach for Hiring Women on Your Engineering Team
Software Engineering and Programming Languages
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
A Roadmap for Using Continuous Integration Environments
The Risks of Source Code Breaches
Vendor-Locked DevOps Strategies
Adopting and Sustaining Microservice-Based Software Development
The microservice approach to software development offers an alternative to the conventional monolith style.
Dynamic Placement in Refugee Resettlement
In this paper, we design an online algorithm for refugee allocation.
Technical Perspective: Improving Refugees’ Integration with Online Resource Allocation
"Dynamic Placement in Refugee Resettlement," by Narges Ahani et al., applies online resource allocation concepts to a new and important area: refugee resettlement.
Language-Based Software Testing
Combining Machine Learning and Lifetime-Based Resource Management for Memory Allocation and Beyond
We introduce a two-step approach to attain high memory utilization in huge pages, which gives rise to a new methodology for applying Machine Learning in computer systems.
Technical Perspective: Learning-Based Memory Allocation for C++ Server Workloads
"Learning and Lifetime-Based Resource Management for Memory Allocation and Beyond," by Martin Maas et al., explores the potential of using imperfect information in the design of memory managers.
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