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:
In 2021, 20 years later, these views by Abelson and Greenspun need the attention of both academics and Industry. In the last 20 years,
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:
the subject must have instilled
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,
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:
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.
No entries found