LWN.net Logo

Computer science education and free software

By Jake Edge
January 6, 2010

There is an effort underway to enhance the current high school computer science curriculum in the US. Spearheaded by the US National Science Foundation (NSF), the intent is to "transform" high school computing education from one that is focused on application and programming training to one that opens up more of the "magic of computing". The idea is that computing cuts across many different types of activities and jobs, so narrowly focusing on things like word processing or Java programming may not provide a good overview of the field to teenagers.

The NSF executive summary [PDF] of its "Transforming High School Computing" project cites several statistics that highlight the current problems with computing education in the US, along with its plans for addressing them. Essentially, it would like to see three new classes developed that will benefit students who are headed in different directions.

Two of the courses would take the place of today's introductory and advanced placement (AP) computing classes, while an entirely new course would be developed for students who are headed to college and interested in a scientific field. But instead of an introductory class that teaches how to use a keyboard—something that is likely needed by very few high school students today—word processing, and the like, the new "Pre-AP" curriculum would "go beyond mere computer literacy to teaching fluency in the fundamentals of computing and computational thinking, using an inquiry-based instructional approach and engaging students with exciting, 21st century applications."

Likewise, the new AP course for potential science majors will "explore, in more detail and depth, computational concepts introduced in the "Pre-AP" course, including critical thinking, logic, algorithms, etc." While the text reads a bit like a marketing brochure (which, in some sense, it is), filled with phrases like "rigorous and engaging", it would seem to be a step in the right direction.

Another goal is to train 10,000 new teachers in the new curriculum so that by 2015 the new courses are being taught in 10,000 schools. These are fairly ambitious goals and will require a public/private partnership for funding according to the NSF. There will undoubtedly be large hardware and software companies falling all over themselves to give money and, more importantly from their perspective, hardware and software to schools in support of this effort. That's good, as far as it goes, but the NSF and those working on the project should most certainly consider the role for free software as part of the "transformation".

It is certainly true that there is far more to computing than learning how to use Office and Photoshop (or even OpenOffice and GIMP for that matter). Students will clearly understand computers and computing better if they get a sense for what computers can and cannot do. That implies access to a wide variety of different types of applications, not just those that might be used in an office or programming job, which is something that free software can provide much more easily, at a much lower price than the commercial vendors can.

Consider the breadth of applications available for today's Linux distributions—all installable at the click of a button. Most certainly many of them are not as polished as their commercial counterparts, but they are available to explore. Want to try computer aided design for the birdhouse you are building in wood shop? There's an app for that.

AutoCAD, even provided for free, seems a bit like overkill to explore the idea of CAD. Tracking down the proper computer with the proper license for the CAD software also seems like it would be counterproductive. Free software can be installed easily and abandoned quickly if it does not suit.

Teacher training could also focus on how to find interesting applications, and to note particularly good ones for specific purposes. It is far more useful to understand what a spreadsheet can do, how it works, and how it can help with your homework, than it is to know the specific function names in Excel, for example. Just as good programmers can switch languages fairly easily, computer literate people should be able to switch applications without much difficulty. That is done by understanding the underlying concepts and then being to able to apply them widely, which is something that the diversity in free software fosters.

The cost savings of using free software are likely to be quite large, but the commercial companies will try to reduce that advantage as much as they can—and take a tax write-off while they are about it. But the advantages of free software go well beyond the price. For anyone interested in "how it works", free software offers the ultimate inside look. From most proprietary software companies, that can't be bought at any price.

For budding programmers, or those that think they may have an interest, free software provides not only a look at the code, but also a look at the development culture. Finding a bug in some package may be frustrating, but a quick look on Google or the project's web site may find others who have the same problem and have a patch available to fix it. There is a lot to be learned (both good and bad) from grabbing a patch from the internet and rebuilding an application.

All of that is not to say that the entire curriculum should be narrowly focused on free software. There is plenty to be learned from the proprietary brands. Trying to keep Windows and Macs out of the classroom is unlikely to work, but is also a bad idea. Diversity is important when trying to learn about computers, so seeing how different organizations and projects do things can only help there.

The information available so far is unclear about what tools will be used in the new classes. One hopes that the NSF, which has sponsored a whole lot of free software along the way, doesn't fall into the trap of thinking that Windows and Mac are the only choices. Even if those two do dominate the computer labs in high schools, there is plenty of free software that runs atop them. The benefits of free software outlined here will not surprise many (any) LWN readers, but they may not be obvious to those outside our communities and that's something worth changing.


(Log in to post comments)

Computer science education and free software

Posted Jan 7, 2010 10:54 UTC (Thu) by modernjazz (guest, #4185) [Link]

While the new proposal might be a good thing, I'll flag a few points of potential concern. In US education, terms like "engaging," "inquiry based," and "magic" are sometimes used to sell a curriculum which essentially dumbs down rigorous content. Obviously, their usage of the word "rigorous" is meant to indicate that they don't intend to do this, but I suspect one must look at the details to find out what is really intended.

Certainly, the mathematics curriculum in the US suffered a lot from well-intentioned efforts to "make it more engaging" and to "build mathematical self-esteem." Importantly, the NSF---which is spearheading or at least funding this effort to reform CS education---bears some of the blame. A concrete example of this is the NSF-funded Investigations/TERC curriculum, which has some good ideas but, if taken too literally, is basically a disaster overall.

This is of course relevant for free software because members of the general public who can program are a part of its lifeblood. Perhaps the best thing about the proposal is that it's adding two new courses, apparently without significant change to the current "A" AP course. As long as these alternatives attract more students, and don't siphon away talent that might otherwise take the "A" course, we'll be better off than we are now.

Computer science education and free software

Posted Jan 8, 2010 6:41 UTC (Fri) by roelofs (guest, #2599) [Link]

I would add another caution to that provided by modernjazz: don't limit yourself to thinking just in terms of existing PC software packages, even Linux/FLOSS ones. There's a tremendous opportunity here to really get Socratic on their asses (if you'll pardon my Greek) by asking them how they might design software. For example:

  • How would you write a search engine (say, for a trillion pages)? (distributed computing; grid/cloud processing; breakdown into component pieces, e.g., crawler, indexer, runtime query engine; character sets, languages, cultures; time vs. space tradeoffs; etc.)
  • How would you simulate a galaxy? (big-O notation; scalable algorithms; particle-particle vs. n log n methods; what about gas dynamics? what about magnetic fields? etc.)
  • How would you build a large virtual world (say, for 100,000 networked users)? (distributed computing, self-consistency, latency, network protocols, action games vs. chat vs. building, intuitive user interfaces, etc.)
  • How would you design an autonomous robot? (narrowing of design focus; component breakdown; wheeled vs. walking vs. flying vs. other; use of off-the-shelf components; simulated vs. physical; etc.)

I would argue that this sort of teaching is far more important than simply playing with existing software (though the latter is important, too, particularly for some portion of the students) since (1) it requires serious thought; (2) it can be done in a collaborative, one-to-many fashion (i.e., a teacher-led classroom); and (3) the really big, hard problems are not only the ones that stand the best chance of firing the imaginations of the students but are also those that have a serious, real-world need for more skilled practitioners. And those who benefit from NSF grants are precisely those who can best provide the class notes--or even the teaching--for these kinds of problems.

Of course, the number of students who would really dive into this stuff and participate is undoubtedly far outweighed by those who would sit like lumps with their eyes glazing over. Good teaching skills and a good teaching environment are prerequisites... But that goes even for the off-the-shelf-software approach.

Greg

Computer science education and free software

Posted Jan 9, 2010 4:58 UTC (Sat) by tseaver (subscriber, #1544) [Link]

The comment:

<blockquote>
the commercial companies will try to reduce that advantage as much as
they can—and take a tax write-off while they are about it.
</blockquote>

is actually a bit weird: companies can't take tax writeoffs for donating their products: instead, the just don't have the income they would have had to recognize from a "normal" customer. If I donate USD $100 worth of software to my local school, I get *no* writeoff whatsoever for the "lost sales" of the donation; I can only write off the cost-of-goods associated with that donation (typically $0 for software). I get to write off any costs associated with the production of the software, but those costs don't normally go up on a per-unit basis for software.

Computer science education and free software

Posted Jan 16, 2010 10:56 UTC (Sat) by dlang (✭ supporter ✭, #313) [Link]

I'm pretty sure that you would get credit based on the standard retail value of the products being donated, not the manufacturing cost of the product (which is a pretty slippery value anyway, even for physical products)

besides which, if companies can get schools to train students with their products, what do you think they will use when they get out of school? this is why every major computer company has drastic student discounts.

Computer science education and free software

Posted Jan 18, 2010 17:17 UTC (Mon) by mcmanus (subscriber, #4569) [Link]

generally speaking the deduction is against the inventory's basis, not the fair-market (i.e. retail) value. Basically the basis is the fixed (aka direct) per-unit cost of making the boxes, cds, manuals etc (if any) - it does not include even pro-rata amounts of sunk costs (aka indirect) such as programming, testing, marketing, etc.. which are not fixed per-unit costs.

So the donation of a free site-license-key to a downloadable closed application really doesn't have a big tax writeoff potential.

See http://www.irs.gov/publications/p526/ar02.html :

Inventory

If you contribute inventory (property that you sell in the course of your business), the amount you can claim as a contribution deduction is the smaller of its fair market value on the day you contributed it or its basis. The basis of donated inventory is any cost incurred for the inventory in an earlier year that you would otherwise include in your opening inventory for the year of the contribution. You must remove the amount of your contribution deduction from your opening inventory. It is not part of the cost of goods sold.

If the cost of donated inventory is not included in your opening inventory, the inventory's basis is zero and you cannot claim a charitable contribution deduction. Treat the inventory's cost as you would ordinarily treat it under your method of accounting. For example, include the purchase price of inventory bought and donated in the same year in the cost of goods sold for that year.

A special rule applies to certain donations of food inventory. See Food Inventory, later.

Copyright © 2010, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds