Solution Home | Administrative Concerns | Pre-K–K | 1–5 | 6–8 | 9–12 | Teaching Teachers

Solution: Grades 6 to 8

Learning Objectives:
The middle school computer science curriculum is based on the students reaching a milestone in their computer science education. This milestone marks the time when students can easily transition from simplified and graphical programming languages and software to high-level, widely used, robust, real-world programming languages. Students will make web pages using HTML and then move on to Python. Python's syntax is simple, and its library is extensive enough that students will not find themselves reinventing routine functions when they could be sovling mroe interesting problems. Furthermore, Python can be used to teach multiple programming paradigms (object oriented, imperative, and functional). It also has a fully dynamic type system and automatic memory management (garbage collection), making it more manageable than low-level languages like C and C++.

The programming curricula will continue to be supplemented with written algorithmic exercises exploring more theoretical areas of computer science. Programs like The Incredible Machine and Armadillo will continue to be used as well, with the puzzles increasing in difficulty according to the quickly accumulating student skill and experience with such puzzles. As in the Sivilotti and Demirbas study, students also can use acting and other means to explore more advanced algorithms.

Alignment with existing criteria:
By middle school, the students in this program will have reached a milestone in terms of their understanding of computer science and programming that will enable them to take computer science independently of other subjects. Until this point, the curriculum has been structured in such a way that it integrates well with other subject areas, including math, science, geography, and reading. Now, computer science will be a standalone subject focusing more on its own subject area (in terms of programming and algorithms), complemented by other subjects instead of being used to complement them. Note that as an exception, the HTML portion of the curriculum can, and should be, closely connected to a project from some other class.

6th grade: Introduction to HTML—Students will create websites in conjunction with another large class project. For example, many middle schools do a Holocaust unit or a US Presidents unit, which would provide the perfect content for an educational website. This part of the 6th grade curriculum will last a maximum of 2 months. After that, the students will be introduced to the Python programming language using a programming environment like RUR-PLE, similar to the "Karel the robot" environment often used to teach undergraduate CS.

7th grade: Students will start learning Python without an environment like RUR-PLE. In the process, they will be introduced to basic data structures, including lists, queues, and stacks. The students will be introduced to conditional statements and loops. Standard input and output will be covered along with numbers and strings. With these tools in hand, many interesting and non-trivial programming projects and assignments will be within the scope of the class.

8th grade: Classes at this level will cover more advanced Python features. The data structures used will be extended to sets (fits well into teaching the concept of a mathematical set) and dictionaries (hash-maps). The students will learn more advanced functions on string data types and how to construct their own data types. The goal will be to create some algorithmically challenging, but not syntactically confusing programs.

Early Acquisition of Computer Science · ©2008 Justin Solomon and Peter Rusev