our first class begins with a quiz (what?!)

this quiz is specifically designed for someone who is already out of college, didnt learn anything about code but shows enough interest to try out a class or tutoring session.

the important thing isnt so much what they answer, (you can even mention that) but the questions and choices are what matter.

its a warm-up to get them into the subject without feeling like they have to pay close attention, and hopefully the answers are all obvious enough that by trying to answer them, you teach yourself something.

a quick lecture would not serve as a warm-up, and would put more pressure on someone to pay attention. hence a quiz. plus you get to tell a person who is brand new to the subject: “ok, we start with a quiz!” then they think youre a sadist… and then you lay question 01 on them:

 

simple question 01: (of ten)

what do you think cls does?

a. puts text on the screen
b. reboots the computer
c. clears the screen of text
d. crashes the internet

 

if they get it wrong, you make sure they understand its not important right now (how could it be?) and tell them it clears the text. maybe they just learned a command, maybe not. next question! (definitely keep it moving…)

 

simple question 02:

which command do you think opens a new file to save data

a. arropen “text.txt”
b. open “r”
c. close
d. open “w”

 

simple question 03:

what do you think print does?

a. puts text on the screen
b. clears the screen
c. changes the color of something
d. adds two numbers

 

simple question 04:

why on earth would that be called print, anyway?

a. before computer screens were common, computers used teletypes
b. the basic command for putting text on the screen was called print
c. a few computer languages call it that, because of teletypes mentioned
d. all of the above

 

simple question 05:

which of these commands converts text to uppercase?

a. str
b. val
c. ucase
d. mid

 

simple question 06:

what do you think mid does?

a. quits the program
b. crops text from the middle of a character string
c. downloads music from youtube
d. converts text to lowercase

 

simple question 07:

which of these commands lets you print to the screen in yellow?

a. mid 5 20
b. arrcurl “time.org”
c. prints
d. colortext 14

 

simple question 08:

what does the divby command do?

a. adds two numbers
b. subtracts one number from the other
c. draws a line on the screen
d. divides one number by another

 

simple question 09:

what are the names of the other arithmetic commands?

a. plus, minus, times
b. add, subtract, pizza
c. gaga, ooh, lala
d. one, two, tres, cuatro

 

simple question 10:

how do most people learn how to write code?

a. standing on their head and listening to beatles 45s at 78 speed
b. typing in examples,attempting simple tasks and taking other code apart
c. “lasers”
d. somewhere along the way to their phd in rocket science

 

novice question 01: (of five)

what is the best description of programming?

a. writing instructions a computer can understand
b. writing instructions no mortal can comprehend
c. designing the coolest video game ever imagined
d. living in your parents basement (ok, yes– trick question!)

 

novice question 02:

what is a variable?

a. something only the computer knows, but wont tell you
b. a name that has data assigned to it
c. the thing that flips down on the front of a printer
d. an exciting dance routine that was banned in finland

 

novice question 03:

which of these is a valid line of fig code?

a. just do what i want!
b. hello computer, would you clear the screen?
c. x  “hello, world!”  colortext 2  print
d. when{you go out}– pick up{some eggs};

 

novice question 04:

most lines of fig code begin with a / an…

a. variable
b. octopus
c. equation
d. soundbite

 

novice question 05:

fig consists of more or less the following:

a. oranges, cherries, grapes, whipped cream
b. hypotenuse, circumference, primes, isosceles
c. functions, input/output, loops, conditions, variables
d. celtic runes and secret handshakes

 

advanced question 01: (of five)

which of these lets you count backwards from 15?

a. now  “hello”  print
b. for x, 15, 1, -1
c. forin x, textfile
d. count backwards from fifteen

 

advanced question 02:

which of the following fig syntax is *optional*:

a. quotes for strings
b. # hashes for comments
c. 5.5 decimal points in non-integers
d. ( ) | ; : ,

 

advanced question 03:

what is an array?

a. a file that lets you save your game
b. an input device
c. a type of variable that stores multiple items
d. another way of saying “internet”

 

advanced question 04:

which of these best describes a function?

a. text input from the keyboard
b. the numeric ascii value of a character
c. an operator applied to an array
d. a section of code that is given a unique name

 

advanced question 05:

what is a conditional?

a. i will tell you if you give me 5 dollars
b. that depends, what day of the week is it?
c. a section of code that runs if two items correspond in a specific way
d. all of the above

 

if 20 is too many questions, skip the “advanced” questions and get on with the lesson.

 

be sure that anyone taking the quiz understands the purpose is to warm up, not to get the answers right. if you dont want them to relax, start with functions– theyre the most difficult of the “7 concepts” in fig:

  • variables
  • input
  • output
  • basic math
  • loops
  • conditionals
  • functions

 

learning how to code is not always easy

“I wrote this letter to myself as a part of an assignment in the Udacity Front-End Web Developer Nanodegree course I’m previewing today…”

Source: Learning how to code is NOT easy

 

cool…”front-end web developer nanodegree.” i have no idea what that is. (ok, i can sort of guess.)

i used to make websites, they were easy. now every site has to have a database (not true, but theyre nice) and they need a javascript library/content engine (not true, but they definitely do wonders for big websites) and you have to use html5, css and a python, php or node.js backend (all optional.)

they can make all of this complex, and industry always will. i think its unfortunate, because the bells and whistles one person will say are necessary is just a bloated pain to someone else. if you teach computer science, you might still have a webpage done in html 3 without css.

but the worst part is, modern education insists that people start in the middle. its not completely crazy; if you can start in the middle, there are certainly rewards. you get to see the “big picture” before you even understand the details. you get started right away on results, before you even know how to achieve them. i mean thats how it is with software these days– people use it, but they still dont know how.

all the same, thats not the only way to learn about computers, and its not how i learned, either. when i started with computers, i only used two programs– a paint program (great for building skills with the mouse, also good for art) and basic. so you would get a little spiral-bound book out:

3baa6eaa515090f55bbee15a97482e4c3

 

and simply follow the instructions. type this:

10 PRINT "hello world!"
20 COLOR 5
30 GOTO 10

 

then you would type “run” and hit enter. it would say hello, world! on the screen, then change the color to purple and say it again, and again, and again, until you hit ctrl-c.

if youre 5 years old and can read, you can do this. it starts out slow, but in a way that can grab your interest for the next 20 years.

ive had lots of hobbies. this one stuck– i kept teaching myself from that point onward until i wrote my own programming language. its not the best or the fastest programming language in the world (thats partly because i chose to implement it in python, and partly because speed or “being best” or fast, wasnt a design goal) but its designed to bring this sort of learning back for everyone.

if youre doing web design, youre already learning 2 or more languages at once. when it was just html, coding for the web was easy! just put little things in less-than/more-than signs < > and add the things you want to say, or links to pictures. a 5-year-old could do it.

more importantly, to someone that doesnt have a long background in coding, they may not realize that all code bears incredible similarities to all other code. on the surface, they can be very different. but the surface is abstract; its different because it was made differently, not because it has to be (or even really is, by the time it gets to the computer.)

im not attacking abstraction– my entire programming language is an abstraction over python, which is an abstraction over c, which is an abstraction over the code that the computer likes. but when you find that “coding is hard,” its hard mostly due to the abstraction making things complicated.

some of these complications make plenty of sense– others are only well-intended. some are even complicated for deliberate and dubious (market-grabbing) reasons.

if you want to become a professional coder, you can start with the easy stuff or you can start in the middle. but the “middle” these days is pretty complex stuff. im not sure why they dont take a little more time with the beginnings, because its not just that the basics are so much easier to learn (and teach.) they also give you a fundamental understanding of all the other stuff youre going to learn in the “middle.”

because all that complex stuff is based directly on the basics. thats a lesson that most of these kids arent getting, which is too bad. theyre learning for an industry first, and education second. theres really nothing wrong with doing it the other way around. it might take a little more time, and it can reach a lot more people without the feeling of “i cant do this, i cant do this.”

even if people knew there was more than one way to learn this stuff– that would help a lot.

why should it matter if coding is accessible to kids or not? #1 reason: by age 10 (on average,) they already identify as “computer people” or “non-computer people.” so many people fall into the latter category, and have a solid belief that they either cant learn, or that it will be painfully difficult. learning can be made difficult, but one of the things that contributes heavily to that is the belief that it will be– if you think learning is going to hurt, its going to be hard to get your attention long enough to prove you wrong.

i wrote fig specifically to get at the people who insist it is difficult. ive shown a handful already that programming can be fun and easy (without being cartoon-based, but based on typing actual code) but while im trying to become a better teacher, im also trying to learn how to “sell” the idea. the program is free, but time is valuable– so you still have to sell to people for the time they will spend.

to every person struggling– dont give up! but you do always have the option of trying more than one thing. coding can be easier, and you can help make it easier. either way someone has to share their passion for it, and that passion has to catch on. a lot of teaching is shared learning, and inspiration– good luck with it.

 

 

98-100 followers, and a shared comment on teaching

ive been online since the mid 90s, when the internet was infused with the portion of it called the “web.” before the web and since november 1969, the internet has included technologies like email, ftp, and eventually usenet and gopher (the text-only precursor of the once-text-only hypertext worldwideweb.) and i have met some of the loveliest people online on wordpress– i am not exaggerating– it is one of the better examples of what the web can achieve without facebook. 🙂 and what i was trying to say of course is, thank you!

i wrote a comment to a fellow poster today, in which we talked about quitting smoking, drinking less soda, and eventually having kids. if i write a comment i like that much, i may turn it into a blog post, so here it is:

 

youre going to have awesome kids. i can only offer one bit of advice as a former kid myself–

kids are definitely made in the image of their parents. its always there, people can see it, youll know it better than everyone. and parents raise their kids in the image of themselves, too. its what they know, so its what they do.

kids are trouble, and theyre people that are learning how to be people. learning is a lifelong process, which is frequently forgotten in the moment by students and teachers (all parents are teachers, as well as students) alike.

teachers too, shape minds in their own image. its what they know, and what they do. the advice is: never forget that the image will differ. cherish that– their difference will add new powers and also balance to the things in your image that you instill in them. they will never/can never/should never be exactly you, but they will carry part of you around forever– it will go much farther with their differences, than you could ever go on your own two feet or even just being cloned. remember that as you work to shape them. ❤

 

(regarding 98-100: after almost a year of blogging its fun to reach 100 followers, but i think 2 of those 100 are probably me. i set up another page which im not making much use of right now, and i had it follow this one for convenience.)