www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.announce - D at University of Minnesota

reply =?UTF-8?B?QWxpIMOHZWhyZWxp?= <acehreli yahoo.com> writes:
I told Chuck Allison and others at DConf that I had heard that 
"Programming in D"[1] was going to be used for teaching D at another 
university.

Here is an excerpt from an email that I had received from Carl 
Sturtivant in March:

===

  I will be teaching an elementary data structures &
  algorithms class this summer, and I have decided to teach it
  in D, using your book to introduce D. The course is CSci
  1902, and its general description is on this page.

  http://onestop2.umn.edu/courses/courses.jsp?campus=UMNTC&designator=CSCI

===

Ali

[1] http://ddili.org/ders/d.en/index.html
May 06 2013
next sibling parent reply "Carl Sturtivant" <sturtivant gmail.com> writes:
Yes, I will be teaching CSci 1902 in D during the eight week 
summer term.

As CSci 1902 is being taught in the summer, there will only be 
about 60 students instead two or three times as many during 
Spring or Fall semester.

Without Ali's book to support the use of D taught in class, this 
would be difficult. TDPL will be an optional but highly 
recommended text as well.

At some point when I post a syllabus I'll connect this thread to 
it.

Carl.
May 06 2013
next sibling parent reply Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
On 5/6/13 6:37 PM, Carl Sturtivant wrote:
 Yes, I will be teaching CSci 1902 in D during the eight week summer term.

 As CSci 1902 is being taught in the summer, there will only be about 60
 students instead two or three times as many during Spring or Fall semester.

 Without Ali's book to support the use of D taught in class, this would
 be difficult. TDPL will be an optional but highly recommended text as well.

 At some point when I post a syllabus I'll connect this thread to it.

 Carl.
This is awesome! I'm sure I speak on behalf of the entire community that we'd be happy to help with anything you need. Some feedback on what was easy/difficult for students to grasp, common patterns of success, failure, false friends etc. would be invaluable. Andrei
May 06 2013
next sibling parent "bearophile" <bearophileHUGS lycos.com> writes:
Andrei Alexandrescu:

 This is awesome! I'm sure I speak on behalf of the entire 
 community that we'd be happy to help with anything you need.
I am willing to help students, in private emails, or just in D.learn :-) Bye, bearophile
May 06 2013
prev sibling next sibling parent "Carl Sturtivant" <sturtivant gmail.com> writes:
On Monday, 6 May 2013 at 22:45:15 UTC, Andrei Alexandrescu wrote:

 This is awesome! I'm sure I speak on behalf of the entire 
 community that we'd be happy to help with anything you need.
Thanks for the offer of support. I'll see what emerges as the course proceeds.
 Some feedback on what was easy/difficult for students to grasp, 
 common patterns of success, failure, false friends etc. would 
 be invaluable.
I'll let you know anything we learn. Carl.
May 07 2013
prev sibling parent reply "Carl Sturtivant" <sturtivant gmail.com> writes:
 This is awesome! I'm sure I speak on behalf of the entire 
 community that we'd be happy to help with anything you need.
There is, perhaps, a need for a short technical document bringing TDPL up to date, i.e. consistent with the currently accepted view of the definition of D (wherever that resides). No doubt this is not necessary and the course will go fine without it, but it would be useful, as well as being encouraging to those students who exercise some initiative.
Jun 02 2013
next sibling parent Jonathan M Davis <jmdavisProg gmx.com> writes:
On Monday, June 03, 2013 00:29:09 Carl Sturtivant wrote:
 This is awesome! I'm sure I speak on behalf of the entire
 community that we'd be happy to help with anything you need.
There is, perhaps, a need for a short technical document bringing TDPL up to date, i.e. consistent with the currently accepted view of the definition of D (wherever that resides). No doubt this is not necessary and the course will go fine without it, but it would be useful, as well as being encouraging to those students who exercise some initiative.
And what about TDPL is so out of date? Its description of pure is that of strongly pure and thus is not fully correct, but from what I recall, almost everything in it that's not correct (aside from actually errors in the original text - which are covered by the errata) simply hasn't been implemented yet (e.g. multiple alias thises) and was not any more correct when TDPL was released than it is now. So, AFAIK, very little in TDPL is incorrect or actually needs to be updated, and almost all of what's incorrect is supposed to be corrected by the feature in question actually being implemented. - Jonathan M Davis
Jun 02 2013
prev sibling parent Leandro Motta Barros <lmb stackedboxes.org> writes:
Maybe stuff added to the language? User-defined attributes, for instance.

LMB

On Sun, Jun 2, 2013 at 7:45 PM, Jonathan M Davis <jmdavisProg gmx.com> wrote:
 On Monday, June 03, 2013 00:29:09 Carl Sturtivant wrote:
 This is awesome! I'm sure I speak on behalf of the entire
 community that we'd be happy to help with anything you need.
There is, perhaps, a need for a short technical document bringing TDPL up to date, i.e. consistent with the currently accepted view of the definition of D (wherever that resides). No doubt this is not necessary and the course will go fine without it, but it would be useful, as well as being encouraging to those students who exercise some initiative.
And what about TDPL is so out of date? Its description of pure is that of strongly pure and thus is not fully correct, but from what I recall, almost everything in it that's not correct (aside from actually errors in the original text - which are covered by the errata) simply hasn't been implemented yet (e.g. multiple alias thises) and was not any more correct when TDPL was released than it is now. So, AFAIK, very little in TDPL is incorrect or actually needs to be updated, and almost all of what's incorrect is supposed to be corrected by the feature in question actually being implemented. - Jonathan M Davis
Jun 02 2013
prev sibling parent reply Michael Engelhardt <me mindcrime-ilab.de> writes:
Am 07.05.2013 00:37, schrieb Carl Sturtivant:
 Yes, I will be teaching CSci 1902 in D during the eight week summer term.

 As CSci 1902 is being taught in the summer, there will only be about 60
 students instead two or three times as many during Spring or Fall semester.
Any chances that the course will be public available eg. on coursera? Kind regards Michael
May 07 2013
parent "Carl Sturtivant" <sturtivant gmail.com> writes:
On Tuesday, 7 May 2013 at 11:12:51 UTC, Michael Engelhardt wrote:
 Am 07.05.2013 00:37, schrieb Carl Sturtivant:
 Yes, I will be teaching CSci 1902 in D during the eight week 
 summer term.

 As CSci 1902 is being taught in the summer, there will only be 
 about 60
 students instead two or three times as many during Spring or 
 Fall semester.
Any chances that the course will be public available eg. on coursera? Kind regards Michael
No. Carl.
May 07 2013
prev sibling parent reply Jonathan M Davis <jmdavisProg gmx.com> writes:
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
Jun 02 2013
parent reply "Carl Sturtivant" <sturtivant gmail.com> writes:
 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.
Jun 12 2013
parent reply Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
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
Jun 12 2013
parent reply "Carl Sturtivant" <sturtivant gmail.com> writes:
 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.
Aug 17 2013
next sibling parent "deadalnix" <deadalnix gmail.com> writes:
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 !
Aug 17 2013
prev sibling next sibling parent =?UTF-8?B?QWxpIMOHZWhyZWxp?= <acehreli yahoo.com> writes:
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
Aug 18 2013
prev sibling next sibling parent "Rikki Cattermole" <alphaglosined gmail.com> writes:
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.
Aug 18 2013
prev sibling next sibling parent "Gary Willoughby" <dev nomad.so> writes:
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!
Aug 18 2013
prev sibling parent "Andrei Alexandrescu" <seewebsiteforemail erdani.org> writes:
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
Aug 19 2013