View mode: basic / threaded / horizontal-split · Log in · Help
June 03, 2013
Re: D at University of Minnesota
On Sunday, June 02, 2013 21:56:30 Leandro Motta Barros wrote:
> Maybe stuff added to the language? User-defined attributes, for instance.

Sure, there's stuff that TDPL doesn't describe, but TDPL never described 
everything (for instance, it doesn't go into a detailed explanation of the 
various types of is expressions). But that's different from it being incorrect 
due to language changes, which seems to be what Carl is saying is happening.

I'm sure that we'll get another edition of TDPL at some point, but as far as I 
can tell, aside from the errata (which indicates errors in the original text 
as opposed to anything that's changed in the language since), there are very 
few things in there that are wrong at this point, and almost all of them 
relate to features that have never been fully implemented and thus were as 
incorrect when TDPL was published as they are now (but hopefully won't be 
incorrect in the future). And even that list isn't very long. The only two 
that I can come up with off the top of my head is having multiple aliases 
thises and having synchronized classes instead of synchronized functions.

- Jonathan M Davis
June 12, 2013
Re: D at University of Minnesota
> Sure, there's stuff that TDPL doesn't describe, but TDPL never 
> described
> everything (for instance, it doesn't go into a detailed 
> explanation of the
> various types of is expressions). But that's different from it 
> being incorrect
> due to language changes, which seems to be what Carl is saying 
> is happening.

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.
June 12, 2013
Re: D at University of Minnesota
On 6/12/13 5:07 PM, Carl Sturtivant wrote:
>
>> Sure, there's stuff that TDPL doesn't describe, but TDPL never described
>> everything (for instance, it doesn't go into a detailed explanation of
>> the
>> various types of is expressions). But that's different from it being
>> incorrect
>> due to language changes, which seems to be what Carl is saying is
>> happening.
>
> 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.


Andrei
August 17
Re: D at University of Minnesota
>> 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.
August 17
Re: D at University of Minnesota
On Saturday, 17 August 2013 at 15:22:26 UTC, Carl Sturtivant 
wrote:
> 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.
> [...]

That is truly awesome news !
August 18
Re: D at University of Minnesota
What a wonderful report! :)

On 08/17/2013 08:22 AM, Carl Sturtivant wrote:

> 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.

Thank you, that made my day (and summer)! :)

Ali
August 18
Re: D at University of Minnesota
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.
August 18
Re: D at University of Minnesota
On Saturday, 17 August 2013 at 15:22:26 UTC, Carl Sturtivant 
wrote:
> 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.

This is awesome news! Fantastic!
August 19
Re: D at University of Minnesota
On Saturday, 17 August 2013 at 15:22:26 UTC, Carl Sturtivant 
wrote:
> 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.
[...]

http://www.reddit.com/r/programming/comments/1ko94o/experience_report_teaching_d_at_a_summer_course/


Andrei
Next ›   Last »
1 2
Top | Discussion index | About this forum | D home