Lamenting that CS Students are often not exposed to best practices in the classroom, software engineer Thomas A. Limoncelli offered advice for serving students better in his article "Four Ways to Make CS and IT More Immersive" (Oct. 2017). We agree with that sentiment, as we reported in our Viewpoint "Crossing the Software Education Chasm" (May 2012), describing development of a course very much in line with Limoncelli's recommendations. We continue to welcome instructors to use our course materials and approach for Engineering Software as a Service, or ESaaS, originally developed at the University of California, Berkeley, as a way to follow Limoncelli's guidelines:
Use best-of-breed dev/ops tools from the start. In our ESaaS course, students use Git from day one, including (in their open-ended design project) badges for coverage, CodeClimate, and continuous integration.
Homework programs, even Hello World, should generate Web pages, not text. This requires some minimum understanding of SaaS architecture, languages, and moving parts. ESaaS's week-two assignment requires that students modify and deploy to the public cloud a simple SaaS app built with the Sinatra framework. The goal is to get them "thinking SaaS" early on by addressing several questions: How is state persisted? How does the app interact with the user? How do routes and URIs map to actions the user wants to take? And how can apps be structured as a set of RESTful resources and operations?
Curricula should start with a working system that reflects best practices, not just build from low-level to higher-level abstractions. The same assignment requires that students examine the code of a simple Sinatra app that demonstrates good coding practices, including integration and unit testsbefore being introduced to creating or reading code for such tests.
Focus on reading, understanding, and adding value to existing systems, a practice much more common in software engineering than greenfield development. ESaaS includes a two-part homework assignment on enhancing legacy code, but, more valuable for students, an increasing fraction of available team projects for nonprofits undertaken in Berkeley's version of the course10 of 11 projects in Summer 2017 and 13 of 20 projects in Fall 2017are functioning legacy systems in need of additional features. Agile-Ventures, a U.K. nonprofit with which we work closely and whose developer-training programs closely follow the ESaaS pedagogy and methodology, also curates a portfolio of such "legacy systems" to support its mission of training developers to contribute to open-source projects in agile teams, as do several other colleges using our materials.
We applaud Limoncelli for urging CS instructors to more closely track best practices in industry. We invite students and instructors to try our free two-part (soon three-part) MOOC sequencecalled Agile Development Using Ruby on Railson edX and invite instructors to avail themselves of the wealth of instructor materials available through http://www.saas-book.info/, including auto-graders to relieve them of having to manually grade these realistic assignments.
Armando Fox and David Patterson, Berkeley, CA, and Sam Joseph, Harrow, U.K.
Inspire Ethical Behavior Within the Profession
In his Editor's Letter "Computing Is a Profession" (Oct. 2017), Editor In Chief Andrew A. Chien said those in computing should welcome, educate, and mentor new generations, not just as programmers but as professionals. We agree. That is why, in 2010, we and 15 other individuals established The Pledge of the Computing Professional (http://computing-professional.org/) to recognize graduates of computing programs as professionals in service to society, as the Order of the Engineer (http://www.order-of-the-engineer.org/) does with graduates of U.S. engineering programs. Today, 38 institutions in the U.S. conduct the Pledge's rite-of-passage ceremony as part of their graduation activities. Graduates taking the Pledge sign a certificate both publicly and in the presence of their peers and are then presented with a pin to remind them of their commitment to self-accountability through ethical and moral behavior within the profession.
The Pledge has been endorsed by the Order of the Engineer, the ACM Special Interest Group on Computers and Society, and the ACM Committee on Professional Ethics. We would welcome a more comprehensive collaboration with ACM toward our mutual goal of promoting the attributes of deep technical expertise, essential, valued, societal contribution, and the need to adhere to high ethical and technical standards characteristic of the noblest ambitions of the profession.
For more on the Pledge, see http://computing-professional.org/ or contact us directly.
John K. Estell, Ada, OH, and Ken Christensen, Tampa, FL
Communications welcomes your opinion. To submit a Letter to the Editor, please limit yourself to 500 words or less, and send to [email protected].
©2017 ACM 0001-0782/17/12
Permission to make digital or hard copies of part or all of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and full citation on the first page. Copyright for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, to republish, to post on servers, or to redistribute to lists, requires prior specific permission and/or fee. Request permission to publish from [email protected] or fax (212) 869-0481.
The Digital Library is published by the Association for Computing Machinery. Copyright © 2017 ACM, Inc.