This year I'll be an unofficial teacher assistant in the CS class of 9th graders.
Background
This question is about a curriculum for introducing students to programming in java.
The students are in 9th grade (14-15 years old) and are not expected to have any background whatsoever in computer science (usually some do have, but that's not relevant to the curriculum. Differentiating it is something relatively easy at this stage).
This curriculum spans 2 terms (1 year - Sept. to June), and is meant to build a firm foundation for students. The subject is compulsory in 9th grade. I have some doubts regarding the ordering of the subjects in the curriculum.
How it stands
Students are initially introduced to computers in general.
The first lesson is always brainstorming: "What is computer science?". It's established from there that programming ("computer science is writing code" is usually a response of a few students) is writing something, and then converting it into binary (it's expected that they know that the binary numbering system exists). The students use the remaining time ($\pm$10 minutes) to write the famous:
public static void main(String[] args){ //we don't explain this line
System.out.println("Hello, World!"); //sometimes we use a Hebrew alternative:
System.out.println("!שלום, עולם");//which is literally the translation
}
That's the first lesson. From here, I'll list the subjects (each one is a subject, and not a separate lesson; lessons are ignored, I only address the subjects of the curriculum) taught (the language used to teach is Java)
0. (First Lesson) introduction and simple printing of text
Simple Eclipse console Input\Output and user input (print what the user inputs etc.) as well as variables (just primitives, and just
int
,double
,char
andString
).Mathematical operators:
+
,-
,*
,/
as well as%
. The curriculum has an option to teach increment as well as+=
,-=
and the rest.Conditionals:
if
,if\else
and nestedif
s. Alsoboolean
is introduced.switch-case
. Not much to say about this at this level.Math
library. This is one of the things that caused me to doubt the order of things in the curriculum.for
loops and various uses. Arrays are not taught in the curriculum at allwhile
loops.Nested loops.
functions. yes, functions:
static returnType functionName ( parameters) { //operations return returnValue; }
That's it.
Doubts
I spotted a few issues in the curriculum. First and foremost: Where are all the arrays? I want to include arrays, but I'm not sure where\instead of what.
Teaching for
after arrays seems better than before, because then I can show the foreach
in the same lesson. They are essentially the same (but not 100% equivalent. Concurrent modifications is something beginners aren't ready for). So I am uncertain about the order of the subjects.
Secondly: Functions. Again, why? I want to remove them from the curriculum (students learn about them in the following years anyway, as part of OOP), but this might do more damage than good. Students might want to know, after an entire year, what exactly is the meaning of the public static void main
from lesson 1.
Functions can explain that, but other than that, it's pointless at this stage (because they'll learn it anyway, should they major in CS).
So, does the order of subjects in the curriculum, as it stands, make sense (keeping in mind that arrays are not covered at all)?
Note: this question is not a duplicate of this one, simply because I already have a curriculum, and I am asking for a review of it. I'm also asking about specific aspects of my curriculum, and not general "hand wave-ish" things.