A project is an activity that teaches students to use a concept or tool by practicing it. A project is not a tutorial or a walkthrough; rather, a project links to tutorials for explanations of concepts that the student will use to build something.
Try to hone in on just one or two concepts when you're writing and really get the student to use that skill to complete a task. Before starting, ask yourself these questions:
- "What will the student learn?"
- "What level is this aimed at? Beginner, intermediate, or advanced?"
- "What project will help them use that skill?"
Read these examples first:
- https://github.com/Thinkful-Ed/thinkful-projects/blob/master/node/jedi.md
- https://github.com/Thinkful-Ed/thinkful-projects/blob/master/node/Thinkr.md
What follows is a template for a project-first course.
###Title Your project should have a title that is engaging and descriptive. Here's an example of a good project title (more coming soon): Garbage Collection with Node
Include the following metadata at the start of a project:
Level: Beginner, Intermediate, or Advanced
Time Estimate: X minutes or hours
Topics: What skills are used in this project? What does it cover?
###Project Brief This section describes the project to the student. Set the stage. Is there a scenario for this project? Maybe the student should imagine they are working for NASA to solve problems in space. Or maybe they're working for Google to serve you more ads... Be creative in providing the context of real project with a tangible outcome.
The brief should also explain precisely what the final product does. If there's a visual output, show an example of what it could look like; if not describe it in clear terms, such as "The student will enter the URL /jedi/beyonce/knowles and the server will respond with Hello KnoBe." The student should know what the end goal is by reading your description.
You may include some description of bonus extensions of the product – creative ways students could extend the basic project. These are optional, but help to allow some room for students to put their own spin on a project.
###Milestones
- Break down the project into "Milestones." At each "Milestone" the student should complete an chunk of the project. For example, the header for the first milestone section should be "Milestone 1: Build your Server and Get it Running." A project could have anywhere from 1-4 milestones (if it has only one milestone, label this section "Steps").
- Each milestone should have an ordered list of steps. This is the second step for this milestone. For projects that are intended for the beginner level, steps should be specific. For advanced projects, general steps that encompass a few tasks work well.
- If there's a skill a student needs to know in order to complete any part of the project, provide a link. For example, the last sentence of a step might read: "If you need help with either step, review Simple Express servers and Request parameters."
- If you included suggestions for a stretch milestone, make sure to include steps labelled as "Bonus Milestone: ..."
###Additional Resources
- The resources section should links to readings or videos that provide context or help the student build the project. Each resource listed should have 1-3 sentences explaining what the resource is and why it's useful.
- When linking to resources, you can link to Thinkful course content or content we've licensed (a list of available content can be found here. You can also use any resources from around the web, such as a particularly helpful blog post, although prioritize content we provide as we can guarantee their quality and reliability.
###Sample Solution
- Provide a link to a sample solution, ideally on Github.