Welcome to the TEALS Intro CS Curriculum!
Note the change in repository and GitBook locations starting the 2017-18 school year.
This curriculum is licensed under the Creative Commons Attribution Non-Commercial Share-alike License (http://creativecommons.org/licenses/by-nc-sa/4.0/), which means you may share and adapt this material for non-commercial uses as long as you attribute its original source, and retain these same licensing terms.
This curriculum has been designed by the TEALS program to support computer science teachers and/or volunteer professionals teaching an introductory computer science course in a high school classroom. The curriculum is based on, and borrows heavily from, the Beauty and Joy of Computing Curriculum (http://bjc.berkeley.edu/) developed at the University of California, Berkeley. The TEALS curriculum has a heavier focus on the basic programming components of the course than BJC, sacrificing some of the advanced programming and conceptual topics that are less appropriate in an introductory high school classroom.
This curriculum advocates a "hands-on" learning approach in which students' primary means of learning is through discovery, experimentation, and application. To that end, each unit is built around a large, culminating, programming project that exercises the objectives of the unit. In addition, nearly all lessons in the curriculum include a guided activity of some kind to allow students to practice with and experience the concepts covered in the lesson first-hand. Taken together, the lessons provide the skills and support necessary to enable students to complete the project and demonstrate mastery of the unit's objectives. Substantial class time should be provided for the project in each unit to ensure students have the opportunity to demonstrate mastery of the skills from each unit before moving on.
Because this curriculum was designed to be used in a wide variety of classrooms, we have made as few assumptions as possible. In particular, the curriculum does not depend on any specific technologies or resources in the classroom other than computers with reliable internet access. This curriculum is also designed without any student homework assignment, as not all classes will have students who can reliably access a computer with internet access at home. For classes where home computer access is not an issue, some amount of lab work can be reassigned as homework.
This curriculum is designed for use with the Snap! programming language designed at the University of California, Berkeley. Snap! is a visual programming language designed to allow students to focus on concepts and skills rather than syntax when learning to program. Snap! is an extension and reimplementation of Scratch, designed at MIT, and many Scratch lessons and programs can be easily adapted to Snap! The following resources are available to support use of Snap! in this curriculum:
Access to Snap! is necessary for students to complete the labs. The main Snap! site has been known to be inaccessible due to system updates or network outages. It is important to have contingency plans in the event the web site is unreachable. Here is a list of mirror sites that can be used in the event the main site is unreachable. In addition, Snap! can be downloaded to run locally on a student's computer, however the projects will not be able to be save to the cloud and will need to be exported and then imported to the cloud when Snap! becomes available.
The Berkeley Snap! is located at: http://snap.berkeley.edu/
The following are mirror sights:
Download a local copy of Snap! as a backup:
The TEALS Intro CS curriculum is designed for a semester-long introductory course meeting daily for 55 minute periods. A course that meets these criteria is expected to have roughly 90 class meetings in a semester. However, the TEALS curriculum in its current form includes an estimated 102 days of material. First and foremost, teachers should be reminded that the pacing in the curriculum is intended as a guideline and teaching teams are encouraged to make any adjustments they deem appropriate or necessary. However, there are certain aspects of the curriculum that are vital to maintain. In particular, the following should be considered when making pacing adjustments:
The number of lab days allotted for each project is an estimate for a typical class. Classes that are moving quickly, or classes in which most students are able to do work outside of class, can reduce the number of in-class lab days. If this route is taken, be certain that students still have enough time available to complete the projects. As the projects are the primary summative assessments in this course, it is vital that students not be rushed through completion of the project and that requirements are not cut in an attempt to shorten the time necessary.
Culture Days (see below) are included in the curriculum roughly once every two weeks. While it may be tempting to reduce the number of culture days, or remove them entirely, to gain back class days, these lessons are considered central to the student experience in this course. If an extra day or two are needed, culture days may be skipped on occasion, but teaching teams are advised to avoid making a habit of skipping culture days.
It is expected that many teams will find it necessary to remove some or all of Unit 5 from the curriculum. This unit covers cloning and prototyping, an interesting and worthwhile, though advanced topic. If time allows, teaching teams are encouraged to attempt to include at least part of this unit, possibly with a simplified version of the project, in their curriculum. But this unit can be removed without having too adverse an impact on the student experience, and should be the first major cut if one is necessary.
Unit 6 must be preserved if at all possible. The capstone experience for the course, Unit 6 enables students to apply the skills they have learned in a large-scale, individualized project setting. Cutting this unit would deprive students of the opportunity to experience a close approximation of a real-world development setting. Earlier units should be condensed or cut as necessary to ensure that Unit 6 is still included in the curriculum.
Most lesson plans in this curriculum are designed to represent a single 55-minute class period with average pacing. Each class will have slightly different needs, possibly including different period length, student capabilities, classroom interruptions, and more. Teachers and volunteers are encouraged to consider the lesson plans as guidance for one possible use of time to present the material, and to feel free to adapt the lesson plans as necessary to fit the needs of the particular class in which the plans are being applied.
With a few exceptions, each daily lesson plan consists of the following components:
1) Welcome/Announcements/Bell work
The curriculum includes a few special lesson plans that are intended to be applied at multiple times during the semester. These lesson plans are templates for a particular type of lesson, though the specific topics will vary each time the plan is used.
These special plans include:
This curriculum does not assign homework as part of its typical lessons. Because this curriculum is intended to be used in a wide variety of classrooms, some of which may include students that do not have regular access to an internet-enabled computer at home, all work is done during class time. In some circumstances, assigning some lab activities as homework can enable the teaching team to regain in-class time for additional lessons or activities, but this must be done with care. In particular, if homework is assigned, arrangements must be made so that any students who do not have the ability to complete the homework at home do not fall behind. Further, it should be expected that some students will not complete the assigned homework and teaching teams must have a way to both assess that homework was completed and ensure the material is reinforced briefly in class.
To gauge student understanding, the addition of Unit quizzes has been added. These are intended as low stakes formative assessments that allow students to visit topics at the end of the unit to reinforce learning. They are open book giving students incentive to take good notes. Ideally the quizzes are non-graded and students would reflect on the answers they got wrong in order to learn from their mistakes.
This curriculum is considered a living document and is intended to be updated regularly both by the TEALS team and with contributions from the TEALS community. In particular, feedback on teaching teams' experiences in conducting the lessons in this curriculum is always welcome. Teaching teams are also encouraged to share ideas for additional activities, lessons, or projects that can be incorporated into the curriculum guide. Please see the Contributing page for more information about how to contribute to the curriculum, or send feedback to [email protected]
The Introduction to Computer Science GitBook can be printed by navigating to https://www.gitbook.com/book/tealsk12/introduction-to-computer-science/details, clicking the "Download PDF" in the upper right corner, and selecting the pages to print.