Learning can be fun

I just read this excellent article Pragmatic Learning: It’s not “fun” on Roger Schank’s blog. It’s a very good post that calls bullshit on the “gamification” cargo cult which is widespread in the edtech and corporate training world. Just adding points, badges, and levels to a corporate training program that teaches you something boring is not going to suddenly make it fun. The author’s main observation is that forced learning is not fun and we need not pretend it is. Consider an employer who wants their employees to know X because it is required by law, or a bunch of students forced to learn Y or else they’ll fail. These “forced” trainings are not fun, and gamifying them is akin to putting lipstick on a pig.

Instead of gamification, the author suggests learner’s experience should focus more on things like:

  • Getting away from the one-size fits all approach:

    Courses need not be administered to multitudes. One can have a course that is for one person only and can be used when needed. […]

  • The use of simulators
  • Enable students to collaborate with peers who are learning the same thing
  • Have human teachers (tutors) available to help
  • Enable “learn by doing” experiences:

    […] real autonomous, motivated, learning happens when you are in the middle of doing something, and questions arise in your mind about it.

  • Provide training in a “just in time”(JIT) manner, e.g. provide training on X right before the student will need to do X.

I highly recommend you read the article because the above summary hardly does it justice. I agree with 90% of the observations in this article, but I have some comments and observations of my own to add below the fold.

 

Continue reading “Learning can be fun”

No bullshit guide to programming

How does one learn to code? Students in computer science and software engineering will have a few first-year programming courses, with the first one introducing basics like variables, control flow, and loops. Autodidact programmers probably started with a tutorial somewhere, but eventually got a book on the subject. Regardless of the learner’s path, we’re talking about a book that teaches “the basics.”

This is the table of contents I have in mind:

  1. Fundamentals
    1. math review (numbers, variables, functions, multi-step procedures)
    2. syntax and new type of objects (variables, functions, algorithms, int, float, list, dictionary, objects)
  2. Programming basics
    1. Expressions
    2. Functions
    3. Control flow
      1. If elif else
      2. Loops
  3. Structure of programs
    1. modules
    2. libraries
    3. frameworks
  4. Algorithms
    1. Binary search algorithm
    2. Sorting algorithms
    3. Graph algorithms
    4. Numeric algorithms
    5. Optimization algorithms
  5. Applications
    1. Fancy scientific calculations made easy (SymPy, numpy)
    2. Automate info. processing tasks (bash scripting)
    3. Generating reporting and useful analytics from data (pandas)
    4. Creating websites (Django)

It’s not the standard set of topics for the “COMP101 textbook” category,  but I bet with some thought put into it, it can be made to contain most of the material for a first-year coding class. We just godda make sure that profs will have enough to support teaching their class. Best of all it could all probably fit in 300 pages, and retail under $40. It could be even thinner, but would be better to have lots of exercises.

I’m thinking about this today because I was visiting McGill and had the chance to talk with the prof who taught my first-year programming course and we somehow got to the topic of textbooks. She remembered the computer science textbook she learned from, and described it as being very thin. So it can definitely be done.

The book described above doesn’t exist yet, but if you leave comments below telling me you want it, it will move up in the priority list…