re: Biggest Haskell unit in the world

Lyndon While writes:
So how about it? Can anyone beat 298 for a Haskell programming unit? For the record, I teach more advanced aspects of FP to (this year) 38 students, too.
Sorry Lyndon, we (melbourne uni) had 767 students sit our first year subject which teaches Haskell. We teach it again in second semester too, with over a hundred students. Okay, back to marking. Cheers, Bernie.

At 1:30 pm +1000 25/6/2001, Bernard James POPE wrote:
Lyndon While writes:
So how about it? Can anyone beat 298 for a Haskell programming unit?
Sorry Lyndon, we (melbourne uni) had 767 students sit our first year subject which teaches Haskell. We teach it again in second semester too, with over a hundred students.
My hat is off to you boys. Can I take it your unit is core? Our Haskell unit is core for only about a third of the students - around 190 of them *choose* Haskell! Maybe together we can make Australia the most Haskellised country in the world!
Okay, back to marking.
I feel a little better about mine, now :-) -- Dr. Lyndon While -------- Email - lyndon@cs.uwa.edu.au ,-_|\ Phone - +61 8 9380 2720 / \ Fax - +61 8 9380 1089 *_,-._/ Web - http://www.cs.uwa.edu.au/~lyndon v

267, 762, 102541 students learning Haskell? That's great. But I am far from any internal satisfaction. I would prefer to read: A. We teach computer graphics showing all the algorithms in Haskell; the assignments include building a ray tracer, a VRML parser, scripting engine, etc., and a SVG interpreter. B. We teach compilation using functional paradigms. Not only monadic parsers and lazy attribute propagation, but building continuation-based virtual machines, pedagogic, but quite efficient type checking/inference system, and other goodies. Even the garbage collection is *described* functionally (in monadic style). C. The algorithmic layer of our Signal Processing course is entirely based on Haskell. D. A substantial part of our Hardware Architecture course exploits Haskell as a nice description/integration language. E. Artificial Intelligence? Sure. We still use a bit of Prolog, but most of our stuff has been rewritten, and now Haskell dominates. ==== Etc. It is just a sick dream? Jerzy Karczmarczuk Caen, France

On Mon, 25 Jun 2001, Jerzy Karczmarczuk wrote: JK> I would prefer to read: JK> JK> A. We teach computer graphics showing all the algorithms in Haskell; [snip] JK> E. Artificial Intelligence? JK> Etc. JK> It is just a sick dream? I fear so, but it's not an unusual sick dream. In my version, we also have F. Logic and Discrete Mathematics: we mediate logic via Haskell, emphasising its computation intuition. We find that students pathologically terrified by or-elimination respond well to programs such as
andOverOr :: (a,Either b c) -> Either (a,b) (a,c) andOverOr (a,Left b) = Left (a,b) andOverOr (a,Right c) = Right (a,c)
and
infix ><
(><) :: (a -> c) -> (b -> d) -> (a,b) -> (c,d) (f >< g) (a,b) = (f a,g b)
We find it much easier to explain `false implies true' by pointing out that there is trivially a function from the empty type to (). However, the notation for classic inductive proofs like
class Nat n
data O
data (Nat n) => S n = O | S n
instance Nat O
instance (Nat n) => Nat (S n)
class (Nat n) => Sum n s | n -> s where oneWay :: (Bool,s) -> (n,S n) otherWay :: (n,S n) -> (Bool,s)
instance Sum O O where oneWay (_,x) = (x, S x) otherWay (x,_) = (True,x)
instance (Sum n s) => Sum (S n) (Either (S n) s) where oneWay (True ,Left x) = (x,O) oneWay (False,Left x) = (O,S x) oneWay (b, Right s) = (S >< S) (oneWay (b,s)) otherWay (x ,O) = (True,Left x) otherWay (O ,S x) = (False,Left x) otherWay (S x,S y) = (id >< Right) (otherWay (x,y))
could clearly benefit from syntactic sugar... But this is the stuff of too much cheese at bedtime. These dreams won't come true without strong economic pressure...which leads me to this question, given it's the marking season: which programming language lends itself most easily to automated analysis of student code? Cheers Conor

Bernard James POPE
Lyndon While writes:
So how about it? Can anyone beat 298 for a Haskell programming unit? For the record, I teach more advanced aspects of FP to (this year) 38 students, too.
Sorry Lyndon, we (melbourne uni) had 767 students sit our first year subject which teaches Haskell. We teach it again in second semester too, with over a hundred students.
Computing 1A (taught in Haskell) at Uni of New South Wales
has two streams with 731 + 247 students (the second stream
is for good students who want some more challenge). In
second semester, we have about 600 students in that course.
Lyndon While
Maybe together we can make Australia the most Haskellised country in the world!
We stand a good chance, I would say. Cheers, Manuel

A couple of years ago, we (University of Texas at Austin) had 300+ students per semester learning Haskell in our first course for CS majors. The departure of several lecturers gave the forces of mediocrity the opening they'd been waiting for, and last year all sections of the class were taught in Scheme. Next year the slide continues, as most sections will be taught in Java (!). Of course I hope this setback is only temporary, and the impressive numbers from Down Under will help to counter the argument that Haskell is too challenging for ordinary students (this, just as we're improving our average student by instituting a CS admissions filter!). The best strategy for the long term seems to be to educate our faculty, and a few of the theoreticians have seen the light. From time to time, I put on short Haskell tutorials for faculty and grad students, but attendance has always been less than half a dozen, and has never included the folks who make the curricular decisions. If any of you antipodeans feel like sharing tales of Haskellisation, I can guarantee you an eager audience of at least 1. Cheers, --Ham At 6:47 AM -0500 6/25/01, Manuel M. T. Chakravarty wrote:
Bernard James POPE
wrote, Lyndon While writes:
So how about it? Can anyone beat 298 for a Haskell programming unit? For the record, I teach more advanced aspects of FP to (this year) 38 students, too.
Sorry Lyndon, we (melbourne uni) had 767 students sit our first year subject which teaches Haskell. We teach it again in second semester too, with over a hundred students.
Computing 1A (taught in Haskell) at Uni of New South Wales has two streams with 731 + 247 students (the second stream is for good students who want some more challenge). In second semester, we have about 600 students in that course.
Lyndon While
wrote, Maybe together we can make Australia the most Haskellised country in the world!
We stand a good chance, I would say.
Cheers, Manuel
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
------------------------------------------------------------------ Hamilton Richards, PhD Department of Computer Sciences Senior Lecturer Mail Code C0500 512-471-9525 The University of Texas at Austin Taylor Hall 5.138 Austin, Texas 78712-1188 ham@cs.utexas.edu ------------------------------------------------------------------

On Mon, 25 Jun 2001, C T McBride wrote:
But this is the stuff of too much cheese at bedtime. These dreams won't come true without strong economic pressure...which leads me to this question, given it's the marking season: which programming language lends itself most easily to automated analysis of student code?
I find Haskell scripts are well suited at least to automated _testing_. In my small class (50 students) I test all assignments using Hugs and a test script which exercises the students' functions and computes a test score. BTW I teach a "programming languages" course which includes an introduction to Haskell and an introduction to parsing and compiling. The students modify an interpreter that I wrote. The complete Haskell source for the language (simple block structured imperative language with a single integer daya type) is only 600 lines, of which about half is the parser. This compares favourably with a similar toy compiler in C++ that was used before I took over the course --- it ran to well over 5000 lines! Richard -- Dr Richard Watson rwatson@usq.edu.au Dept of Mathematics & Computing phone: +61 7 4631 5546 University of Southern Queensland FAX: +61 7 4631 5555 Toowoomba Qld 4350, AUSTRALIA http://www.sci.usq.edu.au

At 7:57 PM -0500 6/25/01, you wrote:
BTW I teach a "programming languages" course which includes an introduction to Haskell and an introduction to parsing and compiling. The students modify an interpreter that I wrote. The complete Haskell source for the language (simple block structured imperative language with a single integer daya type) is only 600 lines, of which about half is the parser. This compares favourably with a similar toy compiler in C++ that was used before I took over the course --- it ran to well over 5000 lines!
That's very interesting to me, since I, too, teach a programming languages course which includes an intro to Haskell and to parsing. An interpreter for an imperative language would pull a lot of topics nicely together. Do your students know any Haskell coming into the course, or is your introduction to Haskell their first taste of it? Does the imperative language include procedures? With what methods of binding arguments to parameters? What sort of modifications can the students manage? Thanks, --Ham ------------------------------------------------------------------ Hamilton Richards, PhD Department of Computer Sciences Senior Lecturer Mail Code C0500 512-471-9525 The University of Texas at Austin Taylor Hall 5.138 Austin, Texas 78712-1188 ham@cs.utexas.edu hrichrds@swbell.net ------------------------------------------------------------------

On Wed, 27 Jun 2001, Hamilton Richards wrote:
At 7:57 PM -0500 6/25/01, you wrote:
BTW I teach a "programming languages" course which includes an introduction to Haskell and an introduction to parsing and compiling. The students modify an interpreter that I wrote. The complete Haskell source for the language (simple block structured imperative language with a single integer daya type) is only 600 lines, of which about half is the parser. This compares favourably with a similar toy compiler in C++ that was used before I took over the course --- it ran to well over 5000 lines!
That's very interesting to me, since I, too, teach a programming languages course which includes an intro to Haskell and to parsing. An interpreter for an imperative language would pull a lot of topics nicely together.
That was my motivation in developing the interpreter. I think it has worked pretty well. Although a toy it is "real" enough to provide a genuine intro to language implementation issues like parsing, symbol table maintenance, semantic checks, run time stack etc.
Do your students know any Haskell coming into the course, or is your introduction to Haskell their first taste of it?
This is their first taste of Haskell. Some love it and some never become comfortable with it.
Does the imperative language include procedures? With what methods of binding arguments to parameters? What sort of modifications can the students manage?
The language is modelled on Pascal: it uses the same scoping rules as Pascal and supports nested procedure declarations. Apart from minor syntactic differences (like { } not begin ... end) the main differences are - single integer data type - no functions - parameter passing is call by value - all operators (usual relational & arithmentic) have same precedence - if and while are only control structures - io is limited to reading and writing a single integer at a time So far over the past few years I've set questions such as adding - unary operators - parenthesised expressions - a C-like ternary ? : expression - Haskell-like comments - for statements - repeat .. until post test loops - constant declarations - functions - call by reference parameters - call by value-result parameters The last 4 have been the most challenging but good average students have generally succeeded in completing such questions. Richard -- Dr Richard Watson rwatson@usq.edu.au Dept of Mathematics & Computing phone: +61 7 4631 5546 University of Southern Queensland FAX: +61 7 4631 5555 Toowoomba Qld 4350, AUSTRALIA http://www.sci.usq.edu.au
participants (7)
-
Bernard James POPE
-
C T McBride
-
Hamilton Richards
-
Jerzy Karczmarczuk
-
Lyndon While
-
Manuel M. T. Chakravarty
-
Richard Watson