digitalmars.D - Online D course on coursera/udacity/etc?
- Andrei Alexandrescu (6/6) Mar 18 2013 Hello,
- Samuel Lampa (3/6) Mar 19 2013 Ah, Yes, would be really useful to get us newbies going! :)
- Adam Wilson (76/82) Mar 19 2013 We looked into doing something like this for one of our products. And go...
- H. S. Teoh (28/45) Mar 19 2013 [...]
- Adam Wilson (12/55) Mar 19 2013 Agreed. I was using Documentation in a broader than usual sense here, bu...
- Jacob Carlborg (7/29) Mar 20 2013 I really like Railscasts in the Ruby on Rails world. But these are
- Chris Cain (78/78) Mar 20 2013 The format that I found the most powerful to learn a new language
- Alan (24/31) Mar 20 2013 I personally do not learn very well from video courses (which is
- Jacob Carlborg (5/10) Mar 21 2013 I can understand that. In DWT you need to create the event loop
Hello, Online courses are becoming quite popular. A D course on one of the up-and-coming online course sites would be great. If anyone would want to do such a course (e.g. derived from TDPL), chime in here with ideas. Thanks, Andrei
Mar 18 2013
On 03/19/2013 02:52 AM, Andrei Alexandrescu wrote:Online courses are becoming quite popular. A D course on one of the up-and-coming online course sites would be great. If anyone would want to do such a course (e.g. derived from TDPL), chime in here with ideas.Ah, Yes, would be really useful to get us newbies going! :) // Samuel
Mar 19 2013
On Mon, 18 Mar 2013 18:52:42 -0700, Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> wrote:Hello, Online courses are becoming quite popular. A D course on one of the up-and-coming online course sites would be great. If anyone would want to do such a course (e.g. derived from TDPL), chime in here with ideas. Thanks, AndreiWe looked into doing something like this for one of our products. And got a few interesting takeaways from it. First off, doing anything of the quality that a site like Coursera is likely to accept requires a pretty substantial up-front investment. You need access to a soundstage, HD camera, audio mixing gear, and an assortment of lights for the "talking head" portions of the videos that are usually present. Even if you choose to eschew the talking head portions completely you still need access to a sound-isolated booth and audio mixing gear. This wasn't a major problem for us (you can rent these things just about anywhere in North America/Europe), so it wasn't the reason we decided not to. I'd also point out that this really requires a trained voice-actor with knowledge of how to modulate their voice to sound correct in audio. Voice-Over work is most definitely NOT something just anyone can do. Unless the community has someone with the needed skills in this area, you'd be well advised to hire it out for a few K$. Having a good voice will make ALL the difference in whether or not people can even stand to listen through a single video segment. We (Prospective Software) happen to have someone with the required skills on staff already, so that wasn't the reason we decided against either. The reason we decided not to essentially boils down to the inherent properties of video. First, video is linear. And second, video is not searchable. Given that programming is both highly non-linear and highly context-sensitive, these two properties make video a less than ideal method for teaching languages. That's not to say it can't be done, our order to better understand what he is selling (and just what the heck those programmers were saying!). However, the content was very basic, and was not really meant as anything other than a jumping off point for experimentation. And even to cover the basics took something like 40hrs of video. It took the marketing guy 40 hours to complete roughly 8 hours of video due to the constant rewinding and reloading of other videos he needed to remind himself. Now the marketing guy has no programming background, but that said, languages are contextual, and you always have to rewind to remember what the the presenter is referencing from two videos ago. There was also another reason. We couldn't find a single company in our space (broadly defined as programmer tools) that used videos as their primary teaching method. If they had any videos at all, they tended to be feature-specific usage demonstrations. What were the companies we looked at pushing as the best way to learn their software? Documentation. Which I define as searchable documents that encourage hands-on experimentation. Also of note is that their documentation tends to be well organized, easily searchable, includes high amounts of detail, and most importantly, is well written. Given the costs associated with video production, and the inherent difficulties of teaching programming via video. I would say that D would get a MUCH better ROI on improving the available documentation. Consider for a moment that video can only answer the questions that the scripter forsees, how then is the new users supposed to continue learning beyond what the videos teach? There is yet another factor to be considered. Producing video is a very laborious process. And once it is produced, it cannot be changed without being re-shot and reedited. Given the high rate-of-change that D has been experiencing, the chances of the video become obsolete quickly are very high, even when constrained to the basics. Essentially, every bug fix becomes another potential video re-shot. This was another factor we faced since we are planning for (roughly) quarterly feature releases. My personal opinion is that D is nowhere near ready for videos. The documentation itself is very thin and what there is tends to be either out-of-date, poorly-written, light on details, or some combination thereof. Without searchable docs to back-up what it shown in the videos, there is a good chance that you'll just confuse people. However, I am sure that their are counter arguments, and I am not intending to disuade, only comment on our experiences. We have another product in development for a completely different market (Aftermarket Automotive CRM) that we intend on developing over 100 hours of video training for, because it happens to work well in that market. -- Adam Wilson IRC: LightBender Project Coordinator The Horizon Project http://www.thehorizonproject.org/
Mar 19 2013
On Tue, Mar 19, 2013 at 12:15:02PM -0700, Adam Wilson wrote:On Mon, 18 Mar 2013 18:52:42 -0700, Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> wrote:[...][...]Online courses are becoming quite popular. A D course on one of the up-and-coming online course sites would be great. If anyone would want to do such a course (e.g. derived from TDPL), chime in here with ideas.We looked into doing something like this for one of our products. And got a few interesting takeaways from it.First off, doing anything of the quality that a site like Coursera is likely to accept requires a pretty substantial up-front investment. You need access to a soundstage, HD camera, audio mixing gear, and an assortment of lights for the "talking head" portions of the videos that are usually present. Even if you choose to eschew the talking head portions completely you still need access to a sound-isolated booth and audio mixing gear. This wasn't a major problem for us (you can rent these things just about anywhere in North America/Europe), so it wasn't the reason we decided not to.I agree that doing a full-scale online video course for D is probably not a good idea at the moment. However, that does not preclude having a text-based course, which is much easier to produce and keep up-to-date. Although video is nice to have, I don't see it as essential. In fact, I tend to avoid video courses, because (1) it takes a lot of time to watch the videos (reading is much more efficient); (2) it's difficult to go through a video piecemeal (you lose the train of thought of the speaker), whereas you can pause while reading whenever you like and resume later; (3) reading permits highly-nonlinear consumption of materials: you can put the current page on hold, click on a link to more details about something you didn't quite understand, read that first, then come back, etc.. (4) Written material is searchable. I contend that a text-based course is *not* the same as documentation. Documentation is intended for reference: to look up something when you already know what you're looking for. A *course*, OTOH, is for learning: you need some guidance to grasp the basic principles and concepts before the documentation is useful to you. Sorta like a tutorial, but more thorough, and with interspersed activities like quizzes, small programming projects, etc.. Depending on how you structure it, you can do a lot without needing to shoot/maintain videos. T -- Life is unfair. Ask too much from it, and it may decide you don't deserve what you have now either.
Mar 19 2013
On Tue, 19 Mar 2013 12:40:55 -0700, H. S. Teoh <hsteoh quickfur.ath.cx> wrote:On Tue, Mar 19, 2013 at 12:15:02PM -0700, Adam Wilson wrote:Agreed. I was using Documentation in a broader than usual sense here, but that is the general idea that I was trying to get across. We need to work on the written stuff before we considering videos as that's where the payoff is. -- Adam Wilson IRC: LightBender Project Coordinator The Horizon Project http://www.thehorizonproject.org/On Mon, 18 Mar 2013 18:52:42 -0700, Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> wrote:[...][...]Online courses are becoming quite popular. A D course on one of the up-and-coming online course sites would be great. If anyone would want to do such a course (e.g. derived from TDPL), chime in here with ideas.We looked into doing something like this for one of our products. And got a few interesting takeaways from it.First off, doing anything of the quality that a site like Coursera is likely to accept requires a pretty substantial up-front investment. You need access to a soundstage, HD camera, audio mixing gear, and an assortment of lights for the "talking head" portions of the videos that are usually present. Even if you choose to eschew the talking head portions completely you still need access to a sound-isolated booth and audio mixing gear. This wasn't a major problem for us (you can rent these things just about anywhere in North America/Europe), so it wasn't the reason we decided not to.I agree that doing a full-scale online video course for D is probably not a good idea at the moment. However, that does not preclude having a text-based course, which is much easier to produce and keep up-to-date. Although video is nice to have, I don't see it as essential. In fact, I tend to avoid video courses, because (1) it takes a lot of time to watch the videos (reading is much more efficient); (2) it's difficult to go through a video piecemeal (you lose the train of thought of the speaker), whereas you can pause while reading whenever you like and resume later; (3) reading permits highly-nonlinear consumption of materials: you can put the current page on hold, click on a link to more details about something you didn't quite understand, read that first, then come back, etc.. (4) Written material is searchable. I contend that a text-based course is *not* the same as documentation. Documentation is intended for reference: to look up something when you already know what you're looking for. A *course*, OTOH, is for learning: you need some guidance to grasp the basic principles and concepts before the documentation is useful to you. Sorta like a tutorial, but more thorough, and with interspersed activities like quizzes, small programming projects, etc.. Depending on how you structure it, you can do a lot without needing to shoot/maintain videos. T
Mar 19 2013
On 2013-03-19 20:40, H. S. Teoh wrote:I agree that doing a full-scale online video course for D is probably not a good idea at the moment. However, that does not preclude having a text-based course, which is much easier to produce and keep up-to-date. Although video is nice to have, I don't see it as essential. In fact, I tend to avoid video courses, because (1) it takes a lot of time to watch the videos (reading is much more efficient); (2) it's difficult to go through a video piecemeal (you lose the train of thought of the speaker), whereas you can pause while reading whenever you like and resume later; (3) reading permits highly-nonlinear consumption of materials: you can put the current page on hold, click on a link to more details about something you didn't quite understand, read that first, then come back, etc.. (4) Written material is searchable. I contend that a text-based course is *not* the same as documentation. Documentation is intended for reference: to look up something when you already know what you're looking for. A *course*, OTOH, is for learning: you need some guidance to grasp the basic principles and concepts before the documentation is useful to you. Sorta like a tutorial, but more thorough, and with interspersed activities like quizzes, small programming projects, etc.. Depending on how you structure it, you can do a lot without needing to shoot/maintain videos.I really like Railscasts in the Ruby on Rails world. But these are screen casts with tips and tricks for when you already know Rails. These casts are around 10-15 min so the length is never a problem. It's a great way to find out new things/plugins in the Rails world. -- /Jacob Carlborg
Mar 20 2013
The format that I found the most powerful to learn a new language or concept goes like this: 1. Gather a set of problems 2. Introduce a few new concepts while considering the effect of those concepts on your problems 3. Use new concepts to solve that set of problems 4. Iteratively improve the usage of those concepts in each problem until "perfection" is reached. Essentially, revisit a "sufficiently difficult" problem (trivial problems are boring to revisit) several times doing it better (by some metric) each time. More recently for me, 1 seems less necessary as I've learned over time to make the connections needed for 2 without specific problems in mind. However, for someone learning this stuff for the first time, having a well chosen set of problems (1) is _exceptionally_ valuable. Now, these steps might seem "obvious", but I've found that the majority of "bad" videos or classes that claim to teach something in Computer Science fail to follow them in some way. Often I find courses withhold the problems until after you've gone through the material OR give you too many problems to consider at once which doesn't allow you to really consider the impact of your approach to each of the problems. Generally ~3 non-trivial problems is the best number to consider at any one point in time. If a D language course were created, I think the absolute BEST way to gain some viewership is to teach _problem solving_ (which is a major niche for beginner/intermediate students of programming and has immense value for even expert programmers) using D. Look up some of the many programming problems in various programming competitions and teach people how to solve them and how the thinking process goes for them, and teach them the best way to utilize D for the task. This is how I learned most of the programming languages I know and it allows me to get up to speed on the various idioms of the languages and how everything helps (or hinders) in non-trivial situations. It'd be even better if the course taught you the meta-learning skills needed to replicate the experience of the course for other languages (though that might be exceptionally difficult to teach in a single course). For the format of the course: Provide an introduction to the course, how it will work, etc. Show the student how to set up the programming environment necessary to complete the course (including teaching a proper workflow for Programming in D which should show how to use the docs effectively). Personally, I love using Sublime Text 2 for programming, but Notepad++ is free and it treated me very well for a long time while learning D for the first time. Build each section a course somewhat like this: 1. Provide 3 non-trivial problems up front and give input/output combinations (for D, you could use a unittest block that runs your solution on a few inputs and verifies they return correct information) 2. Give ~1-1.5 hours of short video segments (~10-15 minutes each) teaching problem solving skills necessary to solve the problems while showing off the syntax, semantics, idioms, and standard library of D. Encourage the student to either think through or work through the problem set themselves as they go through the videos, but do not provide the actual solution to the problems during the videos. 3. Have the students submit their homework problems and have them run on a variety of inputs that aren't necessarily known by the student. 4. Allow the student unlimited resubmissions of the homework problems that test the code for brevity (don't include short identifiers, though) and speed. Maybe put up a scoreboard that allows everyone to see how their code ranks. Maybe give a tiny bit of extra credit to the best 20%. It'd be really nice if, after the course ends, there was a way to download and view the best submissions for each problem. For the final problem solving section, provide a series of challenging problems that use techniques learned in the previous sections. Amped up varations of previous problems might be acceptable, but something new and interesting would be better since many people might have redone the previous problems enough times to be bored by a simple "variation". As a bonus, link to a few good tutorials on git and good git practices. Then show the workflow needed to contribute to DMD and/or Phobos. Maybe we can interest enough students to help fix more bugs and get even more pull requests this way!
Mar 20 2013
On Tuesday, 19 March 2013 at 01:52:35 UTC, Andrei Alexandrescu wrote:Hello, Online courses are becoming quite popular. A D course on one of the up-and-coming online course sites would be great. If anyone would want to do such a course (e.g. derived from TDPL), chime in here with ideas. Thanks, AndreiI personally do not learn very well from video courses (which is not true of everyone). I will say generally though that I would agree with the movement to provide more D tutorials with examples. I really wanted to use GtkD for example (I know it is an extension for the language, not part of it), but the only Python, etc. For someone like me who does not have much experience writing a GUI, learning from the core documentation is like feeling around in the dark. Another example would be a tutorial on using D for numerical or scientific computing. Fortran, Python, C, and C++ all have great tutorials with examples of elegant numerical code written by talented programmers. I primarily do numerical work in Fortran and Python. I do not use C because it can be overly complicated to do certain things and I do not use C++ because writing in it feels like walking through a messy room and tripping over misplaced objects. I appreciate that D seems to solve both of these issues. I would be happy to generate some numerical examples in D as best I could if someone out there would use them. My suggestion would be more text-tutorials with plenty of examples aimed towards niche programmers. Alan
Mar 20 2013
On 2013-03-21 02:52, Alan wrote:I really wanted to use GtkD for example (I know it is an extension for the language, not part of it), but the only tutorials I could find with does not have much experience writing a GUI, learning from the core documentation is like feeling around in the dark.I can understand that. In DWT you need to create the event loop yourself. How should a user know that by only reading the API reference. -- /Jacob Carlborg
Mar 21 2013