Practice Time: UW’s Computer Science Homework

(Previous: Try Ruby)


After completing a LOT of Ruby lessons (Learn Ruby the Hard Way, Codecademy’s Ruby, and Try Ruby, which I blogged about here, here, and here), I was itching to try my hand at something a little less structured.

Tutorials and structured lessons are great for learning the basics–they tell you exactly what to do, and what the outcome should be. But in my experience, the real world doesn’t work that way, so I wanted to find some problems to solve that would build on the foundation I had been building and let me flex my new coding muscles a little bit.

Enter University of Washington’s Computer Science and Engineering Department. UW has a reputation not only for having an outstanding CS department, but for structuring its introductory Computer Programming courses in a way that is welcoming to students with no previous programming experience (they are also very intentional about recruiting and retaining women; check out this article for more).

It turns out that UW CSE posts the homework for their classes online. And the notes. And examples*.

One problem–everything is written in Java, not Ruby.

rocket ship
ASCII Rocket!

But the concepts are the same concepts, and I figured that I should be able to accomplish more or less the same goals in a different language**

The assignments range from whimsical (ASCII art Rocket Ship!) to fun (use methods to output a repetitive song!) to practical (given user input, compare two students’ academic records). One of the hardest assignments was also the most rewarding: given an unknown .txt file containing a MadLib, design a program that will read the file, ask the user to input nouns, adjectives, etc. (based on words in <brackets>), and output a file with the full content of the MadLib.

Unfortunately, two of the assignments are Java specific (Critters requires interacting with existing code, and Cafe Wall is about drawing in Java). But the other six are a lot of fun, and I could see how several would tie in to real-world coding projects like creating an online quiz, guessing game, or evaluation tool.

I really enjoyed doing these, and they forced me to think about how to use Ruby to accomplish tasks that I hadn’t been prepared to do, which I appreciated. Each one took a few hours of concentrated thinking, followed by a lot of trial-and-error and debugging (I’m getting pretty good at the Command Line now, and at reading error messages. And at looking things up on Stack Overflow).

I don’t know that everyone would be comfortable diving in with this much work and no step-by-step instructions, but for me, it was just the challenge I needed to keep pushing myself forward. It made me feel really good to figure out the answer to each puzzle, and in the process, I got to review variables, for loops, while loops, functions, arrays, reading/writing files, and a lot of other stuff.

Definitely a thumbs up from me.

thumbs up

*Big shout out to Stuart Reges, who structured the CSE 142 course the way it is and who liberally shares information about CS pedagogy!

**Another big shout out to my husband Kyle (who has taught the course as well), who helped me clarify terminology differences between Java and Ruby. And helped me fix redundancies in my code.

Next: HTML/CSS Part 1: Codecademy and W3schools

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s