From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (from majordomo@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id MAA07037; Wed, 23 Jun 2004 12:50:25 +0200 (MET DST) X-Authentication-Warning: pauillac.inria.fr: majordomo set sender to owner-caml-list@pauillac.inria.fr using -f Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id MAA07031 for ; Wed, 23 Jun 2004 12:50:23 +0200 (MET DST) Received: from salt.cs.brown.edu (salt-dmz.cs.brown.edu [128.148.32.122]) by nez-perce.inria.fr (8.12.10/8.12.10) with ESMTP id i5NAoLEV028757 for ; Wed, 23 Jun 2004 12:50:22 +0200 Received: from localhost (localhost [127.0.0.1]) by salt.cs.brown.edu (Postfix) with ESMTP id 577DFD86C7; Wed, 23 Jun 2004 06:50:21 -0400 (EDT) Received: from salt.cs.brown.edu ([127.0.0.1]) by localhost (salt [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 30742-05; Wed, 23 Jun 2004 06:50:21 -0400 (EDT) Received: from null.cs.brown.edu (null.cs.brown.edu [128.148.38.190]) by salt.cs.brown.edu (Postfix) with ESMTP id D14B8D86CC; Wed, 23 Jun 2004 06:50:18 -0400 (EDT) Received: from clark.cs.brown.edu (clark [128.148.31.45]) by null.cs.brown.edu (Postfix) with ESMTP id 8238A3C94; Wed, 23 Jun 2004 06:50:18 -0400 (EDT) Received: from localhost (localhost [127.0.0.1]) by clark.cs.brown.edu (Postfix) with ESMTP id 4353A10EF0D; Wed, 23 Jun 2004 06:50:18 -0400 (EDT) Received: from clark.cs.brown.edu ([127.0.0.1]) by localhost (clark [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 00253-03; Wed, 23 Jun 2004 06:50:18 -0400 (EDT) Received: from spikeshomepc (meylan-1-82-225-49-106.fbx.proxad.net [82.225.49.106]) (using TLSv1 with cipher RC4-MD5 (128/128 bits)) (No client certificate requested) by clark.cs.brown.edu (Postfix) with ESMTP id CEE8010EF06; Wed, 23 Jun 2004 06:50:14 -0400 (EDT) Reply-To: From: "John Hughes" To: "'Brian Hurt'" Cc: Subject: RE: [Caml-list] More or bignums/ints Date: Wed, 23 Jun 2004 12:50:14 +0200 MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Mailer: Microsoft Office Outlook, Build 11.0.5510 Thread-Index: AcRZDiB782zByLqeS9ugA6jyJO3mswAAA68g X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1409 In-Reply-To: Message-Id: <20040623105014.CEE8010EF06@clark.cs.brown.edu> X-Virus-Scanned: by amavisd-new-20030616-p7 (Debian) at cs.brown.edu X-Virus-Scanned: by amavisd-new-20030616-p7 (Debian) at cs.brown.edu X-Miltered: at nez-perce with ID 40D9606D.000 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Loop: caml-list@inria.fr X-Spam: no; 0.00; caml-list:01 bignums:01 ml's:01 functors:01 opaque:01 stupid:01 redefining:01 silently:01 --john:01 ints:01 ocaml:01 ocaml:01 groups:01 signatures:02 17.:97 Sender: owner-caml-list@pauillac.inria.fr Precedence: bulk Brian Hurt asked "How well does teaching ML in a first course work?" To tell the truth, we teach Scheme for about 7 weeks, then 4.5 weeks of ML, and then, in Spring, teach Java. Both Scheme and ML are taught purely-functionally: there's no "set!" in our world. The idea is to teach them * to think algorithmically * to be able to analyze the big-O performance of their programs * to know some basic structures like lists and trees, and even BSTs For that, pure-functional is just fine. ML's structures and functors give them a nice transition point towards OO programming: they start to gather data and operations together, and they learn some data hiding with opaque signatures. By the time they reach Java, they're sophisticated enough to complain appropriately: "You mean I can't just pass a function as an argument to another function? Why do I have to write a stupid wrapper around the Java container classes to get a safe CarList or a TruckList? Why isn't there appropriate polymorphism?" [OK, maybe they don't remember that it's called polymorphism, but they know that they want it...] How well does it work? Well, the next year they end up in the same courses as their friends who took a "program in Java" course first, and a "data structures and algorithms" course second. The average scores for the two groups in the big software-engineering course are pretty much indistinguishable. Not surprisingly, the ones in OUR course do better in the programming languages course in general. And lots of our success stories are with students who have never touched a computer before, except for email and Microsoft Word, so I think we're doing OK. Thanks again, to everyone here, for the suggestions on getting "safe" integers into OCaml. I'm more or less committed to doing what was suggested and redefining all the standard operations in some CS17.ml "library" that's preloaded for them (after I show them the dark underbelly of OCaml in which integer operations are silently incorrect ). --John Hughes ------------------- To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ Beginner's list: http://groups.yahoo.com/group/ocaml_beginners