Monday, May 21, 2012

Many people want to learn computer science, but not many can afford
to do so at the best institutions. Fortunately many of the best
institutions in the world are opening up their courses so you can take a
course from Stanford, MIT or Harvard simply by going online and
learning at your own pace. Here are 8 ways you can take advantage of
this.

Introductory Courses (Little Or No Experience Required)

MIT’s Introduction To Computer Science For A Good Overview Of The Science

MIT’s Introduction To Computer Science
is a free course that sounds like it tries to keep the students
engaged. Rather than focusing on a bunch of broad topics in an
un-centered manner, it talks about a topic, and then applies that
concept to an example that will get techies excited about learning
computer science. (The description specifically references the Roomba,
that robot that cleans your floors for you, and has recently been
overtaken by the superior Mint robot.)

Harvard’s Intensive Introduction To Computer Science: For Those Who Are Committed

Harvard’s Introduction To Computer Science Course
is what you’d expect from a basic course, except harder. Why? Because
this is Harvard, and they make all of their science classes extremely
hardcore. So, you’ll be focusing on algorithms, software development,
multiple programming languages, and more. If you’re really looking to
get deep into learning computer science, then this is definitely your
course.

This video that teaches you binary numbers in 60 seconds is less of a course and more of a quick learn for anyone who likes to call themselves a geek or a tech guy. If you don’t know binary numbers,
then you’re not a true geek. Fix that now by taking a minute of your
time to learn something new – who knows, you might even kindle an
interest in computer science! 0110011101100101011001010110101101110011
(Geeks)

University of Washington’s Basic Computer Science Course on HTML For Those With No Knowledge Of HTML

The University of Washington has put out a very simple starter course on HTML
– this is really for people with no prior experience in HTML. Just from
blogging and doing an odd website creation here and there, I got a 100%
on their post-course quiz, so this can’t be that hard of a course. But,
I also am versed in HTML, so if you don’t know if an H3 tag is bigger
than an H2 tag, this class is for you.

The Hanoi University of Technology has posted a basic course for learning to program using C,
the older version of C++ that some programmers still prefer. (The two
are very similar, so don’t feel like you’re learning something
completely outdated.) This is great for those with little or no
programming knowledge in the C language. If you’re an expert, this
course isn’t really for you.

Intermediate and Advanced Courses (Programming Experience Required)

Udacity’s Online Computer Science Courses On Various Topics

Udacity could
really be placed into both categories, since it has both basic and
advanced free computer science courses, but it offers a greater of
number of advanced lectures, so I felt that it would be wise to place it
in this section so that no newbies find themselves in deep waters. This
is a site that really has a ton of different free courses, from
programming a robotic car to applied cryptography. (Some pretty hard
stuff.)

Stanford’s Machine Learning Online Computer Science Course

When some people think of machine learning,
they think of robots. This is not entirely true – machine learning is
really more up the alley of autonomous cars, speech recognition, and
many other types of atypical non-robotic activities. (Google’s software
engineers do a lot of machine learning.) You should have a solid
programming background before you dive into this course!

Coursera’s Introduction To Databases Course

For the Introduction To Databases
Course, you will need some programming knowledge in order to grasp the
more advanced material about structuring databases. Basically every type
of relevant software has something to do with databases, so this is
definitely a great course for all aspiring programmers to take!

Tuesday, May 8, 2012

At this very moment, your operating system and browser have multiple security vulnerabilities that
would allow an attacker to access your webcam. It is impossible for
software vendors to identify and fix all the security bugs in their
software. So, there are certainly many nasty bugs that they don't know
about.

Don't believe me? Here's a real-world example.

In October 2011, I discovered a vulnerability in Adobe Flash that allows any website to turn on your webcam and microphone without your knowledge or consent to spy on you.

Video demo of the attack:How it Works

This attack
works by using a neat variation of the normal clickjacking technique
that spammers and other bad people are using in the wild right now. For
the uninitiated:

Clickjacking is a malicious
technique of tricking Web users into revealing confidential information
or taking control of their computer while clicking on seemingly
innocuous web pages.

I reported
the vulnerability to Adobe through the Stanford Security Lab, but they
didn't respond for a few weeks, so I decided to post about it on my
blog. It made headlines in CNET, Wired, The Register, Ars Technica,
Gizmodo, etc. and so Adobe was forced to quickly fix it (which they did
in less than 2 days). You can read the full explanation on my blog here:
http://www.feross.org/webcam-spy/

Closing Thoughts

Keep in
mind: I discovered this vulnerability in just a few hours, while
procrastinating on studying for my final exams. That means I had no profit motive (I did this because I was curious) and limited resources (I just viewed the source code of Adobe's website).

Therefore, people with more resources and more to gain (like criminals and national government agencies) certainly know about similar or better vulnerabilities.

I used
to think that people who put tape over their webcams were just paranoid
or weird. After I discovered this vulnerability, that changed. :) Now I
use the tape trick as well.