In the past 25 years I’ve studied or taught at three different universities, and through that time I’ve seen a transition through the current technologies to teach software development. In particular, departments chose Smalltalk, C++, and Java to teach object-oriented programming and development. The standardization of OO technologies allowed new practices to emerge in the workplace: design patterns, agile processes, refactoring, test-driven development, etc. These are the real world disciplines that students ought to learn, so a school's choice of technologies is important.
Of course over the past fifteen years a sizable amount of software development has shifted to the web. Web development is different, and it bears issues and disciplines that extend beyond the traditional field of computer science. A well-rounded learning experience should include hands-on practice with web technologies and exposure to related issues like security and internationalization. Students expect that, and the web industry would benefit from such graduates.
Five years ago I shifted to fulltime web development. My selection of Joomla over other CMSs was deliberate and informed from my past. I wanted a CMS platform that would allow me to apply the disciplines I gained through my software engineering days. Joomla was the logical choice for someone like me. If I were to return to university teaching, I would select Joomla as the web platform for student assignments. Here are my reasons why:
1. Open Source
This is a no-brainer. To be used in university study, any technology candidate must have a code base that is freely open for students to work with.
In the field of software engineering, the lack of OO is a deal-breaker. Object-oriented design is how we teach data encapsulation, abstraction, inheritance, polymorphism, cohesion versus coupling, collaboration and dependencies of objects, code reuse, and all the other essential principles of good software design. Further, OO is the enabling factor for some of the most important disciplines of the past twenty years. We need an object-oriented system for teaching…
- Design Patterns: Reusable abstract solutions to common design problems.
- Unit Testing and Test-Driven Development: Growing a suite of tests to guide the development of software and to identify code changes that break previously proven behavior.
- Refactoring: Improving the maintainability of software. (OK, one can refactor procedural code, but so much of refactoring assumes OO.)
- Design Principles: The use of objects enables us to discover and practice proven design principles like “open-closed,” “Liskov substitution,” and “dependency-inversion.”
Within the significantly fragmented CMS marketplace, the list of candidates narrows significantly when we demand open source and object-oriented. Of those CMSs meeting these two important criteria, Joomla is the most deployed and holds a large community of both developers and end users.
3. IDE support
Any development platform for student use ought to allow for debugging as well as installation on a laptop. Web technology accommodates.
Software professionals use IDEs (Integrated Development Environment), and multiple IDEs support Joomla development. For instance, PhpStorm, a commercial IDE which is free for classroom use, provides debugging of web pages and web apps, integrates with version control systems like GitHub, and offers powerful coding tools like refactoring. Other IDEs like Eclipse and NetBeans provide similar functionality.
Further, because web servers can be installed and run on a laptop, each student can have his/her own installation and dedicated development environment.
5. Access Control / Security
Security is a very important concept to teach in the age of the Internet. Joomla is exceptionally strong here as its native ACL (Access Control List) integrates a configurable system of users, groups, and permissions. Established security models such as RBAC (Role-Based Access Control) can be taught hands-on using Joomla’s ACL.
Web-based development needs to think globally. Being a world-adopted CMS, Joomla bakes multi-language functionality into its core. Over 60 language packs are available for installation, and every project is strongly encouraged to implement this feature. Well-designed components illustrate the importance of multi-lingual sites and demonstrate how multiple languages can be implemented.
7. Libraries and Code Reuse
The entire CMS is built upon reusable libraries from which core and third-party components are expected to extend. Students can walk through code execution to better understand the principles of code reuse and package dependencies. Departments and students can create and add their own libraries and API sets for extending into specialized applications.
8. Real Web Applications
Known as a CMS, Joomla is also a platform for developing full-featured web applications. Virtually any student assignment that has required desktop compilers (C#, Java, etc) also can be programmed in PHP upon the Joomla platform – either as a CLI executable or as a web application. As a web application the developer can utilize the CMS’s rich features such as user management, access control, database access, and web page displays. A student’s work doesn't have to be theoretical – it can be packaged into a real and distributable web application.
9. Real Opportunities
Since Joomla is open source and constantly developed by its community, well-developed student projects can be contributed to the “Joomlasphere.” Useful applications can be submitted as either free or paid products (aka, “extensions”) that the public can download. Because Joomla’s core development depends upon volunteers to collaborate on GitHub, students are welcome to offer contributions (from patches to new features) which will be peer-reviewed and considered for acceptance. Each year the Google Summer of Code program sponsors university students to work with a mentor on special Joomla development projects.
10. Joomla Architecture Explained
The book Joomla Programming, Dexter and Landry, is just what you and the students need for understanding how Joomla works "under the covers." It explains all the steps of how a web page is built, hooks for extending or injecting custom code, and issues like security, language, and database access. Like any open source project, Joomla is constantly evolving and new features have been added since the book. Nevertheless, you will find this book important for explaining the architecture and for illustrating how to extend the platform with custom projects.
The point of all this is not that Joomla or any web platform should replace traditional technologies like Java in the curriculum. But web technology should be included within today’s curriculum. And that technology should be proven, object-oriented, extensible for student projects, and conducive for teaching.
As a web technology to support student assignments, Joomla meets the need. The objective is teaching software principles and disciplines, and this can be advanced with students coding on web technologies and dealing with modern web issues. As a platform for web-based development, consider Joomla – an open source, object-oriented CMS upon which students can experiment and practice the fundamentals of building great software.