social networks, microblogging, virtual worlds, and web 2.0 in the teaching of programing techniques...

6
Social networks, microblogging, virtual worlds, and Web 2.0 in the teaching of programing 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}@utad.pt Gonçalo Matos, 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}@utad.pt Arnaldo Santos Portugal Telecom Inovação Aveiro, Portugal [email protected] Abstract— With the goal of lessening barriers to the learning of advanced programming techniques, we put into place a trial which required them to involve with online communities of programmers. Using a course assignment on software architecture theory, 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, collaboration, learning, social networks, virtual worlds, PLE I. INTRODUCTION 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 novices. Little attention has been given to helping students develop their basic programming skills. In our lecturing experience at the mid- course level (4th semester of a 6-semester programme), we are regularly confronted with students which can create small programs on their own adapt and combine pieces of existing code, yet struggle when challenged to think about the code structure in more abstract ways. Our lecturing focus is on software architectures, 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 well-structured code is typically quite challenging. This can 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 architectural- correct 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 programs, and on team-based software development. Sponsored by Portugal Telecom Inovação, in the scope of the Plano de Inovação do Grupo PT

Upload: goncalo-cruz-matos

Post on 24-Jan-2015

129 views

Category:

Technology


1 download

DESCRIPTION

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. Paper presented at IEEE EDUCON - Engineering Education 2012, Marrakesh, Morroco.

TRANSCRIPT

Page 1: Social networks, microblogging, virtual worlds, and Web 2.0 in the teaching of programing techniques for software engineering: a trial combining collaboration and social interaction

Social networks, microblogging, virtual worlds, and

Web 2.0 in the teaching of programing 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}@utad.pt

Gonçalo Matos, 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}@utad.pt

Arnaldo Santos

Portugal Telecom Inovação

Aveiro, Portugal

[email protected]

Abstract— With the goal of lessening barriers to the learning of

advanced programming techniques, we put into place a trial

which required them to involve with online communities of

programmers. Using a course assignment on software

architecture theory, 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, collaboration, learning, social

networks, virtual worlds, PLE

I. INTRODUCTION

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 novices. Little attention has been given to helping students develop their basic

programming skills. In our lecturing experience at the mid-course level (4th semester of a 6-semester programme), we are regularly confronted with students which can create small programs on their own adapt and combine pieces of existing code, yet struggle when challenged to think about the code structure in more abstract ways. Our lecturing focus is on software architectures, 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 well-structured code is typically quite challenging. This can 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 architectural-correct 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 programs, and on team-based software development.

Sponsored by Portugal Telecom Inovação, in the scope of the Plano de Inovação do Grupo PT

Page 2: Social networks, microblogging, virtual worlds, and Web 2.0 in the teaching of programing techniques for software engineering: a trial combining collaboration and social interaction

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 [5][6][7].

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

A. The course context and content: flavours of MVC

This work was developed in the context of the course “Programming Methodologies III” (MPIII), of the 4

th semester

of the undergraduate programme 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 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 [2].

In summary, MPIII students possess significant background on creating and developing programs, but not on doing large-scale programming, which is one of the learning objectives of the ACM/IEEE CSC [1]. The MPIII course supports this by introducing the MVC architectural style. Since its original proposal in 1988 [3], 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 [4].

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

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 accepting user input, whereas C&G’s 2008 flavor places that input in the view; also, K&P allowed the view to edit the model, whereas model changes in C&G’s version is entirely the task of the controller. These and other differences between flavors 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 means of various examples, using graphical applications, such as the one in Fig. 2, or virtual worlds.

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

In this specific example, the application had two windows: in the left window the user could click on the “New shape”

Page 3: Social networks, microblogging, virtual worlds, and Web 2.0 in the teaching of programing techniques for software engineering: a trial combining collaboration and social interaction

button (topmost) or on the “Exit” button (bottommost). For 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.

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, 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 advanced students could benefit from checking the work of more advanced 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 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

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. THE META-ASSIGNMENT

Phase

1 Literature search on the assigned topic, doing reading notes.

Phase

2

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.

Phase

3

Ivolve with the professionals & communities, debating the assigned topic, either asynchronously or synchronously.

Desive tentative approaches to solve or develop the assigned

topic, then present, debate, and develop them.

Phase

4

Provide an online report of the results and present in class the end product of the process.

TABLE II. SAMPLE ASSIGNMENT INSTANTIATIONS

Group

1

Write a detailed document explaining how to use the MVC

architectural style to develop applications using OpenSimulator/Second Life virtual worlds as user interface,

employing the libOpenMetaverse library. The document

should include specific implementation examples to illustrate the explanation.

Group

2

Write a detailed document explaining how to use the MVC

architectural style to develop applications using the Windows Phone Application Platform, employing the com a

XNA framework. The document should include specific

implementation examples to illustrate the explanation.

Group

3 Same as group 2, but employing the Silverlight framework.

IV. THE EXAMPLE PROVIDED

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. So, we elected to provide an example where the subject was e-business, as shown in Table III.

TABLE III. NON-PROGRAMMING EXAMPLE PROVIDED (GOALS)

Theme E-business

Assignment

example

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, with which strategies/goals?

Page 4: Social networks, microblogging, virtual worlds, and Web 2.0 in the teaching of programing techniques for software engineering: a trial combining collaboration and social interaction

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, was 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 contacts in the sample 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

Regarding contacts with experts, we provided some examples of public Twitter feeds, as shown in Figure 4, although nowadays with would also have the option of presenting public Facebook or Google+ profiles.

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

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 example materials is presented here in Figure 5.

Figure 5. Example material demonstrating a conversation with a professional

Further, example materials were also prepared demonstrating to students 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

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

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).

Page 5: Social networks, microblogging, virtual worlds, and Web 2.0 in the teaching of programing techniques for software engineering: a trial combining collaboration and social interaction

TABLE IV. ASSIGNMENT DEVELOPMENT BY EACH GROUP

Group Assignment development

Days of

editing

�.º

edits

�.º

members Summary

1 17 19 5

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.

2 ≈ 90 61 4

Literature + reading notes. Discussions on

several fora, gathering ≈ 10 responses

and ≈ 2000 reads. Some short contacts

with college professors and a professional.

3 ≈ 30 8 5 Added literature locations, nothing else.

4 11 4 4 Added a single literature location.

5 ≈ 60 36 4

Literature + reading notes. Posted in

several fora and sent e-mails, but didn’t

get responses or only amazement (“????”).

6 ≈ 30 6 4 Only made a summary of the assignment.

7 ≈ 30 3 4 Only made a summary of the assignment.

8 ≈ 30 5 3 Added literature locations, nothing else.

9 0 0 4 Only created group page.

10 0 0 4 Only created group page.

11 0 0 5 Only created group page.

12 0 0 3 Only created group page.

13 ≈ 75 28 5

Literature + reading notes. Posted in

several fora, used mailing lists and Facebook. Got significant feedback, with

over a dozen responses and ≈ 2000 reads.

14 ≈ 75 37 2 List of literature, reading notes, contacts established, without significant results.

15 2 16 2 List of literature, few reading notes.

16 ≈ 60 19 5 List of literature, reading notes, contacts established, some via e-mail, without

significant results.

17 ≈ 45 17 3 Added literature locations, nothing else.

18 ≈ 30 13 3

List of literature, reading notes, contacts

established, some via e-mail, without significant results.

19 - - 4 Didn’t took part.

20 2 12 1 List of literature, few reading notes.

TABLE V. EDITS PER DAY, GROUPS WITH SUSTAINED ACTIVITY

Group Editing activity

Days of

editing

�.º

edits

�.º

members Edits /day

Edits /

member

Edits / day /

member

1 17 19 5 1.1 3.8 0.22

2 ≈ 90 61 4 0.7 15.3 0.17

5 ≈ 60 36 4 0.6 9 0.15

13 ≈ 75 28 5 0.4 5.6 0.07

14 ≈ 75 37 2 0.5 18.5 0.25

16 ≈ 60 19 5 0.3 3.8 0.06

18 ≈ 30 13 3 0.4 4.3 0.14

The outcome of the effort to study and discuss the assigned theme was, as mentioned in section III, 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 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 where groups 1, 2, and 5. Also, group 13 was a borderline case.

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%/72%); and xi) whether the feedback was sufficient (31%/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).

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 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%).

Page 6: Social networks, microblogging, virtual worlds, and Web 2.0 in the teaching of programing techniques for software engineering: a trial combining collaboration and social interaction

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

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 this course in spite having failed basic-level programming courses (the programme 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 where 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. http://www.acm.org//education/curricula/ComputerScience2008.pdf (2008).

[2] 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.

[3] G. Krasner, and S. Pope, S. (1988), “A cookbook for using the model-view controller user interface paradigm in Smalltalk-80,” Journal of Object-Oriented Programming, vol. 1, no. 3, pp. 26-49.

[4] E. Curry, and Paul Grace, “Flexible Self-Management Using the Model-View-Controller Pattern,” IEEE Software, vol. 25, no. 3, pp. 84-90.

[5] 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.

[6] 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.

[7] 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.

[8] PBWiki, Inc., “PBworks | Online Team Collaboration,” http://pbworks.com/ (retrieved 2011-11-21).