Domain: mit.edu
Stories and comments across the archive that link to mit.edu.
Comments · 7,673
-
We've seen this class and scale of problem beforeThe Code-Red worm is a wake-up call
It's worth remembering that this sort of problem has been seen before, with the Robert Morris Worm is 1988. The similairities in terms of spread are clear, although the damaging affect (Morris brought down a large percentage of the then mainly academic based Internet) was much more severe - so far. The article makes clear that we need to be aware that things could be worse, when script kiddies start playing with this virus
Lessons were learnt then, and it probably makes sense to revisit them and ensure we haven't missed anything.
Those of us with machines at home running services should all be careful (be it Windows, Linux, Solaris, *BSD or whatever), and review our presentation to the world. Check out Bastille Linux for a start.
-
Water Water Everywhere
The base functionality has already been field tested by Rodney Brooks and crew during the Days if the MIT Mobot lab. Dr. Brooks developed and designed all of the "sensory" functionality they need into Hannibal, Attilla and a few others. Hell, strap a jet-pack onto Hannibal and let him go baby!! Even the A.I. won't be terribly difficult (though not trivial of course). It would be just a few more layers added into the subsumption architecture to provide the ability to filter and react to the data. I think the biggest stumbling block is the speech recognition and the fault tollerance needed to enact it to the point where it is "safe". So close to it but yet a few years off at least.
-
Re:Closed sourceThis is a bad blow for SSH the company. Didn't someone there quit a while ago since he disagreed about the decision to not provide source code to customers?
That was Phil Zimmermann, author of PGP, who quit working for Network Associates.
-
Boston Protest
The Boston protest will happen at high noon, downtown Boston. We're still working on the exact place. There's a mailing list set up for all those interested: send mail to dmitry-boston-subscribe@lm.lcs.mit.edu with the word "subscribe" in the subject or body to join. Archives are at http://lm.lcs.mit.edu/~cananian/hypermail/dmitry-
b oston/. See http://freesklyarov.org/boston for latest news. -
Well Said
What AI research needs is plenty of "RI" to crank through the conceptual problems too, not just the biggest supercomputers money can buy.
I could not agree more. IMO, the most exciting research in AI right now is the work being done at MIT by Rodney Brooks and his students and colleagues. Dr. Brooks is also keeping a close eye on progress in computational neuroscience and I expect a few conceptual breakthroughs to come from that sector in the not too distant future.
The traditional AI community has conviced itself that AI will come gradually. They're in it for the long haul. I completely disagree with that assessment. I am convinced (as is Dr. Brooks) that there is something important that we are not seeing. Once we see it, AI will be upon us like a flood, almost overnight. -
Link Festival (Karma Whore Warning!)
I Network, Therefore I Am by Robert Cringely
Reach Out and Touch Someone by Robert Cringely
More resources from his two articles:
- 802.11b Range Boost
- Yagi Antenna Design
- Build a dish antenna for $10!
- This server is running over a 10-mile 802.11b link
- Nokia Rooftop Technology
- community-supported, sustainable wireless nets
- 802.11b Range Boost
-
Even coolerAn even more interesting application would be to use this kind of net access with a wearable computer. That way, you'd really be connected everywhere.
(Whether or not that's desirable or not is another matter.)
And BTW I don't normally reply to myself, it only occurred to me after submitting. Never mind.
-
Dodgy link!The article's link to Ray Kurzweil is dodgy.
For information on the man himsdelf, you can visit,:
http://web.mit.edu/invent/www/kurzweil_bio.htmlHis company's website can be found at:
http://www.kurzweilai.netTom
-
All file retrieval?
Does this cover all file retrieval? What about the many different protocols out there? HTTP, FTP, TCP/IP, etc? The site with the patent description is already Slashdotted, so read a bit more over here. The legal battle is far from over, and this article is rather vague on the details. Why does it mention Intuit and Compuserve in particular?
-
Successed?
According to Stephen Pinker overgeneralising a regular past tense is a common error in small children. Howver, 'to succeed' is perfectly reguar. 'Successed' is the kind of error made not by human brains, but by neural networks that don't have the concept of a variable.
You have failed the Turing Test again. You are the weakest link. Goodbye. -
Successed?
According to Stephen Pinker overgeneralising a regular past tense is a common error in small children. Howver, 'to succeed' is perfectly reguar. 'Successed' is the kind of error made not by human brains, but by neural networks that don't have the concept of a variable.
You have failed the Turing Test again. You are the weakest link. Goodbye. -
Re:Why do they call it a FUNCTIONAL programming
In fact, some C programs have done quite well in previous years -- they just haven't managed to win.
What about Cilk Pousse? It looks pretty much like C to me... And they won the ICFP contest '98.
-
Re: Tools verus techniquesMany (nearly all) people new to programmer get distracted or become obsessed with "which language/tool/platform/etc."
It doesn't matter. It doesn't matter because the techniques are basically the same. You want to learn the concepts of programming, of abstractly representing information, writing a series of logical statements. Concepts like structured programming, modular programming, object-oriented programming, functional programming, and software engineering are vastly more important then whether you use GKT+ or KDEfoobar.
For ground-zero programming experience, I think Deitel& Deitel ___ How to Program books are a good choice.
Practice what you learnt in step zero.
Step two, I would strongly recommend reading comp.risks, The Mythical Man-Month, Code Complete, Programming Pearls, and The Practice of Programming. These focus on high-level knowledge, which is more important that low-level details. Other requirements include understanding computers, see Computer Architecture : A Quantitative Approach by Patterson and Hennessy. A hard-core introduction to programming, used at MIT, is Structure and Interpretation of Computer Programs by Hal Abelson and Gerald Sussman.
Honestly the details will become clearer and easier if you have a good understanding of the big picture first.
-
Does "ArabMedia.com" sound unbiased to you?Ummm, yeah, I'd believe something I read regarding Israel on arabmedia.com.
:)
Want to try reading some more reliable sources? According to this MIT "Nuclear Economics" course material:"Allegations that a large incident of HEU unaccounted for at the U.S. NUMEC facility in the 1960s was caused by theft of some 100 kg of HEU for transport to Israel, while never fully resolved, are probably incorrect.
See also Section III of this US Air Force paper, which says:In the 1990s when the NUMEC plant was disassembled, the Nuclear Regulatory Commission found over 100 kilograms of plutonium in the structural components of the contaminated plant, casting doubt on 200 pounds going to Israel.
-
We need a PERSONAL VoIP device - here's a proposal
The problem with all currently-available devices of this type is that they require you to use a service such as Net2Phone for most or all of your calls, at a per-minute charge. In certain situations, this is ridiculous. For example, if you are traveling and you need to place a call back to your home town, you may have a perfectly good computer and your personal phone line sitting at your home or office that could be used to facilitate the call. What you probably don't have is the hardware necessary to complete the call using your own phone line.
An article entitled Can the Internet take the place of a pair of copper wires? (which was put online in response to a previous
/. article!) makes the case that with the proper hardware, the Internet could be used to extend personal telephone lines. In this way, people could access their own personal or business telephone line from anywhere in the world. As the title implies, the idea is to use a pair of (as-yet-unbuilt) hardware devices, that would use the Internet as an underlying transport mechanism but would simulate (as closely as possible) a bare pair of copper wires to external telephone equipment.Note that we are not talking about allowing "the public" to use your line - this would simply give you the ability to access a telephone line that you are already paying for, from locations other than the place where that line is terminated. For example, you could access your home phone line from the office, or vise versa. Or, you create a point-to-point "ringdown" circuit between two distant points, without having to get a private circuit from Ma Bell. How you use your "virtual copper pair" is up to you.
For those that understand telephone system terminology, the article makes the case that under certain circumstances, such a device could be used to provide the functional equivalent of at least four different types of service now only available (to most of us) from the phone company. These are Off-Premises Extensions (OPX) (also known as Exchange Service Extension (ESE)), Off-Premises Station (OPS), Foreign Exchange (FX), and Ringdown. The article even points out that it's completely legal to extend your own phone service in this way, thanks to a federal appeals court decision in 1990 (discussed in an archived TELECOM Digest article).
What's needed is for someone to design and build these devices. I think whoever does it first will find that it's not at all difficult to sell these, provided that they are easy enough to install and configure that the average computer owner (or, at the very least, anyone with enough intelligence to install and configure a Network Interface Card) can do it.
-
Marvin Minsky on Meccano and Lego from 1984
Marvin Minsky wrote (in an introduction to a book about Logo in 1984) about why Meccano and Tinker Toys are better than Lego bricks. His argument is based upon the fact that Lego limits the combinatorics in ways the others don't. You want a few kinds of parts that can be combined in lots of interesting ways. Minsky relates this to programming language design. Pretty interesting article.
-
Re:The better question is ...Certainly not all code is written in those four languages, but the majority of business applications *are* written in one of them.
My point is that today, the majority of new business applications are not being written in these languages. The reason is that they lack features that can be found in more modern languages like Java, or even Visual BASIC.
Any such "proof" of the superiority of one language over another can be easily denied by the supporters of another language exactly in the manner of religious arguments.
I'm not talking about religious wars kinds of things, or saying that a particular language is best. What I am saying is that over the past 50-odd years, programming languages have become more sophisticated, and that the features of more advanced languages provide significant efficiencies over older languages. Older languages that lack these efficiencies tend to fall out of use.
FORTRAN and COBOL are two examples, notwithstanding their continued use in somewhat evolved forms. Their evolution, in fact, only proves my point. No-one is using FORTRAN I or FORTRAN II today, because they are too restrictive and lack useful features.
One example of an important "new" programming language feature that is difficult to refute is automatic memory management. It's easy to demonstrate the productivity differences in programming in a language without this (e.g. C) vs. one with it. The use of languages in the marketplace reflects this difference.
Functional languages have comparatively little support outside academia, and even there they are fading somewhat because their typical use, symbolic AI, is no longer the "hot" area of CS.
In academia, fading and being replaced by what? My experience is the opposite - functional languages are the focus of much CS research, driven by the development in formalisms such as polymorphically typed lambda calcus. There are few other areas of computing science with as rigorous a basis, or that so directly provide powerful language features.
But I won't argue that the pure functional languages have little support outside academia. That's not my point. I brought them up as an example of a rich source of advanced features, some of which have been assimilated into mainstream languages over the past few decades, but many of which have not. My point is that mainstream languages have not even come close to reaching any kind of plateau in terms of their features and capabilities. If the history of language development is anything to go by, mainstream languages will continue to adopt functional features over time, and increased efficiency is likely to follow from this.
Someone writing in a language that they like and know well is more productive than someone writing in a language they hate or don't know well.
Yes, but to make a meaningful comparison, one has to compare people writing in languages they know roughly equally well. Anecdotally, my own experiences and those of other people I know between C/C++ and Java, for example, would seem to support the idea that language features can provide improved development efficiency. The fact that C/C++ is not used to write most business applications is another data point in support of this contention.
There's another aspect to this which may be closer to what you're thinking of. Programmers who are unfamiliar with advanced programming language features tend to take a naive approach to development in which each problem is addressed anew. The "cut and paste" antipattern is an example of this. They write essentially the same code over and over, varying the details to achieve the desired results. Many reports or data entry screens written for business applications are an example of this. In such cases, advanced language features may indeed be wasted. However, such programmers are only capable of writing trivial programs. When writing programs to solve difficult problems, advanced features can become essential, or in their absence, a great deal of effort has to be expended to compensate. For example, an advanced programmer forced to write reports or screens in C might develop a generalized, data-driven reporting or screen layout engine. This, in effect, is developing a new language, in a sense to make up for limitations in C. In this sense, good programmers develop domain-specific languages all the time. It is in these areas that mainstream languages tend to be fairly limited. It's certainly not unlikely that the mainstream may never "need" (or realize that it needs) such features, but many of them may be added "under the hood", as with features like garbage collection.
I know from experience, and I know quite a few, languages having programmed since 1981. let's see:
Basic, Pascal, C, C++, Java, Forth, Actor, Perl, Python, Ruby, tcl, awk, Smalltalk-80, Emacs Lisp, ML, Eiffel
Our experience intersects to quite a degree - I can't claim any real experience with tcl or Ruby, but I've either written real code with the rest, or at least played with them quite a bit. Pre-1980, I can also add COBOL and FORTRAN to the list, and more recently, things like Self, Scheme, Haskell, and OCaml.
I'm amazed, though, if you have real experience with Smalltalk, that you can't see the productivity advantages it can have over something like Java. Are you familiar with programming techniques which parameterize behavior using first-class functions, for example? This isn't directly possible in Java, which forces one to use workarounds such as a functor-style approach, or actually generate Java code. Either way, it's less productive for the same kind of reason that dealing with memory management in complex C programs is unproductive: it takes additional time, leads to its own class of bugs, and has nothing to do with the application domain.
I notice your list is heavy on procedural/OOP and light on functional. ML is a nice language, but I'd recommend you pick up a copy of The Structure and Interpretation of Computer Languages (SICP) and spend some time with it (from your comments, I can't imagine you've read this). It's probably one of the best introductions to some of the concepts I'm talking about.
-
Re:Annoying SlantI looked into this a few years ago. What I found was that the models predict a lot of stuff that just isn't happening; changes in weather patterns, huge increases in daytime high temperatures (up to 5 degrees C!), and so on. That suggests that the models suck, and there seemed to be no reason to think they'd work on the stuff we can't observe, when they don't work on what we can observe.
I dount that the situation has changed remarkably since then. One thing that I'm sure hasn't changed is that there is no shortage of really solid data to support both sides: that the temperature really has risen, and that it really hasn't. There are thousands of temperature time series, some direct and some inferred, some are climbing, some are falling, and most aren't changing significantly after controlling for all the relevant sources of variance.
Globally it is likely that the 1990s was the warmest decade and 1998 the warmest year recorded (since 1861). Certainly this seems to be the case in the northern hemisphere not simply since 1861 but for the last ten centuries.
Yep, I hope so. We are still coming out of a little ice age, returning to the higher temperatures which were the norm when the Vikings grew grapes in Newfoundland. The scary thought is that we might find out, in 100 years, that the temperatures are really going down.
You point out that the EPA and UN-funded scientists have found evidence of global warming. Notice where their funding comes from. If Exxon was paying the bill, these same guys would no doubt have found the opposite. Government and industry researchers don't get tenure.
There are literally thousands of responsible scientists who work in these fields who believe that any sort of costly action to "avert global warming" is a bad, irresponsible idea. Some of them are Exxon employees, but certainly not all. Here and here (loosely related) are a couple of random links which might help make the point that it isn't a settled issue in the minds of people who understand it and aren't funded by the Government or Greenpeace (HINT: both these groups find it easier to get money from the public if they can claim that the sky is falling.)
In short, ad homenim arguments are less productive than usual here, since we see the usual suspects on each side of the issue. The energy companies are pushing their issue, Greenpeace is pushing theirs, and so on.
We need to consider the consequences of being wrong. Seeing the global temperature rise by 1 to 2 degrees C is probably going to make the world a better place to live in the long run. That's the maximum likelihood prediction from most of the models that folks on either side take seriously. The doomsday 5+degree C senarios have very low probabilities under most models.
Consider the cost of "taking action": Millions of people around the world, most of them already desperately poor, will die earlier and more miserably if we do anything to limit energy use. The only thing I can think of to reduce greenhouse gasses without causing disaster is replacing coal with nuclear power. That isn't going to happen anytime soon, unfortunately, because of the same agenda that is driving the "its getting hotter" side of the issue.
-
why no pico clones (until nano)<disclaimer> I use pico, I even like pico. One of the first things I do when installing a new system is put pico on it, so I'll have a comfortable editing environment when there is no working X session. Pico is the perfect tool for someone who doesn't touch a text mode editor but once in a full moon and can't be bothered with memorizing a bunch of cryptic key sequences just to edit a couple configuration files. </disclaimer>
Chirs Allegretta claims that the reason noone (before him) bothered to clone pico was that the pine/pico license was just free enough to supress development of completely free clone. In fact, the main reason that noone cloned pico was that noone thought the program was good enough to bother with. There were plenty of small, simple, modeless, non-GUI editors for Linux. If you didn't like the pico license, you could just switch to jed or joe. You could even choose to switch to an editor with a real feature set while you were at it.
Noone cloned pico because noone took pico seriously as a text editor. If you were going to go to the trouble of writing your own text editor, it was sure as heck worth it to give it a better user interface and better features. The only folks who actually used pico were either a) folk using pine, or b) newbies (like me) who didn't want to bother with the other brain damaged tools (i.e. vi or emacs). Even then, most folk would graduate to a more capable editor once they were comfortable in the unix environment (especially if they were running X11, in which case they'd get a good graphical editor, like Nedit).
Chris's article is little more than shameless self-promotion, with a smattering of GPL-boosting thrown in for good measure. The first time I saw Chris's pet editor on freshmeat, I thought it was a joke. I just couldn't believe that anyone would waste their effort on a pico clone. I could resist following the link, however, which revealed the true motivation for nano: GPL fundamentalism.
Chris has a good point to make about the non-free (and non-open-source) nature of the pico license, but pico and pine just aren't good enough tools to have made the license silliness matter. If UW had raised a stink about the license at some point, folk would simple have stopped using pico and pine and moved to one of the other fine tools. Now, with the almost complete transition to GUI-based tools, pico and pine are even more irrelevant than before.
-
Re:true...
-
Re:Asimov Robots vs. Real Robots
The robot refered to by Anonymous Coward is the Therac-25.
You can read about it here, or in Leveson's updated account.ahb
-
How to choose a passwordIf you really want to read all of the rules on how to choose a good password, check out this guide from MIT's SIPB.
Do the karma whore dance!
-
Re:Does MS hate the Scheme license too?
Just to clarify, I think he/she is thinking of the license for Guile, the GNU extension interpreter/library based on the Scheme language. The FSF added an exception to the GPL in this case, hoping that it would promote the use and development of guile by allowing proprietary software developers to link guile into their apps without requiring the software to be put under a GPL-compatible license. Guile may one day replace Emacs Lisp as the standard extensibility language for GNU Emacs.
-
a bit on academics and technology
First off, I think it is fairly difficult for someone to say that something is or is not art. Today's NYT's has an interesting article on that subject. However, I am not sure that saying that everything can be art, or that nothing is art really helps anyone.
I know that there are a number of people working on digital art projects in the academic realm as well as in the commercial field. (MIT's media lab is a neat place, prob not the artistic ammunition you need) (something is wrong with RISD's site, I suspect they could provide good academic support.)
The first thing to say to defend the belief that digital works can be art is to draw the analogy to the initial receptions of impressionism (a la Monet Pissaro) and abstract impressism (a la Pollack, Kandinsky). Then, you would probably want to talk about some more examples of "art" that use technology as a medium. From an artistic standpoint (and I am not in any ways an artist, or an anuthroity on what it takes to be one) it seems that one would need a vision and a desire to create something that has meaning. I know that performance art is about the execution/performance. So, digital art could include things like video games, which has been discussed on slashdot before.
Overall, I must say that to make the sweeping generalization that digital "things" can not be art is a bit shortsighted. The evolution of technology has always had an effect on the ability to create art (most modern artists do not need to "learn" alchemy in order to make paint...).
-
Nevermind
I realize why bother asking questions from people when google exists:
Cog project homepage -
Just plain wrong
MIT claims that cheetah is 3 to 4 times faster than IIs, which would be just about exactly the same as TUX 2.
-
Re:However...
X15 is still 2-3 times faster than Tux 2.0, and Cheetha (from MIT) is 2-3 ORDERS OF MAGNITUDE faster than either.
Er, let me get this straight: TUX can saturate multiple GigE cards per CPU, so Cheetah can saturate 200-2000 GigE cards per CPU? Today's systems don't even have that much memory bandwidth. -
"...dangerous predictors of future Bad People."re: interests in pyrotechnics, military surplus, ham radio
"I wish the book publishers would start reprinting more books about good children who sit still and devote themselves to watching Disney cartoons. If kids must get off of the couch, they might devote themselves to collecting Disney beanbag dolls or maybe those plastic action figures for Disney characters."
Hell yes!
We all *know* those MSC kids would have grown up to be cyberterrorists, drug dealers, money launderers and child pornographers (did I leave anything out?). They might even have done things like code free and open operating systems, in an attempt to destroy prefectly good American institutions like Microsoft; disrupted the smooth functioning of universities like MIT, with so-called "harmelss yet educational" acts of violence and danger, as documented here, here and here; or even subverted the messages of honest hard-working advertisers through blatantly anti-capitalist and possibly Communist-supported billboard vandalism! And they would have tried to justify it with names like "hacking" or "pranks" or "social commentary"!
Books like these should be banned! Kids read this stuff and get ideas into their heads, and that inevitably leads to Columbine or possibly even "thinking for themselves" and (selfishly) having "fun"!
Now stop wasting time reading Slashdot and get back to work making your corporate masters wealthier!
-
"...dangerous predictors of future Bad People."re: interests in pyrotechnics, military surplus, ham radio
"I wish the book publishers would start reprinting more books about good children who sit still and devote themselves to watching Disney cartoons. If kids must get off of the couch, they might devote themselves to collecting Disney beanbag dolls or maybe those plastic action figures for Disney characters."
Hell yes!
We all *know* those MSC kids would have grown up to be cyberterrorists, drug dealers, money launderers and child pornographers (did I leave anything out?). They might even have done things like code free and open operating systems, in an attempt to destroy prefectly good American institutions like Microsoft; disrupted the smooth functioning of universities like MIT, with so-called "harmelss yet educational" acts of violence and danger, as documented here, here and here; or even subverted the messages of honest hard-working advertisers through blatantly anti-capitalist and possibly Communist-supported billboard vandalism! And they would have tried to justify it with names like "hacking" or "pranks" or "social commentary"!
Books like these should be banned! Kids read this stuff and get ideas into their heads, and that inevitably leads to Columbine or possibly even "thinking for themselves" and (selfishly) having "fun"!
Now stop wasting time reading Slashdot and get back to work making your corporate masters wealthier!
-
"...dangerous predictors of future Bad People."re: interests in pyrotechnics, military surplus, ham radio
"I wish the book publishers would start reprinting more books about good children who sit still and devote themselves to watching Disney cartoons. If kids must get off of the couch, they might devote themselves to collecting Disney beanbag dolls or maybe those plastic action figures for Disney characters."
Hell yes!
We all *know* those MSC kids would have grown up to be cyberterrorists, drug dealers, money launderers and child pornographers (did I leave anything out?). They might even have done things like code free and open operating systems, in an attempt to destroy prefectly good American institutions like Microsoft; disrupted the smooth functioning of universities like MIT, with so-called "harmelss yet educational" acts of violence and danger, as documented here, here and here; or even subverted the messages of honest hard-working advertisers through blatantly anti-capitalist and possibly Communist-supported billboard vandalism! And they would have tried to justify it with names like "hacking" or "pranks" or "social commentary"!
Books like these should be banned! Kids read this stuff and get ideas into their heads, and that inevitably leads to Columbine or possibly even "thinking for themselves" and (selfishly) having "fun"!
Now stop wasting time reading Slashdot and get back to work making your corporate masters wealthier!
-
Platos books online.If you need to argue the finer points of Platos writings you can quote and link to them online.
-
Don't necessarily follow MIT's lead
Keep your goal and your audience in mind. MIT is out to produce computer scientists, not programmers. SICP might not be the best textbook for everybody. However, Scheme's advantages apply to other introductory courses as well, e.g. How To Design Programs.
-
I'm tired of the argument
Enough dispersely one-line quotes from me and I would even be called an atheist. Its evident that Einstein believed in an intelligence behind the universe and its construct. In a half-empty half-full debate one could sat that it was enough God for him, or that it *was* God for him. But not that there was no God.
This will explain that Eisteing jew connection a bit better, I think.
~^~~^~^^~~^ -
Re:MBA. Why?I'd disagree a little bit with what you said.
An MBA is a skill set, a set of connections, and (to a certain extent) a way of looking at the world through a particular point of view. Entrepreneurship is a burning desire to build something new. They aren't opposite skill sets.
Certain MBA programs, e.g. MIT's (disclaimer: I'm currently at MIT's Sloan School of Management), can expose you to as much of the business environment around entrepreneurship as you want so that you can develop the skills to deal with VCs, patent attorneys, market analysts, companies who want to acquire you, etc. An MBA program also exposes you to business fundamentals like accounting, organizational theory, strategy, etc. so that you can develop an effective business plan--or at least know enough to recognize when your business plan goes wrong and how to fix it.
I agree with your assessment that the degree doesn't have anything to do with the spark. But I think the NASDAQ has already suffered enough from an overdose of people with good ideas and not enough business skills to build good businesses around them.
-
Comments, and how it's done at my school
First off, I think it's important to recognize that an introductory CS class really isn't introductory to very many students in it, unless you're talking about the University of Bumblefuck. At almost any University, a large fraction of the kids who decide to major in CS will already have some programming experience, be that in C/C++, Pascal, Perl, Java, or whatever. If you truly think that to develop good programming habits/abilities you _need_ to start with assembler, or Java, or C, or any other specific language (as a lot of people have suggested) then you might as well give up on the whole intro class deal.
That being said, here's how it's done at my school . The intro cs class is taught in Scheme, which is a variant of Lisp. The textbook that we use is The Structure and Interpretation of Computer Programs by Gerry Sussman and Hal Abelson, and is available for free online (not a really important point, but a nice one).
Now, this is not _the_ way to teach people CS, but I think it's damned good. Here are some of the reasons why.
- _Very_ few students come into the class knowing scheme. This puts everyone on a much more even footing, and allows professors to more clearly evaluate how well students understand the basic concepts, without questions of familiarity with the language clouding the issue.
- We are taught scheme without any traditional control structures, so everyone understands recursion well. In my experience, recursion is one of the hardest things for inexperienced programmers to understand. After you've gotten through an entire term with nary a while or repeat loop, you'll be recursing with the best of them. It's easy as all get out for students to learn those standard control structures later, once they move on to another language.
- We are able to construct and use a scheme meta-compiler before the end of the intro class. This would be very difficult in most languages, but is not that hard in scheme. Being able to write a compiler for a language, even if it is written in the same language, is a powerful way of making sure students understand that all decent languages have the same expressive power.
- Functions can be passed around just as easily as data. This is something most other languages don't do well (except OO languages, where it's moot). While someone who starts on Pascal or C is going to get really confused when they run into this practice down the line, someone who learns with scheme will find it comes very naturally.
- Object Oriented stuff is taught from the ground up. Students construct their own objects, classes, etc, _from scratch_, and then do fairly complex stuff with it.
- It's easy to talk about the formal properties of systems in scheme. We get into some rudimentary proofs that our systems will behave the way we want in the intro class.
So, I think there are a lot of really good points to using scheme as an introductory programming language, if you do it right. It lets you address a lot of important concepts, up front, and does it well. Now, it's certainly not the most practical language for most things, but it's not a language that people misapply very often, so I don't think there's a big danger there. If your intoduction to CS is done right, you can start using any new language in about half an hour, although you'll want to keep a lot of reference materials on hand for the first week or two.
Overall, I think our intro CS class is done really well, although it's not the One True Path. I think we'd see better Computer Scientists and Computer Programmers if more schools used well thought out systems like this.
NoBeardPete
-
Comments, and how it's done at my school
First off, I think it's important to recognize that an introductory CS class really isn't introductory to very many students in it, unless you're talking about the University of Bumblefuck. At almost any University, a large fraction of the kids who decide to major in CS will already have some programming experience, be that in C/C++, Pascal, Perl, Java, or whatever. If you truly think that to develop good programming habits/abilities you _need_ to start with assembler, or Java, or C, or any other specific language (as a lot of people have suggested) then you might as well give up on the whole intro class deal.
That being said, here's how it's done at my school . The intro cs class is taught in Scheme, which is a variant of Lisp. The textbook that we use is The Structure and Interpretation of Computer Programs by Gerry Sussman and Hal Abelson, and is available for free online (not a really important point, but a nice one).
Now, this is not _the_ way to teach people CS, but I think it's damned good. Here are some of the reasons why.
- _Very_ few students come into the class knowing scheme. This puts everyone on a much more even footing, and allows professors to more clearly evaluate how well students understand the basic concepts, without questions of familiarity with the language clouding the issue.
- We are taught scheme without any traditional control structures, so everyone understands recursion well. In my experience, recursion is one of the hardest things for inexperienced programmers to understand. After you've gotten through an entire term with nary a while or repeat loop, you'll be recursing with the best of them. It's easy as all get out for students to learn those standard control structures later, once they move on to another language.
- We are able to construct and use a scheme meta-compiler before the end of the intro class. This would be very difficult in most languages, but is not that hard in scheme. Being able to write a compiler for a language, even if it is written in the same language, is a powerful way of making sure students understand that all decent languages have the same expressive power.
- Functions can be passed around just as easily as data. This is something most other languages don't do well (except OO languages, where it's moot). While someone who starts on Pascal or C is going to get really confused when they run into this practice down the line, someone who learns with scheme will find it comes very naturally.
- Object Oriented stuff is taught from the ground up. Students construct their own objects, classes, etc, _from scratch_, and then do fairly complex stuff with it.
- It's easy to talk about the formal properties of systems in scheme. We get into some rudimentary proofs that our systems will behave the way we want in the intro class.
So, I think there are a lot of really good points to using scheme as an introductory programming language, if you do it right. It lets you address a lot of important concepts, up front, and does it well. Now, it's certainly not the most practical language for most things, but it's not a language that people misapply very often, so I don't think there's a big danger there. If your intoduction to CS is done right, you can start using any new language in about half an hour, although you'll want to keep a lot of reference materials on hand for the first week or two.
Overall, I think our intro CS class is done really well, although it's not the One True Path. I think we'd see better Computer Scientists and Computer Programmers if more schools used well thought out systems like this.
NoBeardPete
-
Comments, and how it's done at my school
First off, I think it's important to recognize that an introductory CS class really isn't introductory to very many students in it, unless you're talking about the University of Bumblefuck. At almost any University, a large fraction of the kids who decide to major in CS will already have some programming experience, be that in C/C++, Pascal, Perl, Java, or whatever. If you truly think that to develop good programming habits/abilities you _need_ to start with assembler, or Java, or C, or any other specific language (as a lot of people have suggested) then you might as well give up on the whole intro class deal.
That being said, here's how it's done at my school . The intro cs class is taught in Scheme, which is a variant of Lisp. The textbook that we use is The Structure and Interpretation of Computer Programs by Gerry Sussman and Hal Abelson, and is available for free online (not a really important point, but a nice one).
Now, this is not _the_ way to teach people CS, but I think it's damned good. Here are some of the reasons why.
- _Very_ few students come into the class knowing scheme. This puts everyone on a much more even footing, and allows professors to more clearly evaluate how well students understand the basic concepts, without questions of familiarity with the language clouding the issue.
- We are taught scheme without any traditional control structures, so everyone understands recursion well. In my experience, recursion is one of the hardest things for inexperienced programmers to understand. After you've gotten through an entire term with nary a while or repeat loop, you'll be recursing with the best of them. It's easy as all get out for students to learn those standard control structures later, once they move on to another language.
- We are able to construct and use a scheme meta-compiler before the end of the intro class. This would be very difficult in most languages, but is not that hard in scheme. Being able to write a compiler for a language, even if it is written in the same language, is a powerful way of making sure students understand that all decent languages have the same expressive power.
- Functions can be passed around just as easily as data. This is something most other languages don't do well (except OO languages, where it's moot). While someone who starts on Pascal or C is going to get really confused when they run into this practice down the line, someone who learns with scheme will find it comes very naturally.
- Object Oriented stuff is taught from the ground up. Students construct their own objects, classes, etc, _from scratch_, and then do fairly complex stuff with it.
- It's easy to talk about the formal properties of systems in scheme. We get into some rudimentary proofs that our systems will behave the way we want in the intro class.
So, I think there are a lot of really good points to using scheme as an introductory programming language, if you do it right. It lets you address a lot of important concepts, up front, and does it well. Now, it's certainly not the most practical language for most things, but it's not a language that people misapply very often, so I don't think there's a big danger there. If your intoduction to CS is done right, you can start using any new language in about half an hour, although you'll want to keep a lot of reference materials on hand for the first week or two.
Overall, I think our intro CS class is done really well, although it's not the One True Path. I think we'd see better Computer Scientists and Computer Programmers if more schools used well thought out systems like this.
NoBeardPete
-
power savings by blocking radiationThere's actually a perfectly good reason to block the cell-phone radiation from going into your head, and that is to save power. With current cell phones, about half of the signal is absorbed by your head (hint: water is a very good absorber at microwave frequencies) as useless (but harmless) heat.
(I know of at least one project with Conexant and UCLA directed at using photonic crystals to point cell-phone antenna output away from the head for just this reason.)
-
Learn Scheme & Computer Science at the same timeScheme is a very elegant member of the LISP family that's used to teach and explore advanced programming and computer science at many universities, including MIT, Yale etc. The basics of Scheme are easy to learn, and the language is mind-blowingly powerful. Learning Scheme is guaranteed to expand your programming horizons. Plus, there's a wealth of good Scheme tutorial information on the web:
- "Teach Yourself Scheme in Fixnum Days": A comprehensive tutorial
- "The Scheme Language": a shorter tutorial
- "Invitation to Scheme": yet another tutorial
- The Scheme Language Standard, "R5RS", is actually surprisingly readable, at about 50 pages. Here's a PDF of R5RS, which is useful to have around if you're actually using the language.
- The Structure and Interpretation of Computer Programs (SICP) - a.k.a. the wizard book, a very worthwhile and enlightening book, used as an introductory text at MIT. It's available on the web, but it's not a light or quick read.
- How to Design Programs (HTDP) - a book that teach program design techniques, using Scheme.
-
Re:Seeds of the Borg
Sadly, they work in the "Borglab." Check out the caption in the photo.
-
The borg have landed.....
-
Good titles...
I always admired Marty Friedman for his cards
After that, I've gotten some pretty interesting titles (many pretty serious), but I still think the best one for a SysAdmin person is this:
"Social Engineer"
It so aptly describes what really goes on for most SysAdmins trying to do their job...
(And of course, for those privileged enough to share my first name, "Member of the Erik Conspiracy" is required....)
-Erik
-
Re:Silicon dioxide replacements
Silicon is just too cheap and abundant to give up on right now
Exactly. And by the time we're finished with this obsession of ours with faster computing(since physics will stop us at some point), we'll start seeing better computing. I think we'll start to see more special purpose cpu's and hardware for pervasive computing and the focus will be become less on innovation and the next greatest thing(since we all tire of it some time) and more towards integration. Computing will be truly pervasive and really will make things easier this time(read: paper office).
-----
"Goose... Geese... Moose... MOOSE!?!?!" -
Learning Programming
First, a personal opinion: I believe that learning how to program is so valuable because through it, one learns problem solving skills.
On that note, if you want to teach programming, here are some ideas. I have use none of these for teaching, but I am intrigued:
Scheme/LISP - I learned Scheme from The Little LISPer (the most recent version is called The Little Schemer ), a great book! I already knew how to program when I learned Scheme, but this might be a good way to learn.
Other resources for learning programming through Scheme (with which I have no experience, but sound interesting):
http://www.cs.rice.edu/CS/PLT/Teaching/
http://www.cs.rice.edu/CS/PLT/packages/drscheme/
http://www.teach-scheme.org/ (doesn't seem to be working right now)
Starlogo is very cool, you might also want to look at the book Turtles, Termites, and Traffic Jams by Mitchel Resnick, the creator of StarLogo (in the book he talks about working with kids on StarLogo projects)
I don't even know Python, but I have read several things about using it as a teaching language:
Article at O'Reilly on Python as a first language
Computer Programming for Everybody - a proposal by Guido van Rossum
The Official Python Tutorial
Why Python? - by Eric S. Raymond
Learning to Program - uses Python
I hope this is helpful!!! -
Learning Programming
First, a personal opinion: I believe that learning how to program is so valuable because through it, one learns problem solving skills.
On that note, if you want to teach programming, here are some ideas. I have use none of these for teaching, but I am intrigued:
Scheme/LISP - I learned Scheme from The Little LISPer (the most recent version is called The Little Schemer ), a great book! I already knew how to program when I learned Scheme, but this might be a good way to learn.
Other resources for learning programming through Scheme (with which I have no experience, but sound interesting):
http://www.cs.rice.edu/CS/PLT/Teaching/
http://www.cs.rice.edu/CS/PLT/packages/drscheme/
http://www.teach-scheme.org/ (doesn't seem to be working right now)
Starlogo is very cool, you might also want to look at the book Turtles, Termites, and Traffic Jams by Mitchel Resnick, the creator of StarLogo (in the book he talks about working with kids on StarLogo projects)
I don't even know Python, but I have read several things about using it as a teaching language:
Article at O'Reilly on Python as a first language
Computer Programming for Everybody - a proposal by Guido van Rossum
The Official Python Tutorial
Why Python? - by Eric S. Raymond
Learning to Program - uses Python
I hope this is helpful!!! -
Re:have very little respect for Minsky.
(reaches into the dark recesses of my memory banks) That would be Rob Brooks, who from, say, 1985 onwards, started playing around with a behavioural approach to robotics, using a subsumption architecture in which more urgent behaviours (like avoiding collissions) could subsume control of the robot from higher order functions
... and none of the behaviours communicated, or did heavy AI stuff like try to represent their environment. Leads of papers, many with great titles, here. Great days. -
Re:Get them on LOGO
We have used StarLogo with kids as young as 4th grade, and it can work quite well with 6th grade and up if you will be working with these ages. The software is free from our web site but we also just published a book, Adventures in Modeling , that could be useful to you.
-
Re:Get them on LOGO
We have used StarLogo with kids as young as 4th grade, and it can work quite well with 6th grade and up if you will be working with these ages. The software is free from our web site but we also just published a book, Adventures in Modeling , that could be useful to you.
-
Re:Get them on LOGOI really like Logo too. It teaches programming, but it also is very much about teaching mathematics, geometry, pre-algebra, and algorithmic thinking in general. Thus Logo can satisfy both the people who want academics (math), and people who want vocational aspects (programming).
Some scattered thoughts:
- You can use MSW Logo for free (GPL even). It's hardly the best interface or anything, but it will do. MicroWorlds is a very popular commercial Logo environment. If you have the budget, you might use it. HyperStudio, which they probably already have, has a Logo inside it too. But don't use that, as it's a really lame environment, not to mention a crappy implementation.
- I would also like to reemphasize that you should do things in a hands-on manner. Start out right on the computer, and try to keep them working with the computer as much as possible. Try very hard to get a one-to-one computer-to-student ratio, even if it means kids get less total time on the computers. Of course this doesn't mean you should force the kids to stay at their computer -- if you are doing something fun, the kids will want badly to show each other what they are doing. If they don't want to show each other, you are doing the wrong project.
- Against my previous advice, you should do physical practice with Logo turtle commands -- i.e., have the kids order each other or you around using Logo commands. Like, have the kids navigate you around the room by using just left, right, forward, and back commands. This amuses them, because they can make you bump into tables and walk out the door. It is useful, because they'll have an easier time imagining themselves in your place than they will have imagining themselves in the turtles place.
- Of course, if you have access to Lego Logo stuff (which is expensive), use it. You'll probably enjoy that as much as the kids.
- Don't start out too quickly -- just have them draw pictures at first. Kids are surprisingly easy to amuse this way. If you have enough time, kids might be able to make games too, but very possibly not
:-( MicroWorlds would make game-making much easier. - Oh, and if you have older kids, Star Logo is a neat environment for experimenting with massively parrallel computation. And if you feel a bit more adventurous and have Macs available, maybe try Boxer, a somewhat more visual programming language with the same goals as Logo.
-
LOGO, open sourced
We all remember using EDU the turtle on the old Apple computers. There are pay-versions of LOGO still out there. But, you can also get it for free. Some links for ya:
Turtle Tracks - A Java version released under the GPL. Requires a Java 1.1-compliant virtual machine.
MSWLogo - A windows-only version. The source is available, but I'm not sure what license it is released under.
Other logo software - This list, at the Logo Foundation's website lists commercial and free versions of logo.
rLogo - An online in-the-browser logo interpreter.