**TEALS Program** Home | Curriculum Map | Additional Readings | Discussions | Change Log # 2nd Semester - Introduction to Computer Science 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. For TEALS schools in **BC, Canada**, please see [Aligning TEALS Python Teaching Resources with the BC Curriculum](CA_README.md.html). [Template Syllabus](IntrotoCSSyllabusExample.docx): Feel free to use this template to build a syllabus for your class. [Computer Science Teachers Association Standards Mapping](CSTA_standards_mapping.md.html) [Master Vocabulary](units/master_vocab.md.html) ## Unit 1 Map - Introduction to Python | Lesson | Objectives | Lab | Days | Slide Deck | | ------ | ---------- | --- | -- | -- | | [1.01: Set Up][] | Define and identify: IDE, Python. Identify the key concepts that will be covered in the course. | N/A | 1 | [1.01][] | | [1.02: Interactive Mode][] | Define and identify: interpreter, string, integer, float, value, errors, console, expression. Use the Python interpreter to evaluate simple math expressions. Distinguish between an integer, float, and string. | Using the Interpreter | 1 | [1.02][] | | [1.03: Script Mode and Variables][] | Define and identify: script, print, run, output, variable. Write a simple script and run it in the IDE. Print values out to the console. Compare script mode vs interactive mode. Know how to store a value into a variable. | Printing & Variables | 1 | [1.03][] | | [1.04: Variables Input][] | Define and identify: comments, storing, mutability, variable assignment, input. Assign and swap variables. Store user input into a variable. | Magic Genie | 1 | [1.04][] | | [1.05: Quiz & Debugging][] | Demonstrate their understanding of key concepts covered up to this point. Define and identify: debugging, syntax errors. Analyze and respond to error messages. | N/A | 1 | [1.05][] | | [1.06: Project][] | Apply basic Python knowledge about inputs/outputs. Practice good debugging skills. | Unit Project | 2 | [1.06][] | ## Unit 2 Map - Data Types and Conditionals | Lesson | Objectives | Lab | Days | Slide Deck | | ------ | ---------- | --- | -- | -- | | [2.01: Data Types & Casting][] | Define and identify: type, string, casting, floating point number (float), integer. Describe different representations of data in Python. Convert from one data type to another data type. | Casting | 1 | [2.01][] | | [2.02: Booleans & Expressions][] | Define and identify: Boolean, expression, composition, True, False. Evaluate a Boolean expression. Compose Boolean expressions using and, or, not, <, >, and ==. | Can I or Can't I? | 1 | [2.02][] | | [2.03: Conditionals][] | Define and identify: `if`, `else`, `elif`, conditionals, flow of control. Create chaining if statements. Understand how conditional statements alter the flow of control of a program. | Triangle | 1 | [2.03][] | | [2.04: Lists][] | Define and identify: list, item, index, integer. Be able to access items from a list using the index. Create lists of different types. Use the length function. | College Chooser | 1 | [2.04][] | | [2.05: Lists 2][] | Define and identify: slice, append, pop, remove. Slice a list. Add and remove elements from a list | Tic-Tac-Toe | 1 | [2.05][] | | [2.06: Game Loop][] | Define and identify: while loop. Use a while loop to simulate game play. | Tic-Tac-Toe Revisited | 1 | [2.06][] | | [2.07: Project][] | Use knowledge of lists, Booleans, conditionals, and while loops. | Unit Project| 9 | [2.07][] | ## Unit 3 Map - Functions | Lesson | Objectives | Lab | Days | Slide Deck | | ------ | ---------- | --- | -- | -- | | [3.01: Built In Functions][] | Define and identify: function, arguments, calling, importing, returning. Call the built-in `randint` function, using arguments. Utilize code other people have written in the Python documentation. Understand the difference between printing and returning. | Magic 8-Ball | 1 | [3.01][] | | [3.02: User-Defined Functions][] | Define and identify: abstraction, def. Create functions. | Birthday Song & Random Cards | 2 | [3.02][] | | [3.03: Return vs Print][] | Define and identify: return, none, void. Explain and demonstrate the difference between printing and returning. | War (Card Game) | 1 | [3.03][] | | [3.04: Debugging and Scope][] | Define and identify: scope, aliasing, stack trace. Understand that changing a list in a function updates the list outside of the function. Understand that updating variables in a function does not affect the variable outside of the function. Understand global variables. Draw a simple stack trace. | Aliasing & Scope | 1 | [3.04][] | | [3.05: Project][] | Use project planning skills to complete a longer-term project. Create functions to organize a project. Apply skills learned in units 1-3 to create a functioning program. | Oregon Trail | 9 | [3.05][] | ## Unit 4 Map - Nested Loops and Lists | Lesson | Objectives | Lab | Days | Slide Deck | | ------ | ---------- | --- | -- | -- | | [4.01: Looping Basics][] | Define and identify: for loop, item, iteration, scope. Recall looping in Snap! and reapply the concept in Python. Loop through (traverse) the items in a list. Be aware of the scope of variables during iteration. | de_vowel | 1 | [4.01][] | | [4.02: For Loops][] | Define and identify: range. Use the range and `len()` function to update lists via for loops. | Getting Loopy | 1 | [4.02][] | | [4.03: Nested For Loops][] | Define and identify: nested for loops, stack trace. Use nested for loops via a function and a for loop. Use nested for loops via two loops nested. Use a stack trace to understand and demonstrate the flow of nested for loops. | Nested For Loops | 2 | [4.03][] | | [4.04: Nested Lists & Looping][] | Define and identify: nested list. Use nested for loops to traverse through nested lists. | Shopping List | 2 | [4.04][] | | [4.05: Debugging and Quiz][] | Read and understand longer programs involving loops. Demonstrate knowledge of looping, lists, and nested loops/lists. Debug programs involving for loops and lists. | Debugging Practice | 1 | [4.05][] | | [4.06: Project][] | Use project planning skills to complete a larger project. Utilize loops, lists, and nested loops/lists to create a Tic-Tac-Toe game. | Unit Project | 9 | [4.06][] | ## Unit 5 Map (Optional) - Music Programming | Lesson | Objectives | Lab | Days | Slide Deck | | ------ | ---------- | --- | -- | -- | | [5.01: Earsketch Intro][] | Define and identify: Digital Audio Workstation (DAW), sound tab, `fitMedia()`, `setTempo()`. Play beats using the above functions. Loop through items in a list. Be aware of the scope of variables during iteration. | Intro to EarSketch | 1 | [5.01][] | | [5.02: EarSketch Music][] | Define and identify: rhythm, beat, tempo, measures, `setEffect()`, `makeBeat()`. Play beats using the functions. Loop through items in a list. Be aware of the scope of variables during iteration. | EarSketch Music | 1 | [5.02][] | | [5.03: Earsketch Control Flow][] | Define and identify: modulo. Review looping and control structures. Use looping concepts in music making via EarSketch. Use control structures to create music. | Earsketch Control Flow | 1 | [5.03][] | | [5.04: EarSketch User-Defined Functions][] | Define and identify: abstraction, section, A-B-A form. Create and apply user-defined functions to create songs with complicated form. | User-Defined Functions | 1 | [5.04][] | | [5.05: Project][] | Create a complete song in EarSketch with multiple parts. Utilize EarSketch's features and functions. | Unit Project | 5 | [5.05][] | ## Unit 6 Map - Dictionaries | Lesson | Objectives | Lab | Days | Slide Deck | | ------ | ---------- | --- | -- | -- | | [6.01: Introduction to Dictionaries][] | Define and identify: dictionary, key, value. Create dictionaries of key-value pairs. Access and update items from dictionaries. | Dictionaries | 1 | [6.01][] | | [6.02: Dictionaries Methods][] | Define and identify: pop, default value. Update values in a dictionary. Add values to a dictionary. Remove values from a dictionary. | Word Counter | 1 | [6.02][] | | [6.03: Dictionaries of Lists][] | Create dictionaries with keys and values of different types. Update, append, or remove list values in a dictionary. | Dictionaries Storing Lists | 1 | [6.03][] | | [6.04: Dictionaries Looping][] | Use loops to traverse through key/value pairs in a dictionary | Dictionaries Looping | 1 | [6.04][] | | [6.05: Project][] | Use dictionaries to create the game Guess Who | Unit Project | 7 | [6.05][] | ## Unit 7 Map - Introduction to Object Oriented Programming | Lesson | Objectives | Lab | Days | Slide Deck | | ------ | ---------- | --- | -- | -- | | [7.01: User-Defined Types][] | Define and identify: class, instance, object, attributes. Create a class and instantiate. attributes to an instance. Manipulate instances and attributes through a function. | Create a Color Class | 1 | [7.01][] | | [7.02: User-Defined Types, Part 2][] | Define and identify: self, `__init__`. Create a class with an `__init__` method. Understand and use the self argument. Instantiate a class with arguments. | Pet Class | 1 | [7.02][] | | [7.03: Methods][] | Define and identify: method, `__str__`, `__add__`, operator overloading. Create a class with an `__init__` method. Understand and use the self argument. Instantiate a class with an argument. | Kangaroo Class | 1 | [7.03][] | | [7.04: Inheritance][] | Define and identify: inheritance, parent class, child class. Create a class that inherits from anther class. Overwrite methods of parent class in a child class. | Pokemon Child Classes | 1 | [7.04][] | | [7.05: Project][] | Engage in class design before beginning coding. Apply what was learned with respect to classes, methods, and inheritance. | Unit Project | 7 | [7.05][] | ## Unit 8 Map - Final Project | Lesson | Objectives | Lab | Days | | ------ | ---------- | --- | --- | | [8.01: Final Project Brainstorming and Evaluating][] | Recall project planning basics from last semester. Identify factors to use when choosing between project ideas. Rank a group of proposed project ideas using the identified factors. | N/A | 1 | | [8.02: Defining Requirements][] | Define key scenarios for a project and the features required to implement each scenario. Explain the importance of wire-framing when designing an application. | N/A | 1 | | [8.03: Building a Plan][] | Identify the main components of a functional project specification and explain the purpose of each section. Develop a project idea into a full, detailed specification. | N/A | 1 | | [8.04: Project Implementation][] | Use 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. | N/A | 15 | ## Supplemental Culture Day Lessons | Lesson | Objectives | Lab | | ------ | ---------- | --- | | [01: Binary Day][] | Define and identify: binary. Describe different representations of data. Represent decimal numbers in binary. | N/A | | [02: Financial Calculator][] | Design, plan, and implement a medium to large scale final project involving financial literacy. | N/A | [1.01: Set Up]: units/1_unit/01_lesson/lesson.md.html [1.02: Interactive Mode]: units/1_unit/02_lesson/lesson.md.html [1.03: Script Mode and Variables]: units/1_unit/03_lesson/lesson.md.html [1.04: Variables Input]: units/1_unit/04_lesson/lesson.md.html [1.05: Quiz & Debugging]: units/1_unit/05_lesson/lesson.md.html [1.06: Project]: units/1_unit/06_lesson/lesson.md.html [1.01]: https://github.com/TEALSK12/2nd-semester-introduction-to-computer-science/raw/master/units/1_unit/slidedecks/Intro%20Python%201.01%20TEALS.pptx [1.02]: https://github.com/TEALSK12/2nd-semester-introduction-to-computer-science/raw/master/units/1_unit/slidedecks/Intro%20Python%201.02%20TEALS.pptx [1.03]: https://github.com/TEALSK12/2nd-semester-introduction-to-computer-science/raw/master/units/1_unit/slidedecks/Intro%20Python%201.03%20TEALS.pptx [1.04]: https://github.com/TEALSK12/2nd-semester-introduction-to-computer-science/raw/master/units/1_unit/slidedecks/Intro%20Python%201.04%20TEALS.pptx [1.05]: https://github.com/TEALSK12/2nd-semester-introduction-to-computer-science/raw/master/units/1_unit/slidedecks/Intro%20Python%201.05%20TEALS.pptx [1.06]: https://github.com/TEALSK12/2nd-semester-introduction-to-computer-science/raw/master/units/1_unit/slidedecks/Intro%20Python%201.06%20TEALS.pptx [2.01: Data Types & Casting]: units/2_unit/01_lesson/lesson.md.html [2.02: Booleans & Expressions]: units/2_unit/02_lesson/lesson.md.html [2.03: Conditionals]: units/2_unit/03_lesson/lesson.md.html [2.04: Lists]: units/2_unit/04_lesson/lesson.md.html [2.05: Lists 2]: units/2_unit/05_lesson/lesson.md.html [2.06: Game Loop]: units/2_unit/06_lesson/lesson.md.html [2.07: Project]: units/2_unit/07_lesson/lesson.md.html [2.01]: https://github.com/TEALSK12/2nd-semester-introduction-to-computer-science/raw/master/units/2_unit/slidedecks/Intro%20Python%202.01%20TEALS.pptx [2.02]: https://github.com/TEALSK12/2nd-semester-introduction-to-computer-science/raw/master/units/2_unit/slidedecks/Intro%20Python%202.02%20TEALS.pptx [2.03]: https://github.com/TEALSK12/2nd-semester-introduction-to-computer-science/raw/master/units/2_unit/slidedecks/Intro%20Python%202.03%20TEALS.pptx [2.04]: https://github.com/TEALSK12/2nd-semester-introduction-to-computer-science/raw/master/units/2_unit/slidedecks/Intro%20Python%202.04%20TEALS.pptx [2.05]: https://github.com/TEALSK12/2nd-semester-introduction-to-computer-science/raw/master/units/2_unit/slidedecks/Intro%20Python%202.05%20TEALS.pptx [2.06]: https://github.com/TEALSK12/2nd-semester-introduction-to-computer-science/raw/master/units/2_unit/slidedecks/Intro%20Python%202.06%20TEALS.pptx [2.07]: https://github.com/TEALSK12/2nd-semester-introduction-to-computer-science/raw/master/units/2_unit/slidedecks/Intro%20Python%202.07%20TEALS.pptx [3.01: Built In Functions]: units/3_unit/01_lesson/lesson.md.html [3.02: User-Defined Functions]: units/3_unit/02_lesson/lesson.md.html [3.03: Return vs Print]: units/3_unit/03_lesson/lesson.md.html [3.04: Debugging and Scope]: units/3_unit/04_lesson/lesson.md.html [3.05: Project]: units/3_unit/05_lesson/lesson.md.html [3.01]: https://github.com/TEALSK12/2nd-semester-introduction-to-computer-science/raw/master/units/3_unit/slidedecks/Intro%20Python%203.01%20TEALS.pptx [3.02]: https://github.com/TEALSK12/2nd-semester-introduction-to-computer-science/raw/master/units/3_unit/slidedecks/Intro%20Python%203.02%20TEALS.pptx [3.03]: https://github.com/TEALSK12/2nd-semester-introduction-to-computer-science/raw/master/units/3_unit/slidedecks/Intro%20Python%203.03%20TEALS.pptx [3.04]: https://github.com/TEALSK12/2nd-semester-introduction-to-computer-science/raw/master/units/3_unit/slidedecks/Intro%20Python%203.04%20TEALS.pptx [3.05]: https://github.com/TEALSK12/2nd-semester-introduction-to-computer-science/raw/master/units/3_unit/slidedecks/Intro%20Python%203.05%20TEALS.pptx [4.01: Looping Basics]: units/4_unit/01_lesson/lesson.md.html [4.02: For Loops]: units/4_unit/02_lesson/lesson.md.html [4.03: Nested For Loops]: units/4_unit/03_lesson/lesson.md.html [4.04: Nested Lists & Looping]: units/4_unit/04_lesson/lesson.md.html [4.05: Debugging and Quiz]: units/4_unit/05_lesson/lesson.md.html [4.06: Project]: units/4_unit/06_lesson/lesson.md.html [4.01]: https://github.com/TEALSK12/2nd-semester-introduction-to-computer-science/raw/master/units/4_unit/slidedecks/Intro%20Python%204.01%20TEALS.pptx [4.02]: https://github.com/TEALSK12/2nd-semester-introduction-to-computer-science/raw/master/units/4_unit/slidedecks/Intro%20Python%204.02%20TEALS.pptx [4.03]: https://github.com/TEALSK12/2nd-semester-introduction-to-computer-science/raw/master/units/4_unit/slidedecks/Intro%20Python%204.03%20TEALS.pptx [4.04]: https://github.com/TEALSK12/2nd-semester-introduction-to-computer-science/raw/master/units/4_unit/slidedecks/Intro%20Python%204.04%20TEALS.pptx [4.05]: https://github.com/TEALSK12/2nd-semester-introduction-to-computer-science/raw/master/units/4_unit/slidedecks/Intro%20Python%204.05%20TEALS.pptx [4.06]: https://github.com/TEALSK12/2nd-semester-introduction-to-computer-science/raw/master/units/4_unit/slidedecks/Intro%20Python%204.06%20TEALS.pptx [5.01: Earsketch Intro]: units/5_unit/01_lesson/lesson.md.html [5.02: EarSketch Music]: units/5_unit/02_lesson/lesson.md.html [5.03: Earsketch Control Flow]: units/5_unit/03_lesson/lesson.md.html [5.04: EarSketch User-Defined Functions]: units/5_unit/04_lesson/lesson.md.html [5.05: Project]: units/5_unit/05_lesson/lesson.md.html [5.01]: https://github.com/TEALSK12/2nd-semester-introduction-to-computer-science/raw/master/units/5_unit/slidedecks/Intro%20Python%205.01%20TEALS.pptx [5.02]: https://github.com/TEALSK12/2nd-semester-introduction-to-computer-science/raw/master/units/5_unit/slidedecks/Intro%20Python%205.02%20TEALS.pptx [5.03]: https://github.com/TEALSK12/2nd-semester-introduction-to-computer-science/raw/master/units/5_unit/slidedecks/Intro%20Python%205.03%20TEALS.pptx [5.04]: https://github.com/TEALSK12/2nd-semester-introduction-to-computer-science/raw/master/units/5_unit/slidedecks/Intro%20Python%205.04%20TEALS.pptx [5.05]: https://github.com/TEALSK12/2nd-semester-introduction-to-computer-science/raw/master/units/5_unit/slidedecks/Intro%20Python%205.05%20TEALS.pptx [6.01: Introduction to Dictionaries]: units/6_unit/01_lesson/lesson.md.html [6.02: Dictionaries Methods]: units/6_unit/02_lesson/lesson.md.html [6.03: Dictionaries of Lists]: units/6_unit/03_lesson/lesson.md.html [6.04: Dictionaries Looping]: units/6_unit/04_lesson/lesson.md.html [6.05: Project]: units/6_unit/05_lesson/lesson.md.html [6.01]: https://github.com/TEALSK12/2nd-semester-introduction-to-computer-science/raw/master/units/6_unit/slidedecks/Intro%20Python%206.01%20TEALS.pptx [6.02]: https://github.com/TEALSK12/2nd-semester-introduction-to-computer-science/raw/master/units/6_unit/slidedecks/Intro%20Python%206.02%20TEALS.pptx [6.03]: https://github.com/TEALSK12/2nd-semester-introduction-to-computer-science/raw/master/units/6_unit/slidedecks/Intro%20Python%206.03%20TEALS.pptx [6.04]: https://github.com/TEALSK12/2nd-semester-introduction-to-computer-science/raw/master/units/6_unit/slidedecks/Intro%20Python%206.04%20TEALS.pptx [6.05]: https://github.com/TEALSK12/2nd-semester-introduction-to-computer-science/raw/master/units/6_unit/slidedecks/Intro%20Python%206.05%20TEALS.pptx [7.01: User-Defined Types]: units/7_unit/01_lesson/lesson.md.html [7.02: User-Defined Types, Part 2]: units/7_unit/02_lesson/lesson.md.html [7.03: Methods]: units/7_unit/03_lesson/lesson.md.html [7.04: Inheritance]: units/7_unit/04_lesson/lesson.md.html [7.05: Project]: units/7_unit/05_lesson/lesson.md.html [7.01]: https://github.com/TEALSK12/2nd-semester-introduction-to-computer-science/raw/master/units/7_unit/slidedecks/Intro%20Python%207.01%20TEALS.pptx [7.02]: https://github.com/TEALSK12/2nd-semester-introduction-to-computer-science/raw/master/units/7_unit/slidedecks/Intro%20Python%207.02%20TEALS.pptx [7.03]: https://github.com/TEALSK12/2nd-semester-introduction-to-computer-science/raw/master/units/7_unit/slidedecks/Intro%20Python%207.03%20TEALS.pptx [7.04]: https://github.com/TEALSK12/2nd-semester-introduction-to-computer-science/raw/master/units/7_unit/slidedecks/Intro%20Python%207.04%20TEALS.pptx [7.05]: https://github.com/TEALSK12/2nd-semester-introduction-to-computer-science/raw/master/units/7_unit/slidedecks/Intro%20Python%207.05%20TEALS.pptx [8.01: Final Project Brainstorming and Evaluating]: units/8_unit/01_lesson/lesson.md.html [8.02: Defining Requirements]: units/8_unit/02_lesson/lesson.md.html [8.03: Building a Plan]: units/8_unit/03_lesson/lesson.md.html [8.04: Project Implementation]: units/8_unit/04_lesson/lesson.md.html [Supplemental Culture Day Lessons]: supplemental/ [01: Binary Day]: units/supplemental/01_lesson/lesson.md.html [02: Financial Calculator]: units/supplemental/calculator_canada.md.html [Additional Topics]: cert.md.html [Microsoft Technology Associate (MTA) certification]: https://www.microsoft.com/en-us/learning/exam-98-381.aspx [Advanced Placement Computer Science A]: https://tealsk12.gitbook.io/apcsa/