What is education and how do we educate?
Lately I have been questioning not only myself, which is something I always do, but more importantly I have questioned more or less everything about education. I believe that a Kill Yer Idols strategy when reviewing situations in life is good. By applying this approach, which in this case translates into not fearing to question EVERYTHING, I found that the books on programming are really hard for newbies (I’d go as far and say some of them are totally useless) - some books were hard for me with my 15+ years experience as a programmer. I have also questioned the choice of programming language, the task of finding the best language remains. I have also ranted about finding a strategy.
Nevermind (What Was It Anyway) - Sonic Youth, NYC Ghosts & Flowers, 2000
So what will I shamelessly, pointlessly and in the usual chaotic style ramble on about today? First I need to find the meaning of the word education. Or perhaps I need to find my own interpretation of the word. So this post’s quest is about finding a good, and in sync with today’s students view, interpretation of education. And with that as a basis discuss the teaching forms (lectures and supervision) and how to best use them to reach the goals (students acquiring knowledge).
What is education?
What does Wikipedia have to say about education?
“Education in its general sense is a form of learning in which the knowledge, skills, and habits of a group of people are transferred from one generation to the next through teaching, training, or research. Education frequently takes place under the guidance of others, but may also be autodidactic. Any experience that has a formative effect on the way one thinks, feels, or acts may be considered educational. Education is commonly divided into stages such as preschool, primary school, secondary school and then college, university or apprenticeship.“
Ok, let us sum this up:
Knowledge, skills, and habits are transferred through teaching,
training, or research taking place under the guidance of others,
but may also be autodidactic.
This leaves pretty much room for me as a teacher. I am avoiding the word lecturer since that word seems to imply that we are talking about lectures. I can do a lot of things to make the students learn, or acquire knowledge. I can motivate students to learn for themselves. I can stand in front of the class and talk for hours about some topics. I can ask students to read for themselves and remind them that they’re now doing university studies and all complaints are void. For me the important and interesting thing in the definition of education is the word transfer, or perhaps if we rewrite it as acquired which is what the students do. I will try to focus on the student perspective by looking at “acquiring knowledge“.
“Information is not knowledge. Knowledge is not wisdom. Wisdom is not truth. Truth is not beauty. Beauty is not love. Love is not music. Music is the best” - Frank Zappa
Some random questions to get my brain started:
Oh my Emacs… so many words and nothing said yet. Sorry, I guess more words will come and an equal amount of stupidities.
Lets start of by looking at the usual way of teaching, lectures. For how long are the students paying attention to you (the teacher)? I’d say roughly about 10 minutes, which is about what research finds. When you see some students really focusing on their laptops, they’re not paying attention to you or the subject. They’re playing games. Just walk behind students in a room when you’re not lecturing and see for yourself. I have noticed that by using some techniques you can extend the attention window quite a bit. The techniques include:
By using the techniques above I think, I do not have proper backing here, based on my experience that I can transfer more knowledge to the students than I would otherwise. But still, I don’t believe that old fashioned lectures is the best way. In some courses I sucked and in others I sucked less. And I think that I’ve done a good job in some of them. I once held a course where I didn’t get enough time from my department to give the course – in this case I think that the lectures weren’t as good as I liked them to be .. sorry guys. In some courses I have gotten quite good reviews as a teacher, yeah I also find that hard to believe. But applying the Kill Yer Idols strategy here and really question myself as a teacher – given that a teacher should make sure that the students acquire knowledge – I must say that the students’ results were NOT better or worse when I got better (or worse) reviews.
Does this mean that no matter how crappy the teacher is the students will always get the same results?
No, but the quality of the teacher’s lectures is in my opinion exaggerated.
So there is something spooky with lecturing. The reason is, as stated above, that the students aren’t paying attention and if a student looses focus for a minute the remaining lecture may in the worst case be useless.
So why do we keep on lecturing?
I don’t know. I really don’t know. It’s easier for us teachers to give lectures I guess – we just do our thing in front of the students for 90 minutes and then we can go back to our offices and read articles. It’s the way we’ve always done it.
I tried out flipped classroom in the last term, as I mentioned before in the unlikely case that you’ve stumbled upon my blog before.
“Flip teaching’ or a flipped classroom is a form of blended
learning in which students learn new content online by watching
video lectures, usually at home, and what used to be homework
(assigned problems) is now done in class with teachers offering
more personalized guidance and interaction with students, instead
of lecturing.” Wikipedia on Flipped Classroom
I made some video recording of some of my lectures. The students liked the videos. I really disliked making them videos – listening to sound of your own voice is one thing but hearing yourself saying unrelated or stupid things was hard at the beginning – but that’s how my brain works so I better get used to it. Perhaps it is my Gothenburgian heritage that seem to make me do unintentional crappy jokes on the fly. It takes time to prepare a lecture. This time is increased a lot when creating videos so Flipped classroom isn’t exactly making things easier for teachers – unless the goal of the teacher is to help the student acquire knowledge ;) . Another time I will write about my findings when recording them videos. All I can say right now is that I used (no surprise I guess) only free software (used GNU Xnee to retype the code for me).
So the students liked the videos. But did we get a good discussion going?
To be honest, no!
I will read more about flipped classroom and think about what can be done. But at least the students could look at a video over and over again and ask question about the subject at the lecture.
Does flipped classroom make the student acquire more knowledge?
Yes, I believe so.
One problem though. I’ve noticed that with Flipped classroom, compared to normal lectures, you can’t, for obvious reasons, adapt the lecture to your class. When lecturing the old fashioned way you can adapt and repeat based on the looks on the students’ faces etc. I miss this in Flipped classroom.
Flipped classroom is good. But for some students it is just one way of lowering the barrier to acquire knowledge themselves. If a student have lost confidence I don’t believe classical lectures or Flipped classroom will help them.
Conclusions (so far):
I believe Flipped classroom is better then normal lectures, given that the goal is for students to acquire knowledge.
Lectures and/or flipped classroom will not help students who have lost confidence in themselves.
There are other ways for a teacher to help the students acquire knowledge. I believe that the best ways to help the students are:
When to use these ways? More on this in the next blog post which will be on exercises and supervision.
 Assuming you’re on a GNU/Linux computer (or similar):
curl http://en.wikipedia.org/wiki/Education -o edu.html html2text -o edu.txt edu.html festival --tts -b edu.txt
- Why a new language and why Haskell?
Ok, so it was decided. I, the volunteering Guinea pig, should start the quest for a really good book – not exactly a holy quest for the holy Grail but still (and finally), a quest!!!
I will cheat and GOTO 3 before I finish (2). ….. I, personally, will use this list later when I will look for books for new courses or when updating existing ones.
Disclaimer (redundant given the text above, but important!):
And ….. “I am not looking for a New England”
Searching for a good book
…… with my good eyes open
Oh boy, will I get in trouble now.
I started with Guile/Scheme docs but they were somewhat dry and there were some barriers that lowered my motivation. I couldn’t find book that really inspired me to continue reading. I am not saying that there is anything wrong with the books, but I don’t think they were aimed at newbies.
I tried some Haskell guides but starting out with “dry mathematical introduction” didn’t really motivate me. And an almost 600 pages long manual is kind of tough to have in front of you.
Heureka, I found Learn You a Haskell which seemed nice. After a while I noticed that I’d been reading and hacking for two hours. Now, that’s a sign of a good book! Perhaps not for programming newbies but nice for me. Ok it’s about time, I am coming out of the terminal/command line closet: I like the graphics!!
The last year I have tried to teach the same way as the book did. Mix theory and practical studies in small increments.
Haskell it is… I will learn Haskell
So this book made the decision easy – I will learn Haskell, since the book will not only learn me Haskell but I hope it will also give me some pedagogical ideas.
Some extra words here. It is crucial for me that the tools for the language (e.g. compilers) are Free Software. Furthermore the language specification should be free. ….. and there should be an emacs-mode for the language!
These are my findings so far. And this experiment is flawed from start since I am using only one person, furthermore that person is myself. So I am the first to blame myself for not using a scientific approach. Still I will use the results as input for choosing a book for students in the future.
For those of you saying that the Haskell book is not fulfilling all of the above. Yes, I agree. It doesn’t. But it’s the best I found and it’s good!
And for those saying “write your own damned book then!” – perhaps I will. Fact is that I secretly have started.
… If you feel there’s something missing in the list above. Please email me (hesa _AT= sandklef.com) with suggestions or write your comments on the blog.
Btw ……. my favorite programming books:
Woops lots of C books there! I’ve read some Tannenbaums as well from which I learned a lot, but they’re not among my favorites.
And I really have to bring this paper up:
Coming up next: A Good book introducing programming to newbies.
- Why a new language and why Haskell?
Reason 02: Feeling like a student again
This calls for an explanation. I’ve been teaching at two Universities with various intensity for some years and I have started (nudge nudge – know what I mean) to notice some patterns among students. I lack proper backing here so I can’t make too general and sweeping arguments, but I can say that the course book/literature isn’t read by the students the way we expect. I get the impression that the book is not at all among the students’ main alternatives when learning how to program. Students have been telling me that they’d like to watch videos to learn. Why don’t the students read the books? Are the books bad? Should we use books at all? Are they all written in the wrong why – e g assuming everyone knows math and programming? Are the books using a boring pedagogy? One thing I’ve noticed is that most books are best suited for people who already know how to program and need to know another one.
By the way: … is there a good book on learning what programming is? I mean learning from scratch. And I mean good
Talking about books I think about the ones I used during my studies. Did I read the books? I’ve always thought and said I did, but really, did I? Being honest I don’t think I did a good job reading the books. Not in a proper way at least. So in a way I may be more similar to my students than I think.
In a class where I currently lecture we have switched (partly) to using Flipped Classroom and I get the impression – again, no proper backing – that we can see an increase in learning among the students. Still, we can’t rely on videos. Hmm, perhaps if we tag the videos properly? And develop an interface that makes it easy to browse and search. Anyhow, I don’t think we rely on videos alone. We need a book.
Learning, or re-learning after some 15 years in my case, a functional programming is as close to learning programming from scratch as I can come. So I decided to use this as an opportunity. Btw, learning a logical language like Prolog would perhaps be better – but I want to learn something I will find useful in my current profession. I guess I’ll be a Guinea pig in a way. How will I feel when reading books on a new subject? What kind of books do I like when NOT knowing the subject?
So learning a functional language will make me find the kind of literature that fits me. And assuming I am somewhat similar to my students in not wanting to read a language specification to start with I think I can draw some conclusions from the book I find nice and use these conclusions in my coming classes/courses. And probably I will eat some humble pie too. … btw, I certainly don’t mind reading language specifications. But not when starting off with a new language. Yeah yeah, some of you want to do it that way.
Bla bla bla, I will write about my findings tonight (publish tomorrow) – why it became Haskell and not Scheme.
- Why a new language and why Haskell?
- Two main reasons!
Reason 01: I need a new hacking challenge.
Knowing the Free Software hackers I have the pleasure to know it’s hard to think I am any good as a programmer. I think I am pretty good and fast in writing C. But comparing myself to my hacker friends I sometimes feel a bit limited in my understanding of programming. So I really think I need to extend my programming skills with a new language. Or even better, a new programming language paradigm. Since I know imperative/procedural programming (C), scripting (Bash) and OO (Java) the obvious next thing is to properly learn a functional language.
Jon has done a good, almost fanatic, job promoting it and it is a language I almost learned when I studied – I learned Standard ML - Haskell wasn’t ready then I guess. Ok, I decided to give this a try too.
Hmmm, it’s kind of embarrassing to not know Lisp in Free Software communities. Still I skipped it. I think I wanted to go for a language which is used by friends of mine so I can discuss details over a chat or a beer.
Reason 02 coming up soon….
We are pleased to announce the availability of GNU Xnee 3.16 GNU Xnee is a suite of programs that can record, replay and distribute user actions under the X11 environment. Think of it as a robot that can imitate the job you just did. GNU Xnee can be used to: Automate tests Demonstrate programs Distribute actions Record and replay 'macro' Retype the content of a file Getting the Software ftp://ftp.gnu.org/gnu/xnee/xnee-3.16.tar.gz ftp://ftp.gnu.org/gnu/xnee/xnee-3.16.tar.gz.sig or one of the mirror sites as found in: http://www.gnu.org/prep/ftp.html Checksums md5sum:
d70f26e135ebf5b1a307f1434c451eaf xnee-3.16.tar.gz cksum:
368848631 1798348 xnee-3.16.tar.gz
New in this release
Gnee can record XInput events
* Fixed bugs:
And the name “No Show Jones”? It’s a tribute to one of my favorite singers of all time, George Jones. He passed away in April earlier this year. George earned his nickname from his habit of not showing up at shows.
Problem and solution
Searduino provides headers and libraries to program the Arduino boards. It would be stupid to rewrite the whole Arduino software so we’re of course using the Arduino source code. Currently the default way of building Searduino is to download (automatically done by Searduino) the Arduino source code from their download site and unpack that to a specific folder. This solution doesn’t work with Debian so we discussed a bit back and forth how to solve this.
The solution we reached was to add a configure option to make it possible to build Searduino from the Arduino source code as shipped with Debian’s Arduino package. Use it like this:
Providing source code dist to Debian
Every night we’re building Searduino (yeah, autobuilds are back again) and provide source code dist (tar.gz) and binary versions for 32 and 64 bit GNU/Linux systems. These scripts are internal and look so ugly at the moment so there’s no way you will se them ;). To test the Debian specific option (–enable-debian-source) we’ve set up a dedicated build server (Debian, unstable, 64 bit) that downloads the source code dist file (.tar.gz) and builds and tests Searduino from that.
Testing the new option in the source code dist provided to Debian
We use Jenkins to do the tests of the Debian specific stuff. We’ve been trying out the two VirtualBox plugins but we never got it to work properly. So instead we started using VMM and now it works nice.
To build Searduino from a dist file using VMM in Jenkins we ceated a “a free-style software project” and added some “Execute shell” to do the building. The calls we do to build are:
/opt/vmm/bin/ats-client --start-client-headless Debian-unstable-64 /opt/vmm/bin/ats-client --wait-for-ssh Debian-unstable-64 300 /opt/vmm/bin/ats-client --client-exec Debian-unstable-64 \ "rm -fr searduino-dist" /opt/vmm/bin/ats-client --client-exec Debian-unstable-64 \ "mkdir searduino-dist" /opt/vmm/bin/ats-client --client-exec Debian-unstable-64 \ "cd searduino-dist && wget http://184.108.40.206/searduino-build/dist/searduino-git-$(date '+%Y%m%d').tar.gz" /opt/vmm/bin/ats-client --client-exec Debian-unstable-64 \ "cd searduino-dist && tar zxvf searduino-git-$(date '+%Y%m%d').tar.gz" /opt/vmm/bin/ats-client --client-exec Debian-unstable-64 \ "cd searduino-dist && ln -s searduino-git-$(date '+%Y%m%d') latest" /opt/vmm/bin/ats-client --client-exec Debian-unstable-64 \ "cd searduino-dist/latest && make -f Makefile.git" /opt/vmm/bin/ats-client --client-exec Debian-unstable-64 "export CFLAGS=\"-I/usr/lib/jvm/java-6-openjdk-amd64/include/\"; export CXXFLAGS=\"-I/usr/lib/jvm/java-6-openjdk-amd64/include/\"; cd searduino-dist/latest && ./configure --enable-debian-sources --prefix=/tmp/tmp-searduino-dist-debian" /opt/vmm/bin/ats-client --client-exec Debian-unstable-64 \ "cd searduino-dist/latest && make" /opt/vmm/bin/ats-client --client-exec Debian-unstable-64 \ "cd searduino-dist/latest && make check" /opt/vmm/bin/ats-client --client-exec Debian-unstable-64 \ "cd searduino-dist/latest && make install" /opt/vmm/bin/ats-client --stop-client Debian-unstable-64
Results from test:
The trend seems to be ok. So we’re now finally able to say that Debain can ship Searduino.
Log file from a build we made today:
The sun seems to be up. So we’re now finally able to say that Debain can ship Searduino. Also we’ve seen that it is possible to use VMM with Jenkins.
VMM is a piece of software to make it easy to start, stop and use virtual machines/clients (currently supporting Qemu and VirtualBox).
We are pleased to announce the availability of GNU Xnee 3.15 GNU Xnee is a suite of programs that can record, replay and distribute user actions under the X11 environment. Think of it as a robot that can imitate the job you just did. GNU Xnee can be used to: Automate tests Demonstrate programs Distribute actions Record and replay 'macro' Retype the content of a file Getting the Software ftp://ftp.gnu.org/gnu/xnee/xnee-3.15.tar.gz ftp://ftp.gnu.org/gnu/xnee/xnee-3.15.tar.gz.sig or one of the mirror sites as found in: http://www.gnu.org/prep/ftp.html Checksums md5sum: 32c8ac9f354741f03d7736383599984e xnee-3.15.tar.gz cksum: 3996773279 1776676 xnee-3.15.tar.gz New in this release * Fixed bugs: Savannah: bug #36662: 2 extra lines, not really needed, printed to recorded log files bug #37895: pnee/data/pnee.server.in file missing in 3.14 tarball? address@hidden xnee patch for Red Hat Enterprise Linux Why 'Shankar'? In December 2012 Ravi Shankar passed away. This is a way to pay tribute.
We are pleased to announce the availability of GNU Xnee 3.14
GNU Xnee is a suite of programs that can record, replay and distribute user actions under the X11 environment. Think of it as a robot that can imitate the job you just did. GNU Xnee can be used to:
Getting the Software
or one of the mirror sites as found in:
3927134133 1772509 xnee-3.14.tar.gz
New in this release:
If XInput is present, record only XI events (discard core events).
Forced core replay is now done using XI events (if no core events are available).
* Fixed bugs:
Bug-xnee mailing list: “WARNING: Enough valuators … still not printing”
About calling the release “Lord Pi”
We’re still following the tradition to pay tribute to old heroes who have passed away. A while ago Jon Lord (Deep Purple among other bands) passed away. Even though Deep Purple never was one of my favorite bands, they and Jon still had an impact in my life. Listen to Stormbringer, Perfect stranger and Machine head and you’ll know why. Jon’s keyboard playing is a vital part of the Deep Purple sound. That explains the “Lord” part of “Lord Pi”. The “Pi” part is of course due to the version number “3.14″, which is the three first digits of Pi.
The Nordic Free Software Award is given to people, projects or organisations in the Nordic countries that have made a prominent contribution to the advancement of Free Software. The award will be announced during FSCONS 2012 in Gothenburg.
You nominate your candidate(s) via FSFE‘s web site:
The nomination period ends October 14
Join the award committee
Send an email to award [AT] fscons.org (moderated mailing list) with the following information:
Previous Award winners