Course Overview

Welcome to Team Software Project

Course Description

In this course, you will enhance your skills for effective teamwork in software development. You'll collaborate in small teams to create web applications, integrating technical knowledge with communication and collaboration techniques from previous courses.

Your main project involves building a feature-rich web application, using modern collaboration tools, version control, and project management practices like sprint planning and reviews. You'll also rotate through different team roles, further developing leadership and emotional intelligence skills.

The course concludes with a showcase of your final project to the Kibo community and external stakeholders, demonstrating your learning and teamwork.

How the Course Works

This course is different from other courses you've taken at Kibo. You'll spend the whole term building a project with a team of other students. That doesn't mean that this course is easy! It's a lot of work to build something great together, and you should expect to spend a lot of time on this class.

The course will be based around a scaffolded team project. The course assignments will focus on the milestones you need to achieve in order to successfully complete the project and reflect on what you have learned.

  • The course starts with Team Formation. You will choose a team and a project to work on, and agree on team norms and expectations you'll follow.
  • Then, your team will start working on the project MVP. Each week, you'll meet as a team, update each other on progress and blockers, and decide what features to build next.
  • In week 5, we'll host MVP Demos, where you'll share your project MVPs with the rest of the class. You'll get feedback on your progress, and that will help shape the last few weeks of work for your team.
  • In week 9, you'll finish your projects and prepare a Final Project Presentation. Presentations will occur during the week 10

Meetings

This course will consist of:

  • The Course Kickoff, MVP Demos, and Final Project Demos, where the class will come together to start, check in, and share what teams built.
  • Weekly Team Meetings, which you will organize with your team
  • Workshops, where you will have the opportunity to learn key software and collaboration skills

Learning Outcomes

By the end of the course, you will be able to:

  • Develop and deploy a web application in collaboration with a team.
  • Define and outline project objectives, scope, and execution plans.
  • Provide meaningful technical and team feedback, and respond effectively to feedback.
  • Utilize project management methodologies to organize and lead software projects, including sprint planning, code reviews, and progress tracking.
  • Present software projects effectively to both technical and non-technical audiences.

Instructor

Please contact on Discord first with questions about the course.

Live Class Time

Note: all times are shown in GMT.

  • Wednesdays, 15:30 - 17:00 GMT

Live Classes

Each week, you will have a live class (see course overview for time). You are required to attend the live class sessions.

Video recordings and resources for the class will be posted after the classes each week. If you have technical difficulties or are occasionally unable to attend the live class, please be sure to watch the recording as quickly as possible so that you do not fall behind.

WeekTopicLive ClassMaterials
1Course KickoffVideoNotes
2MVP PlanningVideoSlides
3Git for TeamsVideoSlides
3Code ReviewsVideoSlides
3CMVP DemosVideo-----

Assessments & Grading

You overall course grade is composed of these weighted elements:

  • 12% Personal Reflections
  • 18% Sprint Reports & Team Charter
  • 10% MVP Demo
  • 20% Final Project Implementation
  • 10% Final Project Presentation
  • 10% Final Project Demonstration
  • 20% Final Project Reflection

Late Policy

Late submissions are not allowed for any of the assessments in this course.

Personal Reflections

Reflection is a key part of learning.

Approximately every other week, you will submit a short personal reflection in Gradescope. You'll reflect on what you did and how the project is going.

Sprint Reports & Team Charter

Approximately every other week, your team will submit a Sprint Report outlining the details of what they have accomplished that week, the challenges they have encountered and what their plans are for the next week.

MVP Demo

A minimally viable product (MVP) is a basic version of a product with enough features to satisfy early customers and provide feedback for future product development. During Week 5 of the term you will demonstrate the progress on your project to your instructor. At this point, sufficient work should be completed to give a strong idea of the direction of the project and the features you are implementing. In addition, team members should be able to describe their development process and plans for the remainder of the project.

Peer Reflections

Included in the weekly reflection is a peer rating, where you'll score your own and your teammates' weekly contributions to the project.

Peer ratings are intended to promote accountability, and foster teamwork. Your individual peer ratings are confidential (we won't share the scores you submit with your teammates). However, instructors will use the peer ratings to spot teams that may need additional support in collaborating effectively. Peer ratings will factor into your course grade. Teammates that do not contribute to the team's project will not receive the full points for that project.

Final Project Implementation

You'll use Github to collaborate on your project with your team, and you may use some hosting service to deploy your application. You will submit the finished project at the end of the course.

Your implementation will be evaluated based on its fit to the problem statement, proper functionality, number of features implemented (we prefer fewer, high-quality features over many, low-quality features.), and your adherences to good software engineering practices (documentation, design, testing, etc.).

Final Project Presentation

At the end of the term, your team will present your project to the project sponsor, class, and any other project stakeholders.

You'll have 5 minutes to explain the problem, present your application, share its features, and discuss the challenges and things you learned during the project.

Final Project Demonstration

In addition to the project presentations, teams will record a 3-5 minute demonstration of their application where they should walk through the features of their project and show how users interact with it. This is different from the project presentation in that you will purely demonstrate your project.

Final Project Reflection

At the end of the course, you'll submit a reflection on your experience with the team project. You'll write about what you learned about software and teamwork, the challenges you faced, and what you are proud of from the project.

It may be helpful to reread your weekly reflections and team sprint reports, to help recall the progress and challenges over the course of the term.

Peer Ratings

Included in the final project reflection is a peer rating, where you'll score your own and your teammates overall contribution to the project.

Peer ratings are intended to promote accountability, and foster teamwork. Your individual peer ratings are confidential (we won't share the scores you submit with your teammates).

Peer ratings will factor into your course grade. Teammates that do not contribute to the team's project will not receive the full points for that project.

Getting Help

If you have any trouble understanding the concepts or stuck on a problem, we expect you to reach out for help!

Below are the different ways to get help in this class.

Discord Channel

The first place to go is always the course's help channel on Discord. Share your question there so that your Instructor and your peers can help as soon as we can. Peers should jump in and help answer questions (see the Getting and Giving Help sections for some guidelines).

Message your Instructor on Discord

If your question doesn't get resolved within 24 hours on Discord, you can reach out to your instructor directly via Discord DM or Email.

Office Hours

There will be weekly office hours with your Instructor and your TA. Please make use of them!

Tips on Asking Good Questions

Asking effective questions is a crucial skill for any computer science student. Here are some guidelines to help structure questions effectively:

  1. Be Specific:

    • Clearly state the problem or concept you're struggling with.
    • Avoid vague or broad questions. The more specific you are, the easier it is for others to help.
  2. Provide Context:

    • Include relevant details about your environment, programming language, tools, and any error messages you're encountering.
    • Explain what you're trying to achieve and any steps you've already taken to solve the problem.
  3. Show Your Work:

    • If your question involves code, provide a minimal, complete, verifiable, and reproducible example (a "MCVE") that demonstrates the issue.
    • Highlight the specific lines or sections where you believe the problem lies.
  4. Highlight Error Messages:

    • If you're getting error messages, include them in your question. Understanding the error is often crucial to finding a solution.
  5. Research First:

    • Demonstrate that you've made an effort to solve the problem on your own. Share what you've found in your research and explain why it didn't fully solve your issue.
  6. Use Clear Language:

    • Clearly articulate your question. Avoid jargon or overly technical terms if you're unsure of their meaning.
    • Proofread your question to ensure it's grammatically correct and easy to understand.
  7. Be Patient and Respectful:

    • Be patient while waiting for a response.
    • Show gratitude when someone helps you, and be open to feedback.
  8. Ask for Understanding, Not Just Solutions:

    • Instead of just asking for the solution, try to understand the underlying concepts. This will help you learn and become more self-sufficient in problem-solving.
  9. Provide Updates:

    • If you make progress or find a solution on your own, share it with those who are helping you. It not only shows gratitude but also helps others who might have a similar issue.

Remember, effective communication is key to getting the help you need both in school and professionally. Following these guidelines will not only help you in receiving quality assistance but will also contribute to a positive and collaborative community experience.

Screenshots

It’s often helpful to include a screenshot with your question. Here’s how:

  • Windows: press the Windows key + Print Screen key
    • the screenshot will be saved to the Pictures > Screenshots folder
    • alternatively: press the Windows key + Shift + S to open the snipping tool
  • Mac: press the Command key + Shift key + 4
    • it will save to your desktop, and show as a thumbnail

Giving Help

Providing help to peers in a way that fosters learning and collaboration while maintaining academic integrity is crucial. Here are some guidelines that a computer science university student can follow:

  1. Understand University Policies:

    • Familiarize yourself with Kibo's Academic Honesty and Integrity Policy. This policy is designed to protect the value of your degree, which is ultimately determined by the ability of our graduates to apply their knowledge and skills to develop high quality solutions to challenging problems--not their grades!
  2. Encourage Independent Learning:

    • Rather than giving direct answers, guide your peers to resources, references, or methodologies that can help them solve the problem on their own. Encourage them to understand the concepts rather than just finding the correct solution. Work through examples that are different from the assignments or practice problems provide in the course to demonstrate the concepts.
  3. Collaborate, Don't Complete:

    • Collaborate on ideas and concepts, but avoid completing assignments or projects for others. Provide suggestions, share insights, and discuss approaches without doing the work for them or showing your work to them.
  4. Set Boundaries:

    • Make it clear that you're willing to help with understanding concepts and problem-solving, but you won't assist in any activity that violates academic integrity policies.
  5. Use Group Study Sessions:

    • Participate in group study sessions where everyone can contribute and learn together. This way, ideas are shared, but each individual is responsible for their own understanding and work.
  6. Be Mindful of Collaboration Tools:

    • If using collaboration tools like version control systems or shared documents, make sure that contributions are clear and well-documented. Clearly delineate individual contributions to avoid confusion.
  7. Refer to Resources:

    • Direct your peers to relevant textbooks, online resources, or documentation. Learning to find and use resources is an essential skill, and guiding them toward these materials can be immensely helpful both in the moment and your career.
  8. Ask Probing Questions:

    • Instead of providing direct answers, ask questions that guide your peers to think critically about the problem. This helps them develop problem-solving skills.
  9. Be Transparent:

    • If you're unsure about the appropriateness of your assistance, it's better to seek guidance from professors or teaching assistants. Be transparent about the level of help you're providing.
  10. Promote Honesty:

    • Encourage your peers to take pride in their work and to be honest about the level of help they received. Acknowledging assistance is a key aspect of academic integrity.

Remember, the goal is to create an environment where students can learn from each other (after all, we are better together) while we develop our individual skills and understanding of the subject matter.

Academic Integrity

When you turn in any work that is graded, you are representing that the work is your own. Copying work from another student or from an online resource and submitting it is plagiarism. Using generative AI tools such as ChatGPT to help you understand concepts (i.e., as though it is your own personal tutor) is valuable. However, you should not submit work generated by these tools as though it is your own work. Remember, the activities we assign are your opportunity to prove to yourself (and to us) that you understand the concepts. Using these tools to generate answers to assignments may help you in the short-term, but not in the long-term.

As a reminder of Kibo's academic honesty and integrity policy: Any student found to be committing academic misconduct will be subject to disciplinary action including dismissal.

Disciplinary action may include:

  • Failing the assignment
  • Failing the course
  • Dismissal from Kibo

For more information about what counts as plagiarism and tips for working with integrity, review the "What is Plagiarism?" Video and Slides.

The full Kibo policy on Academic Honesty and Integrity Policy is available here.

Course Tools

In this course, we are using these tools to work on code. If you haven't set up your laptop and installed the software yet, follow the guide in https://github.com/kiboschool/setup-guides.

  • GitHub is a website that hosts code. We'll use it as a place to keep our project and assignment code.
  • GitHub Classroom is a tool for assigning individual and team projects on Github.
  • Visual Studio Code is an Integrated Development Environment (IDE) that has many plugins which can extend the features and capabilities of the application. Take time to learn how ot use VS Code (and other key tools) because you will ultimately save enormous amounts of time.
  • Anchor is Kibo's Learning Management System (LMS). You will access your course content through this website, track your progress, and see your grades through this site.
  • Gradescope is a grading platform. We'll use it to track assignment submissions and give you feedback on your work.
  • Woolf is our accreditation partner. We'll track work there too, so that you get credit towards your degree.

Introduction

Welcome to Week 1 of Team Software Project. We have a lot to get done this week, so I hope you're ready to dive in!

Tasks for this Week

  • Form your team.
  • Choose a project.
  • Set up your tools.
  • Submit your team charter.

Deliverables for this Week

  • Team Charter - Due by 11:59pm GMT on Monday, Januray 15th

What to Expect This Week

First things first, let's get into teams. Whether you've got a squad already or are looking to join forces with new faces, this is your chance to collaborate with fellow tech enthusiasts. Think of it as assembling your own dream team for the tech leagues!

Once you've got your team, it’s time to choose your project. Whether it’s one of suggested applications, or something that solves everyday problems, pick something that gets you all fired up.

Next up, tool setup. We're talking about the nitty-gritty of software development – setting up your GitHub repositories, getting familiar with project management tools, and anything else we need to turn our ideas into reality.

And let's not forget about the team charter. This isn't just paperwork; it’s your team's blueprint. It’s where you define how you'll work together, set goals, and map out your plan for success. A great team charter sets the stage for an incredible project experience.

Remember that this is a learning experience and it’s okay to stumble along the way. Mistakes? They're just stepping stones to success. Questions? Ask away – that's how we learn.

Let's make this project not just about coding, but about growing as a team, learning new skills, and having a blast while we’re at it. Let's code, collaborate, and create something we're proud of.

🚀👩‍💻👨‍💻🎉

Forming Teams

You've got a grasp on the requirements and challenges for this term, right? Now, you might be wondering, "How on earth am I going to tackle all this?" Here's the awesome part - you're not going it alone! You'll be teaming up in groups of four.

Working in a team isn't just about achieving more; it's an adventure in collaboration and coordination. Great teamwork doesn’t just happen – it's crafted. We're here to equip you with the essentials to make that happen, turning your team into a powerhouse of productivity and innovation.

But first, let's sort out some key details: You have the freedom to create your own super teams! Our course Discord channel is your go-to spot to link up with fellow classmates. It's the perfect place to find teammates who share your project vision and goals. Plus, it’s important to sync up your schedules to ensure smooth sailing.

Having trouble finding your crew? No worries, just reach out to your course instructor. We're here to make sure everyone finds their spot in a team where they can shine.

Now, with teams set and ready, let's dive into the really good stuff – making your team click and fire on all cylinders.

The Power of Teamwork and How to do it Well

Why be a star when you can make a constellation?

– Naomi Murakawa

Have you ever considered that there is more to success than just individual achievement? Rather than being a lone star in the sky, why not create something even more beautiful and impactful? By collaborating with others and working towards a common goal, you can create a constellation - a group of shining stars that together form a stunning and memorable image. Not only will you have the satisfaction of knowing that you have played a part in something bigger than yourself, but you will also have the opportunity to learn and grow from those around you.

This is the value of teamwork and collaboration!

In a world where we are constantly bombarded with messages about the importance of individualism and self-reliance, it's easy to forget the value of collaboration. Working in teams can bring about a whole host of benefits that simply cannot be achieved through individual effort. Not only does collaboration foster creativity and learning, but it also allows us to play to our strengths, boost morale and performance, build a sense of camaraderie, and tackle immense challenges.

Therefore, as you go through the Team Software Project course, you will also be learning how to work together better so that you can really leverage the strengths of your team members to create a truly impactful project.

Stages of Team Development

Watch this video for an introduction to the stages of team development.

Summary from the video on why we should work in teams:

  1. To foster creativity and learning
  2. To play to our strengths
  3. To boost morale and performance
  4. To build a sense of camaraderie
  5. To allow us to tackle immense challenges that we could not handle by ourselves

As mentioned in the video, the Tuckman model of team development is a popular framework used to understand the stages that teams go through as they work together towards a common goal. Developed by Bruce Tuckman in 1965, the model consists of five stages: forming, storming, norming, performing, and adjourning. Each stage is marked by unique characteristics, challenges, and opportunities for growth. By understanding the Tuckman model, teams can better navigate the ups and downs of working together and ultimately achieve greater success.

Tuckman stages of group development Source: Strategic Project Management: Theory and Practice for Human Resource Professionals

Forming

Watch this video for an introduction to the forming stage.

Summary: Forming behaviours

  1. Get acquainted
  2. Feel comfortable
  3. Exchange information
  4. Avoiding conflict
  5. Ensure acceptance
  6. Hide personal feelings
  7. Sizing each other up
  8. Focus is on the individuals

Virtual Teams

Watch this video to learn how to learn about working in virtual teams.

Tips for building effective virtual teams:

  1. Meet at least once per week.
  2. Choose your collaboration tools
    • What are your document-sharing tools?
    • What tools will you use for meeting?
    • What technology will you use to communicate on a regular basis?
    • What tool will you use for project management?
  3. Over-communicate
  4. Hold effective meetings
  5. Foster shared leadership