Learning to learn (more!)

Hello everyone!

In a previous post I talked about how I’ve started looking into new learning techniques to help me on my learning quest.  I’m currently teaching myself math and programming, and it’s been tough.  Progress comes in fits and starts, and I’ve been down several dead end paths.

  1. I tried a purely project based approach.  I sat down and thought of interesting projects I’d like to make and then jumped into coding to make them.  That was a good way to get a taste of what programming is about and to confirm that it’s something I’d like to do more of.  However, the projects I was dreaming up were waay out of the scope of my beginner’s ability.  I could have scoured github for similar projects and mashed together a frankenstein project that more-or-less did what I wanted it to do, but I didn’t think this would be a good way to actually learn the concepts.  I didn’t think this would help me to generalize skills and learn to do more interesting work in the long run.
  2. So I turned to classes.  I signed up for some advanced online classes through Udacity and EdX on machine learning, robots, and AI.  I started programming in February 2017 so it’s no wonder that by April I was NOT ready to take these types of classes.  I muddled through most of a Udacity course (they give you generous starter code) and got halfway through the EdX course before I hit a wall.  Again, I didn’t think I was really getting the concepts.  I could hack together a project that would spit out the right answer, but I didn’t really get what I was doing.
  3. So I took a step back.  I started taking linear algebra and then realized I needed to go back further, and started Calculus.

Learning Calculus

For the past two weeks, I’ve been teaching myself Calculus using the amazing resources from MIT OCW and Professor Paul Dawkins’ online notes.  I also bought a big book of calculus problems for additional practice.  The first week was pretty good.  I was chugging along and felt I was making good practice.

This past week has been less than great.  On Wednesday when I sat down to do practice problems, I got every single problem I tried before lunch wrong.  That means I spent four hours bashing away ineffectively at problems and feeling more frustrated and despondent as the minutes ticked by.  I had been unwilling to move on from the work I was doing (applications of derivatives) to new material (integrals) because I wanted to master the first thing first.  But it was clear this wasn’t working.  I moved on, and found a groove again with integrals.

But it was clear that I was missing something.  I wasn’t learning effectively.  Something just wasn’t clicking and I wasn’t sure what.  I had done calculus in HS and did well, I had done problems the day before and gotten them right.  Why suddenly did it feel like my brain was mud?

I was reading through Professor Dawkins’ post on how to study math and it was obvious to me that I was in category 2 of students who don’t do well in calculus.  I was studying for hours each day but not doing well on my problem sets.  It was clear to me that I had inefficient study habits and unless something changed, I was just going to end up wasting more time.

Around the same time, I stumbled across this gihub community of Open Source Computer Science learners.  And from there, I found the subreddit for the group, which led me finally to this QA mysteriously and intriguingly titled “looking for alternatives.”

And there, I found this amazing resource for a self-learning CS curriculum.  What I love about this list is that it has a bunch of helpful resources for laying the groundwork for your self learning endeavor.

I don’t plan to go through this whole curriculum, but I did start with the learning to learn course on coursera and it’s AMAZING.

There are some things I knew or practiced when I was in school, but this time around because I’m older and feeling pressure to see results faster, I haven’t been doing, to my own detriment.  Some of the key points:

On learning/chunking

  • Chunking is the idea of grouping together related ideas/concepts in order to improve learning.  If we are memorizing a song we chunk the tune and the lyrics which make it easier to remember both.
  • When we learn something new, we lay down new neural pathways for the material.  We need to strengthen those neural pathways in order to truly understand something.
  • To strengthen neural pathways, it’s better to learn the material over time.  If we study for one hour a day for five days instead of five hours in one day we’re more likely to remember the material and to understand it more deeply.
  • It’s best to work in small chunks of time.  For example, do 25 min of focused work, then take a break, then 25 min more etc.  It’s also helpful to review material right before bed as we commit things to long term memory while we sleep.
  • An easy technique to improve retention and learning is to try to write down the key points that you learned right after learning them (without notes/looking – which is what I’m trying to do right now!)

On procrastination

  • Focus on process instead of product to beat procrastination.  Instead of thinking, I’m going to finish those five homework problems think, I’m going to work on my homework for 25 min.
  • Every night before bed, write down the tasks you plan to accomplish the next day.  Don’t go too crazy!  5-6 tasks is more than enough.  Keep them focused on process.
  • Keep all this in a journal and take note of what worked, what didn’t, and how long things actually take.  Over time you’ll get a better feel for what you can accomplish in that time.
  • Plan your quitting time.  It’s important to pace yourself and it’s also not effective to just keep on studying past a certain point.  You won’t learn more or better this way.
  • Procrastination starts with a cue, try to change that cue.  For example, if your cue to procrastinate is hearing the ping of a new email, turn off your phone.  Removing the cue will make it easier to avoid procrastinating.
  • Reward yourself for completing tasks.  Rewards can be emotional (I draw a smiley face and write ‘yay’! on my paper when I finish something) or external.
  • Lastly, believe that you can change.  Belief that you can break the cycle of procrastination is important!

On memory

  • Humans have good spatial memory.  Use this to your advantage by building a memory palace
  • The weirder or funnier your mnemonic devices, the better you’ll be able to remember the information.
  • It might seem silly, but these devices can help you as you’re starting to form memories.  Over time, this will help strength those neural pathways!

Eep!  And that’s all I have for right now.  I’m sure I’m forgetting a lot.  :/  Will need to review tomorrow (as per the suggested way of learning!)

Changing my tactics

All of this is to say that I have a lot of bad habits to unlearn and new habits to form.  Instead of going the Scott Young route and trying to cram a whole bunch of learning (ie a semester of Calculus into one week), I’m going to spread things out a bit more.

Starting this week, I’m going to concurrently do my algorithms, calculus, and linear algebra coursework.  I plan to spend ~1 hour in the morning reviewing the material, and then dedicate the afternoon to practice problems or other study techniques (e.g. making flashcards, building my memory palace etc.  🙂

I’m not sure how this will go, but my rough goals are:

  • Finish all three courses by the end of August
  • Be comfortable with applications of Calculus and Linear Algebra
  • Be able to write the pseudocode for all the algorithms covered in the course
  • Be able to analyze running time of algorithms (which is an application of calculus, I believe, so….two in one!)

Having fun!

Lastly, while math and coding is fun, it’s important to give my brain a break and do something I enjoy!

I LOVE puzzles so another book I picked up is The Art and Craft of Problem Solving.  It’s aimed at HS students (and teachers) who are interested in the math olympiads.  While I’m definitely not in the right age group for that, it has a bunch of fun brain teaser math problems like the classic census taker problem.

A census-taker knocks on a door, and asks the woman inside 
how many children she has and how old they are. 
"I have three daughters, their ages are whole numbers, 
and the product of the ages is 36," says the mother. 

"That's not enough information," responds the census-taker. 
"I'd tell you the sum of their ages, but you 'd still be stumped." 
"I wish you 'd tell me something more." 
"Okay, my oldest daughter Annie likes dogs." 

What are the ages of the three daughters?



Going back to basics: Calculus

There are a lot of great things about being an adult student. Today I started (re)learning calculus and I have to say it’s way easier this time around. I barely remember anything from high school, so it’s not easier because it’s review. It’s because I’m learning it because I want to and I know why it’s useful.
Those two reasons are tightly linked.  I’m learning it because I want to, and I want to because I know why it’s useful.
In school, we’re often told we need to learn things “just because.”  Because we need to get a good grade.  Because we need it for college.  Because that’s what people do.  None of these reasons are very compelling.  They might be enough to get you to study so you can ace a test, but they’re not enough to keep you going when things get tough.
And they’re not enough to get you curious to find out why.  And it’s knowing the why that makes things really interesting.

My love-hate relationship with math

I loved math when I was a little kid.  I took math courses (kumon?) when I was really little and I used to do the problems in my little paper booklet, then erase the answers so I could do them again.
In HS, I fell in love with calculus.  It was my favorite subject my senior year.  I worked really hard in the class and did well.  At first, I kind of tricked myself into liking it because I knew it was going to be hard.  I decided that because it was hard, I was going to love it twice as hard and make it ‘cool’ to keep myself motivated.  As Amy Chua wrote in Battle Hymn of the Tiger Mother, “Nothing is fun until you’re good at it.”  I worked my ass off in that class, got good at it, and had fun.
However, that wasn’t enough to carry me through in college.  I couldn’t stay awake during linear algebra (it was at 1pm, the dreaded post-lunch slump…) and I walked out after 30min of the first lecture of multivariable calculus.  On day 1 the prof jumped straight into the material saying he expected everyone to have the right background.  I thought I was in over my head and I just didn’t want to work hard for something that I wasn’t sure I needed.
I decided I just wasn’t a math person and gave up.
I gave myself permission to be bad at math, and bad I was!  I got a C in linear algebra – my final exam was like a nightmare.  I was staring at the paper and had no idea what anything was about.  I’m shocked I even got a C.  My senior year I took statistics and barely got a B.  I don’t remember anything about the class except that I would bring a homemade egg bagel sandwich for breakfast on those days.
I rationalized it by thinking I wasn’t a math person and moved on.  The thing is, most of us aren’t math people.  Or writing people.  Or drawing people.  We have to work to acquire those skills.  Some of us get started on that skill acquisition process earlier, so have a leg up when they get to HS/college/wherever, and that extra level of mastery makes it more fun for them.
Sure, there are the Maryam Mirzakhani‘s out there who probably do have some underlying natural ability, but I’m going to guess that most people just worked hard until it clicked.

Re-discovering math (and other basics)

This time around, I had a reason to learn.  As I’ve written about earlier, I’ve been falling down the rabbit hole of programming.  I’ve learned a lot, it’s been a ton of fun, but I’ve been hitting walls when it comes to the basics.
I started my journey wanting to make a robot.  I started two intro to AI courses (one on Udacity, one on EdX) but I had to quit both.  The Udacity course breezed through the interesting and complicated content and gave you way too much starter code so I didn’t feel as if I was learning anything.  The EdX course was better, slower paced with in-depth proofs and projects where you had to write programs from scratch, but a little over halfway in I felt stuck.  While my code was outputting the correct answers, I didn’t feel like I understood the material.
I decided to take a step back and spent a week on an Intro to Algorithms course on coursera. That was super helpful for understanding the value of primitives and the importance of running time, but it also made me realize I needed stronger math skills.

Calculus or Linear Algebra?

I vacillated a while between taking calculus and linear algebra.  I started watching the highly recommended Gilbert Strang lectures for linear algebra but kept feeling like I was falling into old patterns.
I was dragging my heels on calculus.  I had already taken it twice (once in HS and once two years ago when I blazed through the Khan Academy Calculus series with the thought of placing into a higher level continuing ed math class.  I didn’t end up doing that since I got a new job and got busy :/).  I was also starting to feel discouraged about my progress.
Five months into my learning sabbatical and instead of becoming a programmer I was going back to HS math.  Bummer.
But this has been my downfall time and time again.  I try to skip ahead because I’m impatient, but later regret not taking the slow and steady route.
I’m happy to say I learned from my past mistakes and am taking the slow route, which means taking single variable calculus.
There’s a lot of rust for SURE and as the prof said in one lecture, the calculus is the easy part. It’s all the geometry, trig, and algebra you need to do everything around the calculus that’s hard.

To binge or not to binge?

Today was my first full day of calculus.  I got through a few days of lectures and half of the first problem set.  I even caught an error in the homework solutions (and another one on the blackboard in the lecture…I emailed MIT to suggest a correction for that…we’ll see if they respond!) 🙂
I’m trying out binging to see how it goes.  I find it difficult as a full-time self learner to toggle between courses.  In school, you easily take 3-4 classes a semester.  The schedule is imposed on you from the outside.  With online lectures, I end up doing about a week’s worth of material in a day.  It just seems easier to click on to the next video than to stop and change gears to a different subject.
So I did 4 weeks of an algorithms course in ~4 days, and have finished 3 lectures worth of calculus in a day. If you think about it, it adds up.  The algorithms class suggested working 8-10 hrs a week (about a day’s work) and the MIT class is about the same.
So far I haven’t had any major stumbling blocks where I have to pound away at one problem set for 10+ hrs, but I’m sure those days will come and the 1week = 1day ratio will slip.
I’m also planning to experiment with different learning methods.  I’m concerned that binging will lead to poor retention.  I’ll finish the calculus class in two weeks, but then a month later if I try to do multivariable calculus I’m worried I’ll have forgotten everything.
One thought is to try binges by day instead of by course, e.g. Monday = calculus, Tuesday = algorithms, just to give a little time for things to sink in.
In any case, it’s all an experiment!  We’ll see where it goes!