BLOG@CACM
Education

20 Years of ‘Software Engineering for Innovative Internet Applications’

Posted

Twenty years back, at the Tenth International World Wide Web Conference, Hal Abelson and Philip Greenspun presented a paper on "learnings from teaching a Subject offered at MIT."1 The subject under discussion was "Software Engineering of Innovative Internet Applications."

I came across their paper sometime in 2006/2007 while browsing through the content of a similar subject/course titled "Software Engineering for Internet Applications."

I am neither an MIT student nor an academician, but as a software professional, I was impressed by the focus and intentions of the subject. The subject emphasized "Engineering Software" while teaching "Development of Innovative Internet applications" using current/emerging technologies.

The Abelson and Greenspun conference paper starts with a question: "Why is software engineering part of the undergraduate computer science curriculum"? This question is relevant even today. Industry expects the software developer to be also a great software engineer. How much does a student really practice software engineering during their undergraduate studies? Even if a student applies/uses software engineering principles during, say, a student project, are they being evaluated based on their skills?

Continuing its stress on software engineering, the Abelson and Greenspun paper further suggests:

     To contribute to the information systems of the next 20 years, in addition to the material in the core computer science curriculum, we have to teach students:

  • object-oriented design, in which each object is a Web service (distributed computing)
  • about concurrency and transactions
  • how to build a stateful user experience on top of stateless protocols
  • about the relational database management system.
    Teaching Software Engineering by Hal Abelson and Philip Greenspun, Tenth International World Wide Web Conference, 2001.1

In 2021, 20 years later, these views by Abelson and Greenspun need the attention of both academics and Industry. In the last 20 years,

  • Internet Applications have evolved in terms of size, complexity, and availability.
  • Driven by Business need, underlying front-end/back-end Web technologies and execution platforms of these Internet Applications have undergone multiple changes.
  • These changes a evolution of technologies and platforms allowed software professions to develop and support user-centric, multi-channel, secured, easily adaptable/integrable/accessible, intelligent, scalable, multi-tenant, Geography/Region agnostic and real 24/7 high-performance Internet applications.

BUT — Have they impacted the Vision ahd Mission of Abelson and Greenspun's Subject, "Software Engineering for/of Innovative Internet Applications"? The title of th3e paper transcended changes in such technologies and platforms. I am sure content must have been modified every year. More importantly, in addition to technologies and platforms, students who attended this subject/course must have learned/understood:

  • Real-life situations / challenges and

the subject must have instilled

  • the importance of Modularity, Distribution, Scalability, etc., through course content.

Step Forward: Retrospective Action

When I recently got involved with one institute for course curriculum of IT undergrads, I again remembered Abelson and Greenspun's above-mentioned paper and my 2006/2007 reading of course content of "Software Engineering for Internet Applications." I recalled their smooth integration of various software engineering disciplines/methods while teaching a student about building end-to-end (full-stack) Internet applications.

Today, during evaluation of IT undergraduate course curriculum, I ask myself:

Considering that students learn "OO programming in XYZ," "Web Technologies," … "Distributed & Cloud Computing," etc., as independent courses/subjects,

  • How can we ensure that students will be able to apply a systematic, disciplined, quantifiable approach to the development and maintenance of software (components/applications/products) using such paradigms andechnologies?
  • How they will be able to develop a software which is production-ready and maintainable?

The question is more about time-window and habit. Industry will be really overjoyed if they find a Fresher who appreciates software engineering and, to some extent, the assimilated principles of software engineering.

Educational institutes try to match industry expectations and student aspirations within their own constraints. They definitely cannot take complete responsibility for making every student a great software professional. Also, it may not be easy for every educational institute and computer science/IT department to design a course and teach a subject like "Software Engineering of Innovative Internet Applications."

To achieve these goals, within given constraints, few educational institutes think of logical threads running through compulsory and elective courses. One typical logical thread is continuously improving the student's programming proficiency. The same thread of ideas exists when they offer varied courses like "Web Technologies," "Introduction to Python," "Blockchain Technologies," "Data Science and Analytics," "Distributed and Cloud Computing," "Bitcoin and Cryptocurrencies," etc.

But the missing dimension is the engineering approach of applying these isolated learnings to build applications; that is, students do not appear to learn "Software Engineering for XYZ Applications." They are not even evaluated on their software engineering approach during problem solving.

In fact, this small step of the software engineering dimension while educating students on various programming languages, (Web/Mobile …) technologies, and new technology areas, etc., will make a big difference both for students and industry. So, you can even think of "Software Engineering for Data Science Applications" while teaching "Data Science/Analytics using Python."

In brief, Abelson and Greenspun's paper needs attention from both industry and Academics, who need to think about:

  • What should be the Vision & Agenda in 2021?
  • What, in addition to the core computer science curriculum, should academics be teaching IT undergraduate students for "engineering innovative Information Systems of the next 20 years"?

References

1) Teaching Software Engineering — lessons from MIT: by Hal Abelson and Philip Greenspun
Presented at the Tenth International World Wide Web Conference (Hong Kong), May 1-5, 2001.

 

Vivek S. Buzruk is a DevOps consultant at SarvaTech Consultants Inc. India, and a 'Board of Studies' member for the IT Dept. in Pimpri Chinchwad College Of Engineering (PCCoE) in Pune, India, mainly focusing on DevOps insights and custom software development.

Join the Discussion (0)

Become a Member or Sign In to Post a Comment

The Latest from CACM

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 Involved

Communications 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