Letter from the Editor: Why you should start your college CS learning at a community college.

Hello reader, please enjoy another of our series, “A letter from our editor.” Nick Giampietro has been writing for the GetReal blog since it started, and has recently started studying computer science. Here, he shares his experience at PCC, so you can make a more informed decision when you start your college journey.


Dear HS Students,

Don’t go straight to a university, if you want to study computer science. Start at a community college. Besides the obvious monetary benefits (it’s much cheaper), you’ll find that the instructors at community colleges are often much more active and passionate about helping you succeed.

Shot of TCB at PCC Sylvania

This is TCB, the Technology Classroom Building, at PCC Sylvania

University professors are almost always very qualified people, but they don’t necessarily care about you. They have a Ph.D in whatever they’re teaching, usually professional experience, and actively do research. But something has happened to many science departments: professors get so caught up in their research that they forget that universities are about students. And as a result, many freshmen and sophomores get turned off by class sizes over 100, and no face-to-face contact with their professor.

And guess what? Community college instructors are also very qualified. Take Michael Trigoboff of Portland Community College, for example. He also has a Ph.D in computer science, and he’s been a professional programmer for over 30 years. Does that sound qualified to you?

Portrait shot of Michael Trigoboff

Dr. Trigoboff meets his students with a smile and a subtle sense of humor, every class we have.

Right now I just started taking a class with Dr. Trigoboff called “Programming Systems,” (using Java and C++) and have been very happy with the experience. In a classroom of less than 30, everyone gets plenty of time to speak with him and ask questions whenever they want. He programs right before your eyes, helps teach you often difficult things like how to use a professional-level IDE (which is not really a part of computer science, but is definitely a big part of any programming job).

In a nutshell, he works hard to help each of his students succeed. If you also want to succeed, best you find people who want to help you along.

Plus, community colleges often work closely with nearby universities, so transferring is easy. That way, you can get your first two years of university schooling done for a much lower cost, with people who are much more interested in helping you, and then you can transfer to a university—where, then taking upper-division classes since you started at a CC, you’ll also get much closer contact with your professors.

What’s more, you might even be able to start going to community college in high school. Ask your school counselor about early college programs, and see if you can get started NOW.

Read on:

When quadrotors and Kinects combine…

W

e haven’t talked about quadrotors, Kinect, and the cool engineering projects you can work on when you go to one of Oregon’s awesome engineering universities, in a while. But let it be known: the possibilities are endless, when you’re an engineer. And using a pre-invented idea like a quadrotor, or a pre-invented tool like the Kinect, is what engineering is all about: finding a creative new use for an existing tool.

Here’s the coolest part: in Oregon, quadrotor and Kinect projects are still fairly uncommon, so you can be one of the pioneers in the field, for our state.

Check out what MIT and and UW have done recently:

This project awesomely combines both quadrotors, and the Kinect.
Imagine doing something like this (or whatever you can think of)

Yeah, it’s kinda like that. Read some of the previous things we’ve talked about regarding quadrotors, and Kinect.

What skills will you need to work on a project like this, when you’re in college? It depends on what you want to do:

You could be the person who builds the quadrotor, which would make you a mechanical engineer; you’d need knowledge of physics, and an interest in building (did you ever enjoy LEGOs or something similar, or do you ever find yourself sketching designs for inventions or buildings?)

If you think you might like programming, think about the awesome things you could do one day by programming a Kinect.

You could also be the person who figures out how to connect the Kinect, power the propellers, wire this to the processor, and trasmit the data, which would make you an electrical engineer; you’d need a knowledge of some math and physics, and an interest in making things work (did you ever tinker with remotes or electronics, to figure out how they worked?)

Or, you could be the person who programs the built contraption, telling it how to balance itself in flight, map the room, navigate, or communicate the data, which would make you a computer scientist; you’d need a knowledge of math, and an interest in solving puzzles and problems (did you ever program your calculator to make math class easier, like solving riddles, or enjoy problem-solving brain games?)

Oregon Leaders Eager to Listen to High School Students.

A

nd they really listened when high school senior Savannah Loberger spoke at an Oregon Leadership Summit. We’ve written about some of the other things Savannah has done, such as designing and running an all-girls program called Girls Get IT.

Listen to her speech about high school engineering:

She cracks a couple good jokes, too.

Savannah was pretty lucky, because she got to go to Hillsboro High School which has an excellent engineering program under Don Domes. And maybe not every high school has an engineering program like it, but she sure got a lot of people listening to her.

By the way, she spoke just a few minutes after the governor of the state of Oregon. And she was speaking in front of business leaders and politicians (state and national legislators)—the kind of people who, listening to Savannah speak, can actually do something about it.

Savannah Loberger is the mastermind of Girls Get IT, and acted as a student mentor this year.

Here’s the point: Those leaders want to listen to you. They want to make your schools better, and they want to give you opportunities. And they want to hear what you have to say. Which means we need more people to speak up about what they want.

If you’ve ever had a problem with the way things are taught, especially if it has to do with a lack of classes you’re interested in—like engineering or computer science—you ought to tell someone how you think schools can improve, and see what you can do yourself. Rattle some cages! These people are eager to listen, and if you work hard you could get the same kind of recognition that Savannah does.

Bonus—check out this free informational event about how to apply for financial aid for college: College Goal Oregon)

Clever-K: almost scary, but just so awesome.

R

obotics, originally from the Czech word for slavery, is growing into something much more than machines doing simple, mundane tasks. Today, robotics is one of the fastest-growing branches of computer science and engineering. Just read some of the other robotics stuff we’ve covered and you’ll see how diverse and rapidly-changing it is.

Today, we’re going to share an awesome video from Swedish robotics group IDSIA, and their project for the Clever-K learning architecture. Just watch:

MoBeE is their modular system for Clever-K, which helps a robot learn how to use its own ‘body.’

These robots basically are being programmed to grow through infancy and childhood.

(Also, check out that dude’s giant mohawk.)

What’s powering all of this? Computer science. It’s the fastest growing profession in the world, and will probably stay that way for a long time. Computer scientists can do everything from theoretical work, to programming AI, to making smartphone apps. Computer scientists live in the real world, but are at home in the virtual world.

If you’re interested in studying computer science, check out the “Read on” links.

Read on:

Get ahead of the game—make your own Android app.

F

or a lot of people, the hardest part of programming is getting started—especially in high school, where only a few lucky students can take programming classes. How do you do something when you’ve never learned how to do it, right?

Try this: learn on your own!

Here's one model of the software development cycle. Google it to learn more about what it means!

It can be hard at times, especially when you’re already going through hours of school every day. But the rewards are great—imagine being able to make money by selling your app on the market—and it doesn’t take as long as you might think.

In fact, if you dedicate just an hour a day (not even counting weekends) you can have your first basic app done in less than two weeks. And you can have something substantial—a real app with some functionality—in just a few months! Here’s how to get started:

  1. Pick a language and install it. There’s a wide selection of language to choose from, but if you want to make an Android app you ought to install Java. (Before doing so, check if your computer already has it.)
  2. Download an IDE. To make a program, you need a couple things besides the language:  a text editor to write the code (like how you can use notepad or Word to write a paper for school); and a compiler to translate the code you write into “machine code,” the language your computer works in. An “integrated development environment” is something which combines an editor and compiler, and also adds some really handy features to help programmers out. A good IDE can suggest code, help you find bugs (holes in your code that will make a program malfunction), and keep you organized. We recommend using Eclipse because it’s powerful, works well with Java, and is free. Here’s a link to Eclipse’s Java IDE.
  3. An older version of Eclipse, with the Android plugin, running an Android VM.

    Install the Android plugin for Eclipse. Follow the instructions on this page; they’re pretty simple. This plugin gives you a few cool things: first, it adds basic functionality for working with Android apps; second, it has a UI editor, so you can edit the app visually rather than just with code; and third (perhaps coolest) it lets you make a virtual machine. (A virtual machine is just like it sounds: a virtual computer inside your real computer. They’re great for testing programs because they’re conveniently right there on your computer (meaning you don’t even need an actual Android phone!), and no matter how catastrophically your program fails you can clean up the mess by just making a new virtual machine.)

  4. Arguably the best book on beginning Java programming, written by Kathy Sierra and Bert Bates, has plenty of examples and explanations, and is written for someone who isn't an expert yet.

    Learn to code as you do it! The best way to learn is by doing, so having a book (or online tutorial) opened while you program  is the best way to learn how to program! We recommend these books to get you started: Head First Java to learn how to code in Java; and Hello, Android to learn how to program an Android app. If you can’t find those ones, don’t worry! Just check your local libraries for similar books, and don’t forget to check thrift stores like Goodwill or Salvation Army for used copies as well! Follow the examples in your books, and check out Google’s online classes to make some simple apps for practice.

  5. Look for an idea for your own program. If programming is your job, you often have a project assigned to you, but having an idea is at the heart of all self-driven programming. Let the question, “What should I program?” simmer in the back of your mind. When you find a problem in your life that could be solved with a simple app—whether it’s the problem of boredom (make a game), or a new handy way to share photos, or whatever—then you’ve got your idea! Take what you’ve learned and start coding!

Be secure like a boss—the true geek passwords

I

nternet news sites have been going crazy over how vulnerable our passwords are, these days. Hackers are having a relatively easy time accessing databases of passwords by the millions.

The cool thing is that even if they have the password, it’s protected by something called a hash. Hashing basically means that the password you type is translated into a long and messy string of text (check out this explanation for more details) that can’t be read by the naked eye.

There’s a way around it, though: if a hacker has the hashed password, they can use brute-force guessing. Basically, a password cracker can guess the password, run it through the hash algorithm, and see if the result matches with the messy hash they stole. If it matches, they know they have the correct password.

Especially smart crackers make custom PCs specifically for this brute-force method. They stack together tons of GPUs (used for graphics processing, normally) and have them rapidly generate millions of guesses—millions—per second. Faster than a supercomputer could have done it, just ten years ago. They, in essence, start with guessing “aaaaaaaa” and seeing if that matches, then “aaaaaaab,” then “aaaaaaac” and so on, until they get a match.

Needless to say, the longer your password is, the better. So what’s the best way to make a very secure password?

If you ever go into IT work—administering computer networks and stuff—you’ll probably be required to have a ridiculously long password. Something like 30 characters. Oh, and it gets better. It has to have upper-case, lower-case, numbers, and symbols. And some people have trouble memorizing a 10-character password—that’s why they do something stupid like “password11.”

And, let’s be clear: that’s a stupid password. We don’t like throwing that word around, but right now we mean it.

But our intentions are pure: we want you safe. When you start having credit cards and online bank accounts, secure passwords are a huge deal. A huge deal. So start getting good habits now.

But we digress. The best way to make a secure password is not to make a password at all. Instead, you make a pass phrase. Observe:

I'm in LOVE with eating 12 donuts.

Notice that we have symbols, upper and lower-case text, and numbers. And it’s long.

Come up with a long pass phrase like this, and you won’t have to worry about being cracked, because longer passwords require exponentially more time to guess. Think of it like this. If you have a one-character password, there are something like 94 things your password could be (including everything on your keyboard). But if you have two characters, it’s 94*94. Our pass phrase is 34 characters. Do the math and tell us what 98^34 is. (hint: it’s big)

(That’s the last time you’ll ever see us blockquote a sentence about donuts, by the way)

Everyone Needs A Computer To Survive: Near-Portland Students Can Get Them Free.

Y

ou may have heard that computer science is important to study, but have you really heard the why?

Today we’re going to talk about why you need to study computer science to be successful. And then we’re going to talk about why getting a computer is not a problem for anyone near Portland, thanks to a great group called Free Geek. There’s a fair amount of reading, so skip to the parts which are interesting to you.


Why You Need Computer Science And, Therefore, A Computer.

Software Development: Your Future Job

Software developers have bad posture, according to this picture from the U.S. Bureau of Labor Statistics. What are they trying to say? Be the cure. Sit straight.

According to the US Bureau of Labor Statistics, Software Development is one of the fastest-growing highest-paying jobs. Read: It is one of the highest-paying jobs, and of the category of highest-paying jobs, it is is the fastest-growing. And many of those jobs require only a bachelor’s degree. (Source). That’s pretty wild. And it means if you want to hop on board with one of the most accessible and lucrative jobs in the US, you need to start programming.

About Software Development

Read a little bit about software development, as described by the US BLS. Here’s the gist:

  • The job growth from 2010-2020 is projected to be 30%. The average is 14%.
  • The median pay is $90,000 per year.
  • Entry-level jobs require a B.S. in computer science. Similar-paying jobs often require a Ph.D.

That last piece of information is important: if you want to become a high-paid software developer, you need to study computer science.

Obstacles for Computer Science Students

Charles Babbage, the first computer scientist, didn't have a computer but was still great. You can be, too. But since computers are, you know, invented now, we recommend picking one up.

Don’t even get us started on the number of non-programming jobs which require you to use a computer (most of them). That said, computer science what you need to survive.

So why are some people skeptical about CS majors, or hesitant to study it? Well, there are a couple things which, at first, seem scary:

  • A CS major involves a lot of mathematics classes.
  • It’s hard to get one’s hands on a computer with which to program at home.

Here’s the problem with math: it usually involves a lot of pencil-and-paper computations which are tedious and just plain annoying. That’s how math often gets taught in school. But the kind of math you learn for CS is less about computing and more about concepts, and you can have your computer do the computing (appropriate, isn’t it?). Check out this great TED talk, from one of the guys in charge of Wolfram Alpha, about how to revamp your math education:

Math is not about tedious calculations, it’s actually about logic and problem solving.
Plus, when you’re learning to program a computer, you can make it do all of the
calculations.

Given that a CS student needs to focus on conceptual math, and can make their computer do the calculating, that means that the biggest problem for CS students is getting a computer.


How to get your hands on a computer.

Linux is popular among programmers because it's completely open-source and completely customize-able. That's why there are custom distributions like Ubuntu.

For a lot of people, getting a computer can be hard. A decent one is a couple hundred dollars, and good ones can be over a thousand. Some people are lucky enough to get one as a gift or hand-me-down from family or friends, but other families just don’t have computers. That’s fine for a family, but not for you. You need one to study CS, or even just to get by in the professional world.

In Portland, there’s a company called Free Geek, whose goal is to get computers in the hands of as many people as possible. They believe computer skills are essential for the future, and have a number of programs to get computers into the hands of people who may not be able to get them otherwise.

The Ubuntu logo. Ubuntu is one of the most popular distributions of Linux.

Free Geek has two programs to get computers at no cost: the Adoption Program, where you donate 24 hours of time in exchange for a free computer; and the Build Program, where you build five computers for Free Geek, and then a sixth for yourself. Click the above links to learn more, and then apply.

The best part: the computer you get is loaded with Ubuntu Linux, a great operating system both because it’s free and because Linux operating systems are great for programming learners, thanks to their customization and their shell. Plus, they offer free classes for their volunteers.


Read On