Software Engineering 10 Using videos in teaching software engineering IAN SOMMERVILLE 1
As part of the teaching material to support the book, I have made a number of videos on software engineering topics and have also spent some time exploring YouTube and recommending videos that have been uploaded there. The initial rationale for this was to preserve some of my lectures on critical systems to supplement the lectures given by the instructor who took over this course for me; I also wondered about developing a software engineering MOOC and wondered about using the videos as part of that. Fairly quickly, I gave up on the idea of a MOOC. I am not convinced that this approach to teaching is helpful in a subject like software engineering. Because instructors have very limited time available, MOOCS only work when peer-based learning is possible. This is the case in skills-based courses (e.g. programming courses) but is much more difficult in courses that rely on the experience of the instructors. Students simply do not have the experience to support each other. My development of videos was also informed by my interest in what is known as the flipped classroom model of learning. The traditional model of learning is based around the delivery of factual material in the classroom with students focusing on tasks such as practical work as homework. In the flipped classroom, students prepare for classes by studying the learning material (usually presented as videos) with the classroom discussions focused on problem solving, application of the learning material, discussion of examples and so on. The benefits of the flipped classroom approach are that students can absorb knowledge at their own pace rather than at a pace set by the instructor and that class time can be spent more productively in the development of understanding (e.g. through problem solving) rather than simply knowledge transmission. The disadvantages are that not all students are motivated to work independently so don t engage and that students are at different stages of learning. This means that classroom activities are sometimes challenging to organise. So, my initial venture into video making (a set of videos on critical systems) was intended to support this approach. I did not wish to take the risk of a completely flipped approach so I used a hybrid approach with some material delivered by video, and some face-to-face. The flipped classroom model sort of worked those students who engaged with the video participated in discussions found this to be an effective model of learning. But a significant minority did not view the videos in advance and so were unable to participate in the class. This was perhaps a consequence of the hybrid approach where they thought of the videos as of secondary importance but without trying a completely flipped experience, this is impossible to know. What emerged from my experience, however, was an insight that I had not anticipated. Many of the students taking the course did not have English as their first language and often had problems understanding the material as it was delivered in real-time. In fact, they often asked permission to record lectures so that they could listen to them later. These students really liked the videos because they could then replay material as often as they wished, so that they could develop their understanding of the topic. Other students, who did not have language problems, also liked the idea of having videos available as a reminder of lectures and they found them particularly helpful when revising for tests and exams. So, all of this is a slightly long-winded introduction to how I think that the videos I have created can be used effectively in a software engineering course. I see them being used in three possible ways: 1. As part of a flipped classroom model in project-based courses. Project-based software engineering courses are common but one of the difficulties is finding time to get over some basic knowledge that students need before starting project work. 2. As an alternative view of lectures presented by an instructor. Sometimes it is helpful to have material presented in different ways and some students find that it makes concepts easier to understand. Sometimes, when there is a subjective aspect to topics, it is helpful to demonstrate in your course that there are alternative ways of looking at a topic and videos are a cost-effective way of doing this. 3. As a supplement to lectures where students look at extra material on video to extent their knowledge and understanding. This is particularly helpful when an instructor lacks knowledge or expertise in part of a course (we ve all taught courses where this is the case). In this case, videos such as case studies and examples are particularly helpful as 2
these are difficult to develop without detailed knowledge of a subject area. Videos are also useful when you have a class with a mixed background so that not all students have the same background knowledge. You can ask students to view the videos which may cover course background so that they then have a shared understand that you can build on. To support these approaches to learning, I have made or selected YouTube videos from 10 areas of software engineering as I show on the Videos page of the book website. These were made over a period of 2 years and it was a learning experience for me hence you will find quite significant differences between the early videos on critical systems and the later ones that were made more recently on topics such as agile development and systems engineering. While I suspect that I will not be updating the suggested YouTube videos (looking for good quality YouTube videos was a dispiriting experience), I do intend to re-edit some of the earlier videos and make some new videos particularly on Requirements and Design, Implementation and Evolution, Software Reuse and Software Management. 11.1 Video topics There are videos in 10 areas and students do not need to have watched videos in one area before viewing another area. However, within an area, there are dependencies and it may be helpful to watch videos in a particular order. 1. Introducing software engineering (Chapters 1 and 2) If you are presenting a course then you might wish to have a single introductory lecture then ask students to watch some of the videos in this part to get a broader background in the subject. You may not have time to cover ethical issues and the video here by Gotterbarn is a very good introduction to this topic. I would recommend that all students watch the video on Fundamental Activities of Software Engineering video to help them understand that software processes are simply different ways of enacting the same fundamental activities. 2. Agile methods (Chapter 3) This is an area where there are hundreds of YouTube videos, some of them of excellent quality. However, I did not find videos that covered user stories effectively or scaling agile methods. User stories are one of the most helpful approaches to requirements and can be used in different ways to that discussed in Extreme Programming. If you are teaching agile methods, you may not have time to talk about scaling issues but I suggest you ask students to look at these videos to get an awareness of the issues here. 3. Requirements and design (Chapters 4 6) My videos in this section focus on key issues on requirements engineering processes, stakeholders and viewpoints, challenges and user stories. I found very few YouTube videos which were any good. By contrast, there s a lot on YouTube on the UML and system modeling so I haven t attempted to replicate these. I made these videos originally because I was teaching advanced courses and found that students did not all have an awareness of requirements engineering. I asked them to watch these videos as preparation for the course so that I didn t have to spend time on this during the course. 4. Implementation and evolution (Chapters 7 9) I haven t been involved in teaching in this area for some time so I don t have any specially prepared videos. All of my suggestions are from YouTube. Even if you are not teaching this topic explicitly, I think that it is useful for students to know about open source technology and test-driven development. I would certainly ask all students taking software engineering courses to look at these as background to the course. 3
5. Critical systems (Chapter 10) I made my experiments in teaching using videos in a critical systems course so there are more videos available for Part 2 of the book than other parts. The videos in this section are an introduction to the area discussing what is meant by a critical system, engineering techniques for critical systems, the notion of software dependability and why critical systems are sociotechnical systems. I think in teaching you need to cover the notion of a critical system in a lecture and discuss why we need special techniques for critical systems development. The videos can reinforce this. Details of dependability attributes and sociotechnical systems can be covered on video only as background. 6. Reliability and safety (Chapters 11 and 12) In this section, I have included videos where I discuss what is meant by availability, reliability and safety as well as a number of case studies. The introductory videos allowed me to cover definitions very quickly in lectures and I asked the students to look at the case study videos in advance so that I could refer to them when teaching. 7. Security and resilience (Chapters 13 and 14) My course latterly spent quite a lot of time talking about cybersecurity and critical infrastructure failure so the videos available in this section reflect this. They do not just cover material from the book. If you are covering security, you may find it helpful to look at the cybersecurity videos as background before your course. SCADA is not a topic that s discussed in many software engineering courses but I think these are helpful to demonstrate to students that there are other approaches to programming than in conventional languages. 8. Software reuse (Chapters 15 18) I haven t taught this course for a while so my only video here is on the reuse landscape with others all taken from YouTube, where there are quite a number of good videos on relevant reuse topics. Lots of project based courses now focus on the development of services and the videos here may be useful background for this. This is an area where I plan to create several new videos that are aligned to material in the book. 9. Systems engineering (Chapters 19 21) I think that this is a really important topic and that students should all have an awareness of systems engineering issues. It is an area where there are many different views on how to present a systems approach so you may use the videos here to complement your own approach and to stimulate discussion on the differences. If you are teaching a software engineering course, you may ask students to look at some of these videos as background - 10. Software management (Chapters 22-25) At the date of writing this document (July 2015) I have not made any videos specifically for this section but rely on existing videos from YouTube. This is an essential area but I have always found it difficult to make management issues interesting in a lecture. I think that maybe the best way to use these videos is as background to practical exercises such as drawing up a project plan or setting up a project on github. 11.2 Makingvideos If you are thinking of making videos to support your own course, my suggestions are: 4
1. Simply filming a lecture does not work. Lectures, by their nature, are interactive sessions where you respond to the audience. You may repeat things, refer to previous lectures, make jokes, etc. These enliven face to face lectures but do not come over well on video. You save time doing videos this way but your students will not thank you for it. 2. You do not need any special equipment if you have a reasonable digital camera and a tripod. I made all the videos in my home office using natural light (it s better lit than what was my university office). Do not make videos using top light such as conventional office fluorescent lighting. These look dreadful. 3. Do not underestimate the time that you need to make and edit a video. I reckon that the time required to write a script, set up equipment, film the video then edit the video (I used imovie) is 15-30 times the length of the video in minutes, depending on how well you do the presentation. 4. I did not write and learn a script but prepared a set of Powerpoint slides as if I was giving a lecture and used these. I think that this comes over as a more natural approach. I then edited the presentation so that there was less text on each slide and used these in the videos. 5. The situation about using other people s images is unclear. These are copyright and one interpretation of the law is that you should get permission before using an image. This is practically impossible. Another interpretation is that fair use for educational purposes is permitted and this is the one I chose to adopt. However, I tried to use images that were licensed using a Creative Commons license whenever possible and I included an image credit whenever I could. I avoided using images from commercial libraries. If you make videos on software engineering and are interested in sharing these, please let me know and I can link to these from my web pages. 5