D at University of Minnesota

Rikki Cattermole alphaglosined at gmail.com
Sun Aug 18 02:03:32 PDT 2013


On Saturday, 17 August 2013 at 15:22:26 UTC, Carl Sturtivant 
wrote:
>>> What happened is that I unclear what the state of play is; I 
>>> am not
>>> asserting the wrongness of TDPL. Still, I am reassured by 
>>> your responses.
>>
>> Hi Carl -- TDPL is for the most part in good shape. There are 
>> a few inaccuracies, but I'd say most concern corner cases that 
>> are unlike to deter the learning process.
>>
>> You may want to encourage students to interact with us here, 
>> or write me email directly if they have any questions. I'd be 
>> very glad to help them.
>
> Hello Andrei, Ali,
>
> Well, CS2 in D is over, and grades are in. Being a summer 
> course it was conducted at twice the speed as in a regular 
> semester.
>
> Being the U of M there's enormous variation in background, 
> current experience and ability, potential, etcetera etcetera, 
> among students in the course. In the end registration had 
> stabilized at 55 before the course started and (unusually) all 
> of them finished it. There were a number of exceptional 
> students of little experience in the class. There were also a 
> number of students in the class with C++ experience that was 
> more than beginner level. A majority of the students had come 
> from the CS1 course here which is Scheme based, and so they had 
> experience mainly with functions, recursion and singly-linked 
> lists.
>
> My main observation is that there was a significantly greater 
> level of inspiration engendered by using D as opposed to the 
> usual alternatives. I and my TA saw a lot of the students in 
> the lab and in office hours, and I made an effort to find out 
> their reactions to using D, and they were very positive, 
> especially so among those in about the top 2/3 or so of the 
> class.
>
> In our abstract data type implementations we made good use of 
> D's superb dynamic arrays, and associative arrays, and we used 
> both classes and structs; we made prolific use of operator 
> overloading including signature constraints, and in an extra 
> credit exercise we even had them write a simple opApply. We 
> used classes to implement linked structures except at the end 
> of the course. When I say "we" I mean that while I discussed 
> topics on all scales and from abstract to concrete in lecture, 
> the TA and I had them actively learn everything done via a long 
> sequence of problems to solve in D, and some things were left 
> to the lab.
>
> At the end of the course I introduced pointers (to structs or 
> to C-style arrays), and I discussed the connection between D 
> and C. I also explained in detail how they could cripple their 
> use of D and with small changes find themselves writing Java, 
> and I gave an introductory discussion of the relationship of D 
> to C++. In doing this I was pointing at their future courses: 
> Java is the default language for a course here; in the machine 
> architecture course they will use C; in the "Program 
> Development" course they will use C++.
>
> Language related issues that caught a significant minority of 
> students out when solving the course's problems, despite 
> explanation in lecture and lab, include the following. First 
> up, no default constructor for structs, and what to do about 
> it. This was complicated by the fact that in the Windows 
> implementation of DMD it was possible to assign e.g. a new 
> array directly to a struct variable, apparently contradicting 
> the dictum of a fixed .init for structs. This lead to some 
> writing code that needed non-trivial changes to run on the 
> lab's Ubuntu machines. Second, the complexities of opCmp for 
> classes, where a cast from Object is needed. We'd covered 
> inheritance, but the need for this cast struck some as an 
> unexpected deficiency in D, and we had to explain this many 
> times to individual students struggling to make their code 
> compile.
>
> Overall, a significant number of students made this class a 
> game-changing one for themselves, and were inspired and 
> stimulated to learn more about algorithms and data structures, 
> and to learn more about D. For example, we had them implement 
> associative arrays as linked lists of pairs, then as hash 
> tables using the previous implementation to do the work, and 
> quite separately as a binary search trees. They had already 
> implemented binary search trees with a single type parameter, 
> and now having that type be a struct parameterized by a pair of 
> types they could use the earlier solution to do the work. The 
> result was a lot of very natural data abstraction, and, most 
> exciting, types that looked built-in. This was very gratifying 
> to many students. And, I should mention that the presence of 
> operator overloading via opIndexAssign kept the associative 
> array solutions simple enough for all students at this level, 
> unlike what C++ would necessitate.
>
> Ali Çehreli's tutorial played a central role supporting 
> students especially during the first half of the course --- 
> without it the course simply would not have worked, so "many 
> thanks Ali" --- and an important part of that is its linearity 
> --- it can be read with only backward dependencies. This meant 
> that with hard work even students of little experience and only 
> moderate current abilities could get up to speed, and we saw 
> just that. It is hard to overstate this factor.
>
> TDPL got some use during the second half of the course: most 
> students acquired it and my impression is they did so because 
> they had become inspired by D and wanted to use it to exert 
> maximum leverage on the homework problems. All-in-all I saw a 
> significant majority of the class inspired and excited in some 
> cases by D itself because of its possibilities and 
> expressiveness. This was told to me in office hours directly 
> and repeatedly. I haven't had this experience with other 
> languages used in the department.

That is really great!
Is there any chance for a comparative analysis on the experience 
of using D?
It could really help support more institutions to change over to 
it.


More information about the Digitalmars-d-announce mailing list