➡️Project Goals

This is your first group assignment. You cannot complete this assignment until you are in a group for your term project. Only one member of the group needs to submit this assignment.

Now that you have a group, it's time to narrow down what you want to do for your group project, and set expectations among your team. As a team, you should prepare the following:

1. Reflect, as a group, on your inspiration projects. Get together as a team and examine the inspiration projects you each came up with for the first project milestone. Which of these inspire your team, and why? What appeals to each of you about those projects? What do you not like about them? Do the projects seem too ambitious, or too simple?

2. Use asset maps to get to know each other. Each of you should create your own asset maps. Asset maps are a helpful way for you to reflect upon your experiences and what you want to get out of a group project experience, as well as communicate that with others. Asset maps are a kind of mind-map: a hierarchical and diagrammatic representation of complex concepts. In this case, the complex concept is you!

An example of an asset map is shown below. Notice that coming off the middle of the diagram (which is your name), there are several core categories:

  • personal culture and background

  • clubs, organizations, sports

  • team and project skills

  • creative expression

  • related coursework and jobs

  • relevant experiences

  • passions and interests

  • technical expertise

And then, from each of these categories, you add to your mindmap 2-5 items that you consider important to you. You can use a mindmapping tool such as Coggle (free, account required), or you can draw it on paper and take a photo/scan it.

3. Independently identify skills you want to grow this term. Take some time to write down three areas you want to grow in through conducting this project. These can be related to programming, or something broader. Share these areas with your team, and discuss how you can help each other grow in each area. Maybe one of you already is strong in an area that another student wants to grow, so the student in a strength area could take leadership in that role and the student wanting to grow in that area could assist until they feel more confident.

4. Identify your project learning goals. Now that you know a bit more about each other, how you each want to grow, what you each bring to the project, and what inspired you to work together in the first place: let's figure out what your main project goal is going to be! There are three main, related, questions you will need to answer:

  • What's your big picture goal? You should be able to describe, in a short paragraph, what you hope to create through this project. You can include a picture if it helps!

  • What do you want to learn by completing this project? You have probably overscoped your project for now, but that's okay! Having lofty goals is a great motivator when getting started. But it's also important to keep in sight what your ultimate learning goals are. Take a look at the course learning objectives again that are on the syllabus. Through this project, what do you want to learn in relation to each of them?

5. Make a team communication and collaboration plan. The amount of time the project takes up will likely increase as the term progresses, as you become more comfortable with Javascript and the labs take up less time. You will likely need to spend a lot of time working at the same time as each other, because you are only creating one piece of software, so there's only one set of code! Programmers typically use version control software to collaborate on the same piece of code at the same time, but learning to use that is outside the scope of this class (though you are welcome to use it if you are already familiar, or learn how it works!)

For a beginning project, I recommend finding as much time as possible that you are available at the same time as each other, especially at first. Plan to use those times to work on programming together. You can also find times that two of you are available to work together, without the other two team members present, and share the code back and forth. Plan to use time that you are working in subgroups and independently to do things like:

  • participate in project planning and communication activities

  • follow tutorials that you think are relevant to project

  • debug code that you already created together

Make sure you know how to reach each other easily (e.g. a group text). Also make sure you set clear expectations for communication: do you expect each other to reply promptly, and acknowledge seeing messages even if you can't answer immediately? Communicate to each other which days/hours you typically take off from school work (e.g. maybe you try to keep your saturdays free from work, or have a part time job on weekday evenings) so that you know not to expect responses from each other during your downtime.

6. Plan your project without any code at all. Before you start writing any code, first you have to do some planning! This will help you overcome the "blank screen" problem where you don't know what to start programming first, and will make sure you all agree on what it is you're hoping to create. Think about both the desired behavior of your project (what it needs to do) and the desired appearance (what does a user see when they run this project?). Make a list of these requirements, and prioritize it. Here's some questions to prompt you to think fully about your project requirements:

  • What are the inputs to your project? (e.g. datasets, user input, specific keyboard/mouse buttons)

  • Are there different things that need to appear on the screen? What are they? Draw pictures and diagrams!

  • What is the one feature your project absolutely needs to be able to work at all?

  • What, if anything, is the output of your project? (e.g. a generated image, a music clip)

  • Does your project follow a particular dataflow (e.g. take image as input, modify it, save new image as output). If so, what is it? How detailed can you get in describing it?

  • Who is the audience for your project? Who is not the audience? Why/why not?

7. Will you keep using p5js/javascript (recommended), or do you need to use something different? Lab assignments in class will remain in p5js, so it is likely easiest to do your project in p5js to avoid language confusion. There are a lot of projects you can do in p5js very successfully! That said, there may be a compelling reason specific to your project idea and/or team composition for choosing another option. There are both Java and Python modes in Processing, if you want to learn these languages or already have some familiarity with it. If you choose a different language/framework for your project, we can do our best to support you, but you will be responsible for learning how it works.

8. Set your goal for the first project sprint. Getting started can be the hardest part! Every project will need to start in a slightly different place. To give some general structure, This project is divided into four separate project sprints, each a week long. Before each project sprint, you will set the goal that you have to complete in that week. At the end of the sprint, you will re-evaluate your overall project goal based on what you've been able to accomplish. We will give you feedback on whether your goal seems appropriate, and on the overall scope of your project. For a first sprint, here are some ideas for how you might begin:

  • Look for other, more closely related examples online, to guide you on more specifics of what your project could be.

  • Flesh out your requirements analysis in more detail, if you were having difficulty doing so this week (e.g. if you ran out of time, or if you weren't sure how to do it)

  • Search for external resources, tutorials, guidelines for the type of project you want to do. Even experienced programmers rarely start completely from scratch.

  • Identify what the simplest possible version of your project could be, and plan how to (and start) implementing it

Submit as a PDF:

  • Your asset maps and areas you wish to grow

  • A description of your project goals, learning goals, and what inspired you

  • Your team communication/collaboration plan

  • Documentation from your project planning phase (e.g. feature list, diagrams, mockups, any background research) and whether or not you'll plan to use p5js or something else

  • A description of your goal for the first sprint

Last updated