# Curriculum for a primary school learner

My niece is 11 this year and has shown a surprisingly deep interest in programming. She will spend hours on Khan Academy, using their javascript/processingjs environment. This is educational, but it's not a toy or a visual/drag-and-drop interface; it's raw javascript, with a bit of help from the compiler (in the form of a cartoon character that says things like "are you missing a semi-colon?").

Since I'm the programmer in the family, I've been working with my niece to develop her interest, and I'm unsure how to go about it further. She wants to develop video games or animations, so she'll look at programs that other people have written, but these are generally big and hard to follow. What she can do on her own is find individual lines of code that she can understand, like a call to fill(color) and she'll change the color, or rect(x,y,width,height) and change the parameters to change where the rectangle is drawn.

When I work with her, she'll ask for features, and I'll implement them and explain, and she seems to follow the explanation, but she can't generate the code herself, or understand how to decompose a complex task into pieces small enough that she can implement them, and then assemble the pieces into what she wants to build

I'm wondering if there's a curriculum or toolkit out there that would guide a child--slowly--through the skills. AFAICT, the Khan academy system isn't really that kind of thing, more like an environment and some tutorials, and access to other people's code, but not a linear course to follow.

I'm thinking of something like Python Like You Mean It, but for kids, and ideally oriented towards graphical output--something that the child could follow along in a linear way, to provide structure to her studies.

Or would that run the risk of killing a budding interest, and should I just let her play and wait and see where it goes?

• There are probably more resources available in Java as well as more complete graphics libraries. Are you willing to consider that? I like Python, but it feels "incomplete" so far. Feb 8, 2021 at 14:47
• I didn't mean that it should be Python, just that I was aware of that particular tutorial as a long term, linear way to study the language. Feb 8, 2021 at 14:48
• You may find this recent q-n-a useful
– Rusi
Feb 8, 2021 at 15:37
• I learned programming, at nearly the same age, by changing variable declarations in a Fortran program.I have no links to toolkits or course-type materials that fit the bill. Rather, a mere suggestion: provide raw resources (a set of JS docs, unlimited encouragement and support (the only stupid question is the one that never gets asked), and dedicated space on her computer for expirements). Using git/GitHub/GitLab wouldn't be bad either just for the rollback ability. (Maybe should be an answer if I wasn't so lazy today.) Feb 8, 2021 at 18:22
• – Rusi
Feb 9, 2021 at 13:14

You might want to explore CS Unplugged for use with any youngster. While it doesn't use programming, it provides some foundation in computational thinking and provides some metaphors, etc, that might be useful to learning even in an environment where the student is learning to program.

I don't think it is necessary to do everything in the CS Unplugged curriculum prior to starting programming. And you might not want to use any of it explicitly, but it is worth the effort for an inexperienced teacher to explore this at least.

My grand-daughter is interested in programming and has been from the age of 5 or so (and is now nearly 10).

I teach programming at university and my son-in-law (her father) teaches at secondary school level so we both have experience at teaching different age ranges.

We find the Usborne books to be very useful for that age range, and they are so interesting that I end up pointing some undergraduate students at them.

In particular I like the "Lift-the-Flap Computers and Coding" title:

The child in question now programmes in Scratch and Python.

† Scratch is from MIT and designed for teaching coding to younger ages using visual programming. See https://scratch.mit.edu/.

For Java ideas, look at the free to join Greenroom that is a resource collection place for the Greenfoot programming environment. There are a wide variety of project (see Resources) for programming projects within this environment.

Greenfoot is a scaffolding environment based on a grid like world that contains objects of various kinds that the student manipulates by writing programs. Each project is different and the granularity of the grid can be large or small.

It is mostly used in secondary school and beginning university courses for a first course.

For example, frogs might chase flies or just move to lily pads. Some of the scenarios are Turing complete but also minimal so that any program can be written with a minimum of constructs.

Greenfoot contains its own editor and compiler and is highly graphical.

One reason that I recommend Java, other than the wealth of resources, is that it is relatively easy to build the scaffolding of projects (worlds) within which the students program. Thus they don't need to start with a blank page and no conceptual guidance. The world itself provides a rich metaphor about what is possible and how to go about things.

In particular, I believe that avoiding the details of the primitive data types of programming languages is a good thing for the beginner. It is possible to teach about half of the first university course with programmer defined primitives (robots, frogs, ...) rather than ints and floats. The implication is that students learn first about the structure of programs, not the trivia, and can learn the lesson that abstraction is the big idea, whether function abstraction or object abstraction.

There is a more general site: BlueJ, built by the same team, that is a bit more sophisticated and doesn't rely on a grid based world. It is a full development IDE. It also has an associated Blue Room where instructor-supplied projects are collected.

I'm surprised that no one has mentioned Code.org (computer science curricula for middle-high school students page) so I will! They have a plethora of courses and short activities that allow students to develop games, apps, and websites in block-based languages and Javascript for free. They walk through the concepts very slowly and have videos and tutorials for everything.