Computer Textbooks For High Schoolers?
wetdogjp writes "I recently became a high school teacher, and I've inherited three classes with no textbooks! While two of my classes are introductory in nature, one for computers in general and the other for networking, the third class should prepare juniors and seniors to enter the workforce and start a career in computers. We have some older textbooks by Heathkit available, but the newest of them are four years old. Do Slashdotters have any favorite textbooks that can help kids on their way to becoming junior sysadmins, programmers, networking professionals, etc.? Would you suggest books to prepare students to take certification tests such as A+, Network+, or others? Any textbooks we use would need to cover quite a breadth of material, such as PC hardware, operating systems, networking, security, and more."
The internet has all the information they need to know. Just teach them how to search effectively for the information they want.
-- Sex is the antonym of pringles. Once you pop it's time to stop.
Dietel & Dietel publish a bunch of intro books (c++, java, a few others) that have a bunch of supplements/coding examples/etc. on their website. They're very newbie friendly and cover a good deal of information. Actually, so do some of the AP comp sci review books (my Baron's AP Java book has a lot of clear examples.)
Look at other high schools and community colleges that teach the same thing you do and see what books they're using.
Certification prep is a double edged sword. The books may be accessible, but they also may be too focused on the test and therefore teach to it rather than teach general skills.
Also, you don't need to use a book for everything. All my intro programming books do a brief overview of hardware, and my profs add when needed. I didn't even have a textbook for my high school computer hardware class (basically a build your own computer thing, but we also learned about karnough maps, logic, and other basics.)
open source modern art: laser taggi
Do your job for once and write a curriculum like every homeschooling parent must do? Because your teacher's union has blocked the aftermarket sale price of all textbooks?
My C++ teacher had a big book on C++, but all of his lessons were obviously custom written. He just used the book as a foundation.
"We need to get over this notion, that, for Apple to win... Microsoft must lose." - Steve Jobs, 1997
the third class should prepare juniors and seniors to enter the workforce and start a career in computers.
Are any employers anywhere willing to hire high schoolers in any tech jobs in today's economy?
Part of the hardcore faithful who believed in Apple long before it was cool again to do so
I feel like being a BOFH and suggesting this one:
Shell Scripting Primer
:-D
But seriously, I've never much liked any of the textbooks I've read, so I can't suggest anything specific. All I can give is one piece of general advice: whatever you do, don't fall into the trap of using Java as your core language. I understand why some schools do so---the ability to ignore such things as pointers and memory management is tempting---but the result is a bunch of students who don't understand memory management or pointers and only know how to program in a language that almost nobody in the industry actually uses, is fundamentally contrary to performance (at least where GUI apps are concerned), and is nearly impossible to force to integrate well with the OS the apps are running on. It's even worse than Pascal was in the 90s---at least Pascal skills transferred fairly easily to C....
If you have access to a Mac lab, you might consider teaching them Objective-C. There seems to be a shortage of good ObjC programmers out there, and the Xcode/Interface Builder combination makes it relatively easy for students to get their hands dirty and start writing interactive visual apps without having to resort to an abortion like Visual Basic or clumsy programmatic UI widget systems like [insert most GUI libraries here]. :-D
Check out my sci-fi/humor trilogy at PatriotsBooks.
I am in the process of writing a series of free ebooks for high school age students which teach the detailed fundamentals of how a computer works:
http://professorandpat.org/
The programming books are designed to work with a free development environment called MathRider:
http://mathrider.org/
Some of your students may find these to be useful.
Ted
I am on the advisory board for the Computer Technology program for a vocational school Maine, and we are trying to suggest moving on from A+ and teaching something else like Cisco or whatever. The market is way too competitive now for anyone with an A+ certification to survive. Example, why take a computer to a repair shop when you can get a brand new tower from Dell for $200? In my area, there are virtually no computer repair shops left. The only one left solely relies on support to companies and providing classes for its income. Really, who needs to know the base address for a parallel port anymore? Even a PS/2 port at that now.
Talk to the people at O'Reilly, especially their Safari bookshelf. They might be able to cut you a deal for educational use.
http://oreilly.com/
http://safari.oreilly.com/?cid=orm-nav-global
Sure, there's always new stuff, but it's more important to have a good grasp of the fundamentals than to know the latest buzzword bingo stuff that probably won't last long anyhow.
http://www.greenteapress.com/thinkpython/.
Its a great introductory programming book, focused on Python. Its coming out in print form soon, if that is a requirement.
If your teaching a non-academic programming class, I don't really see the point in using a textbook. Decide on your language and find a good introductory book for it.
Teach your students how to use Google. Teach them how to use it to find the information they need - how to use it to troubleshoot problems.
Don't bother with physical textbooks: it's a huge cost, and your students will not have access to them in the future when they need the information again.
Even at University level, I do not buy Textbooks for IT related classes - my Google-Fu provides better information anyway.
Also, consider e-books: Many school districts volume purchase access to E-books and Journals - they are an excellent source too.
In short: Google. It may take them a while to learn, but it's a skill that they will be able to use forever - in every subject, not just IT.
You can use Randy's Alice and teach OO programing really easily.
While I don't think I'm in a good position to recommend specific books, I feel that from my experiences with my nephew (we're quite close) I should add my 2 cents.
While you're in a great position to educate students with regards to computers and in reality, you could even prepare them for A+ and even Cisco or Juniper certification before they leave school, I believe that you should take advantage of the opportunity instead to teach them general computer knowledge and not specialized.
I have worked indirectly with CompTIA and have even assisted in writing books for A+ certification, but I prefer to believe that students taking courses voluntarily in high school should be directed towards higher education in computer science instead of providing them with a certification track that could allow them to go straight to work after high school. I believe that the A+, Network+, CCIE etc... track is great for guys that never got the higher education and want to work their way up the food chain without going to the university at the age of 30.
Don't get me wrong, preparing kids to take a CCIE which would get them $85,000-$125,000 a year the moment they graduate high school sounds great, but if they were able to achieve that by the time they left school, they could achieve so much more with a few years in the University.
Now, if you're teaching in a place where the students might otherwise be doomed to a life working in factories in dead end jobs, or in a place where the percentage of students continuing to higher education is disappointing, you would do them a great favor preparing them for certifications and careers straight out of high school. But if you make it obviously profitable for students to just ditch college and the university because they are certified for jobs right out of high school, then you could in fact be robbing the world of the valuable resources of higher educated scientists.
Teach the students computers as a science at the high school level, not as an engineering skill. If you're teaching at a proper (meaning public) high school as opposed to a vocational school, then computers should be approached in the same way as physics, biology or chemistry.
The students should leave your class knowing where computers come from, they should understand the history of computers. Maybe you should try to teach a limited set of electronics including discreet math (or just general boolean logic), you could even communicate with the local junior college and find out if you can design a credit track where you can use their curriculum to allow students to take college level 1st and 2nd year courses in high school and then take their finals at the college. This is actually how my high school worked and because of that many of the students continued on to New York Institute of Technology with 90% of their first two years of university credits completed.
Well, that was my two cents... I hope you find a good path to follow.
P.S. - if you do end up going down the certification track instead, please choose useful ones. A+ and Network+ are for guys driving silly vans to peoples houses with stupid names like Geek Squad. They're the fat assed, butt crack hanging out of their jeans plumbers of the computer business.
First of all, how long do you think it takes for a book to get to market? Between 6 months and a year it's still brand spanking new.
Secondly, even in computing good books become classics - Think K&R for C programming.
Thirdly, newer books often just make minor modifications to the old text. Hell some just renumber pages to keep up sales. (Hell some teachers re-use course notes for years in a row at a time with little revision).
Fourthly, 5 year old skills are still useful. Few if any companies are using bleeding edge stuff exclusively.
Then there's the Net which is a great resource. There are a ton of free tutorials on the web for various things.
If you've got access to 4 year old books and the Net, quit whining and looking for the most up to date books. You might as well ask for a pony.
These posts express my own personal views, not those of my employer
Certs can be useful in the real world, but skills are better. Use this time to teach them fundamentals, not how to pass an arbitrary test.
Good-bye
Go online. Search for some of your local college websites, or perhaps just some colleges with reputable CS programs.
Go to their CS department pages, and search for their introductory CS courses.
Look at the books that they're using!
Take note of 4 or 5, then go to a library or bookstore or something and browse through the titles you can find.
Judge how well each book tackles the material and then pick one.
Ye gods, what a load of snotty attitudes people seem to meet this actually very important question with. Have you guys forgotten that you were once beginners that could hardly find the "Any Key" on a keyboard? Even Americans are not born with the genetic code for how to use a computer; not unless evolution has picked up speed recently. Ok, so there are still only a few responses so far, hopefully the quality will improve.
As for your question - I don't really know. I think it is a very important subject, too important to leave to those that can only view things from one perspective. But you are on the right track - teaching based on open source has the potential to teach more than just how to use computers or program; the open source philosophy and method is very similar to the scientific exchange of ideas, something I feel young people learn far too little of these days.
Perhaps, instead of finding an already written book you could base the courses on a combination of hands-on lessons and your own notes + assignments? I suspect that is what I would do - let them learn about HW by taking apart (and re-assembling) a PC, teach them theory as the need arises from what they are doing. For OS theory, start with UNIX/Linux - it is in many ways the "purest" operating system and allows you to see how the hardware is represented in software. UNIX is a very good starting point for any excursions into all kinds of subjects in IT - filesystems, network theory, programming, system administration etc etc.
High school is not a place to train job skills. Rather, it is almost intended to weed out the productive members of society from the unproductive. It is almost a test- if you can go to school regularly and complete coursework, you will probably be reasonably successful in life. You probably have the capacity to go to work regularly and complete your duties there. If you can't do this, chances are very good (though not definite) that your list of life accomplishments has already been completed.
In short, teach how to learn new things and solve problems. The actual material will be again outdated in a couple years anyway. Job training should be done by employers.
Even those who arrange and design shrubberies are under considerable economic stress at this period in history.
.. the third class should prepare juniors and seniors to enter the workforce and start a career in computers.
The point of high school is not (or should not be) to prepare kids to be mindless worker drones. The point of high school is (or should be) to give them a good, basic education.
http://h30187.www3.hp.com/ Is a great place to learn some basics such as Intro to Word, Excel, Windows, Photoshop, etc. I have an MCSE & MCDBA. The books for those are pricey. Having a cert is better than not having a cert. Give them the goal of getting an A+ cert, or at least training for it. Hardware is the same all over and not vendor specific. And yes, for MacBoy in the wings with a rebuttal, it still has a keyboard, monitor, harddrive, memory & CPU just like every other PC.
The best books I've ever used (these were at the college level) were just bound stacks of paper that had been written over the years by the instructor. They weren't officially published by a publisher, but if you know what you're talking about, and you know what's important to you and your class, then you can easily gather enough material to fill a half inch binder with paper.
Not to mention, I still have the books that I'm referring to, and still use them. They make great references.
Most published computers books are entirely too dense and wordy. Just write the important parts down, fill in with lecture and as you go, and you'll be fine. It doesn't sound like you're teaching advanced micro-programming at MIT, you just need something cheap and functional.
Why bother with dead-tree versions? There are thousands of FREE online tutorials/guides/how-to/wikis that these kids can learn from. For any of them that don't have 'net access at home, use the schools copiers/printers to give them something to bring home.
Teach them dammit, don't just hand out a book and hope they figure it out. Earn the right to be called a teacher. Perhaps then when the smart ones ask "Why..?" you can really answer.
"The price good men pay for indifference to public affairs is to be ruled by evil men." ~Plato (427-347 BC)
As a former High School InfoTech student and current College Programming Student, I really don't find textbooks that useful at all. Truthfully, the only use I ever get out of textbooks (other than reading the questions the teacher's assign) is reading the examples and the using the reference section.
Not only do examples and references exist on the web, but it is SO much easier to use a reference with hyperlinks than to have to jump between pages of a book
If you really need some good ideas I have a list of resourses:
- CodeSyntax - Basis syntax for Java,C,Python,etc
- JavaBat - different levels of Java puzzles (ajax handles compiling/etc, no software required)
- Eddie's Basic Guide to C Programming
- ANSI Dictionary - unbelievably nice ANSI dictionary, fully cross-referenced.
Consider setting up a wiki-book full of information, labs, excersies and tutorials. This is a computer class after all and information should be easy to find without needing to pack yet ANOTHER heavy book around. To make your job easier, you could allow the students to add stuff to the wiki (log activity of course), even setting up a page where they can add useful websites they've found.
Can someone give those of us from a different part of the world a set of ages. High school in NZ means 13yrs to 17yrs. What age are we talking about?
I reserve the write to mangle english.
I've never been a fan of textbooks -- especially in scientific fierds. They tend to be notoriously out-of-date, and wildly inaccurate even when new. Too much effort is spent making things seem easy, or otherwise dumbing down the content to the point where it becomes meaningless.
But computer disciplines come with a natural advantage: documentation. All of the avenues that you are exploring have solid documentation. Not only is this documentation accurate, it's almost always up-to-date.
I'd suggest skipping the textbooks and giving your students the real experience. Teach them how to handle reams and reams of documentation across multiple avenues.
The good thing, from your side, is that you don't have to give them the most complicated advanced stuff off the top. There are a lot of small steps to be taken with any documentation -- from the equivalent of a "hello world" program and configuring routers all the way up to more complicated yet still manageable aspects like protocols and cross-interactions.
So I'd suggest that you select a few disciplines as you have, grab real live official documentation -- lots of it -- classify them according to complexity -- and by complexity I mean the requirement of additional working systems -- and take your students through actually doing something small.
Small things can be incredibly simple when you read the instructions. Documentation is nothing more than that. I can think of no better skill-set in the computer world than to gather three-thousand pages of documentation on your topic, locate the six pages that apply to your current project, follow them precisely, and then explore their surroundings to see the magic possibilities of yoru new-found power.
That kind of skill easily propegates itself as one bit of knowledge allows you to explore the next. And since it's real actual documentation, it's all 100% (well, let's pretend) correct and useful. Your students will be able to legitimately list things that they've done with little more than quality supervision.
1. what would be best to learn for sys admins.
It's highschool, right? We hear day in and day out that noone has time to teach the 3-R's any more. Might I suggest Algebra and Trig? They can learn sys admin in vocational school... Yeah, I know, your course is in computers, but still. Highschool is for learning basic general education.
2. I'm currently finishing up a PhD in engineering at Berkeley, and I haven't used a course text in a couple of years. The profs have their own notes/articles/papers/etc they want to work from.
If your goal is to get these kids 'ready for the workforce' as juniors or seniors in highschool, you may want to focus on data entry and technical writing, or perhaps following pre-made guides to fix/replace known hardware and software problems.
Realistically though, you are not going to prepare them for the workforce at this point if you're trying to teach them about, "hardware, operating systems, networking, security, and more." That is, frankly, remedial, and outside of certain scopes, the average worker does not use it at all.
The only ones able to go into the workforce at that point will have already taught themselves, and you can't easily 'teach' interest.
As for certifications - most of which are not actually worth anything in the real world except when comparing lists of identically-qualified individuals for a call or initial interview. Not useless, but not great. You'll still need experience to even attempt to compete, unless it's an entry level job. Do not teach these if you can help it.
Now, let's step back a bit. What is your real focus?
Is it REALLY to get them ready to go to work, to have marketable skills? If so, your best bet is - sadly - to find a book on excel and/or powerpoint. They don't need a copy for themselves - in fact, they shouldn't have one. Just make sure they know how to google/use the built in help, because it's more valuable to teach them how to find info, than how a single version of a single app works. Half your class will likely be bored because it's too easy, and the other half will never understand if someone else doesn't show them exactly what to type. ... however, powerpoint and excel go a long way in almost any office position. There's many books on learning Office apps, so take your pick there.
On the other hand, if your goal is to get them ready to go to college and become involved in the IT industry post-degree, that's better - but harder. I would recommend picking a scripting language and show them the basic concepts you can find in any "Intro to Computer Science"-style book, regardless of the language it uses. Perl and Ruby might be a good choices, as they're somewhat forgiving. Granted, you may want to even try JavaScript, so all your examples/homework can (easily) be performed in a web page and thus graphical and more interactive. The downside to all of this is - it'd probably be difficult to find a book to help you out. I can't think of one that would give you a lesson plan. You'd be tasked with doing much of the legwork yourself.
Still, I think that would be the most valuable route.
I figure less than 1 out 100 people have what it takes to be a very good programmer. The foundations for them will be different than the foundations needed for other students and the wrong ones can create a sort of brain damage that will take years to unlearn and I'm not sure some bad thought processes can ever be unlearned.
I would start the 1st week or two off with a very basic system of what the computer is doing.... i.e. moving numbers around. Go find a computer book from the 1950s for ideas on how to do that. Next build on the ideas that all software builds on complex layers of other software. Show them assembly code (but not x86 ick), basic, C, logo, and lisp for a start. Explain why they all have their uses and see how they react. Show them that the simplest problem involves many levels of depths and then explain how different groups each have their own area like networking, cpu design, programers, operators and maintenance coders.
For intro to programming, the IDE makes more of a difference than the language. Its one reason VB was used a while back since it had an easy to learn interface and they could write simple programs that did simple things and focus on that and not how to get something compiled. Most of todays IDEs are so full featured they can be hard to use for the level you are looking at. Just try not to pick a language that encourages programming brain damage (like Basic in all of its forms)
Two more free (as in b... uh... orange soda) one is a python textbook...
"A Byte of Python
Introduction
"A Byte of Python" is a book on programming using the Python language. It serves as a tutorial or guide to the Python language for a beginner audience. If all you know about computers is how to save text files, then this is the book for you...."
That's one's in 5 different formats and 16 different foreign languages
http://www.swaroopch.com/byteofpython/
The other is "Lessons In Electric Circuits
hosted by ibiblio
A free series of textbooks on the subjects of electricity and electronics
http://openbookproject.net/electricCircuits/
Let them make their own! Since basic computing is just that, basic, why not let them find their own examples on the Internet and in the library. Make it part of their grade to find good examples of whatever topic you are teaching.
Part of a good basic foundation for computer sciences should be learning the skill to find information on topics you aren't familiar with.
I'm in my 40's now and without that basic skill I'd still be writing COBOL code on a VAX somewhere. This business changes too fast to teach any specific language or technology to be useful in their futures.
While there has been extensive debate here, over whether to teach Java or not, I have found that if one wishes to teach/learn object-oriented programming, not only does Java do a good Job, but Objects First with Java - A Practical Introduction using BlueJ by Barnes & Kölling really drives through the concept of classes and how they relate to objects. This is done through BlueJ, and in that regard, BlueJ is actually a very nice tool. One should not fail to mention to the students, though, that for real coding, emacs, vi, eclipse, <insert favourite editor/IDE here> would be favourable, but for a basic understanding of the nature of OO, BlueJ is great.
"The number you have dialed is imaginary. Please rotate your phone 90 degrees and try again."
This book has been useful to me in the past and has quite a decent range of various subjects. It might be a bit technical for some high school students, but in an academic setting w/ some hand holding most could do it.
Scan last year's books, or whatever supplemental material you may want to add, and put it in a pdf and onto an sd card and into a Nintendo DS.
Cost: $100 per student for all books, updated, with additional supplemental materials every semester.
They get: One small book to carry with everything of theirs in a backpack, all their information bookmarked or copy pasted clearly with a stylus.
I get: One less thing to worry about at the PTA meeting.
I hold very few opinions. I hold information based on observation and fact. If you wish to disagree, please use facts.
Hands down, the best introduction to programming I've encountered is How to Design Programs. The full text is available online, though you can buy a copy from MIT Press if you really want.
Nominally, HtDP uses Scheme, but it's such a tiny subset of the language that it barely needs the name. Instead, the book focuses on the fundamentals of programming. HtDP's philosophy is data-centric. Instead of directly presenting recursion, for example, it presents recursive data structures, from which recursive functions naturally follow.
Last year, I was a TA for a first-year CS course which used this book; the course was phenomenally successful (as always). On the other end of the spectrum, HtDP has been used successfully in high schools and middle schools as well.
Let them write their own! Make it a part of their grade to find examples of the topic you are teaching from the internet, the library or the pile of old books you have.
Your classes seem to be teaching "Basic Computing" and part of the basics is how to find information on topics you are unfamiliar with. Without that basic skill, I'd still be programming in COBOL on the last dying VAX in the city.
Maybe buy a few good books and make a library they can reference rather than 100 of the same book.
For your lower level intro to programing class your own notes and information from web pages that you Copy, paste and print, Should get do fairly well. Yes you could get a "Class Set" of a single book but as for budget your understanding and ability to find the odd answers to strange questions, along with a set of Highlighters/ markers/ Color Pencils to hand trace code with would be more useful.
For the advanced classes a bunch of random books on different languages you have access to more complicated topics seems to work the best for a advanced classroom situation where students are possibly more self guided as they surpass your skill level or have a basic handle of general computer programing and algorithms. So you might have a few A+, MSCE, Linux, etc books in the class for them to take a look at and decide what interests them. I would talk to Local Collages about what they expect there computer students to know and at what level, So you can try and keep the amount of repeated teaching to a minimum. It is nice when your teacher tells you that you should be in a CS 266 Class because you know linked lists, and sorting algorithms, indeed of taking the CS 160 class where you Learn If, then else, case and variable types. And for schools outside your area they should have a portfolio of programs that show what they know so they can go to an adviser and get into the proper classes at that school, hopefully with little repeats.
That type of format for a advanced class also allows for you to point those who are not expecting to go to collage (Something that you should always encourage that they do) to be more focused on certifications. I would also see what kind of hoops would have to be gone threw for a student to take a certification at a local testing site, and what if any help the school district can help with the financial aspects (One of the big reasons students are not continuing to collage)
... and found hundreds of links. For the cost of printing out a PDF, you can give each student his/her own text. If you contract with a local Kinko's or printing shop, you could have these printed and bound for minimal cost -- far cheaper than the $40-50 that a computer book would cost at Barnes and Noble.
'He who has to break a thing to find out what it is, has left the path of wisdom.' -- Gandalf to Saruman
I am eternally grateful to the progressive teachers at my school who ensured that we learned binary, octal and the boolean operations at the age of 12. That's partly because knowing those things got me a summer job in a mainframe facility at the age of 15, but also because, having got that summer job, I could start to understand what it was all about. Being able to read octal kick started me far more than a knowledge of BASIC ever did.
From scarped cliff or quarried stone she cries "A thousand types are gone, I care for nothing, no not one."
Any textbooks we use would need to cover quite a breadth of material, such as PC hardware, operating systems, networking, security, and more.
And more? Either you are only going to touch on each topic ever so briefly, or the whole course is misguided. There is no way anyone is going to learn anything useful, let alone anything that would get them hired, by learning all of these topics at once. They all deserve their own class, and there are plenty of books on specific topics.
Certification tests usually come with their own set of guides for teachers.
If you are a high school teacher, may I put in my suggestion here?
For me, if you really want to teach about programming (and I think teaching high schoolers to get certification is plain wrong), a high school teacher should inspire students to want to go into that field (or other scientific fields, as a matter of fact). High schoolers can learn the language syntax just fine, any language, and do the debugging too. You can give an introduction to most languages, and they will pick up and do it. The issue here to make them pick up the interest in doing it, and that's the hard part.
I remember when I was at high school, we had that programming course (optional class), where the teacher was teaching us programming Logo on those 8086 machines without hard disk. We needed to have a boot floppy to boot up, then another floppy for loading the program. The teacher thought he was God, we were a class of 40, and the class lasted one hour and half. He refused to create more boot disks so that everyone can boot at the same time, he just had one, gave it to one student at a time, and waited behind the student until the machine boot up, and passed the floppy to the next student. By the time the last student finished booting up, the class is almost over. None of us had computer at home, that's the only place we had access to computer programming.
Not only that, his moto was "Can't do", you can't do this, you can't do that. A few of us came up with some nice tricks to do things, and he threatened to fail us if we don't program his and his only way. For example, to draw a polygon, you must use his method, can't have anything else. We used the math learned in high school, including sin(), cosin(),etc, to program some fun stuffs, like creating a cube and move it inside a bigger cube, with proper perspective and angle and all that. 3D stuff. Yeah, you can do this with just high school math. Guess what, we would have failed the class, if we didn't accept to draw stupid picture by creating points and link the points together with stupid lines. All he wanted was the pictures so that he can print them, stick them on the walls, so that the principal could see his "achievements".
In that class of 40, all of us hated programming by the end. Only two got into computer science at University, I was one, and that's because I wanted to program a computer that can talk to me, like HAL in "2001 : Space Odyssey" (yeah, I read that book at the time).
A high school teacher can do much more than that, and don't underestimate the intellect of high schoolers, if you can rouse their interests.
I think a competitive project between teams would be great, you not only teach programming, you also teach teamwork at the same time. You don't need fancy textbooks, just some introductory materials. Don't limit their imagination, encourage them to go beyond what you teach.
In contrast, we had a great math teacher. Yeah, Mr. Belleau, if you are reading this, I'd like to say, thank you, although it's more than 20 years ago now.
Given the choice, I prefer a paper source over an internet link nine times out of ten. A good book, properly indexed, is almost always superior to someones personal page or site on a topic. There are exceptions, but overall books offer better presentations. The physical format of a book is also easier on the eyes, and more accessible than a computer monitor.
Hyperlinks are all very well for wiki-trips, but wiki-trips are really more for general knowledge learning. The question of the credibility of information on the internet also refuses to go away. Everyone by now has encountered information on wikipedia they know to be wrong or misleading. The same goes for websites. I don't mean to say that books and printed materials intrinsically have more credibility. But it's usually higher for them, though not by an order of magnitude.
If you want specific, detailed information and training on a topic, you need to read a book.
May the Maths Be with you!
I think, based on the books I have ordered for my office over the past 2 years, that greater value is had in teaching broader skills that are not nailed down to a particular language or technology since they tend to become out of date so quickly. My thinking is that a good programmer can program in (almost) any language, so there's more help to students to become better programmers than simply more knowledgeable C# or Java programmers. Some of the excellent books I've read include Dreaming in Code (providing a great understanding of why software development is hard, as well as providing an insight to the IT "heroes" that we should know about, i.e. Donald Knuth, Guido Rossum, Mitch Kapor, etc.), Code Complete (great all-round software development) and Joel on Software (for an assortment of IT-related discussion including a look at unicode). These books are fun to read and very interesting although Code Complete IS somewhat more technical and serious than the other two. I wish we had gone through such books when I was at school, but perhaps they would have been over my head at the time. I hope this helps, but use it or don't use it as you will :-)
Or "Head First (anything else)" (C# is pretty good). Very engaging, lots of geekey and slightly adult humor. Covers a lot of stuff.
Some of the humor is a bit adult - might not fly in Texas, Missouri or anywhere else prudes have undue influence.
Umm highschool is not going to prepare any of these kids for an IT job in the real world. Maybe as someone's monkey. Not having textbooks does suck tho, unfortunately that's the way many publicly funded schools are going.
Knuth. What else is needed? If they can master all three volumes of Knuth they can teach themselves whatever else is needed from the manpages, or failing manpages by directly inspecting the binaries.
Tanenbaum's network textbook is good.
http://www.amazon.com/Computer-Networks-4th-Andrew-Tanenbaum/dp/0130661023/
"It has a problem with presenting facts in an orderly manner and often won't elaborate on some of the more advanced topics."
Kind of like...Slashdot!
... between a rock and a hard place.
I can tell (or at least surmise) from the nature of your post that the decision to teach to a certification is not yours. This is a shame - as so many other posters have indicated in no uncertain terms. While I *generally* agree with their sentiments, perhaps this advice will help as well:
Don't be afraid to push the boundaries of what you have been tasked to do.
Whenever I am looking for applicants for one of our software engineering jobs, I pay particularly close attention to the applicants' resumes. Considering that a resume is often the only chance for a person to showcase themselves to a prospective employer, it would be difficult to over-emphasize the importance of a resume. Specifically, I look for errors in spelling and grammar (their/they're/there, two/too/to, etc). Just about all word-processing software comes with spell-checking and grammar-checking built-in, and if an applicant can't even run spell-check on a resume, I won't bother to interview him or her. I don't believe that a person willing to submit a resume with such basic mistakes is going to have the attention-to-detail required to be an effective software engineer.
My suggestion: in the class in which you intend to prepare the students for a job, ensure that you spend one or two class periods on ensuring that they have presentable resumes.
For a broad based sysadmin (Linux/Unix) book I would not hesitate to recommend Paul Sheer's Rute User's Tutorial and Exposition which is on line for free, as well as available in print: http://rute.2038bug.com/rute.html.gz
It has basic coverage of hardware, binary, C, regular expressions, SMTP, IP, DNS etc.
Ben
I started with the built-in BASIC-2 interpreter on my first computer (Amstraad). My very first computer book was the BASIC-2 manual from Amstraad. My very first program was the knock-knock joke involving bananas and oranges. My second program was one to help my teenage son with his "find the volume of a..." homework.
From there I went to x86 assembly language using the shareware a86 assembler. Then C and C++ (Borland), VisualBasic, a bit of Cobol, Delphi, Java and perl, along with some dBase and Oracle-style SQL. Now 15 years after that BASIC-2 introduction, I do quite nicely as a freelance web developer using PHP, MySQL and Javascript/AJAX. I'm studying PDO and SQLite at the moment.
I must say, though, that I haven't bought a book for eight or ten years; the Internet and an inexpensive Xerox laser printer satisfy all of my study and reference needs (now with a new cheap color laser printer it's great for printing out all of those free quilt blocks and free knitting and crochet patterns available online, too).
I'm not sure what the best texts are these days, but I learned more about computers from the K&R C book and a book about writing games in BASIC back in the day. K&R taught me data types, pointers, functions and I/O -- all that stuff in one short, quick read.
The BASIC games book was a fun way to learn to create programs - taking game rules and turning them into code. The games were all text mode, so it was about how to implement games like the Game of Life, Star Trek, Tic-Tac-Toe, Yahtze, Text Adventures and Battleship. Each game emphasized something different like boolean logic, loops, branching, subroutines, arrays, text processing and interacting with the user. It was a lot like learning to cook - you got to play what you wrote when you were done!
Implementing the games from the BASIC book in C put the whole thing together. Breaking things down into functions, building reusable libraries and so on all were just natural ways to do things.
Man, I wish we had Python back then. BASIC sure was limiting and C took lots of lines of code...
-- $G
so, I graduated from highschool a few years ago, and here's what I think -
for the love of god, don't give them textbooks. nobody likes textbooks. just sit them down in the computer lab and go through the lesson step by step. hands on experience is best, for this subject in particular.
also - allow the students who have a computer at home and already know all the stuff to 'test out' of each lesson, and go sit off by themselves and do something else. otherwise, they'll be screwing around on myspace or youtube and distracting the other kids who actually need to learn.
Seriously. I don't mean sit down and start writing. I mean come up with lesson plans and find or develop hand outs to give the kids. Teach them to find the information on their own! This is the most important skill you can give kids at any level of education.
My experience is that textbooks are a cheap solution to a complex problem. They never answer the kids questions and are a one size fits all solution - which is one of the biggest problems with our education system in the US.
If you give the kids a basic idea, and give them assignments and handouts that teach them to do things on their own, I would venture to say they will learn more AND perform better. Especially if you expect a lot from them.
Derek Greene
I recommend J. Glenn Brookshear's Computer Science: An Overview. I read an earlier edition and thought it was brilliant: the writing is clear, the material is well organized, the book includes lots of examples, and thoughtful questions and exercises. Above all, Brookshear's text is enjoyable to read.
Even if you decide not to assign it to your students, the book will be a great resource for you if you design your own course.
See the book's website at http://www.aw-bc.com/brookshear/ and the author's personal website at http://www.mscs.mu.edu/~glennb/.
Buy the books for CCIE and MCSE (or whatever MS call it now), one copy of each book for the entire class. Tell them if they don't pass both by the end of the year they get sent to the frontline in Iraq. If they pass that test they will be setup for a lifetime in IT.
But you might consider The IT Consultant for your third level class... the one about entering the workforce... not as a textbook, more like a study module out of a larger framework.
The book focusses, not on the ins and outs of programming to the Java API or building a sort algorithm that sorts in less than np time... but on those soft skills aspiring programmers find challenging at times... project management, client communication and satisfaction, applying your skills of intuition and logic to business scenarios.
It depends on the area they're going to work in.
If they're trying for tech support, maybe a book on Indian (or even Chinese) accents.
If you can't spare the $39 per copy to buy the Linux Network Admin Guide, there is a free but slightly dated version available:
http://tldp.org/LDP/nag2/index.html
General principles are still valid and if you or your students get stuck, they can look online for updated material - a guided search, rather than a from-scratch. Plus, it will teach them one of the most important lessons in IT/IS - 'RTFM'. Good luck!
1. Contact your Heathkit rep and check into updated books. The latest system from them in slick, and can help achieve A+.
2. Find local businesses willing to serve as an advisory committee, or provide internships.
The best books for a sysadmin are O'Reilly books, hands down. http://oreilly.com/ Unix Essentials/Linux/Unix in a Nutshell, Systems Administration, BASH, IPTables, Apache, Java, MySQL, PHP, Perl, Sendmail. Thats 10 classes. You could probably cover IPTables and Perl in 9 weeks if the classes were more than once per week. You could probably throw JavaScript and Python in there too.
Armaments, 2-9-21 And Saint Attila raised the hand grenade up on high, saying, 'O Lord, bless this Thy hand grenade' N
Why limit the media used. Request an online (local or internet) version of the textbook too. Even if it's only the [paginated] text it will fill in for indexing failures and would (depending on rights) allow excerpts to be added to experiment notes, used on the projector/white-board, and I'm sure used for lots of other things.
In Uruguay we have specialized high schools, on the one I went we had 3 years of programming (C/C++/VB), 2 years of Database management, 3 years of hardware and networking, Logic, and a few more, in top of our regular classes (maths, chemistry, etc), and we used books like Deitel&Deitel C/C++; the result 18 years old highshool graduates who then go to college with 3 years of advantadge over they fellow classmates who at the same time are qualified to start working on the IT sector.
My advice would be to start with logic and structured programming, most 15 year olders should be able to handle it with no problem whatsoever.
cisco.netacad.net
The curriculum is extensive. My College and Career Academy Instructor for Cisco uses it, and it's completely on the computer/internet!
I recommend it in a heartbeat.
http://ocw.mit.edu/OcwWeb/hs/intro-courses/computers/index.htm
(T)he (O)ld (M)an
Why not use the 70-290, 70-291 70-293 and 70-294 MCSE / MCSA Certication Exam Microsoft Press books? They cover some basic Windows Server administration, subnetting, active directory, security and VPNs all in a palatable way that they will likely actually see in the real world. I was suprised, I went back and got My MCSE/MCSA after being in the field for several years and I actually found some of the information quite useful.
I went to a very good computer science school (University of Waterloo), and in a lot of courses we'd use books that were 8-10 years old. In 1999, we used a book called "Modern Operating Systems" published around 1993, in the DOS era, pre-linux 1.0 iirc. The fundamental theory just doesn't change that fast and you're not doing the students a service by teaching them the latest fads.
What year was "The Art of Computer Programming" written again? And it's as relevant today as it was the day it was written.
So to say the book is obsolete *only* because it's 4 years old makes no sense at all.
goals.
Certification training is only one kind of education, and not particularly important for people who are five to eight years from entering the work force. Of course, computer science is a practical field, but knowing the underlying theory is kind of the point of pre-professional education.
Thinking back over my own history, I think the most important book I ever read was Kernighan and Pike's The Unix Programming Environment. This was a wonderful book, in that it was extremely practical, but at the same time introduced readers gently to things like lexical analysis and parsing. The world would be different if everybody who ever went overboard for XML had read that book. I also recommend K&R's The C Programming Language, even though it is not a theoretical book, simply because it is exceptionally well written and clear. Programming is a fundamental skill, and it's good to learn from clean, well thought out examples.
Perhaps, the shortest advice is anything with Brian Kernighan as an author. Software Tools by K & Plaugher was very influential in my thinking, although the whole "software tools movement" never took off the way its proponents hoped. I don't know what recent editions are like, but these books have practical examples that illustrate important ideas.
Other really good texts, although far to advanced for high school, would be Applied Cryptography by Bruce Schneier, and Introduction to Algorithms by Cormen, Lieserson, Rivest and Stein.
In the end, I would look for books that have a practical syllabus (if you will) that illustrates important theoretical ideas. If students entered CS knowing how to write a fairly clean C program, if they knew how to write a simple grammar that could be parsed by recursive descent, if they could do a simple object oriented design (perhaps Mr. Bruce Eckels' books, which are available online for free would be good here), if they could write both simple filter programs as well as programs that run in a more nondeterministic style, they'd be ahead of where a lot of people coming out of CS programs are.
Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
Teaching High schoolers basic computer repair and network security is proabbly not the best use of a highschoolers time. Chances are they proabbly know more then you can teach them anyways. Most companies will not higher a high schooler without some formal training from a technical institute and without experience anyways.
Teaching electronics and how electricity works along with math and english are better uses of a high schoolers time. If you want to get into Operating systems you could go over some of the more advanced details of Windows and Linux. Windows will be hard to go too far into without having a lab enviroment you can essentially distroy on a regular basis. You could also get them interested in linux and teach them linux and how it works as its easy to see whats going on inside and what components make up an operating system. You could teach some advanced shell stuff in Linux which will come in handy later when they are programming. You could also use linux to teach some more of the detail in TCP/IP.
Leave the A++ and network security to higher level institutions as I would bet most highschoolers will find the theory too boring and they will not understand the practical nature.
It mite be better to teach kids how to solve problems using programming languages like ADA or Java where they syntax of the programming language may not be all that important in the long run anyways. What is important though is the ability to take a concept and apply it to a problem. Java may not be best for this, but its likely the most fully featured OOP language which will help them get ahead when they do go to a higher level institution.
Finding some basic books on Linux, Java, and ADA are proabbly not that hard. I like wrox press books for programming. As for a good linux book check out "Linux Administration Handbook" by Evi Nemeth, Garth Snyder, Trent R. Hein .
browse through the computer section of open source books
"The Most Fun Possible on 4 wheels" is at SunBuggy in Las Vegas
The market runs in cycles. And a high schooler starting now will graduate in 4 years. By the time the teacher actually gets a course up and running, it could be 5 or 6 years before the first certified student graduates.
While the market is looking at a downturn in the next few years, withing 5-6 years there will be a "talent shortage" as there always is. And I remember just about 8 years ago, I was at Linux expo surrounded by piles of 20 year old kids making from $80,000-$200,000 a year in companies that pretty much all went tits up... but still, while those companies had investor money, they were making it.
Just two years ago, I heard about salaries within the states for young guys in the $60-$90K range.
And even now, when the market is going to shit, any kid can take a CCIE certification to Norway, Luxumborg, Switzerland or any other high paid European country and get that. After all, here in Norway, a fry chef at McDonalds gets 95-110NOK per hour (basically minimum wage) which translates to roughly $45,000 a year when all is said and done.
So, before you start telling people which bodily excretion to dissect in the future, I would recommend broadening your horizons.
This book was designed for beginning programmers and is used in highschools everywhere:
http://www.htdp.org/
See also "Teach Scheme (not), Reach Java"
A while ago, I told a programmer friend that I was thinking of teaching myself a little programming, maybe go back to school for it sooner or later, and I asked him if he could recommend a beginner's book. He does most of his work in C++, so he gave me an old-version copy of Beginning C++ Game Programming / Michael Dawson. He teaches basic CompSci classes still at a local colleges and is quite fond of the book. It's a pretty solid book that teaches almost all through direct examples, using short games as a framework for the examples.
When I'd finished that book, I asked him what he thought I should pick up next. He suggested maybe I should get something on data structures. So I ended up picking up a used book off of the net for data structures, one that advertised itself as being very simple to read and using lots of examples. This "simple" book was less like a book of real-world theory and more like an algebra book. All of the uses of the various structures were presented in a "When X, cout Y" format, and I found myself reading and re-reading a lot of things just to figure out what all of the abstraction meant and what its purpose was.
You're going to be teaching kids that are currently taking a lot of classes that feel like just filler to them, that are just taking up time to fill out their credits. IMHO, try not to clutter them up with just another "memorization class" - try to find material that engages or amuses them rather than just throwing facts and language at them.
Libertarians somehow believe that private businesses should be stronger than governments but weaker than individuals.
or info info if you prefer.
That is a pretty big task to prepare high school students to enter the computer workforce. Unfortunately this way of thinking about careers in computers is preparing your students for what are becoming (have become?) commodity dead-end jobs. I say this because the computer careers which can be had with nothing more than high school and technical certifications are either hard to find or low-paying without much promotion potential. If this were 1998 you could get away with it, but not today.
I think that you should forget about making your students expert programmers, and focus on activities which will be fun, interesting, and encourage them to enter the computer field in general--with the intent being for them to go to college. The key is that they are doing something so that at the end of the class they will say, "boy, I can't believe we were able to do that." This could involve basic robotics, or just about anything else, but probably not poring over the details of sorting a binary tree.
I go to Guerin Prep High School in Chicago. I belong to a school that uses laptops as textbooks. I think the entire idea is amazing. not only do I have the book on the computer to my use, I have the entire internet to my disposal. I support the "laptopification" of all US schools.
by Limoncelli, Hogan, and Chalup. http://snipurl.com/3m6u1 [www_amazon_com] It doesn't discuss OS specifics, but rather general skills on how to be a good admin, run a good helpdesk, etc. A very good book. I recommend it to any sysadmin.
"No prints can come from fingers / If machines become our hands." -- Jack Johnson
Of course, computer science is a practical field, but knowing the underlying theory is kind of the point of pre-professional education.
Computer science is no more about computers than astronomy is about telescopes. -- Edsger Dijkstra
Programming is a practical field, CS is mostly theoretical (or should be). I think a lot of programmers would be better off just going to a trade school, and it's been historical accident that CS majors are writing in the corporate world.
This occurred because historically at first the only people who knew anything about computers were EE's and then later CS grads. Most of the original tech companies hired from US colleges and universities because that's where the people who knew computers came from, and that's just continued.
As an industry we need to start differentiating the people who need to know about N=NP? versus the people who are just "code monkeys". You don't need to be an EE to wire a house, an electrician's certificate is sufficient.
the third class should prepare juniors and seniors to enter the workforce and start a career in computers. [...] kids on their way to becoming junior sysadmins, programmers, networking professionals
18 year old kids with three classes from high school don't get any of these jobs unless they work for minimum wage and are prepared to never earn much more. HR almost always requires degrees for professional positions. The 1990's are long gone; you should be preparing these kids for college.
I would prefer to use the internet, but if you're looking for text books on computer technology, your best bets would probably be -
PC and Compatible Computers : Assembley Language, Design, and Interfacing Volumes I & II
by : Mazidi, Muhammad A. / Gillispie-Mazidi, Janice Catherine
Data Communications and Networking
by : Behrouz A Forouzan
Computer Networking
by : Stanford H. Rowe
In college my textbooks were O'Reilly books... much better than "real textbooks", and a tiny fraction of the price. I'd recommend simply using O'Reilly. Why pay more for less? They are the gold standard right now.
What country is this guy in? I can not imagine any high schools around me teaching "Jr. Sysadmin" or similar technology. Maybe its time to go back and visit a school.
I would suggest doing what many college professors do, write your own book. Half my classes were "books" purchased from a local copy shop that they professor had prepared him/her self pulling information from all over in what they thought the course should cover.
Just relying on the internet is bad, although teaching the uses of google is good. The problem is I see many pages written by "so called authoritative" people when barely grasp the concepts they talk about. Sometimes 80% of the page will be right, the other 20% isn't just wrong, its dangerously wrong.
Think Deeply.
While as a teacher you can't obviously recommend your students pirate all the material, you should go to elbitz.net or learnbits.info (both require free registration), and download several of their IT training videos (they have *everything*).
Once you find a few titles that you think are great and affordable, make a business case and get the school to purchase them so that your students can watch them. It should be no different than other teachers playing videos in class for their students on other subjects.
For teaching Cisco Networking you can also get GNS3 (dynamips) and get your students to build virtual networks or use it to test their routing abilities.
Good luck!
No trees were killed in the making of this post; however, many trillions of electrons were horribly inconvenienced.
Things could get messy if you get to the end of the year and realize that you have not been teaching what you should be teaching. You are not responsible for just teaching kids, you are responsible for making sure that what is taught survives legal scrutiny if questioned. Usually textbook recommendations are made at the state level, depending on your country of course. Unless you have tenure and are highly regarded in your field, don't solve this on your own.
You probably have a pretty good idea of what needs taught, but most subjects don't allow teachers to just decide. Do your homework, and make sure you have an agreement with your local school as well as the city board of education (if public) or whatever corresponds to that in your area. Make sure everyone agrees that there is a curriculum with no text, no curriculum at all, or if someone finds that both exist.
Depending on where you are, there should be a set curriculum that defines what should be taught, and what will be covered on national standardized testing. There might be recommended textbook series along with that as well. Just because the people you talk to don't know about it doesn't mean it's not in some dusty corner of the superintendent's office.
If you are stateside, ask for a copy of the national education standards, and then ask if the local curriculum has been aligned with those national standards.
The result of this will tell you what you need to know. Either the books you have are sufficient and you can supplement using suggestions from the rest of these answers, of you will know what you need to look for in books and will be able to make a case for purchasing after the school year has started. Cover your behind first.
Any of the A+, Network+, etc books put out by exam prep are relatively cheap and are GREAT (imho, read again in MY honest OPINION) in terms that they cover the information presented and do a very good job of prepping for the exam the book covers. (Also offers a discount on buying a testing slot) The advantage and draw back however is that they cover ONLY what will be found on the test, which means your prepped for the exam, which is usually fairly comprehensive, but it doesnt go very far beyond that. Again this can be forgiven because the test is usually pretty comprehensive
If this is a vocational curriculum, you might look for books on these various topics. I am sorry I cannot recommend any that would be appropriate.
However, it this is not a vocational group, then I would really discourage you from portraying computers as a career. Technology changes rapidly, and that is accelerating. Computer languages are here today and gone tomorrow. It is not even clear that in 20 years computers will be programmed the way they are now. It would be better to teach the kids in a survey manner, looking at the history of computing, the fundamental theory, and where it is likely to go in the future (present the various predictions of experts). That will provide them with a foundation for making informed career decisions.
Agreed. The talk about certifications made me cringe, too. Low-level certs are for losers. Help them get one, send them out in to the work force, and they'll wind up losers in the work force. Teach them how things actually work, send them to college, and they'll wind up smart people who succeed in the work force.
- There are plenty of books which teach how networking works -- you'll have your smallest problem, there. A lot of those are aimed at CCNA type certs. If you have to go for a cert-based book, go for the CCNA one, rather than the Network+ one.
- There are some dry ones on security.
- There might be good ones on OS, but most will be college level and way more detailed than you have time for.
- Hardware books all seem to be horrible over-simplifications with lots of drawings and cost a fortune.
On one hand, I see where you're coming from. This sort of overview class should be a solid text book. You shouldn't have to go it alone. You have several other classes to teach, papers to grade, parents to meet.
But I think you're forced to go it alone.
You've been handed a very hard class. If you do find a book, I very much want to know what it is. If you don't find a book, I think you'd be doing the teach community a HUGE service by videotaping the entire thing and putting up a website, so we can watch what succeeds and what fails.
As far as texts which will help goes, I'd strongly recommend a few chapters of some James Burke books, or (and this is probably better) a few choice episodes of "Connections" and "the day the Universe Changed". Be sure to include the sections which talk about the computers of Bletchley Park -- when "computer" was a job title.
You need to start the class with some old computers and screwdriver a hammer. You need to let them smash their way to ICs. You need to wake them up, right away, and then talk about THEORY. You talking will keep them awake, if there are props and they're involved.
Be sure to do an in-class exercise where you wire together some LEDs and some transistors.
A day spent on where jobs go, what they earn, and why they do NOT want to go work at Best Buy could change the lives of some of these kids.
I personally think the best A+ Cert Prep book out there is published by LearnKey. The author Mike Meyers provides a text book filled with information but presents it in easy to read format. He often cracks jokes and tells stories to keep the book lively in often dry areas. The cert prep package comes with CD's which provide hours of video that are extremely helpful. Their network+ book is also quite good.
When i hear of schools where kids are deprived of text books it makes me want to blow my brains out. What are we coming to to allow such conditions to exist? I wish I knew which books would be best for you and your students or that I had the funds to buy your texts for you. It's time for government to sober up and help young people get started with decent educations.
That is what I learned out of. Then man pages and the web after that. There is a great little appendix teaches Bourne shell scripting. I have no idea of a good Windows admin book. You will need to do some exercises in firewalls that are not in that book. Also little exercises that expose to all sorts of useful commands like grep, find, awk, jot, etc. If you need to teach both Windows and Unix, then there is no time for more in a high school type class in two years. If you can avoid the Windows you should get the camel book and teach perl as that is a sort of natural extension from shell scripting to more powerful scripts.
To steal a line from XKCD: "You're doing it wrong".
You've just posted to Slashdot to find a textbook to teach your course... on the first day of school?!?
Whatever happened to the notion of getting things ready *before* they're needed?
If you are going to start them on the road to programming you first need to teach them the skills which are the base to any good modern programming language. Find books (do not rely on the Internet; use it only for examples and syntax) which teach good program design (such as moduler programming) and basic programming structures (such as for..next loops). Don't use books for certification tests because they are too application specific and these technologies change so quickly that the information won't do them any good. As far as languages go, you should pick a language that isn't too tough for beginners. Preferably one with a GUI environment that will assist them on syntax. Microsoft Visual Basic is an excellent example and you can download the Express version for free. If you choose something such as C++ or Java you should use an environment like Ecliplse. There are some language/environments created for teaching beginning programmers. Programming tutors such as Alice (www.alice.org), Phogram (phrogram.com), etc. teach programming basics and give quick visual and sometimes graphical results. This helps keep their attention so they feel they aren't wasting their time writing things like 'Hello World'. You know how dull that gets after the millionth time. You should let them work in teams as well to build their social and team environment skills. This is more like real world programming where we rely on each others knowledge and experience to get things done.
Seriously, I'm in hot demand because I've passed almost all the courses for a BSc in IT, in addition to some other IT/CompSci training I've done, but they don't pay me quite so well as if I had a degree. If I only had high-school level training, well the most I could do is get some retail/repair/tech support job that doesn't pay well and otherwise generally sucks. A BSc seems to be a nasty middle ground, they're looking for a Master's/PhD instead (maybe it's more bang for the buck?). So basically by having BSc-level training and more but without the piece of paper, employers get to have their cake and eat it too, they get someone to work with all that "icky" code for less pay, and I get the jobs that someone with a BSc would get, except I can actually get them. It all works out well.
I am a big fan of Allen B. Downey's How to Think Like a Computer Scientist: Learning with Python. It assumes no knowledge of programming, and it takes the reader through the ideas that are central to computer programming while teaching them Python.
It starts by thoroughly defining variables, expressions, and statements and then goes on to teach functions. Conditionals, recursion, and other fairly standard operations are discussed. After introducing each of the basic classes that are built in to Python, the book finishes with an introduction to object-oriented programming. It covers the general concepts of objects and classes and then shows the reader the use and usefulness of classes such as linked lists and stacks, guiding the student through their implementation.
Throughout the book, Downey shows the reader how to develop a programming mindset and teaches effective debugging and incremental development. I found it both informative and interesting reading. The book is replete with examples, and each section has a programming challenge at the end of it to test the skills just acquired.
The book is available for free on the Web or can be purchased as a physical textbook. I have only read the Python version, but the same author has other versions of How to Think Like a Computer Scientist using C++ and Java.
This space reserved for administrative use.
Upgrading And Repairing PCs By Scott Mueller
http://www.amazon.com/s/ref=sr_st?rs=1000&page=1&rh=i%3Astripbooks%2Cp_27%3AScott+Mueller&sort=daterank
A+, Network+, Security+ Exams in a Nutshell By Pawan K. Bhardwaj
http://oreilly.com/catalog/9780596528249/
Building the Perfect PC, Second Edition By Robert Bruce Thompson, Barbara Fritchman Thompson
http://oreilly.com/catalog/9780596526863/
Big Book of Windows Hacks By Preston Gralla
http://oreilly.com/catalog/9780596528355/
Why not teach kids a lisp?
In my opinion (and the opinion of many others) lisps are the most expressive computer languages. They maximize the ease with which a programmer can solve a computational problem by offering a powerful set of features that are not universally available in other languages.
How about Paul Graham's "ANSI Common Lisp"?
There are a number of good scheme books out there too.
While bash has a "better" language than CMD.EXE, just about any shell language can be used as a first stab at sequencing, looping, and branching. Even a few lessons on the shell can give students something they can begin using right away, since it is built into the system. Since the shell is installed by default, you can get to work right away, without a download and install -- often illegal on lab machines anyway. I can recommend A+ texts (even out-of-date ones) since the focus on the right set of topics, albeit in more detail than you probably want. Get your lab to install Cold Storage so you can have students change settings, find and install software packages, whether admin tools, languages, or something like installing Ubuntu within a file on a FAT partition.
Course objectives? I take it the kids already have seen computers, and probably think they know what they are. Any book that has the name of a product in the title will have no lasting educational value. If the kids learn something about how and why computers work, and not just how to use some particular product, the knowledge will have lasting value. It can introduce them to a whole field of knowledge. And, it is much more likely to be interesting.
A commonly used volume for first college courses in programming concepts is: "Structure and Interpretation of Computer Programs - 2nd Edition" (MIT Electrical Engineering and Computer Science) by Harold Abelson and Gerald Jay Sussman (Hardcover - Jul 25, 1996)
And, there is an instructors volume that you might find useful: "Instructor's Manual t/a Structure and Interpretation of Computer Programs" - 2nd Edition by Julie Sussman (Paperback - Sep 15, 1998)
A very common first-course volume for computer networking is: "Computer Networks" (4th Edition) by Andrew S. Tanenbaum (Hardcover - Aug 19, 2002) (Though, to be fair, there is not really a standard text in this area.)
I don't know of any text that would prepare a person with high-school only to enter the work force in any technical capacity. The technology changes too fast for any how-to-use-it training to be useful for more than a couple of years. One course cannot go deep or wide enough to be useful to an employer in a technical capacity.
Don't waste your time teaching people IT or MIS related stuff. Teach them real programming in C and C++. Don't waste your time on Java or C#. Teach them practical stuff too. Nobody cares that you implemented 5 different search & sort algorithms.
The US Army 25B school basically uses this book.
A++ guide to managing and matining your PC by Andrews. It's probably not the best, but it does the job.
MIT has their courseware all online. I would start here: http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/ And if you want to stay with dead trees, I have also found that O'Reilly is hands down the best publisher of computer books. Also, one of the best books for UNIX is Design of the UNIX Operating System by Maurice J. Bach.
the boards of education who couldn't stomach a gang of competence first teachers, who didn't grovel to Political Establishment.
How would YOU like it if all teachers groveled for you, except some bunch of shop teachers who called you an ignorant eradicator of children's potential?
Any child born with NEED to work with their hands, now has no school training in high school for them.
But the big ass egos in the board of educ don't have to feel threatened by equality among the physically skilled, so the world must be better, right?
As for the Good Old Days, it was based on rote memorizing, not on understanding, so it wasn't so good for us who need to understand something to work with it.
Something like A+ certification would be helpful. Just like you have a basic automotive class, there should be something similiar. It should be structured so you can monitor progress and have a test at the end so you can evaluate. Some people suggest have them using the internet. That should be a resource. Don't believe everything you see online. "It was on the internet, it must be true". lol
For introductory programming:
I have taught CS101 in community college with the Deitel Java book. I think its suitable to the task at hand: introducing computer programming. Note that there are some excellent exercises including appropriate classical problems such as the Knights Tour. Without students having a calculus background you can't reasonably give them some of the classical mathematic problems such as exponential decay.
I do believe that students in computing need a basic grounding in not only discrete math but probablility and statistics so that they understand median, mean, and standard deviation as well as simple variance and the most fundamental distributions (uniform and normal: student-t, weibull, et al. are for serious courses in college).
Networking: it can be tough if the students lack the discrete math background and even worse if they haven't gotten exposure to trigonometry and logarithms but I would say that with judicious selection of chapters and assignments you should use Forouzan's book Data Communications and Networking http://www.amazon.com/Data-Communications-Networking-McGraw-Hill-Forouzan/dp/0072967757/ref=sr_1_7?ie=UTF8&s=books&qid=1220369409&sr=8-7
I think that you are on the right track. I wouldnt start them on the A+, rather, I would say to have them get a non micro$loth centric certification like Network +. Encourage them to begin using opensource OS's and learning to make them work. It is my opinion that we aren't the only nation that can no longer afford the Micro$loth Monopoly and claim any sort of fiscal responsability
Whatever you do, don't get any textbook (or for that matter - website) that is too dependent on a particular operation system or language. There are still too many "fad" OS's" and computer languages out there to "hitch your wagon" to just one and hope it goes somewhere. Before people point to Windows as a stable OS let me say that there are many versions of windows and all are different. Apple and Linux are no different in this respect. Stick to the basic concepts and you will not go wrong.
Having trained three guys on my helpdesk this is what I recommend for someone interested in getting started in IT support.
For computer hardware I would go with Mike Myers All in One A+. It gives a solid overview of how computers work along with how to fix them starting at a very basic level.
http://www.amazon.com/Certification-All-One-Guide-Sixth/dp/0072263113/ref=pd_bbs_sr_2?ie=UTF8&s=books&qid=1220369045&sr=8-2
For networking go with a Network+ book. The All in one book is decent, but there are a few out there that are just a good.
http://www.amazon.com/Network-Certification-All-Guide-Third/dp/0072253452/ref=pd_bbs_sr_2?ie=UTF8&s=books&qid=1220369766&sr=1-2
Additionally if the students get the certifications they can probably get their foot in the door at a lot of help desks.
For the advanced class I would recommend "The Practice of System and Network Administration" by Thomas Limoncelli. It requires a moderate IT knowledge, but it teaches a lot of the basic ideas of system design that people seem to miss.
http://www.amazon.com/Practice-System-Network-Administration-2nd/dp/0321492668/ref=pd_bbs_sr_1?ie=UTF8&s=books&qid=1220369813&sr=1-1
This isn't the best basis for a programmer, but it will teach them a lot of useful things they won't get from most programming classes.
-Tim
... And while I could rant about unions, I've got no beef with teachers, public or private. Home school is a terrible general solution. There's a reason home-schooled children statistically outperform public school children: They have dedicated parents that care about their education, and manage to maintain a ridiculous student to teacher ratio. Anyone who thinks that can be universally applied to all children is a moron.
But to further your point, any teacher that decides to abandon other references is going to have an uphill battle to be a successful teacher. It would be one thing if such references didn't exist, or were cost prohibitive. But that simply isn't the case an overwhelming majority of the time.
Wikibooks & Wikiversity are both young projects by (the) Wikimedia (Foundation), the organisation that also runs Wikipedia and Wiktionary. They're both very young, new and not yet very evolved yet, but since these are mostly internet geeks, most of the projects' strongest subjects will be in the IT branch. Just an idea...
MIT offers online courses for free, and many of the books they use are available in electronic format. Some of the ones I've seen online textbooks for are the intro to programming and intro to networks. Might be worth checking out.
not only is time travel possible, it's irrelevant.
In addition to the free books available on the Internet, Wikibooks has a bunch of textbooks available. The CS ones are here:
http://en.wikibooks.org/wiki/Subject:Computer_science
BB
This is more for those who are serious about programming, but if they are, find it here.
Engineering and the Ultimate
You don't want your kids taking shop at school anyway. All kids idolize their shop teacher. Screw that. You should always be viewed as superman to your kid. Take the opportunity to spend some time with your kids and have them idolize you (hell, invite their school friends). At a minimum, you need a work table, vice, drill press (even those kind that you strap a hand drill into), a coping saw, a hammer, a rasp/file, and some sandpaper. You can make just about any small wood craft with those tools. A drill press makes supervision and safety easy for the only thing that can really fuck them up. If you want the deluxe version, get a radial arm saw or a bandsaw, but bring that in after basic hand tools have been mastered. Extra bonus? Get a lathe.
My shop class taught drafting. You can do that, but it changes the price considerably. Also, I suck at drafting, and there's no way my kids would idolize me after seeing me demonstrate my ineptness. So, treat that as a separate subject. Instead, buy a book with templates or download them. Anyone good with their hands can learn to use all of the above tools. As a bonus, you can have your kids build shit to sell at a craft fair and recoup the costs (no, that's not serious).
Maybe you're a dumbass? Just uninstall the application and reinstall?
If you are in the Portland OR area and would like a shot at it, drop me a line.
It's a possiblility, But, a reinstall was attempted. The broken photocopier does not reinstall the existing TWAIN driver. Reinstall left it in the same condition. Reinstalled the TWAIN driver.. Same result, still hooked to the uninstalled photo editor.
At this point we've reached 3 hours of un-billable hours as it isn't fixed yet. Even worse is there is absolutely no sign of improvement at all. How many dead end tries does it take to fix and how much can you bill for this type repair. This is why there are few mom and pop shops.
The little fix this takes hours and hours and is only worth a few bucks to the consumer. These types of repairs simply are no longer offered as they don't pay the rent. Nobody tries to fix this type problem for a living anymore as they quickly find they burn the midnight oil and get paid maybe an hour for the 3-12 hours it actually took. I quit at 3 hours. The work performed didn't fix it and was un-billable.
This is typical of Windows problems. Easily broken like glass windows and replacement is the practical fix. Reassembling the pieces is a waste of time and is never quite right.
The truth shall set you free!
The CSTA is a great source of curriculum and materials for teaching computer science:
http://www.csta.acm.org/
I'd recommend joining (it's free for you!) and making use of their resources.
Capron, Computers: Tools for an information age.
Not sure if it's the most appropriate for HS, but sure it's comprehensive, introductory, interesting.
I don't know if this has been mentioned yet, but I recommend that you talk with or go visit the CS/CIS/MIS instructors and professors at colleges and universities in your area. I can't guarantee that they'll be helpful, but they may give you some ideas as to books to buy and, perhaps more helpful, the base skills students would need to do well in the college classes.
Like with most of the other posters, I agree that it's better to stick with generic topics than to get too specific. Logic and problem-solving are the two most important (and long-lasting) skills for IT workers to have. For hands-on purposes, though, buying several specific books for yourself that you can use to get the students to do some low-level work would be good. Give them a chance to do a couple things on both Linux and Windows so that they have some exposure to multiple systems.
As for A+, Network+, and all those other certifications, I'd recommend that you acknowledge their presence and, if possible, to teach so that those tests (the ones you are acknowledging) can be passed with some more prep work on the students' part, but not to teach solely for those certifications.
Also, regardless of the class, one or two class periods should be devoted to ethics. The students should be made aware that just because they have access to sensitive information, that they should not abuse that privilege.
I am looking for a book to help my child, a high school student, become a high school teacher. Is there a book that you would recommend to help me do this? Are any schools hiring right out of high school? [let me know if this goes over your head.]
My 15-year-old loves Head First C#. It's a great book for learning to program, and it is easily accessible to a high school student.
Speaking of O'Reilly, they publish a series of books called "Head First." These are very detailed books that are geared towards new programmers and developers. I also recommend the Mike Meyers Passport (not related to Austin Powers) series of books. Courtney
"How to Design Programs" (http://www.htdp.org/) is an excellent book to learn programming. It has a very gradual approach and has been used successfully with high schoolers. It also has excellent tools. It uses Dr Scheme, a open source lisp interpreter with many batteries included (IDE, debbugger, graphics, etc.).
That's funny, this just came up yesterday, but take a look at http://javabat.com/ -- it's a free site with little practice coding problems that run live in the browser. You type in your code and it runs the unit tests right there, so it's a good low-barrier resource, for a class or lab without requiring any setup. The problems are small and focused on algorithms: strings, loops, recursion, logic
Disclaimer: I built it
Shop went the way of the dodo (I wonder how many lobbies benefitted from that), and now PE and art are following.
I'm not sure what school district you happen to be part of, but I sure wouldn't want to be there.
The high school my kids are zoned for still has shop (wood, metal, AND auto) classes (multiple levels, in fact), so while I don't know for sure, I would figure that most of the other (if not all) high schools here have it as well. And PE is still a daily required class for 2 years of high school (as it has been for 20+ years). And as far as art, there are more art-related classes than ever before. In fact, there are more classes of just about all types. And this is at one of the oldest high schools in one of the largest school districts in the country, so my instinct tells me that the majority of other high schools are able to pull off the same things.
Perl - $Just @when->$you ${thought} s/yn/tax/ &couldn\'t %get $worse;
Have a look at "How to design programs". It's based on the language Scheme, which makes it easy to deal with topics that would be "advanced" in other languages, but easy in others. Scheme is a fairly good first language -- simple concepts, great generality of principles, and not a lot of obstructive details dictated by the limitations of historical machines. And it has a lot of implementations, most of them free. In my place, we use PLT scheme.
Personally, I'd look at using the "...for Dummies" series of books for introductory courses. They're pretty well written, written at a "low" enough language that they're easy to understand, and reasonably priced. They're also updated within reasonable timeframes so you don't really have to worry about getting too outdated.
For certifications, there are tons of books available. Although another poster didn't like the A+ anymore, I think it would be useful for some high school students to do the A+ as a first step, to see if they're truly interested in learning more and taking computers as a career path.
check out "How Linux Works" on amazon.
I honestly can't pass up the chance to recommend my favorite book - it attempts describe exactly how something works, which is quite useful.
It is TCP/IP illustrated Volume 1. It describes the IP protocols in detail - if you have a specific question that needs to be answered ("How does recursive DNS work" or "Why do I keep on seeing duplicate ack packets") this book has the answer. It does not cover lower level protocols (ethernet, ATM, etc) but it's a great book. It's slightly out of date (for example, it only has SNMP v1), and doesn't cover routing protocols (except it might cover RIP, I don't recall), however it's a great and extremely useful book.
There are two other books in the series, volume 2 is a programmer's reference to the protocols in volume 1, and volume 3 goes over a number of lesser known IP protocols (T/TCP for example).
It's good for introducing concepts, and should keep students' attention. It sounds like you are trying to cover a lot, and I hope that you don't just expect the students to read through a book to gain understanding - i.e. you can do a lot just by bringing in an old computer and pulling it apart. As some others have pointed out, the internet is full of material. I would suggest having a look for video tutorials on the web, and that way students don't need textbooks at all - you can just refer them to the appropriate sites and tutorials
I'm not sure what the goal is for your third class, but I would recommend the following books:
-Upgrading and repairing pc's by Scott Mueller (QUE), a book they'll no doubt use for some time and it's something you can use as skeleton for a certain aspect of what you want to teach.
-Running Linux - Dalheimer & Welsh (O'Reilly), a very basic book but I'm not really sure what these people have as knowledge. You can use this to start them off with some basic linux stuff.
-TCP/IP foundations - Andrew G. Blank(Sybex), again very basic and lacking good information on ipv6 but it'll help explain the basics if they don't know it yet (history, routing, dns etc)
Using that information you can have them fire up a linux distribution (command line preferably but I guess you can let them use a GUI and open a terminal) and let them experiment with routing. (two network cards required in each pc and enough switches) for example make them go from pc1 to pc4 through pc2 and pc3 creating the routes and gateways through commandline. You can of course take this excercise a step further by explaining the tcdump command and afterwards analysing the obtained dumpfile.
I would create my own synopsis of everything you've explained. But I would advise that they would start making their own at a point so they learn that they should document everything they do in a network. The way they do that is up to you and depends on what direction you're going in. Personally I would go for some sort of CMS (not a wiki just to be difficult) but if you also want to go deeper into scripting and or programming you can make them create .xml files or something with python(or again whatever you prefer) for which they also have to create a visual interface.
For the windows part I haven't read any good textbooks that really explain everything properly. But there are some good practical exercises on MSDN, at least on the old one, I'm sure all those Contoso examples are there somewhere.
Obviously at some point you'll want to work with virtualisation software to avoid everyone having to play around with 5 physical pc's.
Once they install a server and workstation, teach them how to use sysprep(they'll much appreciate it later) and create a small domain they can play around with with whatever software you like(Do note that if you plan to run Exchange 2007 in a virtual machine with some other client-pc's running, you'll need very heavy hardware).
I hope this helps, I could keep going, but I'm having a feeling this post is going to get lost and buried in the avalanche of comments.
Regards,
Vasa
I think Behrouz Forouzan's books networking are a fine place to start, first with Data Communications and Networking followed by TCP/IP Protocol Suite. DCN has the basic physics and developmental evolution (incl. hardware) for telephony and networking. TPS breaks down the Internet pretty well. It is a lot of info, but all of it ultimately simplified and accessible.
Bukowski said it. I believe it. That settles it.
My favorite real idea for a class would be: 1. here's a box of:
- parts sufficient to build a computer
- a printout of the book at http://www.linuxfromscratch.org/
- a CD with the source tarballs on it and a liveCD to get the machine booting
- an ethernet connection with a static IP assigned (to make it a little easier)
2. Build a LAMP server entirely from source (and keep the source directories around for proof)
3. Progress points for:
- a bootable machine
- a pingable machine
- a static web page
- a dynamic page
- a dynamic page with data from a database
Make them read the Bible!
There's no reason high schoolers can't be exposed to "college level" material (other than the price of the books). The textbooks used by MIT are by far the best. My master's program used MIT's undergrad textbooks and they are amazing. You can go to the MIT.edu site and get a list of all their textbooks as well as their complete lesson plans. They even have their lectures posted as videos! Check it out: http://watch.mit.edu/
it all depends on what the students want to do - I think going through the basics that would prepare them for the lowly servicedesk role to start with would probably be quite benificial.
Other then that tailor it to the class - how many are planning on being programmers? sysadmins? nwadmins? dbadmins? etc
Without knowing this information the only thing I would suggest is the following book: Practice of System and Network Administration by Thomas A. Limoncelli (Author), Christina J. Hogan (Author), Strata R. Chalup (Author).
The books brilliant and doesn't go into the technology but more the principles and the methodology. Also has questions at the end of each chapter and if the class takes an interest in a particular area there are further books recommended.
You may want to check your local Vocational Tech school to see what books they use in their certification courses. Optimally, you would take their classes to understand at least as much as you are trying to teach them.
I've been teaching on Long Island in NY for 11 years, for the past 4 years I've used books from GoodHeart-Wilcox for my Computer Information Technology Course (PC Repair and troubleshooting). The only other books I use are Cisco Press for the Cisco Networking Academy Certifications and SDC Publications for our AutoCAD classes.
The book below does a good job of breaking down key concepts, identifying important terms, and exposes students to sample A+ Certification questions. It is not a perfect A+ Prep book, but a good start and has worked out great in my classes.
Hope this helps.
Computer Service and Repair: A Guide to Upgrading, Configuring, Troubleshooting, and Networking Personal Computers
http://www.g-w.com/products/detail.asp?id=108
If you want more info contact me at: b.buonomo(at)wi.k12.ny.us
Get some computers up and running, then form a shoestring network and advance to the next level of managing that network.
Introduce more variables into the mix, routers, printers, Macs, etc and see what it takes to get them talking effectively.
Then when [whatever it is] is working, you break it in some way that requires troubleshooting and set them loose on that. Yes they will break stuff along the way, but that's part of the learning process.
No, I cant spell. :p
Wetdog, I am a resource teacher for the CTE computer programs at our 20 high schools. Here is what we use: A+-----Mike Meyers (Total Seminars) and Jean Andrews (Course) Network+---------Mike Meyers (Total Seminars) IC-3 --------Total Seminars IC-3 Text by Jernigan and Courseâ(TM)s IC-3 book We support these three with the Total Seminars/LearnKey Video Series which we put on our servers and stream out to our schools. We generally get about 60 kids a year certified in Network+ and A+ and a hundred more on IC-3. We will see how we do after employing the video support this year. If you have any questions, please feel free to call or email. I am very active with both CompTIAs E2C program and ISTEs SIGCT, which is right up your alley. You are not alone. Also, Avail yourself to two GREAT training opportunities... In early August every summer CompTIA hosts Breakaway (next year in Las Vegas). They have 1.5 days of preconference training WITH the authors of the above books. Plus other teachers and SMEs run sessions throughout the sessions. There is a nice exhib hall and all meals are on the house so that you can concentrate on sharing with your cohorts. It is AWESOME! Also every June ISTE sponsors NECC, the granddaddy of all educational conferences. The SIGCT hosts many events and sessions that deal with your topics. PLUS it is the biggest EXHIB hall since Comdex closed down. Next June it will be in Washington DC, so should be huge (ie., 17,000 folks)! Both are great, though different. While some may say just hop on the internet, be aware that at home that may be fine, but lots of the great sites are off-limits to schools due to the cussing on the discussion sites. Also, the support you will get from Mike and Jean's sites are what you will need. There is a reason that they are the top two authors in the field. Once you meet them, you will really understand. Scott Horan, IT Internship and Resource Teacher School to Career Office Van Hoose Education Center, 3332 Newburg Road Louisville, KY 40218 (502) 619-3132 cell 485-3320 office scott.horan@jefferson.kyschools.us shoran@insightbb.com
decent way to introduce a lot of CS related topics.
for example
Bruce Eckel's thinking in c++/java/python http://www.mindview.net/Books
some good free perl books http://learn.perl.org/
always javascript or
Introduction to Computer Science using Java
http://chortle.ccsu.edu/CS151/cs151java.html
there's more