eigen-vector 282 days ago [-]
Take generous notes. With practice, you'll develop your own _language_ for taking notes. Personally, for me, the act of writing down—or typing if that works better for you—is almost as if reading the content twice, which in some sense it is. I go back to my notes every now and then. After years of doing it, I've learned to subconsciously devise an index of my own which is useful for me to remember a gist of what I learned, and also lets me figure out where to go look for if I need a deeper look into it.

Like other comments have mentioned, applying what you learn is also important for recollecting information after any reasonable period. If something's not used by at a later point, is there really a point to remember it? Of course, there's the joy of remembering things just for the sake of it which I'm not discounting. But party trick trivia for some reason has always lasted longer in memory than essentials :-) beats me as to why.

marssaxman 282 days ago [-]
I would put the information into practice - in your case, by attempting to build a compiler. The exercise makes the knowledge concrete. Think of it as setting yourself a test.
ibeckermayer 282 days ago [-]
I second this. In order of efficacy:

1) doing a project 2) taking notes 3) simply reading

Best if you can do all 3 in reverse. There's just no substitution for the creative spark and contact with hard reality that doing a project gives you. Any ambiguities, misunderstandings, and missed information are almost guaranteed to be ironed out with a wisely chosen project.

malux85 282 days ago [-]
They key to memory is spaced repetition. I do it like this:

- Read the content - Make 1 / 2 sentence question, or just write the title - Do something else (coding) for 10 mins - Come back to it, if you cant remember it, read it again, if I can remember it, keep reading.

At the end of the day, review the notes, and move all the bullet points to another list.

Come back to it tomorrow.

Keep sorting and moving content up and down the lists until your remember it.

I use the mac notes app for this, because then it auto-syncs with my ipad and phone. If I'm on the train, or in the uber, I can get my phone out and do a quick memory jog

hackermailman 281 days ago [-]
As noted in other comments, if you build something as you learn the material you'll remember it. My learning strategy is usually:

  Think up idea
  No idea how to implement it
  Look at university lecture notes for background material
  Read lecture notes, read assigned text
  Implement idea while I read the text and notes
  Notice my implementation is poorly inefficient
  Read more advanced notes/papers to optimize
  Rewrite idea, success!
This is exactly what I did when I read Modern Compiler Implementation in ML by Andrew Appel. This was the course I used http://www.cs.cmu.edu/~janh/courses/411/17/schedule.html though it was an earlier version. Afterwards I collected a lot of compiler optimization notes, like here https://www.cs.cmu.edu/~15745/syllabus.html
chrisshroba 282 days ago [-]
On the topic of spaced repetition, have a look at Anki. It's a great tool for aggregating all the stuff you want to remember.
dynamoa 282 days ago [-]
I think what you are describing is really how to learn. It's not that you require a test in order to remember material, you just need to implement what you have read in order to reinforce what you have read into memory. Humans remember things a lot better when you have an experience to associate with it.
tugberkk 280 days ago [-]
This may not be the answer you're looking for but I'm going to give my 2 cents. This is actually the same with every book we read or subject we study. It is impossible to remember everything all the time. It is actually the deductions we do while studying / reading. That is what improves our brain and thinking ability.

Thing we call knowledge will go away, we will always check books and websites if we are not using it frequently. I really like what Einstein said: Never memorize something that you can look up!

gnode 281 days ago [-]
I've always found the key to learning is to make the information relevant to you (although in most cases the information is relevant to me before I learn it). Personally, I don't find formal testing / deadlines have helped me learn things, other than as a reason to study.

In the case of compilers, I recommend you build one, or at least deeply consider how you would, as a driver to put the information into use. An an exercise, you could think about what language would put as many concepts in the textbook into use as possible.

bewe42 279 days ago [-]
Summarize in your own words (and drawings) without looking into the textbook. Even better, explain to someone else what you have learned. Best would be to find a study partner, if that's not possible try to write for the public.

Learning occurs when we relate new material to what we already know. Build your own internal knowledge map.

ajeet_dhaliwal 280 days ago [-]
Isn’t a better question how do you remember things after the test? When I was in school on the day of the test I might get x% , two weeks later same test would have been x/2% and probably x/4% the week after. The reinforcement is key, rather than any test it’s working on personal projects that apply the knowledge that does it for me.
sharemywin 282 days ago [-]
Read a section of it. put it down. and then think about it. would you do it that way? what would you do different? how can you benefit from this? where could this be useful?

You really want to know it. Do a project with it.

tytytytytytytyt 281 days ago [-]
> How do you remember things without tests?

I study... It's not the tests that help me remember things, it's the studying and working with them.

lhuser123 281 days ago [-]
There are very good answers here. One way I think about it is this : if is not needed, it will be deleted.
jxub 281 days ago [-]
Being curious, what's this textbook?