Ask Slashdot: Good Homeschool Curriculum For CS??
dingo_kinznerhook writes "I grew up in a homeschooling family, and was homeschooled through high school. ( I went on to get a B.S. and M.S. in computer science; my mom has programming experience and holds bachelor's degrees in physics and math — she's pretty qualified to teach.) Mom is still homeschooling my younger brother and sister and is looking for a good computer science curriculum that covers word processing, spreadsheets, databases, intro to programming, intro to operating systems, etc. Does the Slashdot readership know of a high school computer science curriculum suitable for homeschooling that covers these topics?"
"looking for a good computer science curriculum that covers word processing, spreadsheets, databases, intro to programming, intro to operating systems, etc. " This is not computer science (Intro to programming maybe), you are asking for a computer usage course, something that was not even allowed to count to my CS major.
Everyone that disagrees with me is a paid shill
Word Processing? Spreadsheets?
Are you sure its CS that she wants to teach?
As far as intro to programming goes, when I took High School Computer Science, our textbook was the Dietel & Dietel C++ How to Program. It was definitely aimed at the beginner to intermediate level programmers and did a pretty good job at explaining fundamentals of programming to a bunch of high school sophomores and making it understandable. As I recall, you can probably go through several chapters per class because it's not so dense and impenetrable that you need bash your way through.
Here's a link to the 7th edition: http://www.amazon.com/How-Program-7th-Paul-Deitel/dp/0136117260
However, there are plenty of copies of 6th editions floating around for pretty cheap. If I recall correctly, copies of the 5th edition are even available for download for free, which makes the curriculum that much more cost-effective.
Anyway, best of luck, hope that helps.
My postings are informational and does not constitute legal advice. Act on it at your risk.
Are you a Republican or something?
Avoiding the office suite stuff, would generally be a good idea. It's generally far less important to know how to use and office suite than to know how to actually use a computer. Let's face it computers are important for what they give us access to today not for their ability to make nifty graphs. Find something that teaches your kids how to research, effectively using the internet. How to find a solution to a problem in an area they really don't understand and how to do so with out taking two weeks to do it. In short 'How strong is your google fu?'
"GoodHomeschool Curriculum For CS??"
I don't see GoodHomeschool in any major dictionary. Is it a trade name perhaps???
Seriously, find out what's on the AP tests and get a curriculum that puts your kid on a path to pass it if he wants to take more than one year of computer science before college.
Another idea:
Talk to your local community college or university and ask for recommendations.
For little live code practice problems in python and java there's http://codingbat.com/
There's Google's complete free python class at http://code.google.com/edu/languages/google-python-class/
For a huge library of cs assignments, try the nifty assignments archive at http://nifty.stanford.edu/
Give your kids a system they can hack -- give them the ability to touch any part of the system they want, and your ability to teach them about programming and CS will be greatly enhanced. The last thing you should want is to teach your children that there are some parts of their computer or computer science that are off limits to them, or that they can only touch if they work for some large corporation.
Palm trees and 8
I'd recommend checking out the open coursewares for colleges. Most Computer Science stuff isn't really covered in HS in my experience so it's college-level material in certain respects anyway. MIT has a great website that can be used: ocw.mit.edu and there are materials for courses, their outlines, assignments, ets. and this could easily be toned down or tailored for use at home. Other colleges like Oxford University have open courswares and podcasts as well. The audio/visual elements also help as they can target visual/auditory learners. If you want to learn all the details of spreadsheets/wordprocessing/databases, there's some books (ex: http://www.amazon.com/Microsoft-Office-2010-Introductory-Cashman/dp/1439078386/ref=sr_1_1?s=books&ie=UTF8&qid=1306883348&sr=1-1) by Shelley Cashman that cover everything in VERY fine detail (to my annoyance) but it's very thorough and you have pictures, walkthroughs, etc. The best programming introduction I've found is at the beginning of the book called "Hacking: The Art of Exploitation" http://www.amazon.com/Hacking-Art-Exploitation-CDROM-HACKING/dp/B001TKJ92U/ref=sr_1_2?s=books&ie=UTF8&qid=1306883419&sr=1-2) The rest of the book is WAY too advanced but the first chapter or so -- if you can snag it online or somewhere -- is a great intro to pseudo code and structures. I'd recommend C++ or Java for programming and the best books for that are really the Sam's series. They have LOTS of examples and doing the work through doing examples is how you learn. There's the curriculum in one book right for you! Those things could easily be combined for a great course/year. Best of luck!
Are you sure your mom is qualified to teach CS?
Ok, maybe too harsh, that might be fine for HS. But most university CS curricula start by teaching you a programming language---how to do structured program, incrementally adding features and complexity. I don't see why HS should be so different, it's not like it's difficult if you're remotely suited to the topic. Why not give your siblings a leg up on the competition, check out major university CS programs and start from there---from experience, even grade early HS students can master these concepts in small enough doses.
Don't you know, with a masters degree, something about what goes into the field?
Your mother is already qualified to and is teaching computer science, directly by not directly teaching it. Have her teach them about logic and calculus, i guess. What a strange question, really.
My book in AP was C++ for You++ http://www.amazon.com/You-Introduction-Programming-Computer-Science/dp/0965485390
TITLE FAIL. NOT RECOMMENDED.
"word processing, spreadsheets, databases, intro to programming, intro to operating systems" exactly what my university has as requirements for Computer Information System degree which is part of the business school rather than the science school.
http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/ would be a good starting point. Advanced? Yes. The beauty of home schooling is that the curriculum can meet the needs of the student, not the lowest common denominator.
The best thing about a boolean is even if you are wrong, you are only off by a bit.
Kids home-schooled into the high school level that don't already have competence with word processors and spreadsheets? A guy with a MS in CS who talks about word processing in the same sentence as computer science? If he wanted to push more buttons he'd have explained that his mom thought Linux was for commies. Seriously, don't feed the troll.
Moderating "-1, Disagree" is simple censorship. Have the guts to post your opinion.
Are you looking to teach Computer Science or practical use (wp, spreadsheet, office, etc) or practical programming? These are three very different things.
Computer Science is a whole lotta theory and in-depth background with a bit of programming required. Basic practical computer usage skills (computer literacy) will depend on the environment the home schooler is going to use (mac, windoze, linux, etc). A really good literacy curriculum would include introduction to all three so people would know the difference. For programming, hardware, etc, you should look into the Arduino based kits like SparkFun Inventor Kit (http://www.sparkfun.com/products/10173). This gets kids of all ages doing basic programming using quick feedback projects - you jump quickly to making LEDs blink, servos twitch, etc, rather than spending lots of time learning about the abstracts of for-loops, etc. The programming details are learned naturally in the process of making something move, blink, beep. You can also move up to robotics pretty easily. Robotics is also a good way to introduce programming as a project-based experience. There are several secondary and college programs using this approach (CMU, Myro, etc). Some use it to teach AI concepts without requiring 3 semesters of programming first.
If you really want to give your children a good education in CS, send them to high school with other children. I have learned at least as much from other students as I have from teachers in CS. By all means supplement this education at home. But if you're their only teacher and classmate, their exposure will be extremely limited. And the fact that you think using word processors and spreadsheets is a pillar of CS hints that you might not be qualified to be their sole instructor in this area.
A GATTAling gun - used to shoot holes in genetics theories.
It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
I can't tell you the number of times I've seen badly written, unclear, badly formatted reports, papers, recommendations, audits from graduates who may have excellent CS skills but can't string sentences together to put over an idea.
So I'm a grammar Nazi. We're in an exact business. Be exact in putting out ideas. And please don't reply to this with "your welcome"...
"The greatest lesson in life is to know that even fools are right sometimes" - Winston Churchill
While Word Processing is not CS, it something pretty necessary for college.
CS is more than just how to code, but honestly: Learning to write a bit of working code first helps loads.
I taught my 11 year old brother how to code in C, C++, Java, SQL, JavaScript, (he's now 20, and learning Perl & Python on his own).
He didn't get the theory until he could compile stuff and play with real working examples (as I did), and for him, everything we needed was in The Really Big Index. Everything from the concept of Objects and variables, to arrays, branches, algorithms, GUIs, concurrency, graphics, client / servers, etc -- After the first two trails he was studying all by himself, and mastering the programming part of CS. After Java, C/C++ and JavaScript were nothing more than learning the syntax and standard libraries. We installed PostgreSQL, and he picked up SQL in two weeks. I'm helping him write a new scripting language for an existing game engine to learn compiler design -- He's beyond his fellow students, and sometimes even the CS professor in many areas simply due to experience.
As far as tests go -- I don't know about that. Tests are bogus anyhow. Have them come up with a reasonable project that they can complete and learn by doing. You can get a curriculum and do course work, but first get them coding (also note: if they don't give a damn about writing code, you will never make them want to -- Good programmers are born not made).
http://www.youtube.com/watch?v=kQoSRfu5z_4
Is it just me or is there something fishy going on here? Can't decide if this guy is a troll or not.
I went to a real high school and learned to program in my free time by myself. Just get them a computer and either let them come up with projects to do or give them an assignment. Seriously, its pretty easy to learn shit on your own nowadays and a person who is home schooled should know this.
Besides that, what if their passion isn't in computer science? It most certainly isn't for everyone, and I find the only good ones are ones who actually want to do it.
The OP reeks of bullshit.
here are the schools in NYC that match CS
http://search.nycenet.edu/search?q=%22computer+science%22&btnG=Search&client=default_frontend&output=xml_no_dtd&proxystylesheet=default_frontend&sort=date%3AD%3AL%3Ad1&entqr=0&oe=UTF-8&ie=UTF-8&ud=1&site=default_collection
Introduction to Computer Science (Section 01) @ The Bronx HS
http://www.bxscience.edu/apps/classes/show_class.jsp?classREC_ID=274057
the math page which includes the CS at Bronx HS
http://www.bxscience.edu/apps/pages/index.jsp?uREC_ID=3719&type=d
and the different match/cs course offered
http://www.bxscience.edu/apps/pages/index.jsp?uREC_ID=3719&type=d&termREC_ID=&pREC_ID=classes
The most important thing is to get him laid. Take him to european countries for as many months as you can legally stay for, and force him to approach girls and women again and again.
both places offer online courses. perhaps your mom can glean some direction from them.
http://oli.web.cmu.edu/openlearning/
http://ocw.mit.edu/courses/
boycott slashdot February 10th - 17th check out: altSlashdot.org
School (High-School specifically) is a social experience, you learn to interact with other people, this has now been taken away from you..
Again sorry for the troll, I have no good input.
How about some Knuth? Because that would be some muthafuckin' kick ass home school CS curriculum.
HA! I just wasted some of your bandwidth with a frivolous sig!
iTunesU has full college courses from all over the country. The Stanford classes are great for CS.
Necessary for college? My 7th grader needs it about every week for a project, and that's in a public school. The project she was working on yesterday had to look like a magazine article. Possible without a word processor, but not anywhere near as easy or fast. At this point, she knows more about the text formatting options than I do.
Educate and get certifications that some companies give credence to when hiring.
That includes spreadsheets and word processing? I'm guessing your Mom isn't as intelligent and as good a teacher as you think she is if you think CS includes learning to type and use spreadsheets.
Seriously. As bad as /. makes it sound, you really do develop good people skills and are generally liked more by the general public after having mastered dealing with bullies, idiots, know-it-alls, etc (assuming they're not one of the aforementioned characters). Good people skills are infinitely more valuable than anything school will teach you.
Computer Science is not Word Processing. Office skill are important, but they aren't Comp Sci. Back in the old days, Computer Science was part of the Business department curriculum (at least it was in my High School), but it quickly spawned off to its own program in Science and went from there.
You need a two pronged approach. The first is word processing, spreadsheets, and some graphics. Good basic computer user skills. Gets the kids over their fear factor and gets them using the tool. From there you can branch to bookeeping or desktop publishing or Photoshop graphics or whatever.
Then you back that up with the underpinnings of good procedural and algorithmic skills and knowledge. It could be as simple as How to write a recipe for hot dogs or How to change a light bulb. No computer necessary in the early stages, you just want them in the frame of mind to get good at putting steps together and phrasing them well to get to a good result. Think of it as programming for the H.Sap2 processor (seriously, try it. Writing good directions isn't easy). After that, you are ready to introduce formalized language and coding concepts, then real languages like java, C, HTML, SQL, javascript, etc. How to make the computer do what YOU want it to do.
If you are basing this on MS Office, there is VBScript and Visual Basic. Useful tools, and it is all built in. But of course you have to be careful
Behold, this dreamer cometh. Come now, and let us slay him... and we shall see what will become of his dreams.
When I first read the title I thought we were going to be discussing some Counter Strike tips and tricks. Yo ass wuz home schooled bizatch!
Harvard CS 50. It's downloadable, open, and free. -Enjoy
When I was in high school we had a comprehensive Office 2003 textbook that covered MOUS objectives for each of the core office applications. That textbook was published by Thompson Course Technologies. Im not sure if they have been bought out or changed in that time, but I found a Cengage textbook that covers the material for 2010. The book I studied from explained a particular concept, applied that concept, and reviewed that concept. Every few concepts was followed by a test. My instructor followed the method provided by the book, and it worked well.
Use a similar approach with programming. Find a suitable starting language and find a book that follows the concept-tutorial method. To make things a bit more challenging in this area my instructor gave us custom projects that went outside the scope of the objective text, but still relied on lessons we had learned
Yes I know, the College Board is Big Business, but there's a well-defined curriculum. And it got my daughter out of having to take some kind of "Intro to Computer Science" as a college freshman. However I'm not sure if home-schoolers are into AP classes.
First, office suite applications are not computer science. If you want to teach the CS version of word processing, teach them LaTeX. In the meantime, I recommend something that I didn't do: start with a functional language like Scheme (I started with K&R). I TA'd for a Java intro class and it never went well. All the PL (programming language) grad students I know hate C++, and that leaves Python, Ruby, and the functional languages.
Scheme is pretty simple, and probably appropriate for HS-level coursework. One of my intro classes was with Scheme and I liked it (we used the wizard book, a friend of mine had The Little Schemer at his school). I've heard good arguments for using functional languages for introductory courses, but I don't really remember them :(.
Right, because CS geeks are well-appreciated in public school peer groups, and won't be ostracized at all. If you're the kind of person who can only learn social skills in school, you probably won't learn them there anyway... either that or you'll only learn a twisted version of what "proper" behavior is.
Skype is too convoluted... Now I'm reverse-engineering the Kyoto Protocol.
In addition to MIT and CMU, which have already been mentioned, Berkeley and Stanford have their introductory CS courses on youtube (and iTunes.) I particularly like Stanford's CS106 with Mehran Sahami. If you want something more middle-school-ish (or scheme-ish) and connected to algebra and functions, check out http://www.bootstrapworld.org/ (founded by a professor at Brown) (Seeing all of those parentheses reminds me of the book that taught me Lisp, David Touretzky's Lisp: A Gentle Introduction to Symbolic Computation, PDF at http://www.cs.cmu.edu/~dst/LispBook/, which should really be brought back and updated for DrScheme!)
Small Basic is a great free introduction to Programming that Microsoft gives away. I was looking for some GWBasic stuff for my jr. and I found Small Basic. Whoot.
http://www.4boca.com/?p=66
I have used these successfully when home schooling my children for any of the Microsoft Office products.
http://www.technokids.com
An Apple IIe with an assembler, and a few compilers. Or an IBM XT with the same. Give it to them with some old books and tell them to do something fun with it.
That should keep them out of your hair for a while. Isn't that the whole point of a home school curriculum?
Support SETI@home
My first (pre-HS) steps in Computer Science.
I'd recommend Felleisen, et al.'s book *How to Design Programs*. It assumes nothing more than high-school algebra, and takes the student through fairly sophisticated programming: data structures, various kinds of recursion, some simple algorithmics, higher-order functional programming, stateful programming (e.g., graph-search algorithms), problem decomposition, unit testing, etc. The book authors have successfully been teaching high-school teachers to teach this material to high-school students for over ten years. It has way more fundamental content than the syntactic trivia contest that is the AP curriculum.
I have taught college students with this text (truth in advertising: all four of the book's authors are colleagues of mine). The book is deceptively simple. You start off programming fahrenheit-to-celsius f(x) = 5/9 * (x-32) conversion; about two weeks later, the students are doing graphical simulations of a rocket landing; about 4 weeks after that, they are designing and implementing video games such as Tetris or Asteroids -- students that had zero prior experience in programming.
The teaching methodology is to move through a sequence of backwards-compatible student languages, which go from a simple, first-order side-effectless language up through full Scheme; each language is tailored to the concepts under study at that point. Thus you never have to deal with syntactic overload. What I like about Scheme and its dialects for introductory programming is just how little is there: a few completely orthogonal and general semantic notions, and a *very* simple syntax, and you have everything you need to do quite sophisticated programming. Students don't thrash around wondering what inner classes are, or tripping over the distinction between little-i ints and big-I Ints. It's not about the language; it's about the computational *ideas*.
Finally, for someone who wants to do this at home, there is one more advantage: it's completely free. First, the programming environment, DrRacket, is open source and is available for Windows, Mac OS X and linux. Secondly, if you are a fifteen year old who doesn't have the money to buy the textbook from MIT Press, you can get the entire book in HTML form, from htdp.org. (It says a lot for the authors that they have made it available this way.)
If you'd like one more marker for quality, I'll just note that Felleisen and the HtDP team were awarded the ACM's prize for CS education last year, the Karl Karlstrom Award, for *How to Design Programs* and the accompanying DrRacket environment.
Prof. Olin Shivers
Northeastern University
You all are in fantasy land !!
None of you know anything and cannot be allowed to teach
diaper constructioin !!
You have NOT obtained TEACHER credentials !!!
For the younger crowd, I can highly recommend Computer Science Unplugged. It is a great introduction to the fundamentals of computer science - algorithmic basics, information coding and entropy, finite state automata, and a bunch of other good stuff. Interestingly, the entire course is done without a computer. It has exposition, exercises, and games that reinforce those fundamentals.
It's about 10 hours of coursework, it's free, and it's geared toward the 8-12 year old crowd. My 7-year old didn't have any troubles with it, and was always hungry for more. The novelty of teaching computer science without touching a computer is also compelling.
Now, if anyone can recommend some good coursework on introduction to programming and basic algorithms for the 8-10 set, I'd appreciate it. I haven't found any good educational materials for Scratch (it's all pretty ad-hoc and amateurish), and I think Alice is a bit much for sit-you-down-and-start-programming. Any personal experiences?
Not necessarily. Just because someone is learned in a particular field does not mean they have the skills to dispense the knowledge in an effective manner. I'm not the only one who's encountered people who are experts in their field, yet lack the ability to coherently explain even the basis because they don't have the skills to do so.
Computer Science, Logo Style. Free for personal use.
Leandro Guimarães Faria Corcete DUTRA
DA, DBA, SysAdmin, Data Modeller
GNU Project, Debian GNU/Lin
I have collecting to Intro to Programming links for Kids at my blog and in it comments: https://purpleslog.wordpress.com/2009/07/19/reference-intro-to-programming-for-kids-aka-growing-a-young-computer-geek/
The Elements of Computing Systems:Building a Modern Computer from First Principles
http://www1.idc.ac.il/tecs/
Buy a few Arduino boards. Get the robot vehicle version. Add a sound synthesizer shield. Make stuff. Hours of fun and will give you a sound foundation in the basics that you can't get through a higher level language.
Seriously, whatever you end up doing in more advanced or more applied courses (if that's the right word for homeschooling), start with "How To Design Programs". It teaches you how to *think* about just about everything else in computing. There's a second edition in progress. Both the original book and the draft second edition (which is probably much better) are available for free downloads. The original can also be purchased on paper.
The software system that goes with it is also free: Dr. Scheme, now renamed as Racket.
-- hendrik
http://www.cs.rice.edu/CS/PLT/Teaching/Lectures/Released/Companion/index.htm
http://www.ccs.neu.edu/home/matthias/HtDP2e/
http://mitpress.mit.edu/catalog/item/default.asp?ttype=2&tid=3879
Its probably way too late for my comment to be modded up for the submitter, but here goes.
I've taught "Into to Word Processing" and "Intro to Spreadsheets" type courses at some local adult education colleges. The best books I found were the Shelly Cashman series, such as "Microsoft Office 2007 Introductory Concepts and Techniques". Good explanations with screenshots, and good exercises.
Here's an Amazon link: http://www.amazon.com/Microsoft-Office-2007-Introductory-Techniques/dp/0324826842/ref=sr_1_1?ie=UTF8&qid=1306895933&sr=8-1
Its fairly inexpensive for a used copy.
"You cannot find out which view is the right one by science in the ordinary sense." - C.S. Lewis on Intelligent Design
If your mother was qualified to teach she would know how to get relevant source material.
one thing that is not stressed or practiced nearly enough with CS is interaction with people for activities like requirements gathering and maintenance (which is ~80% of a software life cycle). There are jobs where you are handed a spec and you build it with no contact with the outside world, but all the jobs I have ever had require the ability to interact effectively with people from all walks of life.
Degrees in math and physics doesn't mean squat when it comes to teaching. Actually being taught to teach does. If your mother is having trouble comparing and selecting curriculum, perhaps she needs a refresher course.
I have a CS from a top 5 CS school in the country and I don't think your Mom will be able to teach a proper CS curriculum with those degrees. The majority of classes revolved around Algorithms, Operating Systems, Compilers, and Networking. Once you get through that you should focus on C# or Java. Personally, I think Microsoft is the way to go simply for ease of use, resources, and the amount of use in the business world means jobs. For your home school your looking more towards a Computer Technology, sometimes called CIT, curriculum focuses on PC support level knowledge and basic of programming. This is the course that most community colleges will follow. If you want hardcore programming I recommend a university. In the IT world home schooling won't get you hired. You will definately need real world experience after college before you can land the big job.
If a kid is homeschooled it is possible that they haven't used a word processor that much.
For a good, gentle intro to programming curriculum that is online, I'd recommend this:
http://livecode.byu.edu/indexgeneric.php
LiveCode utilizes a very high level language and can compile for Windows, MacOS X, various flavors of Linux, the web and at least two mobile platforms from a single code base. You can find out more about it here:
http://www.runrev.com
They offer both a 30-day free trial period as well as educational pricing.
Was it really that hard to ignore the parts many of you needed to find fault with instead of just trying to answer the question that was really being asked.
"I grew up in a homeschooling family, and was homeschooled through high school. ( I went on to get a B.S. and M.S. in computer science; my mom has programming experience and holds bachelor's degrees in physics and math.) Mom is still homeschooling my younger brother and sister and is looking for a good curriculum that covers word processing, spreadsheets, databases, intro to programming, intro to operating systems, etc. Does the Slashdot readership know of a high school curriculum suitable for homeschooling that covers these topics?"
I guess spelling and knowledge are offenses to God too.
I had my first computer at 13, and learned to program in BASIC, high-level languages (C/C-like languages), and 6502 assembly well before high-school... Spent years BBSing, playing games, typing in programs from magazines & books, creating varoius graphics-related programs, and generally 'hacking' in the old-school sense. I don't think, however, I'd consider having any real training in 'computer science' until my second year of high-school CS class with an introduction to data-structures. Before that it was all 'hacking' or perhaps 'computer literacy'. Probably the most useful thing in that time was learning to touch-type and that was on an actual type-writer... Being comfortable with technology, and able to learn new systems quickly is important and comes from hours immersed in the 'culture' of computers, but many "prep for college" skills are not computer-related: writing, linear algebra, probability, geometry, organizational skills, communications, etc.
Kernighan and Ritchie
Knuth
Avoid anything including the phrases "Visual", "for Dummies", "Graphical", or "Web". In other words, learn about computers and computing--not how to drive some piece of canned software that will be obsolete before you graduate.
I did a quick Excel class in my freshman year; it had pointed me to various features that I simply hadn't dealt with while stumbling through the program on my own.
I listen to both RIAA and non-RIAA stuff if I like the music, tangential business/politics nonwithstanding.
Bst learning advice for CS I ever heard was to write an Operating System. Admittedly this was advice to 1st year University students for what to do after the summer, but it should still be sound for high school. All the information needed is out there.
What's the matter with homeschooling? In my country, going to school is mandatory, and it's a very good idea indeed. You are _forced_ to socialize, which will suck, but will also force you to learn fundamental life skills.
Imho, go to school like everyone else does, and take a normal CS course. You can read books to complement anything missing in the class (hint: you don't really learn from "online tutorials") in the afternoon.
Come on everyone, he said pre-High School level home schooling curriculum. That doesn't mean college level, and it doesn't even mean High School level. He's asking a specific question here - what curriculum do you know of that support CS? Rather than pick holes in his question based on his lack of understanding, perhaps give it a little thought and make suggestions. Even if he's trolling, other people are reading, and it can make for a fun discussion among Slashdotters. Think positive.
I'm still reading a book called "The Elements of Computing Systems" by Noam Nissan and Shimon Schocken, which talks about the fundamentals behind Boolean logic and the operations that can be done with it, then talks about computer architecture, machine language, assembler, all the way up to making a virtual machine and writing a high level language and operating system. Pretty cool stuff, especially considering people are making CPUs in Minecraft based on what they've read in the book. Now, granted, trying to do it in Minecraft is extremely time-intensive and needs some copy/paste type utilities to speed it up quite a bit. Not sure where that would fit in, but it provides an in-depth background on the overall picture of how computers work (might be fun).
I personally think that, yes, it's a bit much to expect someone to understand the usefulness of all that when they can't even use many common programs on a computer. Without understanding what something is used for and why you're studying it, your mind is going to wander, and you're not going to get as much out of it. So yeah, you'd want to get familiar with common programs and with programming before jumping in the "deep end" as it were (see below).
Here's one guy's view on why jumping straight into CS without prior programming experience is absurd:
http://spin.atomicobject.com/2011/05/17/the-deep-end-of-the-pool/
(consider something as simple as learning to type instead of finger pecking - massive improvement in getting things done quickly on a computer - I actually took a typing course in my first year of high school, and it's paid high dividends in terms of time saved over my career)
Also, notice how many people on Slashdot say they learned to program in high school, or other comments of that nature, and how it's a point of pride. So yes, there's definitely some preparation required before CS type study. I would recommend finding someone who already knows how to program to tutor them when difficult areas pop up. It could possibly be done online with the assistance of Ventrilo/Teamspeak and some type of screen sharing application, or even using Youtube and a screen recording application (like what you see done on KhanAcademy via Youtube).
Now, as far as the lower end - using basic programs like word processors and office applications in general, I've noticed that many cities have adult education classes that cover these (usually Microsoft versions). Why not take one of those over a summer? They're often cheap.
Finally, I started doing some Google searching to find specific courses or curricula. Hopefully people who have experience trying these can comment, as I don't. (Google search terms: "kids computer curriculum")
http://www.home-schooling-haven.com/homeschool-computer-curriculum.html (had some tips on resources)
http://www.motherboardbooks.com/ (it seems to have a good deal of material in one place, can't comment on quality - get reviews before spending money)
As a final note, I looked at how schools typically lay out their curriculum and objectives, and I see that even now, computer skills take up a very small percentage of time because more fundamental skills are more important at that stage. It's pretty important to keep that in mind and not over-prioritize this over basic mathematics up to at least Algebra, etc. Now, if they really take to
Only play videogames that you have programmed yourself.
hahahh, I wish I had mod points. Although not personally home schooled (my wife and her 9 bros and sisters have been or will be) and that was amazingly funny :P
The Open University in the UK does distance learning courses. Their new course starting this year is T100 - Your Digital Life. http://www3.open.ac.uk/study/undergraduate/course/tu100.htm I was involved in setting up the predecessor course a few years ago (You, Your Computer and the Internet). The basic idea is to take people with little experience of using computers through to being confident with word processing, spreadsheets, navigating the web and building some of it for themselves.
Korma: Good
I found ECDL (the European Computer Driver's License) certification to be more useful than I had thought before I looked at its syllabus. It is no good for programming or operation systems but very useful for the "non-CS" parts of your request:
I always dreaded the day when I would have to teach things like copying files or word processing, spreadsheets or presentation software; I'd much rather stick with "proper" CS topics like Python or Unix shell, but I have to say I was pleasantly relieved by discovering ECDL.
There are a lot of curriculum materials that are being used by home schoolers to teach programming and software development at the Microsoft Beginner Developer Learning Center Kid's Corner http://msdn.microsoft.com/en-us/beginner/bb308754.aspx Everything from videos to whole courses for differing ages. You can also find some good curriculum based on Small Basic at http://smallbasic.com/ (see the wiki and tutorial) and http://www.teachingkidsprogramming.org/ I also recommend the CS Unplugged curriculum at http://csunplugged.org/
I won't pile on to the "that's not computer science" comments (but learning how to use Word really doesn't have anything at all to do with computer science).
At this level, the focus should be on basic principles and how to think logically. My suggestion is to look at the new AP course that's being developed on "CS Principles". The materials they're developing to define this course (at http://csprinciples.org/) aren't very useful for a homeschooler now, but there have been 5 pilots of this material at universities, and those course are available in their entirety online. My personal favorite is the course at Berkeley - it's called the "Beauty and Joy of Computing", and is available here: http://inst.eecs.berkeley.edu/~cs10/sp11/
OK, I am not sure what time frame you are looking at. You mentioned an awful lot of topics and comp. sci. would normally be studied for 4 years. I do not consider office tools a part of a traditional comp. sci. program, but they should be taught nonetheless. Assuming there is 4 years of high school I would recommend: .bash scripts). I would then move into basic office programs. I would show Word and Open Office and introduce the student to basic word processing and touch on some advanced editing (tables, formatting, formulas, etc.). In spreadsheets I would show the basics plus introduce macros, which are programming based. Also pivot tables and graphs. There would be plenty of material for 1 year of school, especially considering this as an "elective" which would not be studied more than 1-2 hours per week. .NET stuff if pretty good too. I honestly would not use C++ or Java as the language hinders some of the pure OO techniques.
Year 1/Semester 1&2: OS and Office Tools - In this course I would expose the student to different operating systems: Windows, Ubuntu Linux, and Mac OS. I would have the student master some basic end-user activities, like installing software, installing new hardware, modifying system settings (i.e. env vars, etc) and finally touch on some shell scripts (batch files,
Year 2/Semester 1: Introduction To Programming - Just like it sounds, I would focus on basic programing. The tough part is what language - Pick whatever you are really comfortable with and able to teach. I personally would choose a slightly non-main-stream language like Ada. Focus on basic program structure, good commenting and the fundamentals of the language.
Year 2/Semester 2: Advanced Programming - Move into advanced aspects of the language, structs/records, user-defined types, compiler pragmas, memory management (pointers).
Year 3/Semester 1: Introduction To Data Structures - Classic CS course. Array/Stack/Queue/List
Year 3/Semester 2: Advanced Data Structures - Another Classic. Various Trees/Graphs/Heap
Year 4/Semester 1: Introduction to OO - Focus more on the design aspect. Also use a language that is a "pure" OO language. We used Eiffel, but the latest
Year 4/Semester 2: Advances OO - Get into the more complicated OO stuff. Design patterns, multiple inheritance, repeated inheritance, etc.
That would cover a good bit of computer science...
"I grew up in a homeschooling family, and was homeschooled through high school. ( I went on to get a B.S. and M.S. in computer science ; my mom has programming experience and holds bachelor's degrees in physics and math — she's pretty qualified to teach.) Mom is still homeschooling my younger brother and sister and is looking for a good computer science curriculum that covers word processing, spreadsheets , databases, intro to programming, intro to operating systems, etc. Does the Slashdot readership know of a high school computer science curriculum suitable for homeschooling that covers these topics?"
See those two sentences in bold/italics in the quote above. I call bullshit on this person having a MS in CS (or went through grad school but didn't learn much... it happens.) Who the hell would list word processing and spreadsheets as computer science topics? Moreover, am I to believe a holder of a veritable MS degree in CS cannot devise a basic HS-level CS curriculum?
So its not a course book but Code Complete http://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670/ref=sr_1_1?ie=UTF8&qid=1306930229&sr=8-1 is an excellent read to understand the overall programming process before getting into actual coding. Starting with language syntax and thinking you understand programming is backward to me when you first need to understand developing software and then you can use any language you want to for implementing the program you designed.
Start with discrete math, linear algebra, and statistics. They form a great foundation for computer science.
get a decently beefy machine and load vmware ESXi on it and carve out some virtual machines of different flavors of OS. Make sure you have a flavor of CentOS5 in there as well as a flavor of windows server 2003/2007 etc. Make them work with each other. Take turns on which OS is responsible for network services such as dhcp, mail, etc. Having to research how to set these sort of services up will go a long way to understanding how networking works. Always take the opportunity to tie certain tasks like arp to theoretical discussions like the OSI model of a protocol that you had prior to the applied portion of the curriculum.
I have always been amazed at how networking has been the most under-discussed, under-taught concepts in schools. Regardless of the background, every trainee I've ever had has arrived with a rather poor concept of networking. In almost every case, to them, networking has just meant programming the ip address, dns servers, subnet mask, and gateway when prompted. Almost none of them could even explain when a gateway is needed and when it is not. Words like RIP, RIPv2, OSPF, BGP were just random letters.
IMO if you're going to become a programmer its very likely you'll one day have to write a program that uses the tcp/ip stack in some manner or another. Having a good knowledge of how all the pieces talk to each other and how the network services work to achieve that goal can only help with that job.
Learning to speak Indian would be a good thing to include
I am a homeschooling Dad with an S.M. in EE/CS. I choose to teach "programming" to one of my kids who was interested using David Eck's Introduction to Programming Using Java back in the 2000 timeframe. The course material was free online, and was very adaptable to the high-school-level. My kid really liked it, and got a lot out of it, especially one of the client server projects and the Human-Machine-Interface (HMI) element. She later graduated as a very successful college CS major and took on a pretty nifty HMI-related job with one of the Federally Funded Research and Development Centers (FFRDC).
As in most subjects, interest level and match between curriculum and student are keys to success. I tried teaching the same course to another one of my kids, and she was uninterested (except for making web pages using HTML), so we never completed and moved on to something else. She ended up going into the social sciences. Your mileage will vary.
First the OP tries hard to dazzle us with his creds. A B.S _AND_ M.S. in CS? Really, is that a synergy of B.S. and M.S.? I never heard of a student brag of having both, when all that is needed is to say they have a M.S. in CS. I guess a doctor should say they have their B.S., M.S. and Ph.D., in medical science then.
Then having this wealth of CS knowledge, he cannot help his mommy or his siblings. At the very least the family can go to home school expos and demos from vendors. {where do I insert the open hand face slap here?}
Next the OP informs us his mommy has a B.S in physics and math. But the concepts of basic computer usage alludes her, even the concept of randomly clicking of buttons and reading the online help manual. So she's a smart idiot. Once again I never met a double major in math and physics that did not know how to use a computer. Maybe his mommy is eighty, then I'd understand. Actually that would explain a lot about this post.
This goes under the epic family FAIL!
come on people... get off your high horses... we all know that word isn't really CS, and i'm sure the OP is well aware of that as well.
my response is to start by simply setting them free on the computer - let them find their own motivations. i learned excel for an online game (and how websites work (rendering code in browser vs pre-compiled, how to manipulate sites via GET, etc) end eventually learned db's because something that i wanted to do in excel was too large and complicated... i would imagine others have learned by making their own myspace/geocities/whatever social sites.
but please, for the love of god, do NOT try to make them memorize the names of every button and object in MS word. nothing could be abigger waste of time, and those things come naturally through actually USING the software out of need...
First, ignore the pedantic morons who say what you are talking about is somehow not CS. At the high school level, speadsheets, databases, word-processing certainly are a massively important part of CS. I don't quite understand where people get off saying its not. 97% of all programming that happens in the real world (I did some extensive guessing on that figure) is geared toward manipulating database, spreadsheet (which is just a simple db), or documents. This is the heart of end-user CS. When I was in school, even learning to use a scientific calculator was hugely important to computing science. Programming is a very very very small part of CS. There's also logic theory (which I don't think ever gets taught to any suitable extent in the states), and a great way to teach your kids logic is to encourage them to learn to play a musical instrument. It is no accident that ALL of the compsci faculty at the university I attended also played music on the side.
Music theory = high-level abstract logic = pre-requisite to proper computing science
Now, here is the easily had answer, and I admit that it's a little suspicious that someone with a BS and MS in CompSci didn't try this, so I also think this post is a bit Troll-ish.
Google: high school homeschool computer science curriculum
and you get loads of the kind of results you are probably looking for
My children are de-institutionalized since middle school. I found a great way to teach them CS is to periodically disable various components of our home network. As soon as they loose facebook access, they will immediately start teaching themselves the basics of troubleshoot computer systems. No curriculum required.
If you want to give a historical perspective of computers and programming, try "Introduction to Data Processing" by D. K. Carver (1974?)
Try Ribbon Hero 2 from Microsoft. I give this to folks at work who always ask how to do things.
http://www.ribbonhero.com/
If I were to design a high school computer course, that would be my theme. You cover the basic elements of computing, hardware and software, Then you add the arts: graphic design, elements of writing script, character development, examples from literature, etc.
I wonder if there are any existing high school level course on this. Plenty of arts schools have this curriculum.
Computer training option 1: Go to college
When I started at my local university there were several high school students attending classes through various programs. Junior colleges and state schools have free and reduced price classes for high schools who want to attend classes part-time. Your brother can also take classes full time at the local junior college by getting his GED. Classes from the Management Information Systems department (a.k.a. Computer Information Systems) will teach the basic computer usage skills you have requested.
Computer training option 2: Get certification
The problem with homeschooling is at the end of an excellent education you have no real way of proving your computer skills. After all, the SATs do not test your skills with Excell. Getting Microsoft or some other certificate would be an excellent way of to test your brother’s skills and have a curriculum to follow.
Does anyone have suggestions for what certificates a high school student should get?
Computer programming option 1: Java
The Advanced Placement tests that give high school students college credit assume the student knows Java. I suggest an online introduction to programming college course, however these are more often taught in Visual Basic or C rather than Java.
Computer programming option 2: Ruby
The Ruby scripting language would give you brother an easier starting point that Python or Java while still teaching object oriented programming concepts. The best part is that he can use “Why's (poignant) Guide to Ruby,” a short simple introduction to the language written by an insane man. I think the text would be very appealing to a high school student. Please check it out and enjoy the soundtrack.
HTML version: http://mislav.uniqpath.com/poignant-guide/
Computer science is a subject they can easily learn on their own, if they're so inclined. It's certainly not essential to producing a well-rounded, knowledgeable individual capable of engaging in independent critical thought. Spend more time on the really important and much more rigorous subjects like history, literature, philosophy, and languages instead. Those are what are important, because they are what make us better [i]people[/i].
She pretty much confirms the stereotype...
Some examples:
Christian Fundamentalist
CS-323 - Building Algorithms with Bible Verse
Students will learn how the bible guides all decision making using advanced flow charting methodologies and the New Idea Bible.
Libertarian Para-Military
CS-400 Applied Advanced Programming Students will utilize various programming languages to write programs in cryptography and working with munitions students in artillery and rocket trajectory feild computations.
Environmental Extremist
CS-410 Advanced Communications Programming
Students will learn to intercept, decrypt maritime whaling vessel broadcasts and to automate triangulation of fleet positions utilizing a botnet of android telephones.
Polygamous Patriarchal Cult
CS-330 - Family Network Security
Students will learn how to secure a family unit network from outside intrusion and methodologies to destroy all knowledge of security access after turning over the encryptions keys and passwords to the Father.
Dominant Patriarchal Schizophrenia
CS-101 Skin Bug Eradication
Students will cover various methodologies of destroying skin bug infections emanating from INTERNET connected computers.
Obviously the curriculum is vastly different for each...
For basic computer literacy starters you could look at the International Computer Drivers Licence ICDL or open ICDL.
Google "open ICDL" or see http://www.icdl.org.za/products_detail.php?id=6&PHPSESSID=ubu69pnfotj76ecs6vsogfabm1
ICDL uses Windows XP, Internet Explorer & MS Office
open ICDL uses Ubuntu Linux, Firefox & Open Office
Both office suites include a mini database (Access or OO Base), which is used to explain some DB fundamentals.
Neither course attempts to introduce any sort of programming.
RTFM is not a radio station.
Seriously, unless they live in remote mountain cabin somewhere I just can't understan why they shouldn't just go to school? One of the most important things they will need to learn is to interact and cooperate with other humans anyway, regardles of subject. Plus mum can concentrate on her own job instead.
Some aspects of what you're asking for fall under the category of Computer Literacy and some Computer Science / Programming. I'm building a course right now based on a Classical Education format (popular in homeschool courses). It will target 6-9 year old kids, so it may not be in your siblings' age range, but I'll have some follow on courses that I'm already planning. I hope to ultimately get it to the point of being a comprehensive curriculum that incorporates programming and computer literacy and take a child from grade school all the way through high school. The first course is not ready yet, but I'll be selling it as an eBook on http://mykidcancode.com/ (@mykidcancode on twitter) Good luck.