What 'IT' Stuff Should We Teach Ninth-Graders? 462
Posted
by
timothy
from the illustrated-primer dept.
from the illustrated-primer dept.
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."
backups are important. (Score:5, Insightful)
Teach them how to communicate (Score:5, Insightful)
Teach 'em the basics (Score:5, Insightful)
Focus on logic and algorithm development (Score:5, Insightful)
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.
Re:Teach them how to communicate (Score:4, Insightful)
...it could certainly help those of them that will become an outsorced workforce.
I blame Kanya (Score:5, Insightful)
Practical usage. (Score:5, Insightful)
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).
Re:Teach them how to communicate (Score:5, Insightful)
The biggest pain of outsourced tech support has got to be the language/accent barrier.
Best handled by the language arts / English department not "IT".
This is a temporary problem anyway. Once all "desk" jobs are outsourced, they will be talking amongst themselves in their native language.
Right after that would be heavily scripted workflow, forcing me to work through possibilities I've already eliminated just so the support worker can follow their script.
Best handled by improving the "MBA" training here in the US, those decisions are not made by the script readers.
automation (Score:5, Insightful)
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.
Teach them about honesty (Score:1, Insightful)
That it will only get them into trouble, and to report all vulnerabilities anonymously
Re:Teach 'em the basics (Score:2, Insightful)
How to type...... (Score:4, Insightful)
After that something similar to QBasic where you can have fun and learn programming concepts would be good. As has been mentioned Python is a good choice. Although you need a nice fun graphic library similar in scope to the QBasic graphic libraries to go with it. People like to make for loops, while loops, and various shapes.....watching the special effects, and cheesy sound effects........
Wrong angle. (Score:5, Insightful)
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.
Re:Walk before you run? (Score:5, Insightful)
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.
Re:In 2010 (Score:3, Insightful)
Or first... Well, I think you know what. That thing which involves bees and flowers.
dos (Score:2, Insightful)
"IT" shouldn't be a class, it should be wholistic (Score:3, Insightful)
Correction, basic IT skills should be integrated througout the curriculumn in school grades. If there needs to be a "class" in a particular skill it should be well before 9th grade.
"Basic" IT is a life skill not an academic discipline or a career skill. We're talking everything from using a mouse and a keyboard up to how to type up and format a letter or use a basic spreadsheet using any common word processor or spreadsheet. We are also talking the basic, platform-agnostic skills of email and social networking.
Now, some students will want to learn IT as a career skill or they will want to learn various aspects of computers such as linguistics, higher maths, etc. as an academic discipline. Others will teach themselves various aspects of computing and IT for pure enjoyment. More power to them. But as for school, everyone should be learning the basics as soon as they are old enough for the skill to be valuable, and schools who offer trade/vocation skills classes or college-prep computer classes should offer them as electives.
In the Untied States, good career-training classes include anything that leads to a certification like CompTia/Microsoft/RedHat or that leads to an immediately marketable job skill, such as web design, web server operation, programming in the language-de-jour, basic electronics. These all prepare students for jobs immediately after graduating high school. Pre-college classes would include programming or electronics that have a heavy theory or history emphasis, and other more-theory-less-practical classes.
Re:Wrong angle. (Score:5, Insightful)
OK, now that I've spent out some nerd rage, forget basic programming; just teach them Discrete Math (and/or Logic). I didn't get this until college and it is a real shame that we don't teach it in every High School in the nation, not just GT programs or whatever they call it these days. It is almost a shame, we teach chemistry to millions of students who never use it after finishing the course (excluding SI), but we don't teach them something they should know every time they pick up a newspaper.
If there is still some time at the end of the year, let them try their hand at something like Karel the robot.
Stop skipping the fundamentals... (Score:4, Insightful)
...teach them how basic computers work, then teach them the principles behind how software works, THEN teach them about things like IT.
Re:dos (Score:1, Insightful)
that falls under the realm of enrollment testing and prereq's. Also being able to find out how to accomplish your task with research is a much more valuable skill then memorization.......
Re:Practical usage. (Score:2, Insightful)
Re:backups are important. (Score:3, Insightful)
Backups are meaningless. Being able to restore is important.
Re:web course (Score:1, Insightful)
There are no good reasons to publish a textbook? Really? Are you assuming that the Indian public school system has 100% students owning laptops? Or even computers at home? Because that seems very unlikely to me. So how are students that aren't online to do homework? Print out the text, use it (or not) and toss it?
If they can only use it at school, it's like saying 'why bother with any documentation when the teacher is there to help them?'
Re:Focus on logic and algorithm development (Score:3, Insightful)
Wait, you didn't get to compile you own code? Then how did you learn from your mistakes? Moreover, how did this experience prepare you for programming on anything besides a circa 1970 mainframe environment?
In my experience, the best way to learn programming is to experience your mistakes. If someone else is responsible for compiling your code you're not being exposed to your mistakes, hamstringing your ability to learn.
Re:Teach them how to communicate (Score:3, Insightful)
I would say though that beyond interacting as a team and other language skills I would actually add at least a small section on properly writing a design spec.
The future of outsourced IT even is be able to clearly deliver your creative vision to a team of developers who might not be on your continent. A clearly written design doc is like a form of programming except that it is written in plain English. Yes it's less clear than something like C++ but it also approachable. Let the Chinese worry about performance and memory leaks at $0.50 an hour. 99% of code isn't groundbreaking innovation in algorithm design it's just competently executing a design doc.
I'm not a full time programmer but it seems like offloading all of the menial development and bug bashing after the architecture is designed would be desirable. If I had a magic compiler which took some outlined code and a design doc and made a program I would think it was the greatest invention in computer science since the transistor--and yet we kind of have that in outsourced inexpensive development companies.
As the students learn to write design docs the teacher should be competent in programming and always challenge the students to not have any 'holes' in their design that would be ambiguous and perhaps result in an undesirable solution. Just like code had compile errors, the teacher's role would be to 'compile' the design docs and report incomplete logic.
You could do this completely outside of the specifications for IT. Maybe they aren't interested in computers yet. So write up design docs for ANYTHING. Play the Amelia Bedelia and tell fellow students to take everything incredibly literally--and try to follow their classmates' instructions without any intervention. See if they can get a classmate to recreate something using only their design doc. This would be entertaining and educational. And tell them they have to be specific. If they don't say to use scissors then don't proceed with the step that involves cutting. Very quickly the students will see where their peers are failing (and where they fail on other people's design docs) and get into the spirit of things.
Also important in an IT program would be Troubleshooting. How many times do we have a family or friend call us and go "My such and such doesn't work. Do you know how to fix it?" The answer is almost always the same "No but...". People rarely know the answer to a problem. A mechanic often doesn't know what's wrong until they've gone through a process of elimination.
There should be course material in playing 20 Questions. Where you use logic to whittle down a problem to a likely solution. Try it and then go back to the beginning. Again this isn't limited to IT or computers. Diagnostic problem solving is critical to every area of learning. It could be the most important skill a student learns period. It's the fundamental process of problem solving. Maybe have each student learn about two or three subject and then as a team of 4 give them a 'mystery' to solve. As a team they should work together to use their combined knowledge to solve the mystery. "Maybe it's a cougar." "No the cougar doesn't live in South America. Which of our animals live in South America?"
It would teach diagnostic troubleshooting and team work simultaneously.
Lastly I think we start teaching formal logic far too late in life. An introductory programming class is a good way to condition pure logic but other classes should get in on the act. Essentially logic is the formalized science of minimizing hypocrisy. Teachers should put a strong emphasis on encouraging students to formulate ideas that aren't self contradictory.
Programming is essential (Score:5, Insightful)
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.
Re:backups are important. (Score:3, Insightful)
Re:One Word (Score:4, Insightful)
Real basics: how to write, how to think (Score:2, Insightful)
I still program - among other things - and a well-written spec from a well-thought-out idea is a pleasure.
Needless to say, these skills transfer to other walks of life...
Teach Them That Computers Are Not Magical Boxes (Score:5, Insightful)
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.
The equivalent of the scientific method (Score:4, Insightful)
You should teach them the equivalent of the scientific method. Teach the kids how to learn and explore and how technology impacts them. This means giving them some fundamentals like what data storage looks like (hard drives, servers, things like facebook) and what it means to them (privacy, control of information, theft of information, etc.). Some basic networking and what encryption/authentication is and does (prevent eaves dropping, impersonation, etc.). Maybe some real world examples like social media sites, posting videos on youtube, and how once you have done that, because of the way the technology works they can never regain control of their data (only one person has to copy it and re-release it).
Also _please_ teach them about copying/distribution and indexing of information so they get a basic understanding of why posting drunken photos online may not be a good idea long term. Teach them about privacy, fair use and so on.
Give historical info incl. hackers & laws (Score:1, Insightful)
1. The importance of OSS, patents, and digital rights.
2. Historical background info, including the role of things like media, the courts (EFF) and hacker/infosec culture.
Re:backups are important. (Score:3, Insightful)
Indeed, but to do that you have to have (at least) an extra set of disks to restore to. Good luck getting non-tech minded people to buy two drives instead of one (or four instead of two).
Anyhow, back to topic, at 9th grade, kids should know both algebra and calculus, and be able to handle derivations if not yet being comfortable with integrals. I'd say that they should know Boolean algebra by heart, as well as how all the fundamentals for common CPUs and kernels including pipelines, stacks, interrupts, arrays, threading and other simple concepts.
But don't tie them to specific kernels, programming languages and definitely not specific programs. They need to learn the fundamentals, or they'll just end up becoming users with a capital L, with "knowledge" that's outdated before they get their first job. But I fully expect the schools to jump into bed with specific vendors, and "teach" the students basically useless stuff.
Re:IT as it relates to regular people (Score:3, Insightful)
I strongly disagree, typing should be learnt by everyone and it is possible to teach it. Saying that it should be learnt at home is great in theory but doesn't work in practice. You could make the same argument about reading but we still teach it in schools because people don't learn it at home.
A proper typing course as part of the curriculum will get over 90% of the class up to at least 25wpm in a semester. That's touch typing and not looking at the keyboard. I know because I used to go to a school that ran them.
Once people have the basics regular typing will increase their speed. Expecting people to just pick it up leads to people two finger typing at 20 wpm with multiple errors in every sentence. Imagine the productivity boost for society if everyone in an office could actually type properly.
Re:IT as it relates to regular people (Score:3, Insightful)
"Don't teach good password policy; they won't remember their passwords. Teach them how to use a password manager instead."
WRONG WRONG WRONG! Not on the password manager, but on not teaching password policy. Children need to understand that passwords should never be shared so as adults they'll see that as an axiom. If you went to college in the digital age (and worked in any support situation) you have seen the effects of couples sharing passwords and then breaking up. We all (as Slashdotters) know how that the best way to get someone's important banking password is to get their throwaway healthclub password -- they're usually the same. We know (from the movie wargames, and from real life, though in real life they're often far less hidden) that passwords are usually written down and close (very close) to the computer in question. The best place to find a password for the laptop you've just stolen is on a post-it note in the laptop bag.
Kids don't need to be taught to make up good passwords (though that's not a bad thing), kids need to be taught what passwords are, why they're important, how people steal things using them, never to share them, assume people want them, etc.
Re:Teach them how to communicate (Score:3, Insightful)
In defense of support people everywhere, there is a reason for the scripting. Yes, you may know what you are doing. Unfortunately, most people SAY they do even when they know nothing.
I don't have to work with a script, thankfully, but I always start at the beginning. People rarely define the problem they're having correctly. "I can't get on the Internet." can be (and has been, in my experience) the result of the computer not being plugged in. Also, I can't tell you the number of times people will say, "Yeah, I tried all that already. The cables are all plugged in. Nothing has changed." *An hour later* "Oh, this cable isn't plugged in, could that be the problem?" In fact, "Nothing has changed" is a running joke in my office.
My favorite was the guy who started the conversation by yelling at me that he had a master's degree in computer engineering, so there was absolutely no way the problem could be on his end and I better fix it right now. I explained that others were not having the same problem, so I had to check a few things on his side anyway...
"Please open up the control panel."
"What's that?"
*face hits desk*