Intro to Computer Science Teaching Resource (Curriculum Map)

Materials and preparation resources can be found in each of the lesson pages.

Pacing Guidance: 1 Day is a 55 minute class period.

Protected content such as unit quizzes, quiz answer keys, project sample solutions can be accessed from the TEALS Dashboard in Additional Curriculum Materials.

Template Syllabus: Feel free to use this template to build a syllabus for your class.

Master Vocabulary List

Computer Science Teachers Association Standards Mapping

Unit 0: Beginnings

Lesson

Objectives

Lab

Days

0.1: The First Day of School

Identify the class they are taking. List the high-level goals of the course. Describe classroom procedures, rules, and norms.

Syllabus

1

0.2: Algorithms

Define algorithm. Construct algorithms for performing simple tasks.

Peanut Butter Jelly

1

0.3: Programming Languages

Complete small coding tasks (Hour of Code). Explain why computer programs are written in specialized languages.

Hour of Code

1

0.4: Snap! Self-Portrait

Create a simple program in Snap! to describe themselves

Getting to Know You

1

0.5: Snap! Coordinate System

Recall the Cartesian coordinate system. Implement the coordinate system to position a sprite using Snap! Coordinates.

Getting to Know Snap! Coordinates

1

Unit 1: Snap! Basics

Lesson

Objectives

Lab

Days

1.1: Welcome to Snap!

Define and identify blocks, scripts, sprites, and the stage in Snap!. Write simple Snap! programs. Describe what simple Snap! programs do without executing the script.

Welcome to Snap!

2

1.2: Building Blocks

Identify the categories of blocks in Snap!. Describe the function of several common Snap! blocks. Be able to use common blocks to build simple Snap! programs.

Snap! Scavenger Hunt

1

1.3: Drawing Shapes

Construct simple algorithms to draw shapes. Convert algorithms into Snap! programs.

Squares and Triangles and Stars, Oh My!

1

1.4: Animation

Animate Snap! sprites using costume changes and movement.Trigger action in other sprites using broadcasts.Implement scripts for multiple sprites.

Sprites in Action

1

1.5: Storytelling Project

Apply Snap! programming skills to create an animated movie, play, nursery rhyme, or other scene. Practice good debugging skills to correct issues as they arise while programming.

Project 1: Animated Storytelling

2

Culture Day Lesson A: Video/Reading

Connect CS Unit topics with current events

(see Culture Day LPs)

Unit 2: Loop-de-Loop

Lesson

Objectives

Lab

Days

2.1: Loops

Define loop in a programming context. Explain why loops are useful. Implement simple repeat and forever loops in Snap!. Apply loops to reduce redundancy in code.

Squares and Triangles Redux

1

2.2: Nested Loops

Apply nested loops to solve programming problems.

Another Brick in the Wall

1

2.3: Inputs and Conditionals

Apply Ask and Receive in Snap!. Apply simple conditional, if and if-else blocks, to alter control flow in a Snap! program.

What Shape Is That?

1

2.4: Variables

Apply variables to track values throughout a program.

Guessing Game

1

2.5: Boole in the House

Define and identify Boolean expressions and operators. Evaluate Boolean expressions. Utilize Boolean operators, and, or, not, to create compound conditions.

Triangle of All Kinds

1

2.6: Pong Project

Implement a well-written version of Pong. Practice good style and conventions to create readable and maintainable code.

Project 2: Pong

4

Culture Day Lesson B: Student Research Project/Presentation

Connect CS Unit topics with current events

(see Culture Day LPs)

Unit 3: Abstraction and Customization

Lesson

Objectives

Lab

Days

3.1: Abstraction and Generalization

Define the terms Abstraction and Generalization. Recognize opportunities to improve algorithms by abstracting or generalizing parts into sub-procedures.

Drawing Shapes Again

1

3.2: Combining Loops and Conditionals

Combine loops with conditionals to create models with repeated but conditional behavior.

What Goes Up…

1

3.3: Customization I: Arguments

Build custom Snap! blocks that take arguments.

Let Me Check My Calendar

1

3.4: Customization II: Reporters and Predicates

Build custom reporter and predicate blocks in Snap!.

If My Calculations Are Correct…

1

3.5: Platform Game Project

Apply loops, variables, and Boolean expressions to implement a Super Mario Bros. style platform game. Practice good debugging skills to correct issues as they arise while programming.

Project 3: Platform Game

8

Culture Day Lesson C: My Skills and Interests Journal

Connect CS Unit topics with current events

(see Culture Day LPs)

Unit 4: Lists

Lesson

Objectives

Lab

Days

4.1: Intro to Lists

Explain the concept of a list in a programming context.Identify scenarios in which lists are useful.

1

4.2: Static Lists

Create static lists in Snap!. Access elements of a list. Add and remove elements from a list.

You Talkin’ to Me?

1

4.3: List Practice I

Traverse a list, accessing each element one at a time.Perform operations combining all elements in a list. Select defined subsets of elements in a list.

Guess Who

1

4.4: List Practice II

Traverse a list, accessing each element one at a time. Perform operations combining all elements in a list. Select defined subsets of elements in a list.

Number Cruncher

1

4.5: Sequential Search

Explain the sequential search algorithm. Implement several variations of sequential search..

It’s Around Here Somewhere

1

4.6: Guess My Word Project

Apply lists to implement a complete version of Guess My Word. Exercise good programming practices to produce code that is not only functional but also elegant and well-written.

Project 4: Guess My Word

5

Culture Day Lesson D: Interview with People in Technology

Connect CS Unit topics with current events

(see Culture Day LPs)

Unit 5: Cloning

Lesson

Objectives

Lab

Days

5.1: Intro to Cloning

Explain why prototyping and clones can be useful. Describe how complex goals can be accomplished using cloning.

Connect the Dots

1

5.2: Cloning Sprites

Demonstrate the difference between sprite and global variables. Explain how cloning and prototyping simplify similar sprites in the same program. Create prototype sprites and clones of the prototype sprite. Explain the difference between a “master” sprite and a “clone” sprite.

Lots of Balls

1

5.3: Communicating With Clones

Pass information from the master to individual clones. Delete clones when they are no longer needed.

Fewer Balls

1

5.4: Space Invaders Project

Use cloning to implement a complete version of “Space Invaders”. Exercise good programming practices to produce code that is not only functional but also elegant and well-written.

Project 5: Space Invaders

10

Unit 6: Final Project

Lesson

Objectives

Lab

Days

6.1: Design Basics

Identify the key considerations when designing a piece of software. Describe methods for prioritizing features, use cases, and/or scenarios.Explain why design and planning are necessary steps in the software engineering process.

Final Project

1

6.2: Research and Ideate

Identify potential users, intended impact, and possible unintended negative consequences. Generate ideas to create range of possibilities using a brainstorm technique. Conduct user-centered research to understand design opportunities and barriers. Critically analyze factors when choosing between project ideas. Prioritize proposed project ideas using the identified factors.

1

6.3: Defining Requirements

Define key user-scenarios for a project and the features required to implement each scenario. Explain the importance of wire framing when designing an application. Capture key scenarios using sketches - (hand drawn, or with drawing tool). Refine design based on user-centered research.

Final Project

1

6.4: Building a Plan

Break down, and identify the main technical components needed for the functional project specifications (scenarios). Explain the purpose of each technical component. Develop the project idea into a full, detailed specification. Create a plan that includes specific steps or a list of bite-sized tasks. Estimate time required for tasks.

Final Project

1

6.5: Project Implementation

Apply the skills developed throughout the course to implement a medium* to large-scale software project. Realistically evaluate progress during software development and identify when cuts are necessary. Prioritize features and scenarios and choose which should be eliminated or modified if/when resources and/or time become limited. Record time taken for tasks, and lessons learned in the process, to help refine estimates. Record iterations of prototyping.

Final Project

10

6.6: Project Sharing

Share their progress, invite feedback, collaboration, and if applicable, prepare a marketing pitch. Decide on how and with whom to promote and share their project. Critically evaluate the design process, their ability to work effectively, including the ability to implement project management processes. Identify new design issues, including how they or others might build on their concept. Identify and evaluate their skills, and things to learn in the future. Analyze the role and impact of their project idea, and similar technologies, in societal change. Consider how cultural beliefs, values, and ethical positions affect the development and use of technologies.

Final Project

1