Two Apps to Ring in the New Year!

New York City's Times Square Alliance is has released a free app that will provide a commercial-free live stream of the Times Square New Year's Eve webcast.  You can check it out on iTunes here.

AgupieWare's exclusive New Year's Eve Nosie Maker app is also available from the App Store.  Bring the noise!

Schneier: "In the coming years we're seeing a lot more power struggles play out on the internet."

From an interview with Vice, Bruce Schneier speculates about how power struggles will play out on the internet in the coming years:
The internet is interesting because it really changes so many things. When the internet was born, there was this belief that it would vastly change the power structure. There's a great quote from John Perry Barlow in the mid-'90s at the World Economic Forum, and he basically says the governments of the world have no business on the internet, that have no power over the internet. You can't legislate it. The internet is it's own thing. It's a really utopian way of looking at the world, but we believed it. We believed the internet would change the world, would give power to the powerless. And it did, for many years. The ability to organize, to coordinate—it made so many things different.
And that changed recently. Governments discovered the internet. So now we're seeing that in China, for example, the internet is a tool of social control, and now both sides are using the internet. The Syrian dissidents are using the internet to organize, the Syrian government uses the internet to round up dissidents. That interplay between the institutionally powerful—the governments and corporations—and the distributively powerful—dissident groups, criminals, and hackers. How they both use the internet to increase their power, how they use the internet against each other, I think is fascinating. It's something that we need to look at. In the coming years we're seeing a lot more power struggles play out on the internet. And I'm just curious how that's gonna end up—it's not at all obvious.

Online Learning: Teach Yourself Python in Less Than 4 Months, Part I

The purpose of this article is to lay out a general time management template for anyone who wants to jump in to programming and computer science with little or no experience in the field.  A future article will flesh out the details, providing links to learning resources and other materials freely available online.  [Edit: See the second article in the series, which covers learning benchmarks for beginner Python programmers.]

For starters, I should say up front that I do not have any formal background in Computer Science. I'm a language teacher by trade and training, and never really considered myself a "computer person."  But some time back, after expressing some interest in programming to a programmer friend, he challenged me to try and pick up a programming language. The gist of his argument was fairly straightforward: if you can understand English, with a bit of effort you can understand a programming language, it's just syntax and semantics.  That made it sound pretty simple, and my interest was piqued, so I set to work. 

After doing a bit of background research, I decided that I would focus on the Python programming language, using MIT's Introduction to Computer Science and Programming course – all the materials for which are available for free online – as my general guide.  I finished that course within three months, supplementing it with tutorials and readings that were more in line with my own particular interests. The skills and knowledge that I acquired in that time have proven to be indispensable in my daily life, for both work and play, so much so that I wonder how it is that I was able to get by for so long without them! 

As stated above, I do not have any formal background in computer science.  However, I have over ten years of experience in planning, developing and teaching natural language learning curricula, from task-based lessons to overarching course goals, in two languages.  This article will lay out a general time-plan for self-guided study of the Python programming language for absolute beginners, using the MIT Introduction to Computer Science class as its overarching framework and scaffold.   

To begin our assessment, let's take a closer look at the MIT course. The class has 26 lectures, each about 50 minutes long, for a total of 1300 minutes, or 21 total hours of time, less than a single day.  In theory, you could easily blow through the whole course's lecture series over a long weekend, if you did it like it was your job, or a marathon of your favorite television series on Netflix.

Obviously, that does not mean you can learn all the material covered in those lectures in a three day period.  The process of learning requires things to sink in, as it were, and that just takes time.  Furthermore, it just wouldn't make any sense to simply blow through all the lectures in this way, because we still have to account for the recitation/discussion sections associated with the course, as well as for the independent study necessary to complete homework assignments, which would be normal for any university course. 

In a serious course of study at any college or university, and even for graduate level work,  disciplined students should expect to devote around ten hours a week to study for each course they take.  Assuming a full time work week of 40 hours, this would make taking four college or university classes the labor equivalent of a full time job. 

To begin working out our time table, let's therefore assume that a person should devote 10 hours a week to this project.  A college semester is about 15 weeks long, so that comes out to 150 hours of total work to successfully complete a course that like offered by MIT.  Assuming you did nothing else except this, as if doing the work for this single course were a full time job at 40 hours a week, you could complete it within a month. This is doable, but very intensive. To finish in 3 months, you'd have to devote 12-13 hours to it a week.  To finish in six months, you would have to spend 6-7 hours on it a week.  To finish it in a year's time, you could spend just 3-4 hours of work on it a week. 

For the sake of simplicity, let's assume that we have 10 hours a week to devote to this project, taking our benchmarks and cues from the syllabus for the MIT course.  (We'll work out alternative time lines at the end of the post.)  What do we do with all this time?  The answer is deceptively simple:  watch the lectures, read, do tutorials and exercises, and begin work on your own individual programming projects.  Let's flesh this out a bit.   

With 26 lectures at 50 minutes each, that comes out to 100 minutes of lectures a week, the equivalent of the time you might spend watching a bad movie you wish you hadn't watched to begin with.  In a university course, each week you are also going to spend around another hour in your discussion/recitation section, reviewing materials covered in the corresponding lectures.  That leaves us with around 7 hours and 20 minutes of time for independent study.  How should one spend that time?  Reading, research and practice. 

Let's assume that in a given week, the professor covers more or less the same materials that can be found in the course textbook, in more to less the same amount of time that it would take you to read those sections of the text(s).  So now we have a ballpark figure of 1.5 hours to devote to reading, leaving us with just under 6 hours of time left for the week. 

Doing the reading is not an end in itself, there are also homework assignments that need to be completed. In the MIT course, the homework and problem sets reinforce the lessons covered in the lectures. However, as you complete such exercises, you will find that there are things in the textbook or from the lecture that you did not understand, or you will come across a problem that requires looking into something that has not yet been covered in the lectures or readings at all, and you will therefore have to inquire into these things a bit more closely. So homework will also necessitate more reading, research and tutorials.

Let's assume that doing the homework requires about as much time as you would normally spend in class including discussion section, around 2.5 hours.  We're now left with 3.5 hours of free study time to do with as we please.  This can be spent doing more background reading, tutorials, exercises, or working on one's own little programming projects. 

So here's our plan for 10 hours of work a week, to complete the course in about 15 weeks:
   • Watch the lectures (2 @ 50 mins): ~2 hours
   • Textbook and background reading: ~2 hours
   • Recitation/discussion video tutorial: ~1 hour
   • Homework problems and exercises: ~2 hours
   • Free study tutorials or reading: 1-2 hours
   • Free study independent projects: 1-2 hours

Let's break this down even further.  For each 50 minute lecture, one should do:
  • 1 hour of reading
  • 30 minutes of recitation/tutorial videos
  • 1 hour of problems or exercises
  • 1 hour of targeted external tutorials
  • 1 hour on your own little project(s)

Assuming you were to devote 90 minutes a day, 3-4 days a week to this project, within 4 months, you will have watched all the lectures from the course, read a couple books, done tens or hundreds of problems, completed a number of tutorials, done a lot of online (re)searching, and created a bunch of your own little programs, putting in 150 hours of work.

Doing 90 minutes a day, 2 days a week, it would take 50 weeks, just under a year, to complete the course.  Doing 60 minutes a day, 3 days a week is the same, of course.    

Doing 90 minutes a day, 3 days a week would take 33 weeks, about 8 months.

Doing 90 minutes a day, 5 days a week would take 20 weeks, or 5 months.

Doing 90 minutes a day, every day, would take 3.5 months. 

Doing 2 hours a day, 3 days a week would take about 6 months. 

Doing 1 hour a day, every day, would take just over 5 months. 

In the next article in this series, I'll detail specific textbooks, video and text-based tutorials, and other assorted learning materials to help put some muscle on the skeleton framework presented in this post.  

See the second article in the series, which covers learning benchmarks for beginner Python programmers.

New Year's Apps: Clock Watchers, Noise Makers and Resolution Keepers

As noted the other day in our post on New Year's apps, New York City's Times Square Alliance is has released a free app that will provide a commercial-free live stream of the Times Square New Year's Eve webcast.  You can check it out on iTunes here.  And AgupieWare's exclusive New Year's Eve Nosie Maker app is also available from the App Store for just $0.99.  Bring the noise!

Over at CNET, Sarah Mitroff  profiles five apps to help keep your New Year's resolutions:
Lose weight, stop smoking, save for a new house, organize your life: Your resolutions are set, and you have every intention of keeping them -- at least until life gets in the way. Don't give up on your goals before February, instead download a few apps that can nudge you in the right direction and coach you to stay on track.

Snapchat Vulnerable to Data Hack

From ZDNET:
Hackers have made sure that popular photo sharing app Snapchat got a hearty lump of coal for Christmas.  After having its security disclosure go ignored since August, Gibson Security has published Snapchat's previously undocumented developer hooks (API) and code for two exploits that allow mass matching of phone numbers with names and mass creation of bogus accounts.  on the GibSec Twitter account on Christmas Eve — which by time difference is Christmas Day in Australia.
The Australian hackers announced its publication of Snapchat's API and the two exploits 

Target Data Hack Worse than Initially Reported

It's almost like they painted a target on themselves.  Oh wait . . . from the NYT:
After hackers stole credit and debit card records for 40 million Target store customers, the retailer said customers’ personal identification numbers, or PINs, had not been breached. Not so. On Friday, a Target spokeswoman backtracked from previous statements and said criminals had made off with customers’ encrypted PIN information as well.

Two Apps to Ring in the New Year

New York City's Times Square Alliance is has released a free app that will provide a commercial-free live stream of the Times Square New Year's Eve webcast.  You can check it out on iTunes here.

AgupieWare's exclusive New Year's Eve Nosie Maker app is also available from the App Store for just $0.99.  Bring the noise!