**TEALS Program** Home | Curriculum Map # Important! TEALS will no longer make updates to this course! This course no longer aligns with the College Board AP CS A framework! Use at your own risk! - Visit the [College Board's endorsed providers of AP CS A curricula](https://apcentral.collegeboard.org/courses/ap-computer-science-a/classroom-resources/curricula-pedagogical-support). - The curriculum repo will remain available and anyone who wants to develop it further can fork it. # About the curriculum This course was originally designed for a high school AP CS A classroom, but it is NO LONGER aligned to the College Board's framework and exam. It was based on and aligned with Professor Stuart Reges' Java course at the University of Washington, CSE 142. This is the textbook: _Building Java Programs: A Back to Basics Approach_ by Stuart Reges and Marty Stepp. Publisher: Pearson; 5 edition (March 28, 2019) ISBN-10: 013547194X ISBN-13: 978-0135471944 ## Accessing the curriculum [Textbook sequence (before 2020 school year)](SUMMARY.md.html) This curriculum map follows the Building Java Program Textbook sequence of lessons The AP Computer Science A Curriculum is located on GitHub pages: [https://tealsk12.github.io/apcsa-public/](https://tealsk12.github.io/apcsa-public/) ## Using the curriculum Each classroom has different physical, cultural, academic, and scheduling needs. Therefore, we have tried to create a collection of lessons and materials that are adaptable to most situations. You may browse the [Curriculum Map][] for an overview of the pacing, objectives, and assessments. For schools in BC, Canada, please see [Aligning TEALS APCSA Teaching Resources with the BC Curriculum](CA-README.md.html). ### Year round pacing The table-of-contents (included with Introduction materials) contains coarse-grained time estimates on the scale of weeks and days so teachers can plan accordingly. Units 6 and 8 include extra days in the time-estimate so teachers can re-adjust their unit plans if they have shifted due to unexpected class cancellations or drift. ### Daily structure Every classroom is different, and we expect that instructors will adapt the daily structure of the class to suit their students' needs. That said, we've designed most of the lessons using the following daily structure: #### Hook & instruction - Each lesson plan begins with one or several options for short (from seconds to 5 minutes) engaging or mystifying activities that introduce students to the topics to be introduced later in the lesson. - Lecture notes, student prompts, and quick-assessments (with answers) are outlined in subsection “introduction.” If you are teaching in a flipped classroom, this section can be pre-recorded for students to view at home. #### Student practice - Student practice/activities are outlined with step-by-step instructions including pacing suggestions and alternative stopping points. Any special materials or preparation needed for the hook, lecture, or activity are listed in the Materials & Prep section. #### Warmup / Do now / Boardwork/ Ticket-to-leave - Since each classroom progresses at different rates, we have not included warm-up and cool-down questions (though time has been scheduled in the Pacing Guide for one or both of these activities). You should choose your questions based on the topics you felt were most challenging or confusing for your students. A good source for short-answer and multiple choice questions is the [Barron's AP Computer Science A review book][]. ### Scaffolding The Glossary of Education Reform defines scaffolding as: A variety of instructional techniques used to move students progressively toward stronger understanding and, ultimately, greater independence in the learning process. Instructors provide successive levels of temporary support that help students reach higher levels of comprehension than they would have been able to achieve without assistance. Support is gradually removed as students move towards mastery, which occurs when students demonstrate skills and knowledge without any outside assistance. The University of Washington course CSE 142 and associated textbook do not contain much scaffolding. This curriculum attempts to wrap the content of the UW course with scaffolding appropriate for high school classes. Some classes may not require scaffolding, and other classes may need even more scaffolding than those steps suggested within the lesson plan. ### Examples Most lecture notes and classroom examples are slightly modified versions of the examples outlined in the textbook. When the class needs additional examples, or re-teaching, instructors can refer directly to the textbook for a fresh set of similar examples and explanations. The "additional resources" section of this document lists some other sources for examples and labs. ### References to the textbook Some classrooms are using earlier editions of the Building Java Programs textbook. To avoid confusion, we have written all reading and practice assignments by chapter and section rather than page number. In cases where practice problems or assignments differ between editions, we have copied those assignments (with reference) into printable documents. ### Homework assignments As written, the homework assignments contain material to be assigned, but are not phrased in terms of learning goals. Teachers should choose specific learning goals for the evening's work depending on student progress and timing within the week and school year, then phrase the assignment in terms of learning goals, not output. *For example, rather than "read section 3.1" assign the reading by saying "for tomorrow, be prepared to pass data into methods using parameters. Section 3.1 in the textbook will show you how."* ### Pokémon Throughout the course, this curriculum includes lab assignments using the Pokémon universe as a subject-matter domain (often replacing textbook assignments on less salient topics like compound interest). The Pokémon storyline and game rules are familiar to male and female students from all socioeconomic backgrounds, available across the digital divide as both a card game and a video game, and are available in 10 different languages (English, Spanish, Portuguese, Dutch, French, German, Italian, Korean, Chinese, and Japanese). Because the game relies on statistics, modulo operators, and the underlying 32-bit integer that characterizes any given Pokémon, we will be using this theme to introduce students to much of the AP CS A curriculum. Students will be entering the AP CS A course with varying degrees of math literacy, and framing mathematical challenges in this familiar framework is helpful for avoiding stereotype threat and math anxiety. To learn more about the Pokémon storyline, game rules, underlying formulae, and characters, visit: http://bulbapedia.bulbagarden.net/. For a more general introduction to the Pokémon franchise, visit: http://www.pokemon.com/. #### Big ideas of computer science 1. Modularity -- Incorporating elements of abstraction, by breaking problems down into interacting pieces, each with their own purpose, makes writing complex programs easier. Abstracting simplifies concepts and processes by looking at the big picture rather than being overwhelmed by the details. Modularity in object-oriented programming allows us to use abstraction to break complex programs down into individual classes and methods. 2. Variables -- Information used as a basis for reasoning, discussion, or calculation is referred to as data. Programs rely on variables to store data, on data structures to organize multiple values when program complexity increases, and on algorithms to sort, access, and manipulate this data. Variables create data abstractions, as they can represent a set of possible values or a group of related values. 3. Control -- Doing things in order, making decisions, and doing the same process multiple times are represented in code by using control structures and specifying the order in which instructions are executed. Programmers need to think algorithmically in order to define and interpret processes that are used in a program. 4. Impact of computing -- Computers and computing have revolutionized our lives. To use computing safely and responsibly, we need to be aware of privacy, security, and ethical issues. As programmers, we need to understand how our programs will be used and be responsible for the consequences. #### Computational thinking practices: skills 1. Program design and algorithm development A. Determine an appropriate program design to solve a problem or accomplish a task (not assessed by AP Exam). B. Determine code that would be used to complete code segments. C. Determine code that would be used to interact with completed program code. *Curriculum Example of Skill 1.B:* In Lesson 1.06, students are challenged to design and write a class that reproduces a particular shape pattern that encourages decomposition into multiple static methods. 2. Code logic A. Apply the meaning of specific operators. B. Determine the result or output based on statement execution order in a code segment without method calls (other than output). C. Determine the result or output based on the statement execution order in a code segment containing method calls. D. Determine the number of times a code segment will execute. *Curriculum Example of Skill 2.A:* In Lesson 2.01, students are introduced to the modulus operator and practice evaluating expressions that use it. 3. Code implementation A. Write program code to create objects of a class and call methods. B. Writei program code to define a new type by creating a class. C. Write program code to satisfy method specifications using expressions, conditional statements, and iterative statements. D. Write program code to create, traverse, and manipulate elements in 1D array or ArrayList objects. E. Write program code to create, traverse, and manipulate elements in 2D array objects. *Curriculum Example of Skill 3.C:* In Lesson 2.08, students write a method to reproduce an hourglass shape using nested for loops. 4. Code testing A. Use test-cases to find errors or validate results. B. Identify errors in program code. C. Determine if two or more code segments yield equivalent results. *Curriculum Example of Skill 4.B:* In Lesson 3.09, students are asked to correct syntax errors in a series of conditional statements. 5. Documentation A. Describe the behavior of a given segment of program code. B. Explain why a code segment will not compile or work as intended. C. Explain how the result of program code changes, given a change to the initial code. D. Describe the initial conditions that must be met for a program segment to work as intended or described. *Curriculum Example of Skill 5.A:* In Lesson 3.12, students are tasked with starting a program that will be finished by partner, with the only communication between them being well-commented code. ### Vocabulary A comprehensive vocabulary list for each unit is provided for teachers to generate word walls in their classroom. Some classrooms will be able to omit certain vocabulary words; as offered, the lists offered include words that English language learners and students with previous sub-optimal instruction may find challenging. ### Error-checking lessons One class period in each unit has been devoted to student correction and resubmission of work. While it may be tempting to “win back” class time by skipping these sessions, we strongly encourage teachers to leave these sessions in. When students have the opportunity to fix their work and earn back full or partial credit, it gives students agency over their grade and teaches students to examine and reflect upon their own learning. On a practical note, when error-checking lessons are included, teachers need only grade answers as correct/incorrect, since students will be challenged with finding and fixing the errors on their own later. Finally, students that have answered all or most of their work correctly receive a day off to do silent work/play on their own, which positively reinforces students to put in the initial effort to win a day off. #### Big ideas of computer science 1. Modularity -- Incorporating elements of abstraction, by breaking problems down into interacting pieces, each with their own purpose, makes writing complex programs easier. Abstracting simplifies concepts and processes by looking at the big picture rather than being overwhelmed by the details. Modularity in object-oriented programming allows us to use abstraction to break complex programs down into individual classes and methods. 2. Variables -- Information used as a basis for reasoning, discussion, or calculation is referred to as data. Programs rely on variables to store data, on data structures to organize multiple values when program complexity increases, and on algorithms to sort, access, and manipulate this data. Variables create data abstractions, as they can represent a set of possible values or a group of related values. 3. Control -- Doing things in order, making decisions, and doing the same process multiple times are represented in code by using control structures and specifying the order in which instructions are executed. Programmers need to think algorithmically in order to define and interpret processes that are used in a program. 4. Impact of Computing -- Computers and computing have revolutionized our lives. To use computing safely and responsibly, we need to be aware of privacy, security, and ethical issues. As programmers, we need to understand how our programs will be used and be responsible for the consequences. #### Computational Thinking Practices: Skills 1. Program Design and Algorithm Development A. Determine an appropriate program design to solve a problem or accomplish a task (not assessed by AP Exam). B. Determine code that would be used to complete code segments. C. Determine code that would be used to interact with completed program code. *Curriculum Example of Skill 1.B:* In Lesson 1.06, students are challenged to design and write a class that reproduces a particular shape pattern that encourages decomposition into multiple static methods. 2. Code Logic A. Apply the meaning of specific operators. B. Determine the result or output based on statement execution order in a code segment without method calls (other than output). C. Determine the result or output based on the statement execution order in a code segment containing method calls. D. Determine the number of times a code segment will execute. *Curriculum Example of Skill 2.A:* In Lesson 2.01, students are introduced to the modulus operator and practice evaluating expressions that use it. 3. Code Implementation A. Write program code to create objects of a class and call methods. B. Write program code to define a new type by creating a class. C. Write program code to satisfy method specifications using expressions, conditional statements, and iterative statements. D. Write program code to create, traverse, and manipulate elements in 1D array or ArrayList objects. E. Write program code to create, traverse, and manipulate elements in 2D array objects. *Curriculum Example of Skill 3.C:* In Lesson 2.08, students write a method to reproduce an hourglass shape using nested for loops. 4. Code Testing A. Use test-cases to find errors or validate results. B. Identify errors in program code. C. Determine if two or more code segments yield equivalent results. *Curriculum Example of Skill 4.B:* In Lesson 3.09, students are asked to correct syntax errors in a series of conditional statements. 5. Documentation A. Describe the behavior of a given segment of program code. B. Explain why a code segment will not compile or work as intended. C. Explain how the result of program code changes, given a change to the initial code. D. Describe the initial conditions that must be met for a program segment to work as intended or described. *Curriculum Example of Skill 5.A:* In Lesson 3.12, students are tasked with starting a program that will be finished by partner, with the only communication between them being well-commented code. ### Video tutorials - [Timing and pacing][] — Adjusting lessons and the curriculum map for the speed of your learners - [Projects and labs][] — Choosing whether your class completes the AP labs or the projects (FracCalc/TextExcel) - [Supporting visual-spatial learners][] — Using the physical space in your classroom to enhance learning - [Parson's problems][] — Assessing high-level programming skills quickly with Parson's Problems - [Grudgeball][] — Reviewing material by playing a class game of Grudgeball ### Recommended hardware In the classroom, it is recommended that each student have an internet-connected desktop computer capable of running an Integrated Design Environment (IDE). Students will need to be able to save and access their programming projects locally or in the cloud. ### Integrated design environment (IDE) or code editor Coding in Java requires the Java Development Kit and a text editor or IDE. There are many Java IDEs available. There are any IDEs/Coded editors that can be used to teach AP CS A. Unit 1 includes directions for installing IDE/Code Editor for Eclipse and VS Code. You are free to choose the IDE/Code Editor that best fits your class. ## Additional Resources - The free web-based game [Code Hunt](http://www.codehunt.com) offers opportunities for students to find and fix errors by “discovering the missing code segments.” Assignments/Levels are automatically graded, and students can compete against each other to hone their programming skills. - [CodingBat](http://www.codingbat.com) offers Java practice problems with instant feedback for students. The problems in CodingBat are distinct from those in the Building Java Programs textbook. CodingBat has a teacher dashboard, and a system of badges to motivate learners. Instructors can also upload their own sets of java problems for their classes to complete. - If you are interested in learning more about principles of universal design for learning, please visit [http://www.udlcenter.org/aboutudl/udlguidelines](http://www.udlcenter.org/aboutudl/udlguidelines). - Emerging EdTech has collected a sample of 20 digital tools to increase collaboration in the classroom. One of them might be perfect for your classroom: - If you are stationed in a high-performing school, or in a school where many students have already mastered other programming languages, you may want to consider flipping (or inverting) your classroom. To learn more about the theory and practice of teaching in a flipped classroom, Vanderbilt University offers a comprehensive introduction and links to practical resources/examples here: [http://cft.vanderbilt.edu/guides-sub-pages/flipping-the-classroom](http://cft.vanderbilt.edu/guides-sub-pages/flipping-the-classroom). You should still be able to use most of the resources offered in this curriculum, but you will have to shuffle how you use the lesson plans. Some quick recommendations: 1. Use the lecture notes as given, but record the lecture for student viewing. 2. Where lecture activities have been suggested (_e.g._ think-pair-shares), consider embedding questions into your lesson plans. 3. Save class competitions for in-class, and leave reading and self check, and worksheet exercises for home review. - As you read through the lesson plans, you will find several classroom teaching activities and strategies appear repeatedly. Keep an eye out for specific adjustments to the lesson plans for error-checking and test review. While these lesson plans look identical at first glance, small adjustments have been made for content, timing, and AP test prep. ## Updates and answer keys TEALS will no longer be making any updates to this curricula. Answer keys are no longer available. [20 Fun Free Tools for Interactive Classroom Collaboration]: http://tinyurl.com/k62tstg [AP Java Quick Reference]: http://apcentral.collegeboard.com/apc/public/repository/ap_comp_sci_a_quick_reference.pdf [Barron's AP Computer Science A review book]: https://www.amazon.com/dp/1438009194 [Curriculum Map]: https://tealsk12.github.io/apcsa-public/SUMMARY-Endorsed.md.html [Google Hangouts]: http://hangouts.google.com [Grudgeball]: https://www.youtube.com/watch?v=u_GzWwSrDlo [Parson's Problems]: https://www.youtube.com/watch?v=11n-AsaCd9w [Projects and Labs]: https://www.youtube.com/watch?v=WHvuK7LBe-o [Skype]: http://www.skype.com [Supporting Visual-Spatial Learners]: https://www.youtube.com/watch?v=O6yBe3J10vQ [TEALS Program]: https://www.tealsk12.org/ [Timing and Pacing]: https://www.youtube.com/watch?v=LkGh03UZ724 [Twiddla]: http://www.twiddla.com [Vyew]: http://www.vyew.com [AP CS A Course Audit Instructions]: https://apcentral.collegeboard.org/pdf/ap-course-audit-user-guide.pdf