Showing posts with label learning. Show all posts
Showing posts with label learning. Show all posts

Thursday, August 20, 2009

Programming - Basic

I earlier said that computers are the defining element of our society. As such, it is a basic requirement to know how to program - if you want to claim to be educated. Without this essential idea you simply are missing out on one of the biggest developments in history and the defining element of "us".

But I did not give any reference for those interested in trying to learn this essential skill.

Here is a basic book (no pun intended), and here is a online basic interpreter to try the examples in the book [-1].

I recommend the book as it really is an introduction [0], and it is written by a famous coder Chris Crawford (so it has contextual interest). As far as I can tell this is the best basic introduction to programming. Your kids can and should read this. You can and should read this. If you cried your way through your science requirements in high school/university, cursing the gods for their cruel ways, you can and should read this. The book is (1) free, (2) short, (3) opinionated [1]. It gets the basic ideas down.

Looking for a general introduction shows there really is not a good option out there for people - could it really be that an old text thrown up on the internet, and used with a free online interpreter, is the best option out there? This seems to be a glaring hole in the literature. Back in the day you could fire up your Apple ][ and run the ubiquitous BASIC before playing a rousing game of Oregon Trail. There is lots of stuff out there, but nothing (modern) that is dirt simple and limited and just there that gets across the basic points [2].

Skimming through this book, You should learn to program by Chris Crawford, was interesting and I sat down and read it more carefully after the initial skim: it is enjoyable (!!), and is surprisingly close to some of my thoughts [3]. The book appears to best fill the niche of actually teaching programming to true beginners [4]. You too should learn to program, and Chris will show you how - and he includes an appendix on how computers work, as well as sociological commentary on the programmer culture.

"
Programming is like writing, woodworking, or photography. Anybody can do it. Doing it well, doing it like an expert – that takes a lot of work, a lot of experience, and a lot of talent. But anybody who can write a comprehensible paragraph can write a workable program. All it takes is a computer and some time." - Chris Crawford, Chapter 1

If you have ever taken a picture, wrote something, or made a simple wood project you know the pleasures that underlie these creations - we are built to act and create - and programming is yet one more form that you should explore to get some joy, learn about a key aspect of our society, and maybe find a new hobby or career [5].

Notes:
[-1] The interpreter linked above doesn't use line numbers, so some changes to the ancient "goto" examples in the book would be needed. This aspect of computers - evolution, versions, and changing infrastructure making things difficult is one of the characteristics of computing. Dealing with hacks is also a key skill - remember the "Y2K" problem? Get used to it, this is a painful yet important idea and learning to confront this is one of the "take home skills" you will get from programming - and these problems exist in all aspects of human tools and society. But to prevent complete initial frustration from being a barrier to entry use this one, I have not yet gone through the entire book with the interpreter but a random selection indicates things generally work (with one caveat: you must include line numbers to inform the interpreter).
[0]
Computer books are "sold by the pound" and are often huge poorly written books. Learning to program can improve your communication, but it will not automagically do this - as a look at most computer books attest to: you have to want it to and work hard at it, but programming does offer a route to better thinking and communication.
[1] Thus interesting. And the author has informed and earned opinions.
[2] There is "SmallBasic" from MS that looks okay, though only for PC's right now - why not on the web? Google has a powerful system, which has a great book for people ready for the next step of working with code that actually does stuff, but I don't see a dead simple system there either. Back in "the day" the Apple ][ was in every class, now a browser is everywhere. What is needed is someone like MS or Google making SmallBasic online - a big player backing a simple tool in order to make it ubiquitous. If you are a Google employee make it so with your 20% time!
[3] Overlap in opinion and ideas is likely a key factor in us deciding on likely quality of a text, and thus worth investing time on. Of course if the overlap is too large you just wasted your time, as you likely don't learn much! If the overlap is too small you likely will discount the text, or you may not be ready for the text. You want some sweet spot of agreeing with some points, and being mystified by some on a first scanning read. People who just read stuff that reiterates and defends their beliefs are called fundamentalists.
[4] If you think about it the vast amount of material in a first year CS class is huge, and one gets a split of the class into (a) those who have been previously exposed to the basics and find the class easy to a bit challenging, and (b) those who are crushed by the course as they have so many new things to learn all while competing against people well ahead of them. People in group (b) should likely read this book as a pre-course exercise to give them context and the basic ideas.
[5] Career? Likely not, but maybe... I am not a carpenter despite loving the one and only project I ever did. But I still have fond memories of my little creation. Even if your dip into programming is just reading Chris' book and playing with an online interpreter while do you do, well you will gain from it. Life is experiential.

Wednesday, July 22, 2009

Focus: One hour chunk?

You may have heard that the optimal time chunk for learning is roughly one hour, after which your attention "exponentially" drops, and you may have heard even more precise figures such as 55 minutes. The lowdown is that you waste your time if you try to do one task, that requires sharp attention, for > 1 hr.

But wait. Doesn't this sound like an urban legend? What are the odds that the human attention span exactly equals the time unit we chunk the day into? One hour? Really? Sounds fake.

The origin of the hour as the unit of the day is in the deep past, but one can speculate it it comes out of the duodecimal (base 12) number system that many ancient cultures used. Why base 12? Who knows, but hold your hand palm up and then fold and touch your fingers to your palm. You now have a counting machine - use your thumb to count on your joints and finger tips. Base 12 baby. Could be useful for commerce, counting your flock, etc. Base 12 also makes division easy - dividing by 2,3,4, and 6, all easy. Look at your counting machine again - easy to "chunk" things together in 2's, 3's, 4's, 8's, etc. But I digress.

So the hour is an unit of time defined by ancient number systems; it should have little correlation to human attention span. As it is a "reasonable" unit of time we teach classes for 1 hour. Some education researchers then find that 1 hr is an optimal attention span time. This "finding" conflicts with every single person who went to public school or attended a lecture - close attention for a full hour? Huh?

Apparently the FAA limits lectures to ~ 20 minutes in U.S. flight schools, as they have found that this is the time students can highly absorb information (HT: Philip Greenspun). This is inline with my personal experience - the first 1/3 of a lecture I can really absorb, then things get harder. This 20 minute claim also makes the 1 hr "attention window" make some more sense - if you take engineering you will learn that ~ 3 time constants are sufficient to have some fast ("exponential") decaying process go down to almost nothing (~ 5%). We can have lectures that last for 1 hr, and still get something out of it (not much, but something) - if this was not true we would have dumped the 1 hr lecture long ago. Essentially we are horribly wasting time and being inefficent, not to mention making people uncomfortable and the environment unpleasant, but not to the point that it becomes so blatantly bad that schools actually have to change.

Take away message:
- It seems that 20 minute chunks are ideal for high attention absorption tasks, and by the time you get to an hour you are at the point where it makes no sense to keep going (if high attention is required).
- Schools are both being ineffective in transferring information, and making children uncomfortable, by using 1 hr chunks - if they do not use additional tactics to take "natural" attention span into account. Essentially schools are training many students that learning is a negative experience. Make sure you don't accidentally do this to yourself by using standard "clock time" units instead of "head time" units in planning learning sessions in your schedule.
- The mismatch between "head time" and "clock time" is large enough to cause us problems, but not large enough to force changes in society. Keep this in mind in planning your schedule.

Questions to think about:
- What about "flow", when does this 20 minute rule no longer apply? (hint: think about the "direction" of flow...). In flow situations, what is a good time chunk? Is this completely idiosyncratic?
- How can you use this 20 minute rule to help you learn/engage in your work and life? Can you see any areas where you are trying to push longer, and thereby both waste time (due to inefficient absorption) and implicitly "train yourself" to dislike the task? There may be low hanging fruit here for increasing your efficiency and effectiveness, as well as increase your pleasure in a task (which goes a long way to being good at it).
- 20 minutes may be "optimal" in terms of being highly receptive, but this rule will be both an average and indicates the most receptive time frame. For yourself, and your given task, you may be able to go a bit longer, or must go a bit less. But 1 hr is likely the cutoff beyond which you are completely wasting time. Experiment - 4o minutes might be good for you/your task, etc. - with times between 20 minutes and 1 hr to see what works.
- Why 20 minutes? What are the mechanisms that make 20 minutes a natural unit of time for paying attention?