7
$\begingroup$

We are trying to implement a course where students develop web apps using PHP+AgileUI (no HTML, JavaScript or CSS) with a strong emphasis on "object oriented" approach, designing business logic and reuse of UI components.

When it comes to the practical tasks, we are undecided. Should we encourage students to work in teams to achieve project together, or should we make them submit their unique work? Since most of the work is in PHP, there are no design/frontend/backend separation, we have a feeling that some students may "miss out" on some skills if another team-mate implements it.

On another hand - teamwork is crucial in software design.

What would you recommend - should we design material for teams or individual?

$\endgroup$
  • $\begingroup$ We have several such courses focusing on different aspects of development. Distributing work and coordinating as a team a part of the course (sometimes even the main goal). $\endgroup$ – Sirko Jul 11 '17 at 13:34
4
$\begingroup$

Ultimately it comes down to if the work can be done alone? The purpose of group work should not be so that everyone has less work to do, but rather if the original work could not be done within the given span by a single person. In the workforce, you're most likely to be working in a team and contribute to iterative releasts (Agile Methodologies). If your expectation is that because you're in a group, you don't have to work as hard compared to working alone, then you are set to fail.

My suggestion would be to design a project such that bi-weekly or monthly iterations are presented, building up towards the final product. Incorporate Agile Methodologies into this as it is very useful in the workforce and teaches team management / tracking. Groups should be no bigger than 3-4, otherwise it is too big to be efficient. The number of hours required for the project should be big enough that everyone is kept busy. Of course some will do more than others, however one person should not be able to do the entire project.

If this is too heavy for your course, then I'd suggest stick with single person projects as there is no merit to group work.

$\endgroup$
1
$\begingroup$

In my experience, group projects are valuable, but in any group of more than 2 people it is almost guaranteed that some students will put in more effort than others. So my recommendation is simply to make 2 person groups. There are many things to be learned about coding as a team even with a single teammate, but the work won't be so diluted that students would completely miss out on the key aspects of the course.

$\endgroup$
  • $\begingroup$ Do you think I can introduce them to pair programming at this stage? $\endgroup$ – romaninsh Jul 11 '17 at 14:22
  • $\begingroup$ How much experience do they have with computer science? $\endgroup$ – anaBad Jul 11 '17 at 14:26
  • $\begingroup$ 1 year or less, they might have done some programming in school and know the basics. $\endgroup$ – romaninsh Jul 11 '17 at 14:29
  • $\begingroup$ Welcome to Computer Science Educators! This answer is great, and if you added parts that address more points which are relevant (more examples, explanations etc.) it would be much, much better. $\endgroup$ – ItamarG3 Jul 11 '17 at 14:41
1
$\begingroup$

I think it depends on the goals of the course. Does your course have specific objectives for working in a team? Is the primary goal to learn some aspect of programming? I teach a software practicum course where students must collaborate like a real software engineering team using an Agile Development Methodology. All the work they do is shared. Learning to work in a team is an important skill. But if the primary goal of the course is to teach programming fundamentals, web development, game programming, etc., then I would lean toward individual assignments. It's so crucial to practice programming. You can maximize this with individual assignments.

$\endgroup$
  • $\begingroup$ No, there is no goal to work in a team. It's about them being able to use the tool. $\endgroup$ – romaninsh Jul 11 '17 at 14:23
  • $\begingroup$ I think this is a really good answer, I'd only add to it that if you choose team work, you should create clear and distinguished responsibilities for each individual in the team. This way you can prevent "one person doing everything, the rest doing nothing" kind of teams. $\endgroup$ – Dragonturtle Aug 3 '17 at 12:29

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.