Live data from Hacker News

Memorizing a programing language using spaced repetition software

sivers.org

31–40 of 94 posts

Re: Memorizing a programing language using spaced repetition software

#31

As others have mentioned, its less about the syntax of a language and more about the plethora of libraries that is the real boon when it comes to using a programming language. It has been said that the majority of a tough problem is worked out unconsciously. If we eschew memorization for "just in time" methods, we are essentially putting a hard limit on the type and difficulty of problems we're capable of solving. I…

I agree with you and I like your last point. It is indeed a problem that we have many languages and many libraries when many of them do the same thing. One big library to rule them all. Some day we will have that. There will be many algorithms in there, containers, network stack, everything you want and need. And cross platform of course.

Re: Memorizing a programing language using spaced repetition software

#32
post #28

Seems like a less than efficient way to learn and remember a programming language. Unlike natural languages, we can write programs with programming languages. We can run these programs, and if they still work, then they're probably still correct*. You can't do that with written/natural language. As far as remembering programming language constructs and vocabulary, the way to do it is do projects. You use what you lea…

What you say is true. But the way the human memory works makes the PHP library thing a non-issue. Even if it's badly designed, even if it's not well made, you will probably remember it in the same time frame. Maybe a little slower but not much. That's the flexibility of the humain brain for you. It's not picky at all. I'm a C++ programmer but I remember myself learning and remembering the PHP functions very fast a few years ago. The PHP library is just a bunch of stuff put together and yet I still remember a lot of them today. Even the parameter names. Even in spoken languages this applies. In French, you have to memorize the spelling of every word if you want to write without making too many mistakes because the spelling of most of the words doesn't make any sense sometimes. Sometimes the word is coherent with the sound, sometimes the word has mute characters, sometimes the word is bizzare because it comes from Old French... You have to remember everything. Ok maybe I shouldn't have picked French because we do have a big problem about dixlexia and the average teen douchebag can't even spell the word poker.

Re: Memorizing a programing language using spaced repetition software

#33

Earlier quoted context omitted.

What happened to your research proposal? Did you do the research?

I submitted 4 proposals; I wound up doing a different one. The others were: * a robust user-tracking protocol for websites (this is the project I went with). Inspired by a business idea I had in 2008; currently the basis of my "big" startup project. * a "whole-machine" architecture proof-of-concept -- basically a blog app targeting a VPS. Gives you a lot more design options if you can control the architecture from th…

I indeed would be interested in the taxonomy of your last proposal, too.

Re: Memorizing a programing language using spaced repetition software

#35
Interleaved and spaced practice is a very powerful learning and knowledge retention technique. Some of recent findings in cognitive science has given credence to this approach. If anyone is interested here is the link to one of the research papers.

http://uweb.rc.usf.edu/~drohrer/pdfs/Taylor&Rohrer2010AC...

I think memorization doesn't really help understand the fundamentals of any topic. Rote memorization can only get you so far. As concepts get harder and complex, dependence on mere memorization leaves a lot of holes in the understanding of any subject matter.

Specifically in programming, syntax or semantics form just a minor part of overall problem solving exercise. Efficient and effective programming requires repeated use of concepts or paradigms in solutions for diverse problems. Our brain is much more effective in registering and recalling facts or knowledge when that piece of knowledge is exercised in diverse scenarios.

I am a co-founder of Lymboo Math (http://www.lymboo.com), an online math practice program for elementary school children. We built the curriculum that follows the natural learning sequence of math concepts. On top of the comprehensive curriculum we implemented a practice structure that relies on interleaved and spaced practice. Students practice daily on individual topics until they are proficient in that topic. Then they move on to subsequent topics along the prerequisites-based curriculum. Throughout the program the system automatically incorporates spiral reviews of previous topics at regular intervals of time to effectively cement all the acquired knowledge.

What we have found is that children easily forget what they have learned just a weeks earlier, and their performance degrades in the initial mixed spiral reviews. However, as they continue the cycle of (learn--practice--review)*, they show improved performance in subsequent spiral reviews.

Mixed spiral reviews model interleaved (mix of topics) and spaced (in time) practice to enhance our context-switching skills. The neurons in the brain make new connections and store patterns that aid in quick and fluent recall of knowledge.

Interleaved and spaced learning techniques are more than just for memorization.

Re: Memorizing a programing language using spaced repetition software

#36
post #2

Thanks for posting this. I hope this format is useful to you guys. I actually spent the last two days making a video of this, with screen recordings of using Anki and such, and then felt it's a lot more efficient to just get the info on a static HTML page instead. Any advice appreciated. - Derek

In our extensive user testing we have seen our users make great gains by using SRS. In blind Ruby coding tests we have seen users complete them faster with more confidence in their abilities and results they generate. Got some great data and numbers on exactly how much advantage learning this way gives you. Plan to release it when we launch in a couple of weeks. We are http://www.codesonic.com/ by the way.

Re: Memorizing a programing language using spaced repetition software

#37
post #30

Earlier quoted context omitted.

I submitted 4 proposals; I wound up doing a different one. The others were: * a robust user-tracking protocol for websites (this is the project I went with). Inspired by a business idea I had in 2008; currently the basis of my "big" startup project. * a "whole-machine" architecture proof-of-concept -- basically a blog app targeting a VPS. Gives you a lot more design options if you can control the architecture from th…

The last one sounds fascinating. I assume the generated plot would be a few levels beyond "Fetch X units of Y and take it to Z"? :)

Email me (see profile), I'll send you what I wrote.

Offer is open to other HNers.

Re: Memorizing a programing language using spaced repetition software

#39
post #2

Thanks for posting this. I hope this format is useful to you guys. I actually spent the last two days making a video of this, with screen recordings of using Anki and such, and then felt it's a lot more efficient to just get the info on a static HTML page instead. Any advice appreciated. - Derek

I like static text much better. That said, I thought your article was great, but all the value was in the title and possibly the link to Wozniak's page. (I was already familiar with the concept of spaced repetition, so once you pointed out that this works for programming too I pretty much got it.)

Re: Memorizing a programing language using spaced repetition software

#40

As others have mentioned, its less about the syntax of a language and more about the plethora of libraries that is the real boon when it comes to using a programming language. It has been said that the majority of a tough problem is worked out unconsciously. If we eschew memorization for "just in time" methods, we are essentially putting a hard limit on the type and difficulty of problems we're capable of solving. I…

> The more of the heavy lifting you can do unconsciously, a vastly higher level of output one is able to produce for the same amount of mental effort.

I agree, but working from the standard library has it backwards. One should subconsciously know what is in principle possible and then look up/remember how it's called in the language you are currently working in, and if it is not there implement it yourself.

Post reply on HN