<story><title>Algorithms on Khan Academy – a collaboration with Dartmouth College professors</title><url>http://cs-blog.khanacademy.org/2014/11/teaching-algorithms-on-khan-academy.html</url></story><parent_chain><item><author>egonschiele</author><text>Hey there,
I&amp;#x27;m working on an algorithms book myself: &lt;a href=&quot;http://www.manning.com/bhargava/&quot; rel=&quot;nofollow&quot;&gt;http:&amp;#x2F;&amp;#x2F;www.manning.com&amp;#x2F;bhargava&amp;#x2F;&lt;/a&gt;&lt;p&gt;It is meant to be an easier read than CLRS, so I&amp;#x27;m excited to see that Khan Academy is thinking along the same lines! I have been thinking about how to make algorithms easier to understand for the last year, so I have some feedback. Some of it is critical, so first I want to say how much I LOVE that Khan Academy is doing this. I really like the interactive nature of this, and I really like that you have comments. I think that&amp;#x27;s one advantage of e-books vs traditional books: you can&amp;#x27;t comment on a paper book. I like the sequencing too (it is very similar to my table of contents, which is cool to see).&lt;p&gt;What I don&amp;#x27;t like:&lt;p&gt;I don&amp;#x27;t understand why you have four sorting algorithms here. What does insertion sort add over selection sort? I chose to only include selection sort and quicksort in my book. I think once you know those two, you can figure out insertion sort and merge sort if needed. It doesn&amp;#x27;t add a lot for the reader...I would rather they spend mental effort learning something new.&lt;p&gt;Similarly, why include big-omega notation? I use a writing principle called &amp;quot;just-in-time&amp;quot; vs &amp;quot;just-in-case&amp;quot;. It feels like Big-Omega notation was included &amp;quot;just in case&amp;quot; the reader needs to know it for a later section. I would rather it be taught &amp;quot;just-in-time&amp;quot;, i.e. right when the reader &lt;i&gt;needs&lt;/i&gt; to know big-omega notation to proceed.&lt;p&gt;I struggled with the recursion section. My challenge was:&lt;p&gt;- come up with a real-world example that uses recursion.&lt;p&gt;- come up with an example where the recursive solution is more elegant than a while loop. Otherwise, why use recursion?&lt;p&gt;It looks like you had the same challenges. I wish you guys would swap out the factorial example for something that solves a real problem: looking through a directory for a file, for example.&lt;p&gt;It would be great to see more interactivity in the harder sections too. For example, in &amp;quot;overview of quicksort&amp;quot;, I would like to see an animation of the sorting (I am a visual learner).&lt;p&gt;Overall this is still amazing. Algorithms are such a core topic, and there are no good resources for beginners out there. Very happy to see Khan Academy take this step.</text></item></parent_chain><comment><author>pamelafox</author><text>Great feedback!&lt;p&gt;I think it helps to have both the sorts there, because it gives the students another opportunity to solidify their understanding of algorithms and because they are indeed expected in things like AP CS. Personally, I find them different enough that I need to spend time on each of them to grasp them- I always have to draw algorithms out when I&amp;#x27;m learning them, so it helped me that we had the different diagrams and visualizations for each one.&lt;p&gt;When making KA content, we have to think both about the student that&amp;#x27;s going through the content from top to bottom and the student that&amp;#x27;s &amp;quot;snacking&amp;quot; on the content, like finding it via Google search. So if you knew that a student was going to do the whole thing, you could do more just-in-time teaching - but if you didn&amp;#x27;t know, then it&amp;#x27;d be doing a disservice to the snacker to leave out something like Big O notation, because it&amp;#x27;d sure be strange if someone learned Theta and Omega and came away not knowing that last one existed. We did spend a while restructuring asymptotic notation in particular,  that was one of the topics we debated different approaches to.&lt;p&gt;We also debated the use cases for recursion, and if we should include the classic factorial challenge. We went for it in the end, as you saw. I think recursive art is my favorite, and works well in our ProcessingJS environment, but one could argue if that&amp;#x27;s real world :-) I believe that Devin is working on another tutorial with recursion and specifically on how students can come up with their &lt;i&gt;own&lt;/i&gt; recursive algorithm. I&amp;#x27;ll suggest the looking through directory example to him.&lt;p&gt;Yep, we are working on a quick sort visualization. I am also quite a visual learner.&lt;p&gt;The neat thing about online curriculum is that we can get feedback from all the students that use it and improve it over time. We&amp;#x27;ll probably look at all the feedback in a few months, once it&amp;#x27;s been out there for a bit, see where the dropoff points are, see what the common questions are, and use that to decide what needs changing.</text></comment>
<story><title>Algorithms on Khan Academy – a collaboration with Dartmouth College professors</title><url>http://cs-blog.khanacademy.org/2014/11/teaching-algorithms-on-khan-academy.html</url></story><parent_chain><item><author>egonschiele</author><text>Hey there,
I&amp;#x27;m working on an algorithms book myself: &lt;a href=&quot;http://www.manning.com/bhargava/&quot; rel=&quot;nofollow&quot;&gt;http:&amp;#x2F;&amp;#x2F;www.manning.com&amp;#x2F;bhargava&amp;#x2F;&lt;/a&gt;&lt;p&gt;It is meant to be an easier read than CLRS, so I&amp;#x27;m excited to see that Khan Academy is thinking along the same lines! I have been thinking about how to make algorithms easier to understand for the last year, so I have some feedback. Some of it is critical, so first I want to say how much I LOVE that Khan Academy is doing this. I really like the interactive nature of this, and I really like that you have comments. I think that&amp;#x27;s one advantage of e-books vs traditional books: you can&amp;#x27;t comment on a paper book. I like the sequencing too (it is very similar to my table of contents, which is cool to see).&lt;p&gt;What I don&amp;#x27;t like:&lt;p&gt;I don&amp;#x27;t understand why you have four sorting algorithms here. What does insertion sort add over selection sort? I chose to only include selection sort and quicksort in my book. I think once you know those two, you can figure out insertion sort and merge sort if needed. It doesn&amp;#x27;t add a lot for the reader...I would rather they spend mental effort learning something new.&lt;p&gt;Similarly, why include big-omega notation? I use a writing principle called &amp;quot;just-in-time&amp;quot; vs &amp;quot;just-in-case&amp;quot;. It feels like Big-Omega notation was included &amp;quot;just in case&amp;quot; the reader needs to know it for a later section. I would rather it be taught &amp;quot;just-in-time&amp;quot;, i.e. right when the reader &lt;i&gt;needs&lt;/i&gt; to know big-omega notation to proceed.&lt;p&gt;I struggled with the recursion section. My challenge was:&lt;p&gt;- come up with a real-world example that uses recursion.&lt;p&gt;- come up with an example where the recursive solution is more elegant than a while loop. Otherwise, why use recursion?&lt;p&gt;It looks like you had the same challenges. I wish you guys would swap out the factorial example for something that solves a real problem: looking through a directory for a file, for example.&lt;p&gt;It would be great to see more interactivity in the harder sections too. For example, in &amp;quot;overview of quicksort&amp;quot;, I would like to see an animation of the sorting (I am a visual learner).&lt;p&gt;Overall this is still amazing. Algorithms are such a core topic, and there are no good resources for beginners out there. Very happy to see Khan Academy take this step.</text></item></parent_chain><comment><author>tikhonj</author><text>I think a lot of tree code is good for practical recursive examples.&lt;p&gt;Of course, it really helps to have algebraic types and pattern matching because they more clearly expose the recursive &lt;i&gt;structure&lt;/i&gt; of both trees and tree-based algorithms. I&amp;#x27;ve also found that writing things out in a patter-matching style, case by case, really helps convey how to think recursively. Instead of trying to run a recursive algorithm in my head, having the separate cases &lt;i&gt;separate&lt;/i&gt; makes it easier to consider them one by one.</text></comment>