What 'IT' Stuff Should We Teach Ninth-Graders?
gphilip writes "I have been asked to contribute ideas for the preparation of a textbook for ninth graders (ages circa 14 years) in the subject of Information and Communication Technologies (ICT). Could you suggest material to include in such a text? More details below."
Quite a few details, actually — how would you add to the curriculum plan outlined below?
"Background: This is for the public school system of the state of Kerala, India. The state has near-total literacy (we achieved this goal in 1991 following a massive literacy drive), and the government is keen on achieving total e-literacy as well. This drive for e-literacy — and the school curriculum that is the subject of this question — is based entirely on free and open-source software; the school system uses a customized version of Debian for teaching purposes.
ICT is a subject that has been recently introduced into the school curriculum. Currently we have, for all intents and purposes, a 'first generation' of students (and teachers) in this subject. To be more precise, the general public is just beginning to use computers in a big way, and the goal now is to familiarize them with the use of computers, and more specifically, with FOSS. The ICT textbook for the eighth grade (native language version), therefore, focusses on introducing various GNU/Linux software and showing how they can help in learning the other, more traditional, subjects. This textbook introduces the following software: The Gimp, Sunclock, OOO Writer, Calc, and Impress, Kalzium, Geogebra, Marble, and Kstars. In addition, there are simple introductions to elementary Python (variables, the print statement, and if-else), networking, and the Internet.
What we need: In the ninth grade textbook, we would like to shift the focus a bit. We want to introduce concepts which give more scope for creativity, and form a basis for further studies and/or a vocation in the future. The student spends one more year (the tenth grade) in the school system, and so there is scope for developing further on the theme of the ninth grade ICT book when designing the textbook for the tenth grade.
Given this background, are there some other FOSS software that, in your opinion, it would be good to introduce to our ninth graders?
I am partial towards introducing more of Python : the two loops, and perhaps the notion of a function. Do you have suggestions/pointers on how to go about doing this in a way that is easy to learn and to teach?
I would also like to give a glimpse of some ideas from computer science — the idea of an algorithm, for example — so that those kids with a math/CS aptitude get to see that there are such things out there. Which algorithms would be good for this purpose? Binary search is perhaps a good candidate, given that it is easy to describe informally, relates easily to things with which the student is familiar (phone book, dictionary), and it is easy to bring out the contrast in running time with the more natural linear search. What other algorithms would be instructive and motivating? Which other notions from computer science can be introduced to this audience in this manner?
Any other ideas/suggestions about this are also welcome."
ICT is a subject that has been recently introduced into the school curriculum. Currently we have, for all intents and purposes, a 'first generation' of students (and teachers) in this subject. To be more precise, the general public is just beginning to use computers in a big way, and the goal now is to familiarize them with the use of computers, and more specifically, with FOSS. The ICT textbook for the eighth grade (native language version), therefore, focusses on introducing various GNU/Linux software and showing how they can help in learning the other, more traditional, subjects. This textbook introduces the following software: The Gimp, Sunclock, OOO Writer, Calc, and Impress, Kalzium, Geogebra, Marble, and Kstars. In addition, there are simple introductions to elementary Python (variables, the print statement, and if-else), networking, and the Internet.
What we need: In the ninth grade textbook, we would like to shift the focus a bit. We want to introduce concepts which give more scope for creativity, and form a basis for further studies and/or a vocation in the future. The student spends one more year (the tenth grade) in the school system, and so there is scope for developing further on the theme of the ninth grade ICT book when designing the textbook for the tenth grade.
Given this background, are there some other FOSS software that, in your opinion, it would be good to introduce to our ninth graders?
I am partial towards introducing more of Python : the two loops, and perhaps the notion of a function. Do you have suggestions/pointers on how to go about doing this in a way that is easy to learn and to teach?
I would also like to give a glimpse of some ideas from computer science — the idea of an algorithm, for example — so that those kids with a math/CS aptitude get to see that there are such things out there. Which algorithms would be good for this purpose? Binary search is perhaps a good candidate, given that it is easy to describe informally, relates easily to things with which the student is familiar (phone book, dictionary), and it is easy to bring out the contrast in running time with the more natural linear search. What other algorithms would be instructive and motivating? Which other notions from computer science can be introduced to this audience in this manner?
Any other ideas/suggestions about this are also welcome."
backups are important.
Teach them that the proper use of language is important, even when you're using a computer. It is almost guaranteed that at some point in their working life, they will use the computer as a communications tool, so it's an important thing to know (that most teens seem not to know)... additionally it would make comments on Facebook easier to decode. I know it's not strictly IT... but it's on a computer... wait... I smell a method patent coming... "Proper use of language... ON THE INTERNET".
I know, this is old fashioned thinking, but people need to understand the concepts of bits, bytes, words, longwords, binary/octal/hex numbers, thinking sequentially and logically, what an operating system actually does, what an IO system is and does, how a computer actually does math, etc., etc., etc. You know, all the stuff we learned 40 years ago. Make 'em learn a programming language too. MK
Programming can be thought of in two different aspect
1) algorithm development - the part of the solution that requires the most logic, problem solving, and creativity.
2) code development - taking an algorithm and translating that into code.
I would focus more on the first. It's problem solving capabilities that are going to get children somewhere, not the ability to write code. (not that this part is unimportant!).
So maybe you could present this in several stages. Work together to solve a problem of some sort, then make the whole class responsible for developing a program.
In on of my college c++ classes, there was no individual assignments. EVERY assignment was broken down into parts that several groups had to complete, then a different group would be responsible from "compiling" all of our functions/source code and actually compiling it into a program. Talk about group dynamics. Through a bunch of noob programmers together and grab the popcorn!
It was a learning experience for sure.
This might be a good time to begin introducing the basics of data storage and retrieval. SQLite is already available from a standard Python installation, it might be a good candidate for introducing the subject while building on the Python foundation from the prior grade.
I think it would be very important to include a section on ethics. Yes, it can be funny to anonymously include funny messages in your code...until your boss reads them. Yes, it's sometimes considered appropriate to do a half-ass job of fixing a coding error...until you realize that code controls someone's pacemaker. Ethics, like good manners, haven't followed us into the 21'st century as much as I would have liked.
Care killed the cat, but satisfaction brought it back.
Your course should be online and continuously developed, in part driven by responses / challenges from the students.
It is ironic that a course on using computer communications would be thought of as being taught from a textbook. There are no good reasons to publish a textbook and many bad ones.
rd
Teach them practical computer usage; all the knowledge of BASIC in the world won't help if you can't make spreadsheets etc.
Also teach them internet etiquette- why tone of voice isn't as easily conveyed, why grammar matters, and why there's no such thing as a free lunch (even if you forwarded it to 50 friends).
Whatever route you take, at the end, make sure the students have actually automated some task, understand the value of it, and can do it again.
Give them some big piece of tedious work, and make sure they can write a little program to do it for them.
Better make sure they understand how to work iteratively and test their results too.
A society filled with regular office workers who can use a computer to automate their tasks will be much more productive, and consequently richer.
Be who you are and say what you feel, because those who mind don't matter and those who matter don't mind. - Dr. Seus
While I'd love to see every 9th grader leave with at least some general competency in my field, I also have to remind myself that 'IT' is just as much a lifestyle choice as it is a career path.
Looking at new hires, these new so-called, 'digital natives', I see bigger, glaring problems. They can't compose a simple e-mail. You can make all the arguments that the-times-they-are-a-changin', but doesn't make your company look like any less of an ass when an employee sends a client or customer an e-mail saying something like: HEAR R UR TAX DOX 4 2010, HOPE ITZ N TEH RITE FORMAT! LOL!
I'm sick and tired of seeing JeffKs come through the door.
Before you teach someone to drive a car, how about some time taking it to pieces, then showing them how to reassemble it, with a detailed explanation of what each bit does. Then, once it's working again (and they really understand it) they can start actually learning to use it.
The basics of how something works are often not the best place to start learning about it. Those details are largely irrelevant to most people. Learning a high-level language means they can get things done, while learning to think in a logical fashion. For those that want to go into more detail, they can go 'under the hood' to see things like "memory addressing modes" later. Just like we don't expect people to learn the basics of a fuel injection system before starting a car.
I agree, good data redundancy is very important.
When I was a high school student, we had to take either an Introduction to Computers class or Basic Electronics.
I know we're talking India here, but the picture I'm getting is these kids can probably "operate" a computer just fine - enough to be an office lackey. But what about if it breaks? My parents used to go on and on about how "good" I was with computers, and they now do the same with my sister who's 10 years younger than I. Well, there's one difference. In high school, I took Basic Electronics instead of "Introduction to Computers".
Intro to Computers was basically a how-to-use-Windows class (all the computers were Apple until this class). They taught you basic use, how to not "catch a virus" - you know, not click Yes without reading. Nothing exciting. In Basic Electronics, it was even less exciting. We had textbooks. We learned the basics of electronics theory, did fun little diagrams of circuits with an arrow, "What's the voltage and current HERE?" and by the end of it, we were building digital alarm clocks, strobe lights, etc. We learned first hand why you didn't use an underrated capacitor, and we learned what happened when you plugged one in backwards. We learned to solder (and do it correctly), we learned to use resist pens to make cheap-o circuit boards, and once the school had the money, learned how to do it with a laser printer and transfer paper.
My poor sister has to come running to me when it's anything worse than a blue screen on her computer. She'll never be taking out the soldering iron. But what's that class meant to me? I'm a law student with a bachelors' in human development. It's certainly not going to be used by me at work. But:
* When my dad's cursing about the damn car with a check engine light on, and how back in the old days they walked uphill both ways to the parts store and could tell what was wrong just by listening, I break out my scanner and a multimeter, and the car tells me more clearly than a good ear ever could.
* I've never once had to pay for a repair man. When I was younger, I was shocked how much a family friend would want to pay for me to fix their VCR.
* I have never had to hire a company to run the LANs at our student housing properties. In fact, I usually return over school breaks to fix whatever nonsense the students at Penn Tech thought would get their internet connection working again (torrents are blocked).
I could go on, but you see my point. You could help your students greatly with just some bare-bones technical know how. They might find it a little boring at first, but it just may help out their employment prospects a little later down the road. The basics is where its at. Just like literacy. You don't teach them the alphabet and then throw a dictionary at them and tell them to get crackin'. You teach the alphabet, then a little bit of sentence structure, and you let them pull themselves up by the bootstraps.
Sorry, that was the OLD Testament. According to the NEW Testament, only Jesus saves.
Programming is essential. As a model language I would recommend an old BASIC with line numbers. This is close to how computers actually work, but still accessible enought for them. If you want to have an advanced course, teach Pascal.
It is essential in our modern world that people, especially children, know how computers work and how to program them, in principle, at least. We also teach them how to do math, although they are very unlikely to multiply larger numbers without a calculator or solve an equation.
The point is not to turn them into great programmers, but to give them a basic idea of how the things work. To make them able to estimate the limits of computers and how hard a certain task is for a programmer.
The worst first language would probably be C(++,#, Java,whatever) or any of those new fancy languages, because they hide the machine to much and add lots of complicated concepts to get wrong.
I find those "how to use application X" courses absolutely useless. Most of what you learn there will be found out equally fast by the children themselves. And everything will change at the next version of application X anyhow.
Some of the responses so far seem to be based on the assumption that this is an information technology class for students who intend to specialize in the field. I'm assuming, rather, that this is intended to be a basic primer class offered to everyone and intended to give a general grounding in the subject.
My suggestion is that you start by talking to adults to find out what they do and don't understand about the technology they use. In my experience (20-some years' worth of dealing with end users in various capacities) many, probably most, adults have an extremely limited idea how the technology they are using really works in the physical world and deal only with it as an abstract unit. And some of the assumptions they make based on the mental model they have built up lead to really bad decisions because they don't understand very basic concepts that the rest of us take for granted.
To give an example: perhaps the single most misunderstood concept I encounter is the notion of storage. A great number of people seem to have no idea what actually happens on a computer when they save something. Generally they don't understand the difference between various types of memory (i.e. the difference between temporary short-term storage in RAM and long-term storage on a file system on some sort of disc or flash device. They have a very limited understanding, if any, of the filesystem and the concept of hierarchical organization. They are generally unable to distinguish between the various components of their system (e.g. display, CPU, input devices, file storage.) These are things that seem idiotically simple to most of us because we have completely internalized the knowledge, but deal with people who don't have the same underlying framework and you will soon see how it affects their reasoning about their computer.
People with this sort of limited understanding of the computer as one abstracted whole, a magic box that they interact with, generally get along adequately as long as everything is working the way they expect but as soon as they run into any sort of exceptional circumstance they have virtually no recourse because they have no real understanding from which to base hypotheses about a possible cause for the problem or method for proceeding. Their ability to use their systems is therefore fragile and subject to disruption from virtually any sort of unusual situation.
If you've worked in the field you've seen this over and over and over again and you can probably call to mind some of the unfortunate results of this kind of shallow understanding and "magical box" mindset.
I think the best thing you can do for kids just getting started (though I think 9th grade is pretty late to be getting started) is to help them understand that computers are not magical and that their behavior is not arbitrary, that with the proper basic understanding of what's happening most of what follows can be predicted by fairly straightforward logic.