ACM Experts Contribute to 12th Edition of Understanding Computers
Five ACM members have contributed information
included in the 12th Edition of Deborah Morley’s college textbook Understanding
Computers: Today & Tomorrow.
The edition features Stuart Feldman, President of ACM and Vice President, Engineering, Google, as a Guest Expert for the Systems module. Also included are contributions from Kathleen Fisher of AT&T Research and SIGPLAN Chair; Chandra Krintz of UC Santa Barbara and SIGPLAN Vice Chair; Kevin Scott of AdMob and ACM’s Executive Committee and Education Board; and Moshe Vardi of Rice University, the new Communications of the ACM Editor-in-Chief.
EXPERT INSIGHT ON . . .
Systems
A conversation with STUART FELDMAN
President of ACM and Vice President, Engineering, GoogleView the conversation in .pdf
My Background . . .
I am one of the original computer brats—I learned to program on a vacuum tube machine in the early 1960s as a kid at a summer course. I was enthralled by computer programming, and the ability to create programs that did new and surprising things.
Throughout my computer career, I’ve worked as a computer science researcher at Bell Labs, a research manager and software architect at Bellcore, and as Vice President for Computer Science at IBM Research. I am now a Vice President at Google (and responsible for engineering activities at Google’s offices in the eastern half of the Americas), as well as President of ACM (Association for Computing Machinery)—the largest computing society in the world. Overall, my career has been spent in research at very high-tech companies, working on the cutting edge of computing. It’s fun and exciting.
“as information arrives and can be examined more easily, we can do a better job of managing our health, our activities, and our personal interactions.”
It’s Important to Know . . .
The world of data has shifted radically. I can remember when a megabyte was a lot of information. Today, a gigabyte fits on a thing in your pocket, a terabyte fits on an inexpensive disk, and many large companies manage petabytes—and organizations managing an exabyte of data are coming soon. The types of information to be managed are also shifting—most information today is visual, audio, or executable (not rows and columns of numbers).
Programming languages last a long time. While most programmers write in dynamic languages (such as PERL and Python) today, COBOL and FORTRAN programs are still being written and variants of C are still being born. And even more people do programming without thinking about it (such as creating or modifying word processing macros, spreadsheet formulas, and Web gadgets). We will almost certainly see a continuing expansion of the spectrum—a hard core of experts supporting basic systems and tools, and millions (perhaps billions) of people doing occasional programming and customization.
The impact of systems on society is tremendous. System capabilities have made enormous increases in efficiency possible, and have also opened new types of business and social activities. Think about how banking has changed in the last decade, and about how you look up information and find people. Also, think about how personal communication and expectations have shifted from sending letters with a stamp, to sending e-mail, to texting on a mobile device. Perhaps our attention span has shrunk, but our ability to reach out has increased. Information systems support globalization and rapid business change— sharing of information, shifting of jobs, and the creation of new jobs and whole new types of careers.
“The best preparation for a long and successful career is to understand the fundamentals of computing deeply, and be able to apply them to new situations.”
How I Use this Technology . . .
I spend a lot of time writing papers and presentations, so I use the Google Docs applications and the Microsoft Office suite—both complex systems that maintain data and perform reliably. I use secure, integrated financial systems when I perform online financial transactions. Of course, my favorite system “application” is the World Wide Web, which is a remarkable linkage of data servers, application providers, and communication systems. I use it many times a day for research, communications, shopping, and amusement.
What the Future Holds . . .
The cost of computing, measured in cost of instructions executed or information stored or transmitted, will continue to drop. This exponential curve will drive many of the improvements we will see in the future. In addition, the value of information and knowledge that is encapsulated in computer programs will increase—once something is in code, it can be used and replicated at low incremental cost. This will continue to drive our digitization and automation of activities.
There will also be the increasing ability to do massive amounts of computing for enormous numbers of users, and to apply computing resources to problems that were too expensive to address just a few years ago. This will be facilitated by the increased use of integration and by using available software and services in innovative ways, as well as by dynamic languages and the increased use of Web standards.
There will be new service computing models, ranging from enterprise SOA to user-based mashups to entirely new service industries like Google search tools and remote medical advice. For program development, we’ll see increasing agility—shifting from waterfall and rigid development methods to more exploratory, prototype-based methods. Verification and testing will continue to be essential.
Perhaps the biggest shifts will come from our increasing dependence on information and access, the risks when things go wrong, and the possibilities of new applications that can improve our lives. For instance, as information arrives and can be examined more easily, we can do a better job of managing our health, our activities, and our personal interactions.
My Advice to Students . . .
IT jobs, computer applications, programming languages, approaches to system development, and business needs are always changing. The best preparation for a long and successful career is to understand the fundamentals of computing deeply, and be able to apply them to new situations. You need to become expert in some area—such as a programming language, a methodology, or an environment—but you also must always be prepared to learn new technologies and gain new expertise.
Stuart Feldman is currently the President of ACM and a Vice President of Engineering at Google.
He is a member of the Board of directors of the AACSB (Association to Advance Collegiate Schools
of Business), a Fellow of the IEEE, a Fellow of the ACM, and serves on a number of government
advisory committees. He is a recipient of the 2003 ACM Software System Award for creating a
seminal piece of software engineering known as Make, a tool for maintaining computer software.
Stuart has a Ph.D. in Mathematics from MIT.
ASK THE EXPERT
Kathleen Fisher, AT&T Research, Chair of the ACM Special Interest Group on Programming Languages
What is the most important programming language for a college computer student to learn today?
There is no one programming language that is the most important to learn. Rather, it is important for students to understand how programming languages allow people to express precisely what they want computers to do. Each language provides its own way of accomplishing this task, which provides a model of computation. As a result, different languages are best suited to different tasks. For example, low-level systems coding is easiest in a language like C, whose model is close to the underlying machine. In contrast, compilers are particularly easy to write in functional languages like ML, Haskell, and Scheme because such languages facilitate tree transformations, the lifeblood of compilers.
When faced with a programming task, astute programmers select the most appropriate language for the task, taking into consideration the characteristics of the candidate languages and their available libraries and tools. As with natural languages, each programming language that a student learns makes learning the next one easier.
ASK THE EXPERT
Chandra Krintz, University of California, Santa Barbara; Vice Chair of the ACM Special Interest Group on Programming Languages
Are programming skills necessary to be a Web site developer today?
Yes, more than ever. Web sites today are dynamic, interactive, complex, and highly adaptive to appeal to the specific and changing needs of the individual users and consumers that constitute today’s competitive commercial markets and popular Web communities. Programming languages have evolved to support existing and emerging Web technologies. Developers today must be able to use effectively a wide range of high-level programming language technologies, such as Java, AJAX, Ruby/Rails, Python, ASP.Net, and PHP, and to adapt quickly to new languages, frameworks, and practices. Programming expertise enables developers to implement efficiently dynamic Web page content, as well as the distributed and layered systems through which Web pages interact with databases and other back-end applications. In addition, strong and marketable programming skills today include team-based work styles and pair programming, test-driven program deployment, agile workplaces, and use of visual and interactive development environments. Programming skills are key to the success, productivity, and satisfaction of today’s Web developers.
ASK THE EXPERT
Kevin Scott, Vice President of Engineering, AdMob; Member-at-Large, ACM Council
What are the biggest mistakes applicants for a computer position make today?
If your goal is to have a substantial role in the creation of new technology and a long career, focusing too much on certifications and specializations in technologies that are likely to change quickly is a big mistake. Instead, applicants should focus on mastering underlying principles of technology and on honing problem solving skills so that they will be able to adapt to new challenges as the technology landscape changes.
What is the hottest IT-oriented job today? What positions do you expect to be in the most demand five years from now?
The explosive growth of networked services and the data that they create is going to continue to create huge demand for Web application developers, distributed systems and network engineers, and analytical engineers experienced in information retrieval, machine learning, natural language processing, data mining, and basic statistical techniques.
How has the massive amount of data stored by businesses today affected programming?
It puts a sharp focus back on algorithms, data structures, and basic design for performance. When data volumes are large, your choice of data structures and algorithms for doing even simple-sounding tasks can make the difference between a task running in a few hours versus a few years. Also when your data analysis and processing tasks are large and run on many hundreds or thousands of machines, tuning application performance can often save far more money and time than the cost of doing the actual tuning.
ASK THE EXPERT
Moshe Vardi, Rice University, Co-Chair of the ACM Globalization and Offshoring of Software Taskforce.
Is there a national security risk as a result of software development being outsourced to other countries?
Offshoring magnifies existing risks and creates new and often poorly understood threats. When businesses offshore work, they increase not only their own business-related risks (e.g., intellectual property theft), but also risks to national security and to individuals’ privacy. While it is unlikely these risks will deter the growth of offshoring, businesses and nations should employ strategies to mitigate them. Businesses have a clear incentive to manage these new risks to suit their own interests, but nations and individuals often have little awareness of the exposures created. For example, many commercial off-the-shelf (COTS) systems are developed offshore, making it extremely difficult for buyers to understand all of the source and application code in the systems.
This creates the possibility that a hostile nation or nongovernmental hostile agent (such as a terrorist or criminal) can compromise these systems. Individuals are also often exposed to loss of privacy or identity theft due to the number of business processes being offshored today and managed under much less restrictive laws than in most developed countries.
About Deborah Morley
Deborah Morley began her writing career in 1995 and has authored more than 10 computer textbooks, including Understanding Computers: Today and Tomorrow and Computers and Technology in a Changing Society. Deborah earned her B.S. and M.S. degrees in Business Information Systems from California State University, Fresno. She has over 10 years of full-time experience teaching computer concepts, applications, Web design, programming, business math, and accounting courses at the college level.
