Intro to CS curriculum intro and first lesson (#421)

This commit is contained in:
Galen Nickel 2017-06-23 11:27:46 -07:00 committed by Peli de Halleux
parent bc786c1ea5
commit 90f5242dd1
36 changed files with 13230 additions and 0 deletions

View File

@ -0,0 +1,10 @@
# About The Authors
![Douglas Kiang](/static/courses/csintro/douglas-kiang-foto.jpg)
Douglas Kiang is a speaker, teacher, and workshop presenter with twenty-seven years of teaching experience in independent schools at every grade level. He currently teaches high school computer science at Punahou School in Honolulu, Hawaii. Douglas holds a masters degree in Technology, Innovation, and Education from Harvard and is a Microsoft Innovative Educator.
You can follow him on Twitter at [@dkiang](http://twitter.com/dkiang).
![Mary Kiang](/static/courses/csintro/mary-kiang-foto.png)
Mary Kiang has been teaching for over twenty-five years at elementary, middle, and high school levels. She also developed curriculum in the Education Department of the Museum of Science in Boston. She currently teaches 6th grade Math/Science at Punahou School. Mary is a former programmer for Houghton Mifflin and Dun & Bradstreet and holds a Masters degree in Elementary Education from Simmons College. Mary is the founder of GO Code!, an organization that supports girls and young women in exploring coding and STEM.

View File

@ -0,0 +1,85 @@
# Introduction
When we first started teaching computer science, we discovered two important things. We found that existing curriculum for beginners focused mostly on solving math problems or constructing geometric shapes and that there was a certain type of student that signed up for computer science classes and these students were almost always boys. We wondered whether a different approach to teaching the basics of computer programming would be more engaging and also attract a larger variety of different types of students, both boys and girls.
 
We decided to focus on what knowing how to program allowed you to do and create. Ultimately all programs are created to solve a problem or serve a purpose. The problem may be local or global, the purpose may be anything from helping doctors treat patients to pure entertainment. By starting with interesting problems the students wanted to solve, they were much more engaged in learning to code. They saw coding skills as an important part of building creative solutions.
With this approach, we found that not only did we get more girls taking the course, we also got a more diverse group of boys. Opportunities for collaboration increased, and all the students got to see where their talents and skills meshed with others' interests and experiences, to make a whole that was greater than the sum of its parts.
We are now at the point where a third of the students taking computer science are girls, and more importantly, students are coming out of the course not only with an understanding of code, but also knowing how to read through professionally written code, and take an idea from brainstorming through prototyping to build something that matters.
> _- Authors Mary Kiang and Douglas Kiang_
## Course Introduction
This is an introduction to coding and computer science by way of making and design, using the revolutionary new micro:bit microcontroller board, and Microsoft's easy and powerful MakeCode block-based coding environment. It is a project-based curriculum with a maker philosophy at its core; the idea is that by making physical objects, students create a context for learning the coding and computer science concepts.
![micor:bit man](/static/courses/csintro/microbitman.jpg)
* Micro:bits may be purchased from these resellers:
> http://microbit.org/resellers (you will need 1 micro:bit per student for this course). The "Micro:bit Go Kit" includes a battery pack and USB cable as well.
* Other optional suggested micro:bit accessories include:
> * [ ] Alligator/Crocodile clip cables
* [ ] Headphone/earbuds (for audio)
* [ ] Servo motor (for movement)
* [ ] Croc clip to Male connector (for connecting to Servo motor)
* [ ] Croc clip to Headphone jack adapter (http://microbit-accessories.co.uk/)
* MakeCode for the micro:bit is a free web app: https://makecode.microbit.org
When students complete this course they will have a good understanding of computer science concepts that can serve as the foundation for future study. They will develop powerful design skills that they can use in future projects of all types, whether they are designing 3D printed prototypes or creating apps that serve a real world purpose.
This course is targeted to middle school grades 6-8 (ages 11-14 years). It is also written for teachers who may not have a Computer Science background, or may be teaching an "Intro to Computer Science" course for the first time.
This course takes approximately 14 weeks to complete, spending about 1 week on each of the first 11 lessons, and 3 weeks for students to complete the final project at the end. Of course, teachers should feel free to customize the curriculum to meet individual school or district resources and timeframe.
## Overall Course Scope & Sequence:
1. Making
2. Algorithms
3. Variables
4. Conditionals
5. Iteration
6. Review/Mini-Project
7. Coordinate Grid System
8. Booleans
9. Music and Arrays
10. Bits, Bytes, and Binary
11. Radio
12. Arrays
13. Independent Final Project
Each of the 12 lessons is comprised of the following parts:
* Topic Introduction
* Unplugged Activity (30 min) ̶ An offline game or activity that demonstrates the concept/topic
* Micro:bit Activity (45-60 min) ̶ An activity that everyone makes on their micro:bit that teaches the skills learned in this lesson.
* Project (60-120 min) ̶ A prompt for an original project that each student will create to demonstrate their understanding of the skills and concepts covered in this lesson.
* Project Mods ̶ Examples of additional things students can do to extend the project
* Assessment ̶ A project rubric and guidance for grading the project.
* Standards ̶ A list of [CSTA K-12 Computer Science Standards](https://www.csteachers.org/?page=CSTA_Standards) and/or concepts covered by this lesson.
### Topic Introduction
The introduction to each lesson will tell you what learning objectives are covered in the lesson, and presents an overview of that lesson's topic. Some lessons have a specific activity that can help introduce the topic to students in a fun way.
### Unplugged Activity (30 min)
Each lesson starts with an unplugged activity, which doesn't require a computer or a micro:bit. It's a chance to get students up and moving around, and is designed to be a fun introduction to the computer science concept covered in that lesson. Unplugged activities are an important way to demonstrate new concepts in a tangible, often kinesthetic, way. Since so many computer-based topics are abstract, unplugged activities are very effective at fostering understanding that students will then demonstrate in later activities.
### Micro:bit Activity (4560 min)
Each lesson also contains a micro:bit activity, which we informally refer to as a "birdhouse" activity, after the innumerable wooden birdhouses so many of us made in wood shop as a way to master basic skills. Each lesson's micro:bit activity is an example that walks students step-by-step through building a project that demonstrates that lesson's topic. By the time students finish the activity, they will have written code that they can use in a different project of their own design.
Some students will finish the activity more quickly than others. Those students can then be a helpful resource for their classmates, or they can challenge themselves by modifying, or "modding" the activity to do something different. We have provided examples and suggestions at the end of many of these activities, and feel free to suggest your own (or encourage your students to come up with their own ideas!)
### Project (60120 min)
After presenting the concept in an unplugged fashion, then walking students through a demonstration activity, it is time to challenge students to use those skills to create something that is creative and original. Students will be working on their projects in a "collaboratively independent" way, which means each student is responsible for turning in his or her own project, but are encouraged to work together and help each other while doing so. Some form of reflection is an important part of documenting the learning that has taken place, and it's a great idea to share out the final projects and reflections, either at an event or on a blog.
There are also a series of Project Mods that students can do to extend the project they have created. These are useful for students who already have some experience with coding or who want an extra challenge.
### Assessment
A rubric is provided for each project that can be customized according to what students are being asked to demonstrate. For the Activities we just expect students to do them, so those are fairly simple to check off. For the Projects, however, there is often a range of grades based on how closely the project meets the specifications of the assignment.
### Standards
Where applicable, we have mapped each of the lessons to the [Computer Science Teachers Association (CSTA) K-12 Standards](https://www.csteachers.org/?page=CSTA_Standards), which are US nationally recognized standards for computer science education.

View File

@ -0,0 +1,49 @@
# Unplugged: Design Thinking
![Design thinking](/static/courses/csintro/making/design-thinking.png)
**Objective:** To introduce a process of design that starts with talking to one another. Whatever you build with code should serve a purpose or fill a need. Sometimes what you build will make the world more beautiful, or help somebody else. Our design process, based on a process called design thinking, can give students a specific framework for thinking purposefully about design.
**Overview:** In this activity, students will interview each other about their ideal pet. They should take notes.
The first step in coding by design involves understanding someone elses need. Then, you can create prototypes that get you closer and closer to the best solution.
**Materials:** Pairs of students, something to take notes on
**Getting started:**
Pair students up with each other. One is Student A, the other is Student B. The goal of this activity is to gather information from their partner that will help them to design a Micro:bit pet for their partner.
**5 minutes:** Student A interviews Student B. The goal is to find out what Student B considers to be their ideal pet. Student A should mostly listen, and ask questions to keep Student B talking for the entire time. Here are some questions to start with:
* Do you have a pet? What is it?
* What do you like about your pet? What do you dislike?
* Is there anything you wish your pet could do? Why?
* Tell me about your ideal pet.
**5 minutes:** Student B interviews Student A, as above.
The goal is to find out more about your partner by asking questions. Try to ask “Why?” as much as possible. Your partner will tell you about his or her ideal pet, but you are really finding out more about your partners likes and dislikes. When we design, we create real things for real people. So we need to start with understanding them first.
**5 minutes:** Student A and Student B review their notes, and circle anything that seems as if it will be important to understanding how to create the ideal pet for their partner. Circle ideas, advice, anything that could be helpful when they start building. Then, they should use what they have discovered about their partner to fill in the blanks:
"My partner needs a `__________________` because `__________________`."
This definition statement should draw some conclusions about their partner's need based on the conversation they have had with that person.
**5 minutes:** Student A and Student B sketch at least 5 ideas of pets that would meet their partner's needs. Stick figures and diagrams are okay. At this point, quantity is more important than quality. Students shouldn't limit themselves to real animals; unicorns and mashups are totally fine!
Make sure students keep their notes and sketches! They will use them in the project for this lesson.
## Examples
![Design thinking sketch 1](/static/courses/csintro/making/dt-sketch1.jpg)
![Design thinking sketch 2](/static/courses/csintro/making/dt-sketch2.jpg)
![Design thinking sketch 3](/static/courses/csintro/making/dt-sketch3.jpg)
![Design thinking sketch 4](/static/courses/csintro/making/dt-sketch4.jpg)

View File

@ -0,0 +1,69 @@
# Activity: Installing a program
**micro:bit activity:** Installing a Microsoft MakeCode Program on the micro:bit
**Objective:** Learn how to download programs from the MakeCode tool.
**Overview:** Students will create a simple program in Microsoft MakeCode and download it to their micro:bit using a USB cable.
For this activity, students will each need a micro:bit, a micro-USB cable, a computer, and a battery pack.
![micro:bit kit](/static/courses/csintro/making/microbit-kit.jpg)
Download this file to your computer (right-click, Save As):
[**MicroPet program**](/static/courses/csintro/making/microbit-micropet.hex)
Open a browser window to [makecode.com](http://makecode.com), and select the micro:bit code editor
![micro:bit card icon](/static/courses/csintro/making/microbit-card-icon.png)
From the top left corner of the screen, select the **Projects** Menu, and click on **Import File**. Select the file that you saved on your computer in the previous step.
![Projects folder](/static/courses/csintro/making/projects-folder.png)
![Import file](/static/courses/csintro/making/import-file.png)
The program should look like the following in MakeCode.
It shows a repeating series of faces:
```blocks
basic.forever(() => {
   basic.showIcon(IconNames.Happy)
   basic.pause(5000)
   basic.showIcon(IconNames.Sad)
   basic.pause(5000)
})
```
See the [**MicroPet**](https://makecode.microbit.org/_38yJ1PAkuKPV) project online.
https://makecode.microbit.org/_38yJ1PAkuKPV
## Tour of Microsoft MakeCode
* **Simulator** - on the left side of the screen, you will see a virtual micro:bit that will show what your program will look like running on a micro:bit. This is helpful for debugging, and instant feedback on program execution.
* **Toolbox** - in the middle of the screen, there are a number of different categories, each containing a number of blocks that can be dragged into the programming workspace on the right.
* **Workspace** - on the right side of the screen is the Programming Workspace where you will create your program. Programs are constructed by snapping blocks together in this area.
![IDE tour](/static/courses/csintro/making/ide-tour.png)
The color of the blocks identifies their category. All of the blocks that make up the program above come from the **Basic** Toolbox category, which is light blue.
## Downloading a MakeCode program to the micro:bit
To download the file to your micro:bit, you must connect it to your computers USB port using a micro-USB cable. The micro:bit will draw power from your computer through the USB connection, or you can connect an optional battery pack so it can function even after it is unplugged from the computer. Once plugged in, the micro:bit shows up on your computer like a USB flash drive.
![USB connection](/static/courses/csintro/making/microbit-usb.jpg)
Click the purple Download button in the lower left of the MakeCode screen. This will download the file to your computer, to the location where your browser is set to save downloads.
![Download button](/static/courses/csintro/making/download-button.png)
To move the program to your micro:bit, drag the downloaded "microbit-xxxx.hex" file to the MICROBIT drive, as if you were copying a file to a flash drive. The program will copy over, and it will begin running on the micro:bit immediately.
![micro:bit drive](/static/courses/csintro/making/microbit-drive.jpg)
The micro:bit will hold one program at a time. It is not necessary to delete files off the micro:bit before you copy another onto the micro:bit; a new file will just replace the old one.
For the next project, your students should attach the battery pack (it takes 2 AAA batteries) to the micro:bit using the white connector. That way they can build it into their design without having to connect it to the computer.
![Battery pack](/static/courses/csintro/making/battery-pack.jpg)

View File

@ -0,0 +1,51 @@
# Making with micro:bit
This Lesson introduces the micro:bit as a piece of hardware that has a specific size and weight, and
generally must be supported and incorporated as an essential component of a tangible artifact. Focus
on incorporating the physical micro:bit into a basic making activity.
![micro:bit board](/static/courses/csintro/making/microbit-board.png)
## Lesson Objectives
Students will...
* Exercise creativity and resourcefulness by coming up with ideas for using simple household materials to accommodate the micro:bits size and weight in many different ways.
* Test and iterate using different materials and sizes in order to create an optimal design to house the micro:bit and battery pack
* Learn how to download programs and move them to the micro:bit file to run on the micro:bit.
* Use the design thinking process to develop an understanding for a problem or user need.
* Apply their understanding in a creative way by making a “micro:pet” creature.
## Lesson Plan Structure
* Introduction: The micro:bit is for making
* Unplugged Activity: Design Thinking
* micro:bit Activity: MakeCode download
* Project: Micro:pet
* Project Mods
* Assessment: Rubric
* Standards: listed
## Introduction
The micro:bit is a great way to teach the basics of programming and computer science. The Microsoft MakeCode block-based coding environment is a powerful and intuitive way to make the micro:bit react to all sorts of input, and you can introduce fundamental concepts such as iteration, conditional statements, and variables using MakeCode.
Students often focus primarily on the 5x5 LED screen for providing output. Although this is the most directly accessible way to see a reaction to some kind of input, there are many more creative possibilities when you encourage your students to see the micro:bit as a “brain” that can control physical, tangible creations.
These creations dont have to be complex or highly technical. Its great to have students building with common household supplies. Because the micro:bit is so lightweight, and supports so many sensors, it can be incorporated easily into a physical design as long as students plan ahead for its size and weight. One of the first questions you might ask students is “Where does the micro:bit fit in your creation?”
In this first lessons project, we focus on making something creative that features the micro:bit as its “face”. We purposely start this course with a lesson on Making and the physical nature of the micro:bit, because it is important to set the tone for the whole course that this is a class about making, building, crafting and construction. It helps if you have an art room available where kids can work, or arts and crafts supplies in your classroom that kids can use to build.
Some common making supplies to gather:
* pizza boxes
* scrap cardboard
* colored construction paper
* colored duct tape
* scissors
* pipe cleaners
* stickers
* feathers
* string
* markers
![Maker materials](/static/courses/csintro/making/maker-materials.png)

View File

@ -0,0 +1,69 @@
# Project: Micro:pet
## Project
This project is an opportunity for students to create a micro:pet for the partner they interviewed in the Unplugged activity. They should review their notes and try to summarize what their partner finds appealing in a pet. Then, they should use whatever materials are available to create a prototype of a pet their partner would like.
We often ask students to sketch a few designs on paper first, then consult with their partner to see which aspects of those designs they find most appealing. The purpose of prototyping is to gather more feedback to help you in your final design (“I like this part from Idea A, and I like this part from Idea B…”)
Build a micro:pet that:
* Matches your partners needs
* Supports the micro:bit and its battery pack
* Allows you to easily access the micro:bit to turn it on and off
Your design should use whatever materials are available to support the micro:bit so that its face is showing. You can be creative and decide how to mount the board, and how to decorate your critter.
Think about the following questions when you construct it:
* Will it be an animal? A plant? A robot? A bug?
* Will it have any moving parts?
* If it moves, how can you hold the micro:bit securely?
Some photos of sample micro:pets below!
## Ideas for Mods
* Find a way to make part of the animal move.
* Give your animal a natural habitat.
* Create a way to carry your animal.
* Create an animal that reacts when you pet it or move it (find a way to detect when the micro:bit is moved or when its position changes in a certain way.)
## Reflection
Have students write a reflection of about 150300 words, addressing the following points:
* Summarize the feedback you got from your partner on your idea. How would you revise your design, if you were to go back and create another version?
* What was it like to have someone designing a pet for you? Was it a pet you would have enjoyed? Why or why not? What advice did you give them that might help them redesign?
* What was it like to interview your partner? What was it like to be listened to?
* What was something that was surprising to you about the process of designing the micro:pet?
* Describe a difficult point in the process of designing the micro:pet, and explain how you resolved it.
## Rubric
For creative projects such as these, we normally dont use a qualitative rubric to grade the creativity or the match with their partners needs. We just check to make sure that the micro:pet meets the required specifications:
* Program properly downloaded to micro:bit
* Micro:bit supported so the face is showing
* Micro:bit can be turned on and off without taking critter apart
* Turned in notes on interview process
* Written reflection (prompt is above)
## Micro:Pet Examples
![A dog micro:pet](/static/courses/csintro/making/micropet-dog.jpg)
Dog
https://youtu.be/2ZCDB-a_uRY
micro:pet Fish Tank
![A piggy bank micro:pet](/static/courses/csintro/making/micropet-piggy-bank.jpg)
Pink Piggy
![A ladybug micro:pet](/static/courses/csintro/making/micropet-ladybug.jpg)
Ladybug
![A caterpiller micro:pet](/static/courses/csintro/making/micropet-caterpillar.jpg)
Caterpillar
![A fox micro:pet](/static/courses/csintro/making/micropet-fox.jpg)
Fox
![A robot micro:pet](/static/courses/csintro/making/micropet-robot.jpg)
Robot

View File

@ -0,0 +1,6 @@
# Standards
## CSTA K-12 Computer Science Standards
* 2-A-2-1 Solicit and integrate peer feedback as appropriate to develop or refine a program.
* 2-A-6-10 Use an iterative design process (e.g., define the problem, generate ideas, build, test, and improve solutions) to solve problems, both independently and collaboratively.

View File

@ -0,0 +1,28 @@
# References
![Stack of books](/static/courses/csintro/books.png)
We have included some additional reference books and materials if you are interested in learning more about Maker Education, Physical Computing or Design Thinking in the classroom.
* [Invent To Learn](http://inventtolearn.com/)
> Making, Tinkering, and Engineering in the Classroom By Sylvia Libow Martinez & Gary Stager
* [Launch](http://thelaunchcycle.com/)
> Using Design Thinking to Boost Creativity and Bring Out the Maker in Every Student by John Spencer and AJ Juliani
* [The Innovator's Mindset](http://georgecouros.ca/blog/archives/5715)
> Empower Learning, Unleash Talent, and Lead a Culture of Creativity
by George Couros
* [The Big Book of Makerspace Projects](https://colleengraves.org/bigmakerbook/)
> Inspiring Makers to Experiment, Create, and Learn by Colleen Graves
If you have feedback for the Microsoft MakeCode team, you can fill our their survey form here: https://aka.ms/microbitfeedback
The support site for the micro:bit is located here: [https://support.microbit.org](https://support.microbit.org/)

BIN
docs/static/courses/csintro/books.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 312 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 353 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB