Additional Projects

The study of "computers" may include lots of things, including computer science, software engineering, digital logic, hardware, systems administration, website development, computer security... This course has only scratched the surface of what you might become interested in.

Fortunately, information about various computer-related projects is easily found on the Internet. If you're looking for an outside project to get involved in, take a look here and see if any of these projects interest you.

Then get started!

Read About the Command LineTime: 2 hrs — Cost: $0

Many of the projects given here are in some ways related to Linux, and/or using the command line interface to interact with your computer. For a great introduction to that idea, read Neal Stephenson's In the Beginning Was the Command Line [zip file of text file].

Learn the Command LineTime: 15 min — Cost: $0

On Linux machines, and on Apple's UNIX-based OS X, opening up a Terminal will allow you to issued text-only commands via a "shell" program. Issuing commands via the command line and writing shell scripts to perform certain operations is one of the quickest ways to increase your knowledge of how your machine works.

Do an online search for command line tutorial and start learning. Note that commands issued via the command line don't usually offer the same forgiveness that your operating system does, so caution is required! At the very least, ensure that you have a good backup of your hard drive before you go playing around on the command line.

Windows users have a command prompt program but it doesn't operate in the same way, so if you want to play around on the command line you'll need to do so on a Linux machine, instance, or partition. (See Running Linux and Setting up a Virtual Machine below.)

Process Audio and Video on the Command LineTime: 30 min — Cost: $0

Check out these two tutorials on youtube-dl and ffmpeg. Use the command line to download YouTube videos and process audio and video. Neat!

Automating tasks(OS X/Linux only) Time: 15 min — Cost: $0

You can use your own computer/server to run scripts or programs automatically at any given time of the day.

Take a look at this short tutorial on automating tasks with shell scripts, cron, and launchd. , and then create a cron job to automatically run that script at a given time/day.

Very cool.

Take an Online CourseTime: varies w/ course — Cost: $0

If you enjoy the structure of an educational course, there are a number of institutions that offer online "classes," many of them for free. Lessons are prerecorded and typically via an interface in your web browser. You don't have direct access to the instructor, and the quality of the courses varies wildly, but you can't beat the price.

My favorite courses are those offered by Udacity. Sign up for Intro to Computer Science (Python!), Intro to Java Programming, or any of the others offered and get started!

Learn more about PythonTime: 1 hour - 1 year — Cost: $0

A nice list of references where you can pick up more Python is available at Get your Python on!

Build a wearableTime: days — Cost: <$50

There are all sorts of things that you can build and wear!

Try parallel processing in PythonTime: 10 minutes — Cost: $0

Python's great, but it runs processes as a single-thread, by default. Three lines of code → four-threads!

Use Python to send emailTime: 15 min — Cost: $0

Using a Python program to send email via your Gmail account is easy to do. Take a look at this program and modify it as necessary to interact with Google's Gmail servers.

Now your programs can talk to you via email!


Be smart about using programs like these. Google tracks all use of its servers, and limits the number and frequency of emails that you can send via your account. If your script tries to send 100 emails via GMail in the time it takes the program to run, you may very well find your account locked for some period of time.

If you're interested in setting up more industrial-strength email delivery via Google or Amazon servers, there are ways to do that. Those are well beyond the scope of these programs, however.

Use Python to make a TimerTime: 20 min — Cost: $0

Python has lots of libraries that you can use to do all sorts of things, including telling time and playing audio files.

For this project, import the time, os, pyaudio, and wave libraries and put them together to create a countdown timer with an alarm (alarm_bell.wav) at the end.

Use Python to interact with webpagesTime: 15 min — Cost: $0

Python's urllib module allows Python programs to interact with webpages. This program uses the urllib module to read in a webpage, parse through it looking for the data we want (in this case, the most recent temperature recorded by NOAA at the Burbank International Airport), and display that information in the terminal.

Read the comments in the program to see how it works.

What other information would you like to be able to scrape off of webpages? Movie times? Sports scores? Traffic conditions? Using this program as a base, play around and see what other uses you can come up with.

Hack Hardware: Amazon Dash ButtonTime: 1-10 hours — Cost: $0

The Amazon Dash button was designed to order stuff from Learn how to hack it to do other things, like... donate to the ACLU!

Learn to Use a Serious Text EditorTime: 1-10 hours — Cost: $0

Notepad++ for Windows, TextWrangler for OS X, and gedit for Linux are all fine, but almost all serious geeks move on to a serious text editor at some point: vi or emacs. Discussions of the benefits and drawbacks of each editor have launched entire holy wars, but don't let that bother you. Find a tutorial online and try them both out to see which one you like better.

Try LinuxTime: 1 hour — Cost: $0

When you get tired of the "Mac vs. PC" debates, come on over to the Linux side, where the software is free and open source. You don't even need a new machine to try it, and you don't even have to install it on your computer. Just get a copy of a recommended Linux "live" distribution (one that you can run from a disk or USB flash drive without installing—I suggest Ubuntu MATE) and boot up using that device.

Where can I get a live Linux distro?

Want a copy of the Ubuntu MATE distribution? Come see me and I'll give you one! I've got USB flash drives that you can use in your Mac or PC to boot from to try it out.

Or... follow the instructions and make your own Ubuntu MATE USB flash drive.

Like what you see? Knowing about Linux is an important aspect of being a computer geek: many servers (including the one for this class) run Linux, and being able to navigate your way around that operating system is just something you should know. Trying out Linux via a live distribution is fine for playing, but eventually, you'll want to set up Linux in a virtual machine on your computer, run it on a Raspberry Pi that you've built, or perhaps even put it on Your Own Linux Box. These are all more advanced projects that will require a bit more time and tinkering.

Set up a Virtual MachineTime: 2 hours — Cost: $0

A virtual machine is a software-based "computer" that runs on your actual computer. My Apple laptop, for example, currently has two virtual machines on it—a Windows 7 installation and a Linux Xubuntu installation—that I can boot up and run whenever I want. It's pretty cool, and a great way to learn about other operating systems.

The cheapest way to create a virtual machine on your computer is to use Oracle's free VirtualBox software. You'll also need an .iso file for the operating system that you want to install. ISO files for Linux distributions are free, and available on the Internet. ISO files for Windows are available from your Windows installation disks. Running a virtualized instance of Apple's OS X is difficult to do, but if you want to try it out, Google "hackintosh" and see what you come up with.

For a step-by-step guide to installing Virtual Box and Xubuntu, see VirtualBox and Xubuntu.

Start up a ServerTime: <1 hour — Cost: $20

A server is simply a computer set up to communicate with other computers over a network. Typically a "web server" is a computer configured to deliver webpages via the World Wide Web, a "mail server" is a computer designed to facilitate sending email messages, a "file server" stores digital files, etc.

It's possible to configure a home computer to act as a file server: I have a couple sitting at my house doing that right now, one of them a PC running Linux, and one of them a Raspberry Pi. (See Run Your Own Server below for information on how to set that up.) And while your Internet Server Providers (ISPs) won't complain too much if you're occasionally connecting to your computer remotely, if you want to start up a serious server, you'll want to use a commercial hosting service like Linode or Amazon Web Services.

Join me for a brief overview of how you can start up a server using Linode.

Run Your Own Server

Coming soon.

Own Your Own Domain

Coming soon.

Build Your Own Box

Coming soon.


Learn About Digital SecurityTime: 15 min to many hours — Cost: $0

There are three concepts related to your security that you should be aware of.

You may not want or need high-levels of security in your digital life, but if you do—or maybe you just want to avoid having your data looked at by Google and the NSA—there are a number of strategies you can use to ensure that you and your data remain as secure, private, and anonymous as you wish.

Spend some time checking these out, and then get to work protecting yourself.

Create an IPython Notebook

Coming soon.

Build a Raspberry Pi computerMinimum Time: 2 hours — Cost: $35 - $150

The Raspberry Pi refers to a series of small, inexpensive microprocessor-on-a-board computers that are perfect for someone who wants to experiment. These are really small computers (about the size of a credit card in area), and very inexpensive (around $35), although you'll need more than the Pi itself to get things up and running.

The first thing I'd recommend you get is a guide for helping you get started. Check online for tutorials, or get an inexpensive intro book like the one recommended below.

One note of warning before you start. As with any other computer, there are different models of Raspberry Pi. The first one, Raspberry Pi A, is very cheap, but rather difficult to work with. The Raspberry Pi B, released a couple of years ago, is a solid model that you can do a lot with. The more recent Raspberry Pi B+ is better, however, and doesn't cost any more. Get a B+, and because the board layout is a little different, make sure that you have a tutorial/guide that's designed for the B+. (I recommend MakerShed's Getting Started with Rasperrby Pi, 2nd Edition.

You'll need most of the items here, either purchased or scrounged. A good jumping off spot for finding these things is, where they also have a nice kit including most of these for $129.99.

For more info, check out this tutorial on Buying and Setting up a Raspberry Pi.

Oh, and once you've gotten it up and running, you'll need to secure your Raspberry Pi against attackers [Make magazine].

Do stuff with your Raspberry PiMinimum Time: 2 hours — Cost: $35 - $150

There are so many things that you can do with a Raspberry Pi that there's an entire separate page for that.

Set aside some time this afternoon, this evening, this weekend, and build something cool.


An Arduino is a small, inexpensive, microcontroller that you can have a lot of fun with. While a Raspberry Pi has the power to run a full operating system on it, the Arduino is better at running small, hardware-based projects. It's specifically designed to allow sensors to control actuators.

Write a Mobile App

Coming soon.

Git and GitHub

Coming soon.