Optional Projects
Optional programming projects help show the breadth of applications of content from the required lab pages and are aimed to appeal to diverse interests. But don't forget that the optional projects are optional! If you're having trouble fitting the curriculum into the school year, these are the first things to go.
You can assign a project to the entire class, or you can just let students know they exist, and let them take on projects if they have extra time.
Not all these projects are equally fruitful. Some of the art-related ones have been eclipsed by the art projects in the Take It Further sections of Lab 3. "The Game of Pong" is a relatively easy project, related to the ideas of Lab 5, that results in a quickly implemented game. "Modeling language," which logically follows Lab 2, continues the idea of Gossip but with a more detailed grammar.
Pacing:
The X lab pages could be split across X–X days (
X–X minutes). Expected times to complete follow:
Expected times to complete each optional project follow, but these times will vary significantly depending on your students:
Lab Pages
-
Page 1: Sprite Line Art.
-
Learning Goals:
- Understand fundamentals of processing keyboard input and interacting with a sprite through the keyboard.
- Review drawing commands and direction in Snap!.
-
Tips:
- This less difficult project connects to the Sprite Drawing lab, Exploring Motion page. It may appeal to students interested in art and design.
-
Page 2: Build Your Own Clock.
-
Learning Goals:
- Prepare for the AP CSP Create Task.
- Develop parallel code for multiple sprites.
-
Tips:
- This more involved project connects to the Sprite Drawing lab, Angles and Turning page. It may appeal to students interested in building and modeling.
-
Page 3: The Game of Pong.
-
Learning Goal:
- Explore the fundamentals of game programming.
- Review conditionals and other blocks (
random
, forever
, etc.).
-
Tips:
- This more involved project can be a follow up to the Sprite Drawing lab, Exploring Motion page. It may appeal to students interested in game design.
-
Page 4: Daisy Design.
-
Learning Goal: Review drawing commands and basic iteration.
-
Tips:
- This less difficult project connects to the Sprite Drawing lab, Angles and Turning page and Graphics and Art page. It may appeal to students interested in art and design.
-
Page 5: Modeling Art.
-
Learning Goal:
- The key idea is that very slight modifications to an algorithm can have huge effects.
- The secondary idea is to learn to experiment to see what an algorithm can do.
- A key "computational thinking" goal is to see how a computer program can model a human action, in this case, the style of an artist. The language project(s) in unit 2 have the same goal.
-
Tips:
- Encourage experimentation and creativity.
- Possibly collect student artworks and display them.
- The programming here is quite light; the focus is mostly on experimentation and creativity. This project can easily follow the Exploring Motion even though it uses
for
which doesn't appear until page 6 of the lab, Looping with a Counter.
-
Page 6: Modeling Language.
-
Learning Goals:
- Extend work of Gossip project to build simple and complex sentences.
- Practice building blocks, selecting random items from lists, and using custom bocks within other custom blocks (a form of abstraction).
-
Tips:
- This may appeal to students with interests in languages or linguistics. Students—especially English Language Learners—might not be familiar with the technical grammatical terms: noun, verb, adjective, adverb, determiner (articles and pronouns), and preposition. This is not the focus of the project; a note on the page explains them informally and the blocks in the startup file provide examples.
- Students may find that the determiners chosen randomly by the computer don't match their nouns (for example, "a old dog" instead of "an old dog"). They can decide to ignore that for now or to build code that uses
letter of
and if
to choose the correct determiner, though this is a more complicated task considering that students aren't formally introduced to predicates and conditionals until Unit 2.
Modeling Sentence Structures Stuff from Y2U3L1 (Maybe some goes in U2 OPs)
-
Goals for the Lab: Page 3: Modeling Sentence Structures.
- Use the
join
and join words
blocks.
- Algorithmically select from lists.
- Randomly choose items from lists of words to make a Sentence Builder.
-
As a Class: Page 3: Modeling Sentence Structures.
- The page is designed to offer a fun mini-project in which the use of lists feels natural and empowering. Encourage students to be creative and build other kinds of sentences or even simple conversations.
- This lesson relies on proficiency in programming more than knowledge of English sentence structure. For this kind of project, English is particularly easy because it has hardly any inflections (case, tense, mood, etc.), but students may try this project in a language other than English, if they like. Languages present different challenges but students can adjust their lists or their coding to make the project work. Students could work with others or alone and then share. Be creative. For example, it might be beneficial to pair a student studying Spanish with a fluent Spanish speaker.
- As always, if students do interesting work (e.g. with another language or with the Take It Further problems), consider inviting them to share with the class.
- Discussion, you might ask: How do the sentence builder blocks demonstrate abstraction?
-
Tips: Page 3: Modeling Sentence Structures.
- The English grammar on this page may be too complex for some English Language Learners to stay focused on the computer science. On the other hand, English is the least inflected natural language, and even an ESL student may find the programming easier in English.
- Solutions: page 3 (Sentence Builder)