Answers.Body: <p>Ultimately it comes down to if the work <b>can be done alone</b>? 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.</p>
  
  <p>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.</p>
  
  <p>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.</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-07-11T14:35:41.377Z
Answers.LastActivityDate: 2017-07-11T14:35:41.377Z
Answers.UserDisplayName: Kaneki
Answers.Body: <p>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.</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-07-11T14:23:18.480Z
Answers.Text: No, there is no goal to work in a team. It's about them being able to use the tool.
Answers.UserDisplayName: romaninsh
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-08-03T12:29:36.297Z
Answers.Text: 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.
Answers.UserDisplayName: Dragonturtle
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-07-11T14:21:28.650Z
Answers.LastActivityDate: 2017-07-11T14:21:28.650Z
Answers.UserDisplayName: Edwin Torres
Answers.Body: <p>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.  </p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-07-11T14:22:30.137Z
Answers.Text: Do you think I can introduce them to pair programming at this stage?
Answers.UserDisplayName: romaninsh
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-07-11T14:26:04.110Z
Answers.Text: How much experience do they have with computer science?
Answers.UserDisplayName: anaBad
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-07-11T14:29:02.443Z
Answers.Text: 1 year or less, they might have done some programming in school and know the basics.
Answers.UserDisplayName: romaninsh
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-07-11T14:41:54.060Z
Answers.Text: 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.
Answers.UserDisplayName: ItamarG3
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-07-11T14:11:01.707Z
Answers.LastActivityDate: 2017-07-11T14:11:01.707Z
Answers.UserDisplayName: anaBad
Body: <p>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.</p>
  
  <p>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.</p>
  
  <p>On another hand - teamwork is crucial in software design.</p>
  
  <p>What would you recommend - should we design material for teams or individual?</p>
  
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-07-11T13:34:47.577Z
Comments.Text: 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).
Comments.UserDisplayName: Sirko
Tags: <best-practice><student-motivation>
Title: Working on practical projects as a team - good or bad?
ThreadText: # Working on practical projects as a team - good or bad?
  
  (Asked by: username_0 on 2017-07-11)
  
  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?
  
  **Tags:** best-practice, student-motivation
  
  > **Comments:**
  > **username_1**: 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).  
  
  ---
  
  ## 3 answers
  
  ### Answer by username_2 on 2017-07-11. Score: 4
  
  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.
  
  
  ---
  
  ### Answer by username_3 on 2017-07-11. Score: 1
  
  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.
  
  > **Comments:**
  > **username_0**: No, there is no goal to work in a team. It's about them being able to use the tool.  
  > **username_4**: 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.  
  
  ---
  
  ### Answer by username_5 on 2017-07-11. Score: 1
  
  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.
  
  > **Comments:**
  > **username_0**: Do you think I can introduce them to pair programming at this stage?  
  > **username_5**: How much experience do they have with computer science?  
  > **username_0**: 1 year or less, they might have done some programming in school and know the basics.  
  > **username_6**: 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.  
  
  ---
  
  