Social networks, microblogging, virtual worlds, and Web 2.

0 in the teaching of programming techniques for software engineering: a trial combining collaboration and social interaction beyond college
Leonel Morgado, Benjamim Fonseca, Paulo Martins, Hugo Paredes
Dep. Engineering GECAD/UTAD – Univ. of Trás-os-Montes e Alto Douro Vila Real, Portugal {leonelm, benjaf, pmartins, hparedes}

Gonçalo Cruz, Ana Margarida Maia, Ricardo Nunes
Pro-Chancellery for Innovation & Information Management UTAD – Univ. of Trás-os-Montes e Alto Douro Vila Real, Portugal {goncaloc, margaridam, rrnunes}

Arnaldo Santos
Portugal Telecom Inovação Aveiro, Portugal
Abstract— With the goal of lessening barriers to the learning of advanced programming techniques, we put into place a trial which required students to get involved with online communities of programmers. Using a course assignment on software architecture styles, students had study a problem, find basis for a tentative approach, and discuss it online with programmers. The expectation was that students would find motivation for their studies from both the contact with communities of programmers, and from having to study and reflect upon their problem well enough to be able to draw the interest of members of those communities. We present the strategy we used, the developments and outcomes, and ideas for further application of this approach. Keywords- programming, networks, virtual worlds, PLE collaboration, learning, social



Teaching computer programming is known to be a challenging task, and a relevant issue in Computer Science and related areas. The joint taskforce of the Association for Computing Machinery and IEEE Computer Society for revision of the Computer Science Curriculum (ACM/IEEE CSC) even states, in its 2008 report, that “there is wide recognition that a considerable amount of work is needed to discover better and more effective ways of presenting the discipline of computing” [1], emphasizing the need to adapt curricula not only to the technological aspects of computing, but also to new pedagogical developments: “Institutions (...), must recognize the importance of remaining abreast of progress in both technology and pedagogy” (ibid.). Traditionally, research concerns in the field of computer programming learning have focused on the difficulties of novices and on the program comprehension by experts: little

attention has been given to helping students progress from basic programming towards advanced programming [2]. In our lecturing experience at the mid-course level (4th semester of a 6-semester program), we are regularly confronted with students which can create small programs on their own, as well as adapt and combine small pieces of existing code, yet struggle when challenged to think about the code structure in more abstract ways. Our lecturing focus is on software architecture, with the Model-View-Controller (MVC) architectural style being a key aspect. In our experience, the general concept of separating MVC concerns is not complex for students in general to understand. But actually converting this idea into wellstructured code is typically quite challenging. This can be particularly noticed if one confronts students with the need to implement it not from scratch but within real-life programming situations, such as employing preexistent frameworks, libraries or application programming interfaces (APIs) that have not been developed with software architecture concerns in mind. One aspect which drew our attention was the need to motivate students to tackle the challenge posed by having to structure a program within an overarching architectural concept. Not only for those students whose programming skills are somewhat limited and understandably struggle to take them an extra step, but also for students who, while being able to code their way around more complex problems, seem not to value the longer-term benefits of structuring their code in different, more manageable ways. We found that for some of these students, it is hard to see value in doing architecturalcorrect code, when they can make their programs work as intended without this effort. Part of this problem, we hypothesize, may be due to lack of two aspects: experience on long-term development of

Sponsored by Portugal Telecom Inovação, in the scope of the Plano de Inovação do Grupo PT and supported by FEDER Funds through the “Programa Operacional Factores de Competitividade - COMPETE” program, and by National Funds through FCT “Fundação para a Ciência e a Tecnologia” under the project: FCOMP-01-0124-FEDER-PEst-OE/EEI/UI0760/2011.

978-1-4673-1456-5/12/$31.00 ©2012 IEEE

Page 730

programs, and on team-based software development. The rationale for this hypothesis is that complexly-woven software artifacts can be managed extensively while one keeps developing then alone and continuously, but having to divide programming tasks by a team, explain programming logic to new team members, and debug external code are all situations where the value of having an architectural code organization is more readily apparent. These aspects are partly related to social factors in the practice of programming. Research in this area, while new at the non-novice level, has been a source of interest for some time. Gender differences in particular, but not only, have drawn some inquiry on the need to research ways to support the learning of programming in groups and communities, where more advanced programmers can provide support to students to assist them in learning [6][7][8]. To explore this hypothesis, we developed a preliminary trial, which involved a course assignment. In it, students had to develop coding approaches to implement MVC-based architectures using various real-life frameworks, libraries or APIs. For instance: “write a detailed document explaining how to apply the MVC architectural style to application development using the Windows Phone Application Platform and the XNA framework.” To complete these assignments, students had involve themselves in online programming communities as part of the code development (as an actual assignment requirement). Specifically, the assignment involved four stages for students: a) Preliminary study of the problem, including analysis of documentation, and searching for sources on the Web or technical literature, to attain a starting solution; b) Online search for programming practitioners and communities (mailing lists, Facebook public profiles/groups, Twitter users, Web fora, LinkedIn groups, Second Life groups and regions, etc.), approaching them, and getting involved; c) Bringing the problems to those practitioners and communities, presenting ideas, exchanging viewpoints, and in general attempt to improve the starting solution; d) Combining the results into a structured document detailing the recommended approach, and into an assessment report with factual evidence of the progress which led to the final version of the document. In this paper, we detail the structure of this trial, its organization, progress, and results. II. BACKGROUND

programming, object-oriented programming, assembly programming, and introductory concurrent programming. They also developed two semester-long “lab” projects on structured programming and object-oriented programming techniques. In parallel with the MPIII course, they are attending a course on algorithms, and developing a semester-long “lab” project applying the concepts of the MPIII course [3]. In summary, MPIII students possess significant background on creating and developing programs, but not on doing largescale programming, which is one of the learning objectives of the ACM/IEEE CSC [1]. The MPIII course aims to support this by introducing the MVC architectural style, which basically proposes a division of concerns between three blocks: model (classes holding program state), controller (classes implementing program flow), and view (classes dealing with output). Since its original proposal in 1988 [4], this architectural style has seen wide adoption in software engineering practice, but approaches and perspectives have varied. In the MPIII course, the original proposal of Krasner & Pope in 1988 is contrasted with a more recent flavor proposed by Curry & Grace in 2008 [5].

Figure 1. MVC flavors in the MPIII course, from [5] (top) & [4] (bottom).

A. The course context and content: flavors of MVC This work was developed in the context of the course “Programming Methodologies III” (MPIII), of the 4th semester of the undergraduate program in Informatics Engineering of the University of Trás-os-Montes e Alto Douro, in Portugal. Before reaching this course, students attended other courses on programming techniques and concepts: computational logic, basic procedural programming, structured procedural

Fig. 1 presents these two flavors of the MVC architectural style. A very short summary of the differences is that K&P’s original concept had the controller dealing with user input, whereas C&G’s 2008 flavor places input processing in the view (albeit eventually reporting to the controller). Also, K&P allowed the model to send messages to the controller (to impact its processing of input), whereas in C&G’s version the model only sends messages to the view (since in this version the view is responsible for both output and input). These and other differences between flavors of the MVC style have an impact on their adequacy to different problems and systems, and students are expected to become aware of this complex relationship between software architectures and their application. The conversion of the architectural concepts into coding practices was supported by various examples, using graphical applications (e.g., Fig. 2) or virtual worlds. In this specific example, the application had two windows: in the left window the user could click on the “New shape” button (topmost) or on the “Exit” button (bottommost). For

978-1-4673-1456-5/12/$31.00 ©2012 IEEE

Page 731

every click on the “New shape” button, the application would randomly select between drawing a rectangle or an ellipse, as well as the drawing coordinates. The right window would display a log of the sequence of shapes drawn.

them to invite us into these groups, so we could follow these discussions and have a better grasp of the processes, doubts, and hardships behind their learning, which are often difficult to gleam from the evolution of text reports alone. III. THE ASSIGNMENTS

Figure 2. Sample application for presenting MVC flavors to students.

Implementing this application using the original K&P flavor of MVC (bottommost in Fig. 1), with user input taking place in the controller, meant that the code module behind the “New Shape” button would take the role of controller, thus asking the model to generate the data for the new shape (type, color, coordinates), and then that same code would ask the view code modules to update the drawing area of the left window and the text log of the right window. This could either be done by providing the view code modules with the data about the new shape, or by notifying them of the need to update themselves, which they would do by accessing the model code module. Conversely, implementing this following the C&G flavor of MVC (topmost in Fig. 1), with the user input taking place in the views, meant that the code module behind the “New Shape” button takes the role of view, thus reporting that event to the controller module, who would then “select” the views (the two windows), in effect asking them to update themselves, as above. In short, apart from the distinction in processing of input, the implementation of the C&G flavor is a subset of the possible implementations of the K&P flavor. B. Usage of groupware and social software Our intent was to track and support the students while they developed the assignments. It was also our intention that students could follow the progress of their peers in this process, to boost confidence. But we also wanted the process in general to be open to mutual access amongst students as a means of peer support, since less skilled students could benefit from checking the work of more skilled students as a source of sample methods and possible outcomes. For these reasons, we used wiki software, which enables online co-editing of hyperlinked editing. Students could access their own pages, detailing their specific assignment and progress, or check up on other students’ pages. Teachers could also at any time check on the progress of each assignment. And comments, questions, and recommendations could be placed on individual pages, by teachers or students, to support this open process. To support openness of discussion, we further asked students to create discussion groups on social Web sites such as Facebook, as platforms for casual debate on the development of the assignments, e.g., to discuss on how to proceed or conduct specific tasks, to discuss viewpoints before committing them into code or structured text, etc. And we also asked for

Since students could check on the progress of their peers online, we needed to have assignments that were structurally identical, so that student effort distribution would be fair and students could actually benefit from this openness. But we also needed them to be different enough to avoid straight copycat solutions. Our approach was to provide a generic assignment framework or meta-assignment, which was them instantiated differently for each group of students. Table 1 presents the structure of the meta-assignment, and Table 2, further below, present some of the instantiations for development by groups of students.
TABLE I. Phase 1 Phase 2 Phase 3 Phase 4 THE META-ASSIGNMENT

Literature search on the assigned topic, doing reading notes. Search for professionals & communities of practice online, related to the assigned theme, and follow them for a while, the get a feeling of their context and style. Involvement with the professionals & communities, debating the assigned topic, either asynchronously or synchronously. Devise tentative approaches to solve or develop the assigned topic, then present, debate, and develop them. Provide an online report of the results and present in class the end product of the process. TABLE II. SAMPLE ASSIGNMENT INSTANTIATIONS

Group 1

Group 2 Group 3

Write a detailed document explaining how to use the MVC architectural style to develop applications using OpenSimulator/Second Life virtual worlds as a user interface, employing the libOpenMetaverse library. The document should include specific implementation examples to illustrate the explanation. Write a detailed document explaining how to use the MVC architectural style to develop applications using the Windows Phone Application Platform, employing the XNA framework. The document should include specific implementation examples to illustrate the explanation. Same as group 2, but employing the Silverlight framework.



A. The theme of the example In order to support the development of the activities by students, we developed and provided online an example, as a guide for what was intended. This example was not focused on computer programming, to avoid having students follow it too closely, rather than develop their own approaches to literature search, and contact with experts/communities. This was particularly important since we were asking students to get involved with people outside the academic environment. Were we to provide examples of communities of practice and/or professionals linked to programming, it would be highly likely for those to be flooded with student queries looking to reproduce our example, rather than seek alternatives.

978-1-4673-1456-5/12/$31.00 ©2012 IEEE

Page 732

So, we elected to provide an example where the subject was ebusiness, as shown in Table III.
TABLE III. Theme Assignment example NON-PROGRAMMING EXAMPLE PROVIDED (GOALS) E-business Develop an e-business strategy for a local business. Consider: which business models to use; which online tools are more suited for marketing purposes; which Portuguese companies are actively pursuing this kind of business approach, and with which strategies/goals?

although nowadays we would also have the option of presenting public Facebook or Google+ profiles. D. Example materials for phase 3 To support phase 3, we developed a fictional example of a conversation between a student and professional, illustrating what was being requested. Part of these sample materials is presented here in Figure 5.

B. Example materials for phase 1 For supporting phase 1, it was straightforward enough to provide a list of sample Web sites, sample papers, sample bibliographic reference style, and sample reading notes. C. Example materials for phase 2 For supporting phase 2, we searched for on-line public contacts of experts and communities of practice on the theme of e-business, mimicking what we wanted students to do for programming. As mentioned above, since these contacts were not related to programming, we were avoiding the risk of students flooding the sample contacts with queries, rather than making their own efforts to find communities and get involved in them. Figure 3 presents some examples provided regarding communities in social networks (Facebook & Orkut).

Figure 3. Communities of practice on e-business, used as examples

Figure 5. Example material demonstrating a conversation with a professional

Further, sample materials were also prepared, as examples to students of the participation in communities of practice in social media. The intent of these examples was to provide students with details on the kind of conversation and participation that was desired: interested, polite, and relevant. V. RESULTS

Figure 4. Twitter feeds of e-business professionals in the example

Regarding contacts with experts, we provided some examples of public Twitter feeds, as shown in Figure 4,

The assignments were developed using the PBWorks wiki platform [9], at address In all, 62 students were involved, forming 20 groups. Of these, 19 groups (59 students) actually took part. The assignment development ran for 4 months, from start to finish. Table IV summarizes the work developed by each group.

978-1-4673-1456-5/12/$31.00 ©2012 IEEE

Page 733

Amongst the groups of Table IV, only 7 sustained some activity throughout all the phases of the assignment. Looking into the number of edits to their wiki pages, we get the data presented in Table V, showing that the editing activity took place every other day or every three days (except for group 1, which only developed their effort over the two final weeks).

able to provide usable examples of approaches to solve it. This result does not reflect the actual students’ results in the course, which were much more dependent on tests than on this assignment, whose weight on the final grade was 20%. The ones with clearly “positive” reports and/or presentations were groups 1, 2, and 5. Also, group 13 was a borderline case.
TABLE V. Group Days of 1 2 5 13 14 16 18 17 ≈ 90 ≈ 60 ≈ 75 ≈ 75 ≈ 60 ≈ 30

Editing activity
Edits /day Edits / member Edits / day / member

N.º N.º editing edits members

N.º N.º editing edits members





2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

≈ 90 ≈ 30 11 ≈ 60 ≈ 30 ≈ 30 ≈ 30 0 0 0 0 ≈ 75 ≈ 75 2 ≈ 60 ≈ 45 ≈ 30 2

61 8 4 36 6 3 5 0 0 0 0 28 37 16 19 17 13 12

4 5 4 4 4 4 3 4 4 5 3 5 2 2 5 3 3 4 1

Literature + reading notes. Interviewed older UTAD colleagues on the subject. One of their forum posts got 14 responses in 4 days. Current reads: 573. Their questions lacked focus and clarity, particularly contacting via Facebook. Literature + reading notes. Discussions on several fora, gathering ≈ 10 responses and ≈ 2000 reads. Some short contacts with college professors and a professional. Added literature locations, nothing else. Added a single literature location. Literature + reading notes. Posted in several fora and sent e-mails, but didn’t get responses or only amazement (“????”). Only made a summary of the assignment. Only made a summary of the assignment. Added literature locations, nothing else. Only created the group page. Only created the group page. Only created the group page. Only created the group page. Literature + reading notes. Posted in several fora, used mailing lists and Facebook. Got significant feedback, with over a dozen responses and ≈ 2000 reads. List of literature, reading notes, contacts established, without significant results. List of literature, few reading notes. List of literature, reading notes, contacts established, some via e-mail, without significant results. Added literature locations, nothing else. List of literature, reading notes, contacts established, some via e-mail, without significant results. Didn’t take part. List of literature, few reading notes.

19 61 36 28 37 19 13

5 4 4 5 2 5 3

1.1 0.7 0.6 0.4 0.5 0.3 0.4

3.8 15.3 9 5.6 18.5 3.8 4.3

0.22 0.17 0.15 0.07 0.25 0.06 0.14

At the end of the process, we asked students to fill in an online survey, using 4-level Likert scales, on the usage and adequacy of the tools involved, and on the difficulties experienced in developing it. A total of 36 of the 62 students (58%) participated in the survey. We then analyzed the results considering confidence intervals for each response for a confidence level of 95%. These significantly agreed (75%~80% vs. 20%~25%) on the wiki platform: i) being easy to use; ii) supportive of collaborative work; iii) allowing greater interaction with colleagues and teachers; iv) being useful for developing the assignments; v) being adequate as an online platform to support the course. And also on vi) the usefulness of the example documents; vii) whether the assignment helped develop new knowledge, competences, and experiences; and viii) whether the activities met the students’ personal interests. Slightly more polarizing were: ix) the wiki’s support for organizing one’s work (28% disagreeing vs. 72% agreeing); x) the amount of time for developing the assignment (25% vs. 72%); and xi) whether the feedback was sufficient (31% vs. 67%). We also asked where students tried to find and communicate with professionals or communities, with fora being the preferred medium, followed by Facebook and blogs, then e-mail and Twitter (Fig. 6).

The outcome of the effort to study and discuss the assigned theme was, as mentioned in section III, an online report of the results and a class presentation summarizing them. Analyzing these outcomes, we analyzed them for grading. Summarizing the results for this paper, we are labeling them as “positive” when their overall quality demonstrated that students had learned significant aspects of their assigned theme and were

Figure 6. Locales used by students for finding and communicating

On the main difficulties felt, students pointed two as the main ones: understanding what was being asked of them (56%), and finding professionals and communities in the field (62%). Understanding the actual assignment and solving it was

978-1-4673-1456-5/12/$31.00 ©2012 IEEE

Page 734

also a difficulty for 44% of students. Language barriers and collaborative work were minor difficulties (21% each). On the development of the assignment, 53% of students reported lack of time as the main issue, with lack of feedback on the developed work (44%) and lack of motivation (41%) as the subsequent most important issues. Not understanding the subject matter followed (31%), with minor issues being low technological skills (22%) and lack of comprehension of the assignment and its goals (19%). Finally, the students strongly found the assignment adequate for the course (72% for, 22% against). The main favorable factor was “I managed to clear doubts by contacting experts” (50%), followed by “I met experts and discussion groups in the field, and shared experiences which enriched my learning” (39%). The unfavorable views were distributed relatively evenly between “I had difficulties completing the various assignment phases” (31%), “I couldn’t communicate effectively in the discussion groups” (25%), “the difficulty level of the assignment was too high” (25%), and “the problem assigned to me was too complex” (22%). 8% of students had other unidentified problems. VI. DISCUSSION & CONCLUSIONS

this course in spite having failed basic-level programming courses (the program does not enforce a prerequisites policy). A positive indicator is that while students found that coming across communities and experienced developers online was their major difficulty, they also expressed their view that meeting them/participating and clearing doubts this way were the main factors supporting a strong perspective on the adequacy of this assignment in the course. Part of this may also be motivated by some feedback we received in class during this trial. For instance, there was some level of surprise on the part of students in the level of involvement that community members showed – some students seemed to expect a colder, more technically-pure approach, rather than a normal human community environment. Also, some students got reprimanded in communities for trying to basically ask for a solution for a class problem without thinking it over properly beforehand. They were surprised and felt value in realizing that professional communities value competence and effort over quick fixes. VII. FINAL THOUGHTS AND FUTURE WORK We propose that an approach enabling students to enhance their contact and participation with professional developers and communities of practice can enhance their learning and provide motivation for learning advanced programming. However, we believe that the results show that such approaches require the development of educational strategies to encourage and support the sustained and regular participation of students in communities. It was important for us, as lecturers, to realize that students still hoped to be able to overcome lack of community involvement over time with last-minute intense efforts – something against which a strategy should be devised. This insight will inform new attempts of the use of the approach in subsequent editions of the course. It is our hope that ultimately we can support effective involvement of programming students in programming communities. ACKNOWLEDGMENT We would like to thanks all students for their participation in the assignments supporting this work. We also wish to thank all professionals and community members contributing to the efforts of students. REFERENCES
[1] Association for Computing Machinery (ACM) & IEEE Computer Society (IEEE-CS), “Computer Science Curriculum 2008: An Interim Revision of CS 2001.” Computing Curriculum Series. (2008). A. Robins, J. Rountree, and N. Rountree (2003). Learning and Teaching Programming: A Review and Discussion. Computer Science Education, vol. 13, no. 2, pp. 137-172. Universidade de Trás-os-Montes e Alto Douro, “Despacho n.º 14253/2011 – Regulamento do curso de Licenciatura em Engenharia Informática,” Diário da República, 2.ª série, no. 202, October 20th, 2011. G. Krasner, and S. Pope, S. (1988), “A cookbook for using the modelview controller user interface paradigm in Smalltalk-80,” Journal of Object-Oriented Programming, vol. 1, no. 3, pp. 26-49. E. Curry, and Paul Grace, “Flexible Self-Management Using the ModelView-Controller Pattern,” IEEE Software, vol. 25, no. 3, pp. 84-90.

Ultimately, most students did not manage to reach successful outcomes. Only 7 groups presented some output throughout the various phases of the project, and only 4 experienced positive feedback from their involvement with professional developers and online communities of practice, as shown in Table IV. The relevant feedback was achieved mostly from online fora and mailing lists. While students state that blogs where also a relevant source, their reports don’t actually provide any concrete evidence of that, which leads us to hypothesize that perhaps they used them as a source of information, but not as a source of discussion and interaction. Students report lack of time as the main difficulty, yet all but one group tried to complete the assignment in a small span of the four months of time provided. This leads us to conclude that students may have underestimated the need to devote time over a long period in order to get involved with communities and gain the attention of professional developers. Their reports point towards focused bursts of posting and communicating, rather than to long-haul distributed time allocation. And often trying to approach communities with little investment in a starting solution/proposal (or without a starting solution at all). We find this consistent with the fact that “lack of feedback on the developed work” and “lack of motivation” are also relevant difficulties. Teachers provided feedback only when students expressed difficulties or had some interactions reported in the wiki pages. Given the apparent concentration of students on short bursts of work, this meant that teacher feedback would follow a similar patterns, rather than a sustained on-line contact with the students. Difficulties related to the lack of mastery or understanding of the subject matter requirements are common, but that is unsurprising, given that several of our students are attending





978-1-4673-1456-5/12/$31.00 ©2012 IEEE

Page 735





S. Sim, M. Cohn, and K. Philip, “The work of software development as an assemblage of computational practice,” in CHASE '09 Proceedings of the 2009 ICSE Workshop on Cooperative and Human Aspects on Software Engineering, Washington: IEEE Computer Society, 2009, pp. 92-95. S. Harrel et al., “Virtually there: emerging designs for STEM teaching and learning in immersive online 3D microworlds,” in ICLS'08 Proceedings of the 8th international conference on International conference for the learning sciences, Utrecht, Netherlands: International Conference of the Learning Sciences, 2008, pp. 383-391. P. Sancho-Tomas, R. Fuentes-Fernández, and B. Fernández-Manjón, “Learning teamwork skills in university programming courses,” Computers & Education, vol. 53, no. 2, 2009, pp. 517-531. PBWiki, Inc., “PBworks | Online Team Collaboration,” (retrieved 2011-11-21).

978-1-4673-1456-5/12/$31.00 ©2012 IEEE

Page 736

Sign up to vote on this title
UsefulNot useful