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."
Well, I think it would be appropriate to teach pupils how to get first posts. FIRST POST NIGGA!!!!!!!!!!!1 FROSTY PISS FTW!!!!!!!!!!!!
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
Document your cheat codes! Only proper documentation will help the later generations when the XBox 'Retro Edition' is released and they need the cheat codes. ;-)
... or someone will accuse you of 'misappropriating' your data or ideas and you'll be able to prove them wrong. You can't teach these good habits too early.
Seriously, document your code, your processes, etc. You never know when you'll need to go back to it
Discuss the mediums they use.
The difference between text and email routing and voice routing. Store and forward vs streaming. Caching.
How Cell provisioning works in wireless networks.
How search works, how the electronic maps work with overlay data. How an electronic store works. How bank/cash machine networks and cash registers work securely. How the bank card system works.
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.
teach them some fundamentals...what is a bit, what is a tube, how the tubes get plugged together,
maybe how dns works at a high level just to give them some example of a simple distributed system,
and give some meaning to web addresses.
what a trivial von-neumann machine looks like
what a program is at a high level, how images are represented and manipulated.
how to write a simple game in something like scratch.
what you describe seems pretty tortuous for a 9th grader (learning gimp, ooo), even for one that
has an interest
actually give them some semantic reference for dealing with computers, rather than teaching them
about the details of the current crop of open source menu-driven applications
They have to spend $30,000 for a degree and 2 or 4 years of their time so they land a job making $9-10/hour to reboot/put a server online so that an outsourced IT employee who makes $4.54/hour (saw a quote on WebHostingTalk for this) can do your job.
It's to bad in the usa we don't have time for this as we need to teach the test (not talking about a IT One) and even in a IT field we need to move away from the MS type tests and text books and look at real world stuff like
*Dealing with old software and hardware mixed in with new stuff.
*How bad it can be with super locked down systems and why people need to work around the lock downs.
*Why long and complexity password setups don't work when you need to change it each 30 days.
*Why you should not buy the cheapest hardware out there.
*Building your own systems vs buying cheap dells and others.
*GNU/Linux working with windows systems / software
*Networking
and more.
I'm all for teaching programming... but I'm not sure you can do a respectable job of python in the time you'd have in a course like this. If you did, I'd teach a small subset, like python's turtle library.
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.
Inkscape is an excellent FOSS vector graphics program. We use it all the time, and our 8th-grader also uses it.
Teaching some simple shell scripting might also be useful to complement the Python course.
You could also think about one of the FOSS mind-mapping programs, such as View-Your-Mind. Kids should be encouraged to break down concepts in this way at an early age.
Scribus might be something to introduce in a later class, after they have mastered the ideas of material creation and entry, and wish to focus more on presentation/formatting of publications.
If the idea is to support learning of other subjects, then there are also several FOSS chemical structure drawing tools available. Similarly, Scilab or Octave could be used with any subject requiring numerical analysis of plotting. And don't forget about a decent scientific/statistical calculator and a text editor (not necessarily vi or emacs, even mousepad would be OK).
Those who can make you believe absurdities can make you commit atrocities. - Voltaire
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.
What's fascinating right off the bat is I don't think many public schools here in the U.S. would institute lesson plans involving free and open-source software.. most use and/or are funded by commercial software. Good for you!
I would suggest a foray into properties of electricity and something step-by-step about how computers are designed to work, and in particular the physical topology of interconnectedness and internet. Something beyond 'This is the RAM, this is the CPU', while not transmuting into a seven-plus-step networking layer. It's surprising the amount of language programmers/coders I've run into that just don't quite 'get it' about how fast a world's worth of computers network & the dynamics of the magic box that can speak to another magic box halfway around the world in 1/10th* or less of a second!
* INCREDIBLY broad margins** here. It still bamboozles me though. And that's why passing on accurate knowledge is so important, for the world of today and tomorrow. Because it bamboozles me.
** Also has something to do with the ISP semipoly throttling traffic rates because they want more money? Discuss.
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).
Before you start with Python, how about some time describing what the hardware actually does: register arithmetic & logical operations, branching & subroutines, memory addressing modes, etc. Before you start showing them the abstract machines, show them the real hardware and what their abstractions are being converted to.
Also, for fun, how about something like Context Free Art, which will show block structure, the importance of syntax, and the joy of getting (non-threatening) output.
No folly is more costly than the folly of intolerant idealism. - Winston Churchill
Why is this even a question. There is an entire language designed for education. Give the kids a logo textbook! ... wait for it ... four elephants on top of it, holding a disk!
Well, ok, I am joking, but I would not be if logo got some decent upgrades! For example instead of a triangular "turtle" you could have a cool 3d photorealistic turtle of unspecified gender and
Violence is the last refuge of the incompetent. Polar Scope Align for iOS
My CS degree's discrete math curriculum? Despite being called "math" it didn't really fit into the stereotypical algebra-geometry-trig-calc sequence, and most (all?) of it could be handled by a high school student.
Sorting, info theory (Well, OK some calculus will have to be glossed over), logic, set theory, graphs, game theory...
Yes I know you're trying to each them "IT" as in password reset and pulling and terminating cables, but "CS stuff" like discrete math provides an excellent background, and encourages logical thinking, etc, etc.
I'm not sure if there's any real point in teaching future "IT folks" how to think or how the world works, when all HR currently demands is ten years of experience with MS Server 2008 and experience with C, C+, and C++. You're going to have to fight hard to educate them as opposed to train them.
"Science flies us to the moon. Religion flies us into buildings." - Victor Stenger
I'm all for teaching kids programming, and I'd love to see them applying what they learn to solve problems in other courses as well. For instance, it would be great if they were encouraged to use their programming skills to solve maths or physics problems from their other courses. This implies programming is turned into a useful tool rather than some theoretical thing that they forget the day after the exam. Imho, it's better to show them how to solve simple, practical problems than to try to cram in their heads how qsort works, for example.
OpenOffice is nice, however I really recommend you teach them some LaTeX, which is also a very useful tool to know.
We don't need no stinking IT! - Sent from my iPad
It's easy, no need to worry about libraries, and it's visual.
P.S. What is this 9th grade of which you speak of?
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
That it will only get them into trouble, and to report all vulnerabilities anonymously
For justice, we must go to Don Corleone
One of the finest lessons any incoming Freshman/woman could ever learn. And also the best sites for downloading Monga.
Which other notions from computer science can be introduced to this audience in this manner?
I think an introduction to the history of computer science would be worthwhile. Knowing the history of a subject helps with understanding the present state of it and helps give context for the content to be learned.
You would be doing them a great service to teach them to evaluate and select operating systems so their future lives won't be full of wasted time with antimalware/antispyware/antivirus, constant reboots, things that don't work for no particular reason, the need to wipe and reinstall every 6 months, etc...
While you're at it, teach them techniques for maintaining their privacy on-line.
Hindi
A bit of a spy game should help people understand threats and scams online (spam, phishing, etc) as well as, prepare those students who will develop/run systems with some background in what they will be up against.
It could be used as a way to dip their toes into the IT water without diving off the deep end.
At the very least, Social Engineering should get students receptive enough to start thinking.
When I was in 9th grade I took typing class and I turned out fine. Typing is actually useful for instant messaging, web surfing, programming, doing homework assignments, etc... I would say if they don't already know how to type that is the point to teach them....
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........
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.
Yeah, teach them how to stalk 14 year old girls and get to see their tits. That's what Stickam seems to be for nowadays.
http://abstractionphysics.net/pmwiki/index.php for a wiki on the topic of Abstraction Physics
http://threeseas.net/vic/IQ-ID/knmvic.iq for an overview of functionality use in regards to dealing with organized or structured or functional information.
To understand the unavoidable action constants of abstraction would be a very good foundation.
regarding python, Eric4 is a good IDE that allows stepping through code
There is python code for two of the small command set as stand alone programs. IQ provides the functionality for the general concept of Abstraction Physics.
Python code is also there for an integrated set though the two stand alone commands and have yet to be integrated and one yet to be written. .
This may seem new but it's a straight forward approach to be able to look up the meaning, description, instruction for the use of any functionality in the same way you apply it and even create new functionality provides a streamlined learning curve for the actions you cannot avoid, in using abstractions. Abstractions of which is what programming and information mapping is all about.
I think everyone in the 21st century should be familiar with databases. It might be a bit beyond the level of the ciriculum, but if you could fit it in it would be great. There is almost job anymore where you don't interact with a database in some fashion, from inventory, to customer dbs, to web-based dbs. This is because there is almost no activity that a good database can't help with. If you want to build creative, innovative buisness men and women, having a rudimentary knowledge of databases can be a huge stepping stone in developing a succsessful, efficient business. It also would be something that is very easy to build into the python ciriculum and base completely on FOSS. A little bit of basic boilerplate python code and the kids and build and interact with databases, maybe have them build their own contact database of friends? Maybe give them a fake inventory and sales and they need to track sales and make some queries of what they have left, where to order new items, etc.
Getting the kids closer to the bare metal will accomplish two things:
First, it will establish a clearer connection between the hardware itself and the algorithms used in CS. Using heavily abstracted languages like Python or Java is a good hook to pique their interest and show them what's possible, but there is no substitute for learning the ins and outs of registers, memory allocation, pointers, and how machine code works. Assembly has no rival in teaching how to write clean, efficient code.
Second, by teaching kids about math not covered in standard math classes, you will improve their critical thinking skills and problem-solving approaches. Fields like formal logic, set theory, and boolean algebra have many uses beyond the classroom and teach a way of thinking that is lacking in other curricula, at least in the US.
Just as an aside, when I was in college they changed the track for CS majors from C->C++ to Alice->Java. I could clearly see a difference in how the C kids went about troubleshooting/debugging as opposed to to the Java kids. The C set tended to read their code more carefully and put more time into pseudocode and stub functions etc. The Java kids just tended to pound out the code and trust the compiler to save them. Not saying that's the case everywhere, just my 2 cents.
I think you could do an introduction to cryptography. Cover some basic ideas like trapdoor functions and public keys. The general concept can be understood with very basic math (it's easier to multiply numbers than divide them). Moreover, I think the topic would motivate students to further study.
But to answer the title question: What should be taught to 9th graders is how to use the internet responsibly and not infect a computer. This will, in turn, not piss off their parents (Assuming the parents care).
The game.
They need to know dos commands. I knew this student that was in a cisco glass and asked him to use ipconfig to find the ip address of the machine. The first thing he did was go to google and type in ipconfig because he didn't know what it was. He said he didn't know what that was and they havn't taught him that since hes only in the first year of his cisco class....WTF!!!
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.
Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
You could do a *lot* worse than Kojo (http://www.kogics.net/sf:kojo) Which has already had great success in India, and should me more approachable than Python for absolute novices.
I tend not to think of programming at all any more when I think of "IT". To me, IT is more about assembling networks, clients and servers, databases/storage and firewalls. I'd teach the ecology of an OS rather than how to write one.
I would make algorithms should be part of a math class - to me the natural place is to teach it is alongside algebra and logic (where teach the difference between a=b the statement, a==b the question and a:=b the action).
...teach them how basic computers work, then teach them the principles behind how software works, THEN teach them about things like IT.
Loading...
Teach them that e-mail is like sending a postcard, and encryption is required to give it a protective envelope. Teach them that all network connections and authentication should be done with SSH/SSL/VPNs - show them what can be done with a packet sniffer. Teach them about checksums and digital signatures, and how they should be used to confirm download integrity and confirm that sources for files or e-mail are who they say they are - show them man-in-the-middle attacks. Teach them to secure their hard drives, or at least their personal files.
Pascal is the successor to BASIC, although that may not have been the intention of its creator.
A good early classroom assignment would be to create a table of factorials. Then the teacher can explain why the students' programs don't work past 16 or so rows, which would be a good segue into the next topic.
Teach them how to deal with bean-counting CFOs who second guess every critical system upgrade, every technology project and every additional head you need to add to support the new systems *they* asked for. Teach them how to say NO to the bonehead Sales executive who thinks everything can be delivered faster if you just make enough phone calls. Teach them how to tell the business users that you can NOT successfully automate an undocumented ad hoc process.
Agreed, good data redundancy is very important.
Chosing hard passwords and not using the same password in different places.
Possibly it's a new name for "IT" ... but then noone seems to know what that means, either.
I would use Sikuli in stead of plain Python. It would give kids a lot more power for what they would want to do at 0 hour, and still let you introduce programming concepts in a short timeframe.
Kids in India may be more serious about school than in the US. I have no way of knowing. But any class lesson that can be made into a game or contest is more likely to get kids attention. Perhaps setting up small groups and having them compete to complete some sort of task for a reward might get them deeply involved.
Alright, maybe not Basic, but definitely programming. How about writing simple graphics games in Python?
I learned C++ off cprogramming.com, failed to understand it, then switched to Perl, then went back and learned some C.
Also, I read Computer Science Illuminated (Dale & Lewis). It helped a lot when I was just starting out, and I would recommend it as a good beginning in anything related to computer science.
Yes and while your at it toss out the mouse and the graphical UI. Learn how to use the computer first. Then learn how to enjoy the computer later.
The child of five who began with Win 95 is twenty years old with a child of their own.
You are not going to hold the attention of a ninth grader with tech that they will never see in use outside your classroom.
Learn how to enjoy the computer later?
I would be interested in knowing what books you would assign as requited reading in "English Lit."
For instance, any word processor can be used to teach to write a paper. The only reason people get fixated on a specific word processor is because we teach how to change fonts and use pretty colors instead of how to write. For english and social studies one hopes the kids will be graded on writing, not the fonts or colors they use. The literacy comes in when they solve problems using these tools, like why can't I print or email a document, how do I convert between formats.
For programming I would use python and C. Python fulfills their need for immediate results, while C forces them to slow down and think. In both languages variable develop the abstract thought they need for math and science. If the kids are still using pre algebra, a web program can be written that allows the kids to guess and check. For science a collaborative effort to build a periodic table with all the facts. If algorithms are to be taught, that is best done in C. The swap function, the sort function, etc. Kids at that age need to learn process, need to learn how that things have steps, and to follow those steps. C enforces the rules because the programs will not run if the rules are not followed. Use of an IDE is optional. If an IDE is used, the teaching of the IDE is separate from the teaching to code.
If we are to teach literacy, the license of the software cannot be first concern. For instance, while there is free and open source geometry software and calculator software, there is no open source mechanical design software. OTOH, sketchup, autodesk, and solidworks have no cost licensees for students. If we are talking about building skills and literacy, such software is a must have for the future.
"She's a scientist and a lesbian. She's not going to let it slide." Orphan Black
Oh, and how to submit bugs to projects!
What a wonderful initiative!
I know, some of my fellow US countrymen will lament how our schools wasted billions on technology. And they are right, you know, if you look at the average US worker who is barely competent in technology (MS=PC/Internet) and could easily be replaced by a very short shell script.
You are already way ahead by focusing on FOSS. Add a short section on how to install a FOSS system and how to submit good bug reports, and I would say you are light years ahead of the average US technology education programs (again, US citizen here, to the flaming patriots among us).
Sdelat' Ameriku velikoy Snova!
You may be interested in the Teach Scheme! project. The idea is to teach the programming fundamentals with Scheme where the syntax is simple and use those experiences as a scaffold for more complex languages. The project offers both a LGPL Scheme interpreter, Racket, and an online textbook, How to Design Programs. Follow up with How to Design Worlds, and students could be making games in no time! An intro course to game design might give that touch of creativity you were looking for.
Fight or flight its all the same
Live to die another day
--Ryan
Be sure to teach them how ordinary base10 numbers are turned into base 2 (binary) and base 16 (hexidecimal) numbers. Then show them how base two numbers can be represented as electrical levels. Digit one as a voltage level (traditionally +5 volts in microprocessor electronics) and digit zero is ground (0 volts). Then show how a binary number can be transmitted over a wire by spacing the voltage levels at precise intervals and having start/stop bits. Explain how alphabet letters can be represented by numbers using ASCII and UniCode and then be converted into base2 numbers, transmitted, or stored.
Teach how ordinary values like light levels, colors, and temperatures can be turned into binary values using sensors. Show how a waveform like a sine wave or a sound wave can be turned into a series of binary numbers using an Analog-to-Digital converter.
It is astonishing how many people working with computers don't have any idea about how numbers and symbols can be represented by voltage levels and binary digits. I believe that these concepts can be understood by 14-year-olds if presented in a clear and comprehensive manner. When these concepts are grasped, it becomes easy to understand how computers work. Computers go from being near magical devices to being ordinary machines.
In my case, my teacher (when I was eleven in 1966) told us about base2 numbers. I thought that it was the most ridiculous thing that I had ever heard of. Then as a casual aside, she mentioned that computers worked on base2 numbers and went on to another topic. Years later, when studying digital electronics and microprocessors, reading about how a number could be stored and represented as a byte in base2 'transported' me right back to the 1966 classroom, as if a thirty year gap never happened.
thats what facebooks for
Most importantly - teach them that 'LOL' is not punctuation.
As some other people have said, don't teach them how to use programs, thats a little limited use, but teach them about computers, how they work(memory, cache, swap, bytes, bits, pointers(okay, maybe not pointers), etc.) Linux is a good platform for that, and it allows them to understand why things are the way they are, instead of telling some employer when they go for a technical job, "Look, I can use GIMP!" but not knowing how to write a program, or anything people look for in a technical field. They need to know more than basic computer skills to work in an IT field, so start them off at the ground level, and NEVER, tech someone a false reason of why something happens, or an improper way of doing something, that they will have to unlearn at some point, just to speed up the class.
Teach them Hindi.
In the USA, we teach to the standards tests - so that "outside the box" thinking that programming requires is a no go. Hey, nice dream world though.
I hate to sell out but this book introduced me to programming when I was 13.
http://www.amazon.com/Game-Programming-Teens-Maneesh-Sethi/dp/1592000681
It's simple enough for absolute beginners to understand yet covers an engaging area of programming, 2D video games.
Enough of this namby-pamby new age crystal-worshipping virtual GARBAGE! Sit them down in front of any computer with a command line interface with access to a BASIC interpreter and teach them about statements, variables, output, input, conditionals, and for those that grok it, go into data structures and algorithms, memory, and reading and writing disk files. At age 14, they are old enough for proper computer science, not this watered-down microsoft-funded nonsense of teaching them how to type, navigate a Windows (tm) computer, how to run Word and Excel and and and EAAAAAYYYYYAGH! The United States has had it! We're through! Software development and the exportation of war is the *only* thing we've got left, and we've blown both of them. Our Universities are cranking out nothing but pathetic feebs who couldn't code their way out of a paper bag much less write a device driver in assembly language. Our 20-somethings tweet and drool while blithering about fad languages and crap that is essentially frontpage for programming. In my day, we wrote programs that had to detect and patch on the fly another memory-resident program that had hooked the timer vector but was just doing a return from interrupt instead of jumping to the previously installed vector in the chain, and we LIKED IT.
Basic version control for school projects may go a long way.
It goes in hand with a previous suggestion "backups are important" message.
I'm not mentioning any particular Version Control Software on purpose.
Don't know enough about circumstances, Subversion may be good if there is a reliable central server and there is a good connectivity and/or learning is focusing on in-classroom activity.
Git or Mercurial may be more appropriate for situation with no connectivity or poor connectivity and/or with focus on out-of-classroom activities.
There should to be some integration layer like TortoiseSVN so version control can be easy for all students.
I don't know where you went to school but my HS had a computer engineering/networking classes where we got to take apart and fix computers and components, learn the basics and even try to get A+ certified as an optional extra if we were interested. "Teaching the test" is a mantra all to often repeated by lazy teachers that don't want to risk teaching he subject as they see fit and people who have been out of the education system for so long they don't know whats going on in there anymore. The teachers I had in HS didn't give a crap what the test was on or what conditions applied during it, they were going to have us know the subject so well it wouldn't matter. I still remember being surprised as hell when I found out 5 minutes before the AP Calc test from a student in a different school that One: You could solve integrals easily using a graphing calculator and Two: You could use a graphing calculator on the test. We hadn't been allowed a calculator in class the entire year, cause she didn't give a crap about the test, she wanted us to know calculus. Best teacher I ever had. She also had a class size of 50.
If the only learning options we present students by high school are "Introduction to Computers" and beginner programming languages, then we are only catering to the uninitiated and lowest common denominator. Schools need to raise the bar for all students, parents need to be more present and supportive of their kids, school boards need to be eliminated of corruption, and kids need to stop bullying and acting like a bunch of wannabe gangsters.
While on the subject of improvement in schools, I think high school needs to be reformatted. By the time students reach higher learning institutions, they do not have any experience in a lecture hall taking notes. It is no surprise that they adapt very poorly when thrown into a class with 400 students.
Hand raising is also ridiculous for both high school and college students. Students should be learning when it is appropriate to speak and to respectfully communicate like adults without having to raise hands. I can't help but wonder if this poor foundation is why all of my conference calls are complete chaos.
After thinking about it for years, one of the most useful things in I did school was geometry. Specifically, making geometric proofs was unbelievably useful. They required you to do two things:
* think step by step
* think about the person reading the proof, and what they needed to know
When you're using computers you need to be able to, at a minimum, sequence your tasks. If you want to write good software, you need to be able to at some level understand what the person using your software is trying to do and the workflow that they have. So it works for the front and back end.
So in summary, let your students perform step by step breakdowns of a workflow/process. It could even be something simple, like "how do you make a piece of paper." Just listing the inputs into that process would take a day or two, and it'd be fun for everyone involved. You could do that with everything, because everyone likes something. How would you make makeup, clothes, etc.
One of the most common end user problems seems to be people not knowing where their files are or how to tell which program opens which kind(s) of files. Most of us here take this stuff for granted but it's amazing how many people, including young people who grew up with PCs, don't know where their files are or how to organize them. MS tried and FAILED to address with their ridiculous "My This" and "My That" system which just obfuscates things further.
#1 You teach people that software is usually deterministic; if I follow known sequence of steps A, result B will occur. If not, something is usually wrong and its time to ask an expert for assistance.
#2 The way to learn technology is to play with it before crunch time. That means that when you get a new application in front of you, you should explore the menus, see what they can do and how the software behaves so that you can later on be creative when using it under pressure.
#3 Basic computer architecture; e.g. RAM is temporary working space, the hard disk is where your files are saved, etc. How to identify which part of the computer needs to upgrade; e.g. when to add RAM, when to replace the video card, when to get a new machine. How to navigate directories so you actually know where you saved your files (people over 40 have issues with this).
#4 Basic networking. What a NAT is, how to hook up a broadband router. How to determine how fast it really is and reason about whether you are getting what you pay for.
#5 Basics of what kind of problems are done well by computers and what kind of problems computers suck at. Basics of why some algorithms are faster than others at doing the same job. One of the biggest problems with business using computers is that people do not understand anything that does not scale linearly. Examples of applications used for various common types of tasks.
#6 How incredibly complex the stuff is under the hood....that when something is actually wrong with the software, it's extremely difficult to track it down.
#7 Algebra. No, really.
a indian accent. It will give them the ability to blend in once all the entry level IT jobs have been offshored when they relocate.
Technology changes. I should know; it's been 40 years since I wrote my first program (in high school) using a limited form of BASIC by filling in ovals on computer cards. But logic and reasoning change much more slowly and underlie all of information technology. If the kids don't understand logic and reasoning, if they can't analyze and construct it, the rest won't matter. ..bruce..
Bruce F. Webster (brucefwebster.com)
Teach them that India needs a vibrant IT industry of its own, and that the call center people in India could (should) be the ones servicing Indian computers. Teach them that the jobs from the US will eventually dry up, because it will either become economical to use US personnel again, or the US companies will fold. Teach them hands-on skills to grow India's IT base. Teach them the fun of hacking hardware.
tell them to always opt for bigger GBies and Wifys
If he needs to be taught, he isn't good.
Get him to play a mod-able game with you, and challenge him (or cooperate with him) to write a module. Make it good and popular so he can impress his friends. Once he appreciates the power of being able to create something from nothing, he'll never go back. Language or algorithm doesn't matter.
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.
Take a look at Charles Petzolds book, Code. This should be the foundation of every CS course out there IMHO.
http://www.amazon.com/Code-Language-Computer-Hardware-Software/dp/0735611319
Seriously, teach them about things they're going to use daily. I'd personally start with the operating system, and make sure that they really know that the hardware that runs Windows XP is capable of running other operating systems as well (same goes for MAC OS). I couldn't tell you how many times I've had people tell me that they have a "Windows Vista" when I ask them about their processor.
Earn a % of cash back from Newegg, Tiger Direct, Walmart.com, and more: http://www.mrrebates.com?refid=458505
and learn that just because you cannot see the person doesn't mean that you can be rude to them.
Penny Arcade FUQWAD theory and all that.
Sorry, that was the OLD Testament. According to the NEW Testament, only Jesus saves.
I wish I had mod points to mod you up, but i spend them all on the grub2 story.
BTW. Students should also learn to find information on the internet, and they should learn what sources they can trust.
Forget fancy programming and protocols. There will be plenty of time for that later.
At the 9th grade, you should be teaching research, research, and more research.
Teach kids how to find what they need to find. And show them that there are multiple sources with different points of view on almost every subject. Show them how to get around in your research library (assuming you do have access to an online digital library that allows students to search thought and read published peer reviewer journals). Teach them how to cite the documents they find. Teach them basic word processing. Teach them about spread sheets.
Teach them the skills that they will need in virtually every other class they will ever take for the rest of their eductional career.
And absolutely teach them about the threats. About scams and preditors. About annoniminity + audiance. And last, but definately not least. Make sure that they are all perfectly aware that what ever they put online will be accessable for anyone to look up for the rest of all time.
-Rick
"Most people in the U.S. wouldn't know they live in a tyrannical state if it walked up and grabbed their junk." - MyFirs
Start with more advanced xonceptual basics. I do not know fully what is in 8th grade but... Remember we are not teaching IT experts, we are teaching use of computers supporting general skills and then teaching slightly more advanced introductory concepts. Remember the skill levels will vary dramatically.
Learning Objective 1 - Proper use of computer systems in society. (Basic Skills)
- Computer security and privacy principles, crediting prior work (and copyright). Use real world examples (EASY to find)
- Reinforce language instruction with proper use of computer communications whether by e-mail or other on-line techniques.
- Simple computer research and interpretation. Interpreting what you read and understand on the Internet and other online sources. What is the validity and credibility of the topic. Supports rest of the education system
Learning Objective 2 - Online communications. Human interaction leading to computer interaction. (Precise communication network skills) This is a nice tie-in to the Internet topics above.
- Human interaction online and how humans communicate, what they do well and what they do poorly
- Simple computer communication skills. Simple media techniques that support communicationss (cables, simple networking such as Ethernet and WiFi, Simple wireless covering the concepts of isolation and intercommunications of wireless, concepts of open attachment and communication on networks (especially wireless).
- Simple IP concepts for finding a computer on the network. Tie back to human methods.
Learning Objective 3 - Programming Concepts with simple programming to support the concepts. Simple Python ties well into the communications topics above.
Basic programming concepts on a more formal level than the previous year.
= Data Types and variables,
- Simple loop concepts
- SImple conditionals
Learning Objective 4 - Reinforce Learning Objective 3 and reinforce basic computer operations skills. Assuming the general concepts of a PC have been introduced, sample the basic portions of the above using incredibly simple machine language. Concepts of variables, storage registers, loops and conditionals only. Let the kids play a little. Don't teach machine language programmers, just simple concepts.
Learning Objective 5 - Jump back to general programming. Variables loops and conditionals should now be understood in computer terms
- Function concepts (extended section)
- Predefined functions (review math covered in first semester of 9th grade and reinforce
- Simple concepts of function libraries and using others code (Reinforce previous concepts of evaluating sources)
- Include concepts of a random number and random number functions so you can use them in later sections for programming simple games.
I will let you run further. The above is pretty much a semester.Probably start working through various simple algorithms. Very simple game programming (cards, Conway's game of life, simple puzzles...), sorting and searching... To close out the year and if affordable, fo a simple robot (kids love if). If not affordable and teaching skill is available, reinforce with a simple group project where different teams coordinate by writing different pieces and making it work together.
Facebook MySpace Facebook Youtube Facebook Twitter Facebook But some other things to think about...
Scanner input VS output DPI, and how output DPI effects image size on a computer screen. e.g. What is the maximum DPI that should be used for scanning various types of prints or film, in order to achieve the best observable quality, what is the maximum scanning DPI that provides useful information for various types of sources, rather than a mere increase in image size without additional detail.
Logo is an interesting functional language, designed for young people. It goes 0 to graphics in 1 line of code, allows control of robots in about as quick, and most fascinatingly actually goes all the way towards functional programming. (ie, you can 'graduate' from Logo and go straight on to LISP and Haskell). I'm not entirely sure why the teaching of Logo was discontinued in many western countries. I suspect it was because the students quickly outperformed their teachers and showed them up ;-)
Is this class suppose to be ICT or Programming? The sample stuff you're thinking about all belong in a Programming class not an ICT class.
...) to explain: loops, recursion, regular expressions, the benefits of commenting, psuedo coding (do not teach them algorithm analysis), discuss parallelism but don't make them do anything on it unless for extra credit
...
Anyways here are some sample stuff I'd put in depending on what kind of class you are actually suppose to be teaching. Keeping in mind that these are high schoolers that haven't decided their careers and this class is to help them decide if they want to go in that field
If ICT i'd say teach them a bit about below:
1. History of how the internet came about (DARPA and telecoms and so on)
2. Have them do a debate/essay on arguing for or against taking control away from ICANN
3. Get them to know basic networking equipment (routers, switches, hubs, modems)
4. the 7 layer communication stack {yah yah, i know I shouldn't have forgotten it's name} and how it applies to their computers and sending data across the internet (talk about email traffic since most kids are using email already by that age)
5. Maybe a lab setting up a network, web server, file share system. network accounts
7. Make them know the differences between WAN, LAN and so on
8. If you want them to do a little scripting as part of ICT then have them learn Shell scripts for linux and batch files for windows (they'll come preinstalled on any OS so there is always something to fall back on if the nice ones aren't there)
9. Give an intro to databases
10. cover what a proxy is
If you want basic CS
1. History of computer evolution: World War 2, eniac, main frames, pc's, web apps
2. Any single simple languague (Perl, Python,
3. Simple discrete math. "If P then Q" kinda stuff, set theory
4. Simple databases and programmatic querying of them
5. Software life cycle: have a class project where they have to go through all the steps of Request For Proposal, Proposal, Requirement gathering/Use Case building, coding, testing (mapped to use cases), delivery (with associated documents[test report, install guide, user guide])
6. get them to debug other students code
If you want basic Computer Usage (not really to get them interested in a career but to get them to know how to use comps)
1. Setting up web searches (usage of "and"s, "or"s, "not"s and so on)
2. Web applications, google docs, microsoft online office,
3. Basic info on copy write law, GPL, and other licensing (aka they can make a rough idea if what they are about to down load or do is illegal or not), ethics
4. Setup a personal webpage (use a gui creator and if you've got some really interested students ones show them html/javascript)
5. Teach them to be careful about what they do online, I.e. get them to try to find out about as much information a random stranger can find out about them
6. Chat clients, skype
7. Anti-virus usage
8. Email etiquette
9. Backing up their data
Emphasize security; how to protect themselves on the net. That's not only for their benefit, but everyone else's. Good luck
People should really be taught a few things that relate specifically to using computers in business. The day when I no longer see a Word document that uses multiple, non-aligned TABs to put words on the right side of a page that are supposed to (but definitely do not) align with text a few lines above instead of using a hanging indent (or whatever they're called), the day when I don't go to fill out the underlined portions of a document and find that all I do create a separation in the underscores that were used to create it, the day when I don't royally fuck a spreadsheet because someone didn't lock a cell..... well the point is that such a day can never come soon enough.
There's a multitude of items that could be added to this litany, but I'm sure anyone here could get the point.
To say the least, kids won't acquire anything exclusively through the classroom if you teach them how to open up Word and write a letter. They already know how to do that shit. What will be useful to them is if you teach them about the features of the program that exist but that they'll forget how to use. Seriously. If they at least know that they can use hanging indents or track changes, then at least they'll know when to go hunting for how to do it again when they find a need for the feature at a future point.
I've found that, over time, someone who knows what tools he could use to accomplish a task tends to be more adept at getting things done rather than the person who uses the same tool for everything just because he knows how to use it so well.
Boot Windows, Linux, and ESX over the network for free.
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.
Students should also learn to find information on the internet, and they should learn what sources they can trust.
<cynic>Once you do the 2nd you'll never use the Internets again</cynic>
*joke*
Seriously, you make a very good point.
Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
More Python is a good thing. If you want to inspire creativity, there's nothing quite like a good multimedia engine like http://www.sfml-dev.org/ or a 3D game engine like http://www.panda3d.org/ for higher levels of creativity. The only downside to these is that they'll require decent implementations of Mesa to implement OpenGL graphics capabilities. Also some teachers are annoyed when computers make noise so they cannot hear what's going on in the classroom so you may want to hold off on the music part of the multimedia.
Yeah...because I want to tell you how to train the future labor that will take my job when it gets outsourced.
Uhhh..I mean...yeah...teach them...Fortran...and Windows for Workgroups 3.11. Those are useful skills. Novell Netware (and Groupwise) administration is also big. Active Directory is just a passing fad.
This space for rent...
Basic logical trouble shooting... Not make sure the power cord is plugged in but more of the thought process behind trouble shooting. Almost everything in the ICT world follows a logical process. Trouble shooting logically make a huge difference in who I hire.
You should avoid teaching user interface of particular programs as much as possible. You should teach the concept of those programs by making them do the same thing in two programs which have as different interface as possible. Don't forget that when those kids leave high school, most user interfaces will be different, only the basic concepts will be the same. When you teach text processors for example, you should teach OpenOffice in the first half of the lesson and LaTeX in the second half. You should also explain that they shouldn't associate file formats with particular programs in their minds. Show them that they can use more than one program to complete a task which might be almost impossible in any of those programs alone. Encourage them to be creative in solving problems.
Now for what you should teach them:
From your description, the intent is e-literacy, not turning them into professional programmers. The 8th grade curriculum will go a long way.
On the other hand--these are mid-teens. Your plan for 9th and 10th grades could only be described as insulting. They're up to much more of a challenge than that. You don't want to bore them.
Give them all of Python and watch them chew it up. Also, give them a real power tool to instill a proper two-fisted attitude about the power a computer makes available--give them Processing (processing.org). If you really think they're not up to that, then at least give them Squeak.
I'm a Programmer. That's one level above Software Engineer and one level below Engineer.
Boolean Logic
Table-ized A.I.
Have them breadboard up an 8 bit microprocessor with toggle switch inputs and led outputs. Then show them how to program it.
The reason we subjugate ourselves to law is to better procure justice. If law does not accomplish this purpose then it m
Hand them a copy of Knuth and a lisp implementation and give them a free period.
The existing English book linked above http://itschool.gov.in/pdf/icttb8_eng.pdf should be corrected first. I'm not a native speaker of English myself, but there are some nasty mistakes in there ("several information", p. 28; "a facility in Internet", p. 31). Maybe there could be a wiki process to proof-read / improve the book? Come on, father of the Internet "Winton Surf" (p. 30)?
Plus, the layout is really ugly. And sometimes wrong in weird ways ("2004" in column 2 followed by "originated" in column 1), a change of columns in the middle of the page (p. 7).
Recently somebody pointed me to Scratch. Its a simple, fun, programming tool. It is aimed at kids eight years and above but I am sure it would be appropriate for some 14 year olds too. My dad is teaching computer skills at U3A. He is interested in using this tool in his classes.
http://michaelsmith.id.au
would be completely fitting for an all around. I'm sure that by 9th grade most if not all students are pretty well able to pass the current exam. I think it fails the 3W test but it's something that should at least be taught.
Here is a list of all the information technologies that I used in grade school that were still relevant 10 years later:
Programming is a great exercise. But please don't teach them Java, Basic, C# or Ruby. We already have enough of those idiots on the internet... Teach them C and C++, it might be harder but it'll help them a lot later on.
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...
"The greatest lesson in life is to know that even fools are right sometimes" - Winston Churchill
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.
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.
You guys have too many people in IT already. Stop teaching them about IT and maybe I won't have to listen to Mumbarlalalalajajajaahahhahahahabaladad try to figure out how to properly speak english.
Just teach them one important thing, all IT stuff is moving to India.
Oh, wait,
"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.
Khaaaaaaa... I mean, Nooooooooooooo!
You can't handle the truth.
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.
Tell Them Not To Use Caps When Posting * You KIDS ARE DRIVING ME DEAF!
I do freelance creative work and it is extremely frustrating that everywhere I go where there is an I-T department they give me a Windows XP computer that can't do anything reliably except fail. I always have a Mac, iPad, and iPhone in my bag which I use to get work done. The person sitting next to me where I'm working now, who is also a freelancer, uses her own Ubuntu notebook and an iPhone to get work done. Both of us are seen as miracle workers by our boss who is on the other coast and can't see that we don't use any of the tools they issued us. This company has a whole floor of I-T people patching their Windows systems, yet we 2 freelancers are more productive with what we have on us. We were asked to sign up for Windows 7 training and we just laughed our asses off.
When I see an I-T person with Windows, I just know that person will not help me be more productive. That is not even on their radar. They won't know the company business, they just know when support for a particular Microsoft product is ending and what replaces it, and how to brush off user complaints that this is just another Microsoft remix with no helpful features that will cost them time and effort with no reward.
We should be teaching ninth-graders how to practice safe hex.
The biggest favor you could do for a 9th grader is tell them to do something else with their life besides I.T.
Personally, I feel it is a mistake to jump straight into an object-oriented, dynamic language without learning some basic concepts first. I think Python is a lousy choice for a first programming language. There is too much high-level "magic" going on that hides its underlying operation.
.NET) and PASCAL are good choices: both languages were designed for education, both (unlike Python) have a consistent and straightforward syntax, both have straightforward means of creating structured elements (functions & procedures), and using both, you can then move on to more advanced concepts like pointers, objects, etc. Further, the "white space is significant" paradigm of Python is not something I would inflict upon young students. That is just a syntactical convenience for those who already understand how code blocks work. I believe it is totally inappropriate for beginners.
C is also a bad choice, because of its syntax and reliance on pointers. Pointers are actually a fairly advanced concept, not suitable for beginners, not to mention that C's notation for pointers is inherently confusing. Yet you can hardly do anything meaningful in C without them.
Several modern versions of BASIC (NOT
Further, dynamic languages like Python and Ruby do not teach or enforce good coding discipline. Many people (myself included) feel that a more rigid language like Java is a major pain to code in, now that we have learned the more dynamic languages. However, I appreciate Java because it teaches discipline: how things are and should be structured, how classes interact, etc. Then moving on to Python or Ruby is great. They give you a lot more freedom and flexibility. But they won't teach you how to do things RIGHT. They allow you to be sloppy... even to the point of ruining your programming project. Jumping straight into the "sloppy" languages, without having first learned good coding discipline via something like Java, can lead to programmers writing disastrously sloppy and inefficient code.
It seems that you may not have a choice about Python, which is unfortunate. In any case, I agree that loops are probably what you should move onto. And while someone else here made the point that specific sorting algorithms are less important today than they once were, sorts are an excellent way to demonstrate the practical use of loops, while also introducing the concept of algorithms.
Also, besides backups I might introduce the important concept of version control. Either SVN or GIT might be suitable for teaching the basics. But I don't think I would go into much depth for people at this level.
Logo is a great language for teaching. Students can set their own objectives and solve them. It also teaches geometry. Students will learn loops quickly enough if it allows them to draw octagons and stars.
I feel like some suggestions are missing the target of age. I had required typing classes in my school sixth and seventh grade, BASIC lessons in fifth grade, and as an extracurricular in ninth grade I was starting to get into calculator assembly. Yes, many people who come out of seventh grade typing leave a lot to be desired, but I don't think the mentality changes between 7th and 9th grades. If kids see typing class as a reason to screw off, I doubt ninth grade will roll around and all of a sudden they'll say "WOW, this is a skill that I must know". Another thing to keep in mind is that (at least for my school system experience), 9th grade is when the concept of core classes and extracurriculars are introduced. I assume that most of the kids that will be in this class are of the type that would WANT to learn the class' content, rather than just randomly thrust into the curriculum. I think that changes what would be taught to them. Programming, Logic, How The Internet Works (subnets, webserver, DNS), some security, software, the difference between HDD and SSD, etc.
enabling senior porn will be a specific job skill in the future
What to do when meeting an online stranger? 1. Tell parents where's one going 2. Meet in public places 3. Go with friends
Here's a couple of things that come to my mind. 1) What is IT? it's not just for Programming. Go over the world of what people do in the working world of IT. 2) What is a OS? Discuss the primary OSes and there benefits / downfalls ( start a in class flame war ) . Microsoft - 90% market share of users and viruses. Apple - Spendy, but less maintenance, designers use them to make Microsoft Ads. Linux - Who? Runs Majority of super computers. Free. ** - Remember diversity is good. 3) Understanding client–server model. http://en.wikipedia.org/wiki/Client%E2%80%93server_model 4) Programming "Hello World" and maybe some functions.
Take a field trip to an elderly care facility and have each student try and teach a resident one-on-one something technically simple, like turning on the computer and performing a video phone call. During this process they must follow the process of submitting a help desk ticket, responding to the ticket (the lesson), document the solution, and finally, close the ticket if and only if their student could correctly perform the topic from the lesson.
Ethics.
Teach them how to: (1) change the desktop wallpaper to Goatse or Meatspin. (2) edit Windows registry to remove the options to change it.
I learned how a computer works before any IT concepts were thrown my way. Here is the stuff I learned at the beginning of High School:
1. How a stack machine works.
2. How a computer program works (via Pascal).
3. How to input data.
4. How to store data (arrays, linked lists, hashes...etc)
5. How to manipulate data (sorting, performing mathematical operations on data, building functions...etc)
6. How to output data in useful form (output to file, screen print)
OK, I admit, I learned to program on a CoCo 2 in basic well before High School, but complete novices were also learning this very same stuff in 9th grade.
Learning how a computer works, and eventually getting a CS degree helped me be a better "IT guy".
-ted
Teaching a general college course on IT literacy, I find that some of the math fundamentals specific to computing are not always taught: Logic, proof, number systems, whole numbers.
I would start with teaching them bits, bytes, words, longs. Perhaps spend a chapter on the actual hardware itself. This is a CPU, and it's responsible for.. This is RAM. Video card, etc etc. Then teach them how to do simple math, add, subtract, and how to do multi-byte/word math with carry. Then move into high level data concepts, queues, stacks, trees, linked lists, double linked lists. Teach them to work with stings from a high level, so they understand why string concatenating in a loop is bad. Then start with a few procedural routines, and then finally move into simple OOP concepts, perhaps.
Before they get into the specifics of anything computer related, basic logic should be in there.
LK
"Hi. This is my friend, Jack Shit, and you don't know him." - Lord Kano
I taught my 12 year old when he was 11 the basics of a PC. Processor, different speeds of memory (hardrrives, on board/RAM, on chip etc), input and output devices and power and the special case of the video card, the PC inside a PC. It is that simple at this level and since a lot of IT related work revolves around PCs and individual devices I thought it was of value. That and he can go crazy and try to build his own PC if he feels like it.
Understanding that every part has a function and what that function is was important to me.
pyglet: a cross-platform windowing and multimedia library for Python.
Perhaps, this is the sort of thing that is plaguing our education: not the content, but the context.
Our ninth grade computer class was programming. We even had competitions with other schools. Those same classes have been replaced with learning Microsoft Office, and the inter-school competitions are naturally gone as well.
Teach them that 640 yottabytes of RAM isn't necessarily enough for anybody.
PUBLIC. and they can do nothing about it also add Streisand effect to it (should make a good impression) also add some "jokes" gone bad from failbook or similar (as ilustrations) they do this everyday, and might just not know what they do untill they see others screwed, so if you have a chance make sure it's not them on the recieving end
A few years ago I participated in FOSS.in, and I heard a wonderful talk about computers in Indian public schools. As far as I understand a lot of village schools have one computer per school. If this is true then most of the ideas in this thread are far too complicated. They have no chance of succes. You should focus on making the students familiar with the computer. Teach them to write a simple document. Teach them that the internet exists. Don't get started with python. That will not fly.
I personally teach 10th grade students in Europe, and right now we are teaching them to use a spreadsheets to treat the results of their physics experiments. Last week they plotted volume versus weight to get the density of water. Spreadsheets is a useful skill that they can use later on, and at the same time it teaches them some basics about how the computer works. That is a good start.
But you will run in to a problem of designing exams. The Indian school system is very much focused on exams, and the exam largely determines how the teacher will teach. After all his goal is to make the students pass. Sadly is not easy to construct an exam that can test if the student has a basic understanding of computers, and therefore you cannot make sure that the teachers to gives their students a basic understanding of computers. Part of the problem here is that the Indian school system has a lot of corruption, so you cannot afford to make have oral exams.
The worst case scenario would a pen and paper exam in which the students write a python program without ever having touched a computer. Perhaps the real challenge is to avoid this situation.
That's what is missing in the new generations of graduates.
Never forget to add simple html and css and for coding ruby. All three provide immediate feedback upon what is being entered. The advantage of ruby over python is the interactive shell, where output can be generated for each line of code entered.
Chaos - everything, everywhere, everywhen
I would propose to give your students something of practical value. Before you jump into programming with them, make them understand that they should start to program only when necessary. For example, many people underestimate the power of spreadsheets. If you can express a program as a single function, mark all cells in a spreadsheet, and copy the formula into that block, what you get in essence is a Turing machine with limited storage. Meaning: this can compute anything the human mind can compute. And often all that is needed to solve recurring mathematical problems is a well-designed spreadsheet. This will teach them a lot about programming already: they will have to deal with the fact that certain dependences between cells would lead to infinite loops, and how to solve mathematical equations using assignments.
Whether you want to teach this with Microsoft Office or with Open Office may not matter from a theoretical point of view, but please keep in mind that they own Open Office for life time, without need for ever purchasing an update.
Well, of things that is essential, rather easy, and probably overlooked -- I'd suggest:
* VCS eg mercurial/git
* Learning to use a wiki (MoinMoin/Mediawiki)
* LaTeX (I would suggest Abiword rather than OO -- because OO is an awful, stale reimplementation of MS Word (which, ofcourse isn't original in itself)
Some info on typesetting, and either with LaTeX or html+css learning to use an editor to write text, and a proper tool to layout text -- either with markup, or using a proper dtp-program. Teach them the difference between structuring text, and displaying text. The old idea that you can format text once -- is outdated and wrong. Today at least three layouts are needed: small screen hypertext, big screen hypertext, print.
But the single most important concept to teach, would be using version control systems. The second most important thing would be teaching them to cooperate meaningfully -- and for that a versioned wiki might make a good starting point. Or simply use VCS for that as well.
Some of the objectives mentioned here can be helped by putting Scratch (http://scratch.mit.edu/) in the hands of the students. There is a version for Ubuntu (hence Debian) available
Yes, teach them how transistors work, and how to make logic gates and adders out of them. That was always fun for me when I was in ninth grade! Then again...
The first thing I have to suggest, is that you don't have them going around telling everyone they're proud of their 100% "e-literacy". Accents can do strange things to words. In some areas, I'm pretty sure there are people who pronounce "illiterate" "elliterate" to begin with.
Wanna fight ? Bend over, stick your head up your ass, and fight for air.
From my experience in Czech rep. biggest problem is lack of competent teachers.
Typing skills: Typing skills should be taught as soon as possible. We can divide learning to type into two phases. In first phase child learns a layout. In this phase put emphasis to accuracy and good habits not speed. Teacher should teach children as in any touch typing course.(biggest problem will be teach teachers to touch type.) Because need is best teacher keyboards should have their keys wiped out. Think about using dvorak as english layout. Here I don't know how difficult is to learn layout to person without foreknowledge so you must try it in experimental class.
In second phase we improve speed. This phase should be integrated into language classes also as effective tool to improve grammar. How and when do you teach english and native language? In second phase every week language teacher dictates a text which students type. We use automatic grading system. If student mistypes some word(we compare it to teacher supplied text) he would be penalized say by 1 point. Mistyped word is marked to provide immediate feedback. If student cant fix it he another 2 points.
Programing: also should be taught soon like 5th grade. Learning programing is hard till you start think like programmer when it becomes easy. Using python is good choice (but I would prefer ruby). It is better teach variables then arrays, hashes and foreach, then functions and after than if and logic. Doing same thing with many items is natural. logic is most difficult aspect of programming.
An expesinve possibilty would be something like building a robot with Lego Mindstorms. If you are on a budget, let them integrate some web services, using Yahoo Pipes. You can even spilt them into different groups. An advanced group can add a custom stream to the pipe using Google App Engine.
By just piping existing components together, they can quickly build an useful web application. With a web application they can cooperate and even show their creation to others. When the application is really useful for them, they will be motivated to tweak it and extend it. Thus they might even be motivated to dive deeper into IT.
I think the hardest part is converting them from computer and internet consumers to producers.
Hey, cool, finally a topic on /. that matches my qualfications (MAEd, Computer Education)!
So, for starters, let's just throw this out--no "IT" skills should be taught to the general populace at any grade-level. And by "IT" I mean the support stuff like Active Directories and DHCP settings, blah blah blah... Leave that to the kids who want to specialize in the tech field (if their schools have a vocational focus like that).
If we want to mistakenly call "IT" anything that deals with computers, then the opportunities are endless. First and foremost, 9th graders need to learn how to use their school computers to get stuff done. Don't teach them how to use the software, teach them why to use the software. They're kids, they'll figure out the basics. A harder skill to teach is to get the kids to understand HOW a spreadsheet helps them or how to use the Internet to improve their writing and reading comprehension (not just to plagiarize).
I've got lots of answers to how to use computers. Unfortunately most schools are going the wrong way (let's teach them MS Office!).
~stew
Pascal is unsuitable as learning language for 9th grade. Problem is psychological. It takes time to know how place semicolons, write begin,end and children with problems will thing programing isn't for them.
Next, explain the difference between CPU, hard disk, and RAM. Use the chef analogy (the chef is the CPU - the RAM is the countertops - the hard drive is the pantry). Illustrate that a file has a physical location on disk. Show exactly how many places one can store a small file on a modern computer. Briefly cover the file system.
Next, show how data can be interpreted differently. A .jpg file is not a picture; it is data that can be interpreted in many different ways. Open it in a text editor and show the date time stamp information. Open the same file in a browser, in word, in paint. Hammer home the concept that the program we use to open a file does not determine what the file is. Close this unit with viruses - data that hides its true nature.
Finally, expand these concepts outside of the local system. Write a simple html file by hand and display it in a browser. Then go to a website, and illustrate how surfing the web is pulling files down from a remote computer to be displayed locally. Show how local copies are made.
To close the unit, have the class do exercises where they save data, and have them determine where that data is saved. BY the end of this unit computers are no longer magic.
in order to truly understand the whole, one must first know what each part does as it relates to the whole.
You should check out the integrated-interdisciplinary (I2)curriculum movement. We focus primarily on acquiring computer skills--not by teaching computer skills--by integrating computer tools into every subject ... yes, even Physical Education!
Take Spanish for example. The I2 curriculum designer writes a course that requires the inclusion of technology...say a multi-lingual podcast, or a translation widget, or a dictionary tool...immaterial as long as it pertains to the subject matter. Then, for the technology "class", they learn how to edit sound, but they do it for their Spanish class. In the end, they get a grade for how well they use the technology AND they get a Spanish grade for how well their Spanish is. In the end, they learn two skills, but they are integrated. It follows that both benefit from each other based on how their relevance is highlighted through their interdisciplinary relationship.
I have several I2 courses that are in use and published. Spreadsheets and calories for 8th grade PE, iLife and German for high school German, using the Internet for valid sources and literature for high school AP Lit, to name a few.
The course should be first and foremost RELEVANT to kids. Computers are best taught practically, and kids spend pretty much all their time on port 80. Start with the things they like and work backwards, not from bits and transistors upwards. "y'all like facebook? Here's how it works. There's a server somewhere and it talks to your computer. I've got a server here; let me show you how to power it up, start apache, type "boobies" into index.html, have it show up on everybody's laptop when you go to 192.168.1.142." "But what if you want to make the page change? Then there's php." Show them a few scripts. Have a drupal installation to manage the course pages. Give them accounts with admin privileges over some section of the site and have them manage it. From there move on to how apache interacts with the OS, some hints about C, hard drives, things like that. Have them tear apart some old computes, or maybe even build a classroom server from parts. Make it FUN.
It is essential that they be taught how to find a good lawyer because we all know what happens to individuals with good innovative ideas. /sarcasm but sadly true.
The textbook looks like a good introduction to concepts using computers, but as an IT Systems Administrator, I wouldn't call it IT. Some of the suggestions here are programming, not IT. IT uses programming, but lots of it is user stuff.
For IT concepts:
Something on security, using passwords. Maybe explain it in terms of a diary that you don't want a sibling to read & how to ensure that. The issues of sharing too much online.
How email works. Storing & forwarding. How email addresses are organized.
How an algorithm works. Math, if-then-else, functions. This plus this. Use a spreadsheet. Use a programming language. Use Openoffice macros. Use javascript. Teach concepts.
Teach file organization. Grouping files. Sorting, date formats. Moving files, copying files, backups. Age of data.
Teach about tags, metadata (data about data). File sizes.
Tables, statistics, graphing. How to use it to measure something over time. Outliers. Measuring something scientifically like time/distance, temperature, etc.
I'll say it again and louder, SECURITY SECURITY SECURITY
teach them about firewalls, anti-virus, no-script, dialers, drive bys, email links, phishing, trojans, malware, wireless security, passwords, chat rooms, pervs etc etc.
If their computer is useless because it's the computing equivalent of a contaminated petri dish, the rest of it doesn't matter.
An entire year should be devoted to security, and should be done first before anything else is done. It needs to be drilled into their heads that their financial, legal, physical, and technological well being is dependent on being secure, keeping the crap out of their environment, not disclosing personal info (like addresses and phone numbers), and otherwise treading carefully.
If they meet some perv in a chat room and become a statistic, or post their address online and disappear, the internet wasn't very good for them now was it?
Security is THE most important stuff they need to know about the internet.
For the sake of all that is holy, teach them this stuff first. Security is your biggest priority in technology education. It should come first before anything else, taught as it's own subject, and then reiterated and applied every time you teach them about another internet technology.
Don't kid yourself. It's the size of the regexp AND how you use it that counts.
I realize you are a teacher, and so please don't misunderstand, but when I was younger, learning to program was an _escape_ from the regular cirriculum that was forced upon me. I looked forward to sitting down and learning how to program, including scooping up any algorithms or math that would help me along the way. I wanted to write the first AI, and experiment with video games. Please please PLEASE don't teach students about bandwidth, how files are stored, or pretty much _anything_ that involvres paper, pencil, falling asleep in class, and tests. Even if its not supposed to be a programming class, just teach them how to program, the IT concepts will come automatically, and the students will be much happier.
You could go with Flash, python, or if you are daring, C/++.
--"You are your own God"--
#1) Typing. I learned to type in the 9th grade while being taught about WordPerfect (that was the common word processor then). 15 out of 30 minutes of my "Keyboarding" class was dedicated to practicing finger-strokes, while the other 15 minutes were used to actually complete assignments using the word processor. #2) Writing a proper, professional email. Figure out some standard, then teach everyone to abide by that. In fact, I think they should remove standard letter writing in English/grammar classes and instead teach how to write proper emails. For example, when making a request, the request should be explicitly stated. Proper signatures should be discussed (i.e. what is and what isn't appropriate, proper contact information, etc) #3) Basic spreadsheet use. No, they don't have to know how to use macros and all that junk (I'm an IT professional and I've never bothered), but everyone should know how to sum a number of cells or create basic charts. #4) Basic troubleshooting. Look, all software will have bugs. The most important thing for the lay user to learn is "computer resiliency". That is, if something breaks, try it again. If it breaks consistently, then the problem is likely beyond your control and you can kick it up to the next level (i.e. hire a professional, or contact tech support). #5) Basic software engineering. Grab the language-of-the-month and have the students write a simple, "Hello World!" program. This should serve to show them the huge complexity of modern-day software. Not every 9th grader is going to end up an IT professional, but they will eventually have to work with IT professionals. Having a basic understanding of how complex your requests are should temper expectations and allow for better working relationships. #6) Variable manipulation. The idea of "variables" is often too alien to non IT-professionals, yet it's an incredibly powerful tool for evolving thought processes. Once a person can strongly grasp the concept of variables, they can begin to recognize patterns, which leads to a big jump in analysis abilities. #7) Proper syntax. Reinforce the idea that computers are big, dumb boxes that take an input and deliver an output. If they put garbage into it, they get garbage out. This is important not only for computers, but in dealing with other people as well. People have allowed language to degenerate because they simply don't care enough to write correctly. Help do away with this apathy.
I like all the talk about backups, password security, etc. These, of course, will just be abstract concepts until they actually experience them themselves.
Explain a the start of they class that they will be required to keep regular backups of their assignments and they will need secure passwords. Suggest methods for secure passwords, and methods of data backup (Simple stuff. USB flash drives, online storage, etc)
Data backup lesson -
Students come in for class that day. Announce that "Oops. Sorry. Server goofed and all of your files on the server were wiped out.. You kept a backup, didn't you?"
Password security -
After hours, run a password cracker against their student accounts. Promptly wipe any accounts if their passwords are found. When the students come in for class announce "It looks like a few people got their accounts hacked yesterday. Their passwords were X,Y,Z,etc.. I sure hope they kept backups."
In a phrase "Social Engineering". The art of not giving out too much information.
This would help on their Facebook pages as well, and that future employers will look at their digital past.
Growing up we had arithmetic in elementary school, but we had a LOT of arithmetic in social studies, science, and other classes including PE.
We had trig and higher maths in science class.
Oh, and we got "you throw the ball, it makes an arc, you let go of a ball, it drops" physics lessons in PE from preschool on up.
Oh, and we used word processors, er, I mean pen and paper, in almost every class.
Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
How to Reload an OS - especially Linux AND Windows. Sure, they will get more practice "emergency reloading" with Windows after all the viruses, but they can practice over and over with Linux and not worry about license.
That's a great idea, too many people know how to use computers, as per your current ICT program, but don't really understand them. I was planning to start with a PC building workshop, because it's easier to relate what you learn to a physical object. Bringing a dismantled cheap PC, showing around the components and explaining their role, then building the PC together. Building a modded custom PC would be even better, with a laser-etched logo of the school on the side panel and a good paint job. I don't think you can convey the same notions or expect kids to memorize them if you are using only textbooks.
Then start on the software part, showing the need for higher level languages than binary and 8086 machine languages (start with the usual joke "there are 10 types of people, those who understand binary, and those who don't").
Your ICT program seems to leave out programming completely, so introducing algorithms and programming concepts would be great indeed. The Towers of Hanoi is for instance a classical fun puzzle to solve via software and introduce recursivity. Or the Urinal Problem! ^-^ Again, applied learning might work better than just theoretical notions. Kids at your school would probably have many ideas of small applications that are feasible to develop within a year. Or take inspiration from movies, for instance try to reproduce the school grade hacking in War Games.
The way you're concerned with ICT learning, I'm sure we'll soon see even better generations of Indian IT engineers soon!
I got my 14 year old game fanatic hooked on Doom on line. Then I downloaded the SDK, and showed him how to modify the attributes of weapons he was familiar with. Came back from a trip three weeks later - to find he was running a node on one of my servers with seriously powerful weapons at the entry level. He ended up with the game developers reaching out to talk to him, about how he'd done what he'd did. Thirteen years later, he has a BSc in Software Engineering, and is doing his PhD. Moral of the story? Get them hooked on what they already like - and use that to develop skills and interests. Note: The Doom SDK is available on-line for Linux. L-Fan
Nothing! If we teach the kids, one day they'll be gunning for our jobs... keep them just dumb enough to be advanced users and we'll all be better off.
For my mom and most other people, I liken it to cooking (hey - I don't care who you are or what you're interests are, we all eat and most of us can't afford to have someone else cook for us our whole lives.) You don't have to know the laws of thermodynamics and chemistry and be able to calculate all the heat transfer properties and intermediate chemical reactions of the ingredients just to be able to bake a cake (or cookies if you think the cake is a lie.) Nor can you just shove the ingredients in the oven and expect to get a cake out of it. You should be able to know and identify what some basic ingredients are, and that there are some good and bad combinations to them, and a few recipes to start out with. It's too bad that this is a rather personal journey and that there is no general guidance other than to pose a few statements, maybe a problem or two that has some current relevance, and to have some resources on hand to point to for questions
The OP has the same work cut out for them that every other teacher in history has had. They want to share their wonder and inquisition of a specific, but broad topic to others and may not even realize that their audience might not give a damn. Not everyone who plays with wires gives a damn about power generation and electrical theory, some of them just want to get paid money to hook up the wires in someone's house to everyone else's wires.
- Their other problem is that they posed the question to slashdot, and are probably overwhelmed with the answers they got. It's like a thirsty stranger wandering in and asking for a drink at a beverage trade show - all they wanted was a cup of something wet to quench their thirst and what they got was a discussion on whether or not a particular seltzer was too much at first, or if milk counted as a drink, or some inflaming comments about those zealots who drink of the Kool-Aid. -
What I would like to see in the curriculum is a note that all of this software is only an example of a certain class of tool, and explain that there is a whole class of tool that each belongs to. They should give everyone the basic understanding of how some of the stuff works and a few examples that mean something to them. With every step of the way, remembering that you still need to reinforce the basics such as proper grammar and having your communications be a complete thought.
That way, you're not just teaching them to be end users, but helping them to be creators. Any fool can push the power button on a mixer if told the specifics of model such-and-such; most people can surpass that and go on to cook something that passes for a meal; only a select few ever go on to find their calling as a chef. I'd guess that this class should be the equivalent of being able to make most students a passable electronic cook. In the end they should be given the tools (which are free), and some examples with limitations of what can be done easily and what is unrealistic - how a spreadsheet can help you manage details in your budget, but can't magically manage the budget for you - how to pull the red eye out of a photo so you're not making a poster of someone look possessed, but not be able to fix the motion blur from a shaky camera - how a shell script can help you rename a bunch of pictures in a directory, but it can't sort them by content. Once given the basics, the ones with the interest will pursue it on their own.
Unfortunately there are lessons that can't be taught by citing a specific piece of software, re
How about a building project?
Put a pile of used hardware in front of them and have them build the best machine they can to perform a certain task. For example, to run a particular benchmark suite.
1. Identify, connect and troubleshoot the hardware. (Try not to fry very much of it.)
2. Acquire, install, and troubleshoot the software.
Just finding some compatible RAM will be an adventure for most of them.
"We reject as false the choice between our safety and our ideals." --The American President (20.1.2009)
How about a short unit on the ecology of online predators and parasites? Who is after the students' data online? What are they after? Why? How valuable is that data, and to whom? How can they defend themselves? What 'partners' are the weak links in their defense?
"We reject as false the choice between our safety and our ideals." --The American President (20.1.2009)
A pleasant change to see an article mentioning Nth graders that also gives it in metric.
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
Since the course is for a general student, I don't see a focus on programming or computer hardware as most appropriate.
As an alternate, I would suggest SCALC, the open office spreadsheet program, as a good platform for several activities:
1. Learning to compute numerically - calculate sales tax, etc.
2. Learning how algoritum work - sort, binary search can be visually illustrated beautifully within a spreadsheet
3. Real life program solving tool - Post a real life problem to the student; have them analyze it; rephrase it to put in a spreadsheet; check the answers.
4. Graphs and formulae - links direclty to analytic geometry classes
5. Macro - automation which starts to provide motivation into programming for those interested.
6. Statistics - for advanced students
This is much for useful for the avearge student than any narrowly focused programming course.
I would look to pattern some of the many programs out there already. * Cover the highlights from A+ - Going over the highlights of hardware and actual function is a good place to start. Explain the basics, and potentially let them build a computer From the roll into the OSI / TCP-IP models - After learning how a computer works physically, rolling into the logical is well... logical. * Cisco ICND1 - This covers basic routing and switching, IP addressing, DNS, protocols, packets, frames, and a host of other stuff. * BASIC programming - I took this class in 10th grade 20 years ago, and probably took more away from it that I use now than any other class from high school. This provided the foundation to lead to analytical problem solving and understanding computer logic. I haven't written a program in BASIC since then, and it is still one of the best classes I've taken. I would also agree with one of the previous posters, I don't see the value of a hard text on this, it would definately be easier to keep current, as well as being more relevant if it was available online.
Please provide access, in English, to all of the materials you folks are using to teach primary grade students there in India, to educators, including home-schoolers, and others here in the USA. If you have really achieved that kind of literacy rate among your entire student-age population, rather than just a select few of them, you have got onto something we need desperately, becuase our average high school graduate can barely read, can't write a simple business letter, and can't balance a checkbook much less do math or anything but play games with a computer,and an awful lot of them are altogether functionally illiterate and have also never leanred to study, work, etc. We have a few who have taught themselves more about computers than I know, but the key variable is home environment rather than anything most public schools are doing. Consider the problem of teaching a smart 12th grader, or senior, to alphabetize, compose business letters, balance a checkbook, etc., as I have had to do with many of the better ones I hired--you should see the ones we couldn't or had to fire--and you get some of the picture of teaching them to use even dedicated commercial law office software. Your piece made reference to some computer programs, etc., with which I am not familiar here. I'm an older fellow, retired lawyer. I learned to do some things in DOS, simple batch files, etc., but can't even do that in Windows, and Windows and Office often frustrate me. The only Linux expert I knew,way over my head in math--I'd have been an engineer insrtead of a lawyer but my talent is not really in math while I'm in 97th percentile in verbal ability--taught it at the local university but coulnd't make enough and had to work another job, and has since died. I would love to take some basic courses in how to get computers and programs to do what I need them to do at the local university but, among other problems, I have a life-long uncorrectable vision limitaitn and the textbooks are not only incomprehensivel to me but printed in type too small and compressed for me to use, and nobody at the university knows a solution to that problem, either.