Trevis Rothwell's weblog

Almost, but not quite, entirely unlike tea

Learning Creative Learning finale

02 May 2013

The MIT Media Lab course on Learning Creative Learning for Spring 2013 has come to an end. While the course boasted twenty or so in-person students who received academic credit, I was one of over 10,000 online students who signed up just for fun. Statistics show that less than 10% of students registered in such online classes actually participate meaningfully, with recent anecdotes suggesting that the number may be closer to 4%. I would estimate that around 150 people (1-2%) appeared to be engaged with Learning Creative Learning.

I’ve written elsewhere about some specific things that we explored in this course, but the major takeaway for me was simply reinforcement of the value of creative learning: don’t just read a book or listen to a lecture, but do something with what you are learning. Reading the popular news over the past couple of years, a lot of people seem thrilled with the free online classes offered by such great institutions as Harvard or Stanford. Big name lectures broadcast on the web is indeed interesting, but if we think we are amazing students just because we listen to amazing lectures, we are fooling ourselves. Write about what you are studying. Build something with the knowledge you’ve gained. Contribute. Create.

The final LCL session was an opportunity for students to offer ideas to the teaching staff on ways to improve the course. The biggest problem cited over and over was that, while there was plenty of interaction amongst the class participants overall, dividing the class into small groups for deeper discussion really didn’t work. If you have a small group of ten people, and only 10% of them participate in the discussion, then you don’t get a very lively discussion!

Despite such shortcomings, many aspects of the course were great. Interesting lectures and guest speakers, plenty (but not too much) good reading, and much emphasis on doing something rather than just consuming facts. I look forward to seeing how this course and related efforts develop in the future.

Mindstorms – Children, Computers, and Powerful Ideas

20 April 2013

I just finished reading Seymour Papert’s Mindstorms, the first couple of chapters of which were assigned readings for the MIT Media Lab course on creative learning, but I found so enjoyable that I kept going.

The central topic of the book is about the Papert’s LOGO/Turtle programming environment, which I had used myself in elementary school. I saw Turtle programming then as an introduction to computer programming in general: writing scripts to make the “turtle” on the screen move around and draw pictures. Papert’s intentions were in fact much deeper than that; he developed the Turtle programming environment for the purpose of creating situations in which children could learn about basic concepts of Newtonian physics (how objects move) and differential geometry (how shapes can be constructed).

While much of the book uses the Turtle programming environment as an example, the main thesis of the book is that people learn best when they are engrossed in an environment in which to make use of what they are learning, rather than learning abstractly, disconnected from application of the ideas. Papert brings up the challenge of learning a foreign language: would you learn French better by sitting in a classroom memorizing books, or by living in France for a month, communicating with native speakers? The goal of the Turtle system, then, was to provide an artificial place for children to go to engage in ideas of physics and geometry, where those were not just abstract concepts but things to play with and to create with.

But Papert’s grand vision was not to create Turtle and be done with it. He hoped that it would serve as an example for others, to continue to use computers to create environments in which people could engage with ideas for better learning of any imaginable subject. Years after writing the book, he mused that, unfortunately, what most readers got out of the book was a study of the Turtle system itself, rather than the ideas behind it.

A very good read for those interested in education, and the intersection of education with technology. Oddly enough, the book does not appear to be available in digital format yet, but you can buy a printed copy at Amazon.

Relational Database Programming Class at MIT

04 February 2012

IMG_7207I started reading Philip Greenspun’s database-backed web application books and articles around 2005. While I had previously seen database development as the droll, boring corner of computer science, as I realized how useful it could be to route a database through a web site, I became intrigued.

I shortly dove in and tried building some database-backed web sites of my own, more or less following along with Philip’s curriculum for his semester-long class at MIT. I was pleased with what I had learned, but was aware that my self-taught understanding of the database side of things was somewhat superficial.

In January 2012, I had opportunity to take a three-day (all-day) intensive class at MIT, led by Philip, specifically focusing on relational database systems.

Class Format

Perhaps one of the most novel aspects of the class was the overall format. From what I’ve seen, most computer science classes consist of an hour-long lecture in which students are more or less read passages from a textbook, and then given homework assignments to go off and do by themselves.

In this class, Philip gave a mini-lecture of a half-hour or so, then gave the class a short programming exercise based on the lecture material. We were all to bring our own laptop computers to class, and (thanks to the power of Virtual Box, we were all running the exact same software configuration) complete the assigned exercises right there in the classroom. Philip along with a handful of teaching assistants were available to help, and roamed about amongst the students asking us how were were doing if we appeared to be stuck.

After a half-hour or so of letting us churn through the exercise, we pasted our (attempts at?) solutions into a shared Google Docs document, and Philip reviewed and discussed our solutions in front of the class, followed by showing us his own solutions. Then he moved on to the next topic, and the process started over. The pace was fast, and reminded me of the time I spent on the Cornell College block schedule, only more so.

How did this approach work? I think very well. Nearly all of the material we covered in the class was taken either directly or indirectly from Philip’s online SQL book, which I had perused many times while working on my own database projects. But even though I had access to this knowledge, my depth and breadth of study was limited to what I thought I needed to know in order to solve my immediate problem. Being “forced” to work through all of the material in class, even if it appeared too boring or too challenging from a distance, prompted me to learn things that I had never bothered to learn before.

Web Clients vs. Native Applications

IMG_7302

While the class focused on databases, we also took some brief excursions into making end user-facing applications that connect with the databases, both a small web application and a small Android mobile phone application.

What did we learn? It’s much easier to make web applications, and much more cumbersome to make native applications, that do more or less the same thing. Philip wisely pointed out that the web applications he built nineteen years ago still work fine, while he doubts that any mobile phone applications built today will still be usable nineteen years from now.

Which makes more sense to work on?

But Are Relational Database Systems Still Useful?

On Tuesday afternoon, database expert Michael Stonebraker gave a fascinating guest lecture in which he proposed that the standard big-name database systems like Oracle and MySQL might not really be what you want to use.

Modern database usage can be divided into three general areas: online transaction processing, data warehousing, and a variety of other specialized niche uses. Online transaction processing demands high availabilty and fast performance on short, simple queries. Data warehousing demands huge amounts of storage space and running complex queries. Quantitative analysis (such as that done on stock market numbers) demands access to data more like a two-dimensional array than rows of columns in a traditional database.

Systems like Oracle and MySQL can be used to model the data in all of these situations, but they aren’t optimized for any of them. Instead, if your application needs more than Oracle can muster, it is better to use specialized database systems: VoltDB is optimized for online transaction processing, and works as much as 75x faster than Oracle. Vertica provides a 25x performance boost over Oracle for data warehousing applications. For array-based processing, SciDB offers superior performance.

So is Oracle just a worthless piece of junk? Not exactly. There are plenty of applications that do not require a high-performance database. If you don’t need high performance, then Oracle might be a fine choice. An even better choice would be an open-source database system like Ingres or PostgreSQL, since they offer features comparable to Oracle without the hefty licensing fees.

In addition to recommending that we explore diverse kinds of database systems rather than assuming that one size fits all, Dr. Stonebraker admonished us to become well-versed in linear algebra and statistics, as he believed these skills will be increasingly valuable to database developers.

Additional Topics

Ollie the Border Collie

After the final class session, several of us stuck around to chat with Philip and hear his views on sundry other topics, such as startup companies.

Many young programmers today aspire to launch a successful startup company. Of course, many more startups fail in obscurity than strike it rich, but the allure is strong. The recent trend has been to try to acquire some sort of funding and go to work on your startup full-time.

Philip asked, why would you want to work at a poorly-funded startup, working potentially very long hours and always wondering when the horizon of money is going to run out? Wouldn’t it be better to get a job at a well-funded company and work on your product idea in your free time? If your project takes off, then wonderful, but if not, you haven’t put yourself at financial risk.

What about deciding which technologies to learn? All other things being equal, it may be better to develop experience on expensive proprietary technology than on freely-available technology: if a company has the money to pay for the proprietary technology, then (ostensibly) they also have the money to pay you well. Many proprietary software vendors offer free demos; download the demo, build something with the software, and add your newly-acquired skill to your resume.

But even more important than having a laundry list of technologies on your resume is being able to list projects completed. Being able to point to a software product (or a distinct sub-component of one) and say “I built that” is a strong indicator of engineering ability.

Outside of the Class

It seems that different parts of the world are somehow more conducive to certain fields of endeavor than other parts of the world. If you’re into science and engineering, the Massachusetts Institute of Technology is simply an awesome environment to be in. As I roamed the corridors, hung out in the student center, and bought tea in the lobby café, it was as if innovative technological ideas were just floating around in the atmosphere, available to grab and make your own.

Bonus Points: An MIT Hack

MIT students are well-known for performing hacks on campus, and we had opportunity to witness a small one during the class:

IMG_7228 IMG_7313

Final Thoughts

The knowledge I gained in the class was sitting right before me in book form for years. Probably had I only read all of the material, and made a solid effort to work through all of the examples, I would have been much further ahead earlier on. This surely holds true for other areas as well: if a good educator has taken the time to write a good book on a topic that you wish to learn more about, then read the book.

That said, the class was a great experience. The interactive nature lets you learn more easily than through reading alone, and the class structure helps you to stay focused and get through the material.

Not only did I learn more details about database systems, but I feel professionally recharged, and eager to continue on in my career as a software engineer.

More

Will I Ever Use This In The Real World?

27 January 2011

This month saw the publication of Don Knuth’s Art of Computer Programming Volume 4A. In eager anticipation of receiving my copy in the mail, I was reading some of Knuth’s writings on number theory. This ostensibly had nothing to do with anything I was working on in the real world, but I was enjoying it.

Today I was trying to solve an odd programming problem for a project I’ve been consulting on. The program was supposed to receive a series of (X, Y) coordinate pairs and process them, but for some reason the processing of the Y coordinate was consistently off, while the processing of the X coordinate was perfect. Moreover, the larger the Y value, the worse the processed result became. I presume that something was going wrong in the processing, but exactly what was eluding me.

While I did not have this matter in mind at all during my reading of Knuth, I was inspired by some of the number theory concepts to find an approximate pattern in the faulty processing and then find an acceptable value to multiply our Y-coordinate by, such that the modified Y input would offset the problem. I still didn’t understand the underlying cause of the problem, but the software was supposed to ship today, and this made it work acceptably well.

My fix was not particularly an application of number theory; at most, it was basic algebra. But even though number theory itself wasn’t involved in my solution, studying number theory prepared my mind to think in the direction of seeking patterns in numbers, something that I probably wouldn’t have thought of otherwise.

So to the question, “will I ever use this in the real world?”, the answer may well be no… but even if not, the study of the material forms new connections in your thinking, which may help you in real world situations.