Skip to content
This repository has been archived by the owner on Sep 18, 2019. It is now read-only.

andrewek/prep-work

Repository files navigation

OCS Prep Work

These are the practice problems for admittance to Omaha Code School. Eventually, this will be a full textbook, but that time is not here.

The goal of the Prep Work is to get you ready for Day 1 at Omaha Code School. To that end, we have organized some learning resources and practice problems for you.

We're not expecting you to be a Ruby expert at all, but the more comfortable you are with some basic concepts, the easier a time you'll have learning the things that build on these fundamentals. Additionally, the sooner you internalize these structures, the faster you get to work on more interesting problems.

These problems are fairly short and should help you practice core concepts and features of the Ruby programming language, as well as some of the other skills we'll cover in this course. The problems are organized by language feature, though many problems will build on previous sections. Some problems will require you to look up more information.

In almost all cases, the thing to remember is that you probably won't break anything. Worst case scenario, you write some code that doesn't work. You can always fix it, or start over (if necessary). We encourage you to ask, "What if I ..." – and then enact an experiment to answer your question. As you build this habit, you'll find that you learn more and more from your own exploration.

The problems in each section are more-or-less organized with the easiest problems first and the hardest problems last, but that kind of sorting is not an exact science.

We've found that students who went through most or all of the prep work were generally very prepared. Students who did not go through very much of the prep work have to rely on intuition and previous experience.

How to Prep

  1. Get yourself a notebook and commit to using it just for class. Reserve the first 20 pages or so for quick-reference notes, and the rest for regular notes.
    • Quick reference notes should be one or two-line examples of each feature. The other notes should include your working notes for how you are solving a problem, as well as any other notes (If, for example, you cannot solve a problem, write that down).
    • Your goal with these notes is to write them such that six months (or more!) from now, you can look at them and understand what you were thinking and feeling.
  2. Go through the Ruby Practice Problems, making sure to use Chris Pine's book and the other linked exercises.
    • Don't worry too much about getting all the way to the end of the problem set, and feel free to skip the later problems in each set, particularly the ones that are math-heavy.
    • It's not important that you understand everything, but it is important that you get yourself started (since these skills take a lot of practice).
    • Consider tracing, by hand, the execution of each program. Consider also coding out solutions by hand before you try them in Repl.it.
    • As you go through each section, here are some questions to ask yourself:
    • What feature am I learning?
    • What does it do?
    • When should I use it?
    • How many different ways are there to do this particular thing (for example: how many different ways can you make a loop?)?
    • What's a simple example I can write down to remind myself of how to use this?
    • When I write this piece of code incorrectly, how will I know? How do I figure out where my mistake is?
    • What questions do I have about this?
    • What metaphors can I draw for this to help me remember and to test my understanding?
  3. If time allows, go back through your notes and do the Ruby Exercises a second time.
    • How many of them can you solve without referencing your notes?
    • How many of them can you solve significantly faster than you could the first time?
    • The goal with this second pass is to build automaticity, which is basically the ability to perform a skill without thinking about it.

Optional: Keep a Journal

As you go through the Prep Work, consider keeping a journal (on paper, on the computer, in a blog, etc.) of your reflections. Take the time to write out what you've learned (in your own words), and also take the time to write out your thoughts, feelings, hopes, and fears. Part of being a good developer is learning how to take care of yourself as a human being; the journaling process can help with that, and often yields new and surprising insight about yourself. You don't have to share this journal with anyone (you don't even have to keep a journal!), but doing so will likely help you as you go through the course.

Some specific, different ways of keeping a journal:

  • Start a free, simple journal online. (Google for "online journal".)
  • Make a new folder on your computer called "Journal" and save a new text document in it for each new entry you write.
  • Get a notebook (separate from the one you're using for your class notes) and write in it.

Other Helpful Notes

Given that this is an intense course, here are some things that might help make life a bit easier:

  • Find a quiet place to study and work.
  • Experiment, as you go through the Prep Work, with different working environments.
  • Does the amount of natural light matter?
  • Does the time of day matter?
  • Does it matter whether you're listening to music (and if so, does the kind of music matter)?
  • Does it matter if the television is on or if there is a lot of noise?
  • Do you work best if you've exercised that morning? If you've exercised that evening? Do you need a snack while you work?
  • Start building a regular sleeping schedule.
  • Find ways to eat healthily; you might not have time every day to cook, so consider finding a couple of easy recipes that you can make (in batches) and then refrigerate or freeze (if necessary).
  • Carve out regular time for yourself where you simply don't get work done, and stick with it. This could be an outing with friends, or it could be staying inside and watching Netflix (or any of a number of other things).
  • What refreshes you? What helps you feel vital? Get in the habit of making time for that, since the actual work of OCS can be exhausting.
  • Write up a quick résumé and work history for yourself. Don't worry about formatting – we've got a template we'll ask you to use – but at least get this information all in one place, so that we can get your job search materials prepared quickly when the time comes.

About

Prep work for the OCS course

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published