Week 0 at Galvanize Data Science Immersive

D Saunders
Sep 9, 2018 · 6 min read

Yesterday was the last day of week 0 of the Galvanize Data Science Bootcamp. Monday starts 3 months of immersive training designed to prepare our cohort of ~20 people to be highly employable at graduation. I’d like to contribute to your opinion on whether it’s a good idea as an investment towards a data career in 2019 and share an experience that feels like being in the center of the tech world during data science’s “wild west”.

My degree is in business administration. I helped co-found an edtech SaaS company (education technology)(software as a service) to deliver American academic and workplace knowledge to international students and adults. I also analyzed student and faculty data for my university system leadership. It was clear I lacked the tools and confidence to find complex patterns in the data generated in both roles, and felt this is the area where I had the motivation and disposition to succeed.

I believe my options were to choose to get a masters, do online courses, find a job with data science training, or complete a bootcamp. I choose to do an in-person bootcamp because I felt I would learn the material well and be adequately recognized for having done so, and I have the time and interest to take the deep dive. The masters lends more credibility, however it is a larger risk and investment. I think it would be the best choice if there were not several indications that erode the dominance of masters programs.

From what I’ve read, the job market is so hot for this specialty that employers will be more lenient on credentials. I asked a few employers I liked, who confirmed. Galvanize advertises their 6-month placement rate for all their graduates within the field, stated to be 85%, and higher in the SF bay area. I also found this bootcamp on the resumes of people in positions I admire. Finally, Galvanize has a strong hiring relationship with a company I favor, and this seems like a good portent. From all that, it appears bootcamp may qualify me to enter the field without a masters, which will allow me to reach the field faster and with current, highly-applicable skills.

The first week of class is optional and called week 0. It’s supposed to cover the Python programming language which Galvanize requires its applicants to know up to coding at a certain level in a time limit. They also require basic familiarity with the SQL programming language and a good grip on statistics (I’d say 2 semesters of college stats). The python language was named after Monty Python and this means I find film references in the learning materials and that almost makes it worth it right there. It is built to be easier to read than other languages and best for analytical work (as opposed, for ex., to C which is faster). It’s the industry standard for data science. SQL is a “querying” language — it’s for looking up stuff in databases (and administrating them). It’s also easy to read, but compared with Python, feels like a children’s dictionary.

source

Python?

Even though this week started with the absolute basics, I learned a lot. My cohort has to be familiar with coding functions already, but going over the basics still reveals lots of nuance. If any of this sounds like spaghetti to you, don’t worry, I’ll explain what counts.

On day 1 I learned:

  • True * False = 0
  • “potato” < “turnip”
  • the housing problem in SF is worse than you think

10 points if you can explain the above.

Technically I learned:

  • How to run jupyter notebooks on a virtual machine
  • “you are always somewhere in a tree of folders”
  • more unix terminal commands
  • Google collab (Google docs for code)
  • Correct me if I’m wrong: To change an object’s class, always assign to a new variable.
  • You can put anything in a set except a list, a dictionary, and a set

The broadest overview I can think of to describe python:

Everything is an object which belongs to a class(aka type). The primitive types include strings (looks like “cow”), integers (55), floats (5.0), booleans (True or False only), and emptiness (None). You pass objects into functions which, when run, act on them and often produce a result. So

type(“cow”)

returns

str

which is short for string. So this tells me that the object “cow” is a string, which is useful because it determines the behavior and properties of the object and how the object will get along with other objects. Python has a list of built-in functions, like calculator operators (+ — / *), the all-pervasive

print()

which displays whatever you put in the parentheses, and open() which opens files. Then each class of objects have methods, which are functions which act specifically on that class of object. This is sensible because you don’t want to do the same thing to “cow” as you do to a number. Example:

sentence = "cat " + "in " + "bag " + "in " + "room"

returns sentence = “cat in bag in room” and not cat + 2in + bag + room, which would be math. This is because addition is one of the magic methods ( I’m serious we spent half Friday learning about magic methods) that the creator of python programmed to produce concatenation for strings and summation for numerical types.

Then you can use loops, like “for loops”, which control where the computer looks for information, and “if statements”, which control what output to return based on conditions. There are also collections of objects. The basic collections are lists, tuples, dictionaries, and sets, all which come with their own grammar, so to speak, to employ them.

You can only do so much with all that before running into brainteasers and really convoluted solutions. Luckily, there are aptly-named libraries, which you use when you want more and simpler functionality. I’ll be getting into those plenty.

The symbol for python and a distillation of its rules link

Like learning a foreign language, to understand python it helps to look under the hood, which we did a lot during the week. A fundamental concept I’m working on is mutability. If I understand:

  • every object in python has an address in memory
  • strings and the numeric types are immutable because “they cannot be changed but rather return new objects when attempting to update” source
  • collections, except tuples, are mutable because they can be changed in-place. changing an object in place is called a side-effect, and often needs to be avoided. Perhaps they contain addresses/pointers to immutable or mutable objects which when changed elsewhere, change the contents of the collection?
  • therefore when you put a list, dictionary, or set in a tuple, it becomes a mutable object

Later in the week we looked very briefly at libraries and matrices. If that wasn’t fun enough, we made sure to get to classes, which allow you to create new types of objects and set their attributes and methods. My cohort seemed to be generally enthused about classes, but they are a dedicated bunch.

Along the way our knowledgable instructors liked to sprinkle in brainteasers and authentic frustration by asking us to try to complete problems for which convenient solutions have already been made. I’m left wondering what to do with “an object is a special kind of dictionary accessed by dot notation” and the class has already moved on. You’ll hear from me next week if I don’t melt.

D Saunders

Written by

Excited about data + education + workforce dev

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade