Why Educators Need to Team with Industry Professionals in Software Development Education
Author(s) -
Gregory Kulczycki,
Steven Scott Atkinson
Publication year - 2020
Publication title -
papers on engineering education repository (american society for engineering education)
Language(s) - English
Resource type - Conference proceedings
DOI - 10.18260/1-2--31243
Subject(s) - grasp , professional development , software development , software , computer science , engineering management , product (mathematics) , engineering ethics , knowledge management , engineering , software engineering , psychology , pedagogy , geometry , mathematics , programming language
One author of this paper (Dr. Kulczycki) is a professor at Virginia Tech and the other (Dr. Atkinson) is a Silicon Valley web developer. This paper presents our experiences in coteaching a web application development course for a graduate-level information technology program. It seems obvious to say that students benefit by having access to industry expertise when taking a course on software development. An industry perspective on any academic subject can be helpful, and as software development is such a practical side of software engineering, students often take these courses with an eye toward developing software professionally. Professional developers can not only answer student questions about how something is done in industry, but they can make the student understand why a topic is relevant. Educators tend to have a good grasp of the capabilities and limitations of their students. They are good at choosing course materials that meet their course objectives, and they know how to assess students on whether those objectives have been met. Professionals know how things get done in industry. They understand the trade-offs and compromises that must be made to get a software product out the door. Their knowledge comes from other developers and from years of practical experience building real-world systems. When the educator and the industry professional are teaching as a team – both invested in the outcome of the course – the results can be transforming. This was our experience in teaching a course on Web Application Development for an online Master of Information Technology program. The students in this program are typically working professionals in an IT-related field, and their programming experience varies widely depending on whether they come from the business side of IT or the technical side. All students taking the course are required to have a basic introduction to Java. The course is completely online, and student-teacher interaction comes primarily from Q&A discussion boards (Piazza) and one live Q&A session per week (WebEx). The course revolves around a semester-long project in which students develop a mini e-commerce web application complete with the design and implementation of the web interface, the database, and the application business logic. In this paper, we talk about how the course evolved when the developer joined the educator to teach the course. We focus on six important facets of the experience: (1) the initial conditions that allowed the collaboration to be successful, (2) the benefits that each party brought to the course, (3) the impact that online learning had on the collaboration, (4) how the development of custom tools improved the course, (5) the introduction of industry best-practice to the core project, and finally, (6) the challenges that face us as we continue to improve the course and apply our experience to other courses. Introduction and context Most courses in a practical discipline such as software engineering will benefit from the involvement of industry professionals, even if that means simply inviting people from industry to talk to students once or twice during the semester about what it is like to apply software engineering principles to developing commercial software. Courses that focus on software development can particularly benefit, since the students taking these courses often have some interest in professional software development. The level of involvement that industry professionals take in a course can vary widely. Most computer science and software engineering programs offer a seminar course in which they invite both outside researchers and industry professionals to speak to students. Some departments have programs that assist students in collaborating with local industry during capstone projects. Current or retired industry professionals may teach a course as an adjunct professor. And some departments have full-time instructor positions in which applicants are encouraged or required to have a certain number of years of practical experience [3]. In this paper, we discuss our experience with academic-industry collaboration in the classroom for a course on Web Application Development. While we are convinced that our collaboration was – and continues to be – a successful one, we understand that it occurred under specific conditions that may not hold for many university courses. Most of these conditions benefited the collaboration. 1. The course is a graduate-level course and is geared towards working professionals 2. The course is taught entirely online, with recorded lectures, discussion boards, and a live Q&A session once a week 3. The course includes a semester-long project that accounts for about half of the grade We should also mention that even though the course was a Computer Science course, it was only open to students who were enrolled in our Master of Information Technology (MIT) program. The MIT program is a collaboration between the Business School the College of Engineering – specifically, the Computer Science Department and the Electrical and Computer Engineering Department. As the students in the course were graduate students, they had a certain level of maturity that undergraduates might not have. And as many were also working professionals, they brought a certain level of professionalism to the course as well as an expectation that they were getting their money’s worth. The fact that they were MIT students rather than CS students meant that they were coming to the course with a wide variety of backgrounds. Some may come from a primarily business background and have very little programming experience, and others may even have prior experience in developing web applications. The fact that some students in the course had web development experience was a significant motivator for the educator to consult a professional in the first place. All students must have taken the prerequisite for the course, which is an object-oriented programming course that uses Java. The online nature of this course was so significant and so potentially different from traditional courses that we devote an entire section to it and its effects on the collaboration. It certainly made it easier to recruit a working professional to co-teach the course as it provided maximum flexibility for their schedule. Lectures (done by the educator) were pre-recorded. Interaction between the students and the instructors was achieved by an online discussion board and one weekly Q&A session. The response time for questions on the online discussion was typically 24 hours or less, and the Q&A sessions were live online, but attendance was not mandatory. The sessions were recorded. For their semester-long project, the students had to design and implement a mini e-commerce web site – a bookstore site that could display different categories of books from a database and allowed users to add and remove books to and from a shopping cart. On a checkout page, users would fill out a customer information form that was validated from both the client-side and the server-side. “Purchasing” the books would update a database. As basic knowledge of Java was a prerequisite for the course, JSP and Servlets were used for server-side implementation. An SQL database (MySQL) was used to store information. Frameworks were generally avoided. The students submitted (for a grade) portions of the project approximately every two weeks. Each portion built on the last until at the end of the semester they submitted their final web site. Before the professional web developer joined the course, the educator relied heavily on the NetBeans E-Commerce Tutorial [8] to demonstrate how the project for the course should be implemented. In fact, most sections of that tutorial were required reading. A significant motivator that led the educator to seek out professional assistance was the concern that the design of the Affable Bean Project (the web site that was developed by following the NetBeans E-Commerce Tutorial) may not reflect industry best practice. The tutorial is very well written and covers the major objectives of the course, but it is somewhat dated (it was written in 2009), and a portion of it emphasizes EJB (Enterprise JavaBean) technology, which is not as prevalent in industry as some other technologies. When the educator and professional were discussing ways to modify the Affable Bean Project to bring it more in line with industry best practice, the professional suggested employing a version of the DAO (Direct Access Object) Pattern using Java instead of relying on any frameworks. This was in line with the educator’s wish to rely less on frameworks. Details of how the Affable Bean Project was modified by the professional are given in a section below. Finally, before we delve into these topics, we would like to acknowledge that there can be challenges in teaming with an industry professional above and beyond those faced when two people who think highly of themselves try to do something together. Specifically, the challenges we are thinking of relate to tools and technologies. Simply put, industry professionals tend to want to use or teach about tools and/or frameworks used in their current job. Obviously, this can be problematic. Industrial-strength tools can have a steep learning curve and can distract students from their learning of basic development principles. Furthermore, specialized frameworks also have a steep learning curve and are often overkill when teaching software development. Even the author of this paper who is the industry professional believes that a good developer puts good software engineering principle and patterns first and should not rely as much on specific tools or frameworks, but it is human nature to promote what we are comfortable with. As an educator, if you meet a professional who seems to favor tools or frameworks over principles and patterns, it is probably best not to pursue a collaboratio
Accelerating Research
Robert Robinson Avenue,
Oxford Science Park, Oxford
OX4 4GP, United Kingdom
Address
John Eccles HouseRobert Robinson Avenue,
Oxford Science Park, Oxford
OX4 4GP, United Kingdom