**TEALS Program** Home | Curriculum Map | Discussions | Change Log # 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. ## Support documents * [Template Syllabus](https://github.com/TEALSK12/introduction-to-computer-science/raw/master/Unit%200/IntrotoCSSyllabusExample.docx): Feel free to use this template to build a syllabus for your class. * [Master Vocabulary List](master_vocab.md.html) * [Computer Science Teachers Association Standards Mapping](CSTA_standards_mapping.md.html) * [Slide decks](slidedecks.zip): Download all the slide decks in one zip file. * [CSTA content matrix](CSTA-content-matrix-9-12.docx) - this resource has some culture day activities aligned to the CSTA standards. ## 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 scripting tasks (Hour of Code). Explain why computer programs are written in specialized languages. | Hour of Code | 1 | | [0.4: Self-portrait][] | Create a simple script in to describe themselves | Getting to Know You | 1 | | [0.5: Coordinate system][] | Recall the Cartesian coordinate system. Implement the coordinate system to position a sprite using Coordinates. | Getting to Know Coordinates | 1 | ## Unit 1: basics | Lesson | Objectives | Lab | Days | | ------ | ---------- | --- | --- | | [1.1: Welcome to Snap!][] | Define and identify **blocks**, **scripts**, **sprites**, and **the stage**. Write simple scripts. Describe what simple scripts do without executing the script.| Welcome to Snap! | 2 | | [1.2: Building blocks][] | Identify the pallettes of blocks in . Describe the function of several common blocks. Be able to use common blocks to build simple scripts. | Scavenger Hunt | 1 | | [1.3: Drawing shapes][] | Construct simple algorithms to draw shapes. Convert algorithms into scripts. | Squares, triangles and Stars | 1 | | [1.4: Animation][] | Animate 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 programming skills to create an animated movie, play, nursery rhyme, or other scene. Practice good debugging skills to correct issues as they arise while scripting. | Project 1: Animated Storytelling | 2 | | [Culture day lesson A: Video/reading][] | Connect CS Unit topics with current events | | 1 or more | ## 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. Apply loops to reduce redundancy in a program. | 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**. Apply simple conditional, **if** and **if-else** blocks, to alter control flow in a script. | What Shape Is That? | 1 | | [2.4: Variables][] | Apply variables to track values throughout a program or script. | 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 program. | Project 2: Pong | 4 | | [Culture Day Lesson B: Student research project/presentation][] | Connect CS Unit topics with current events | | 1 or more | ## 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 blocks that take arguments. | Let Me Check My Calendar | 1 | | [3.4: Customization II: Reporters and predicates][] | Build custom reporter and predicate blocks. | 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 scripting. | Project 3: Platform Game | 8 | | [Culture Day Lesson C: My skills and interests journal][] | Connect CS Unit topics with current events. | | 1 or more | ## 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. 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 programing practices to produce a program 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][] | | | 1 or more | ## 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 programing practices to produce a program 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 | [0.1: The First Day of School]:lesson_01.md.html [0.2: Algorithms]:lesson_02.md.html [0.3: Programming Languages]:lesson_03.md.html [0.4: Self-Portrait]:lesson_04.md.html [0.5: Coordinate System]:lesson_05.md.html [1.1: Welcome to Snap!]:lesson_11.md.html [1.2: Building Blocks]:lesson_12.md.html [1.3: Drawing Shapes]:lesson_13.md.html [1.4: Animation]:lesson_14.md.html [1.5: Storytelling Project]:lesson_15.md.html [Culture Day Lesson A: Video/Reading]:culture_day_lesson_a.md.html [2.1: Loops]:lesson_21.md.html [2.2: Nested Loops]:lesson_22.md.html [2.3: Inputs and Conditionals]:lesson_23.md.html [2.4: Variables]:lesson_24.md.html [2.5: Boole in the House]:lesson_25.md.html [2.6: Pong Project]:lesson_26.md.html [Culture Day Lesson B: Student Research Project/Presentation]:culture_day_lesson_b.md.html [3.1: Abstraction and Generalization]:lesson_31.md.html [3.2: Combining Loops and Conditionals]:lesson_32.md.html [3.3: Customization I: Arguments]:lesson_33.md.html [3.4: Customization II: Reporters and Predicates]:lesson_34.md.html [3.5: Platform Game Project]:lesson_35.md.html [Culture Day Lesson C: My Skills and Interests Journal]:culture_day_lesson_c.md.html [4.1: Intro to Lists]:lesson_41.md.html [4.2: Static Lists]:lesson_42.md.html [4.3: List Practice I]:lesson_43.md.html [4.4: List Practice II]:lesson_44.md.html [4.5: Sequential Search]:lesson_45.md.html [4.6: Guess My Word Project]:lesson_46.md.html [Culture Day Lesson D: Interview with People in Technology]:culture_day_lesson_d.md.html [5.1: Intro to Cloning]:lesson_51.md.html [5.2: Cloning Sprites]:lesson_52.md.html [5.3: Communicating with Clones]:lesson_53.md.html [5.4: Space Invaders Project]:lesson_54.md.html [6.1: Design Basics]:lesson_61.md.html [6.2: Research and Ideate]:lesson_62.md.html [6.3: Defining Requirements]:lesson_63.md.html [6.4: Building a Plan]:lesson_64.md.html [6.5: Project Implementation]:lesson_65.md.html [6.6: Project Sharing]:lesson_66.md.html