# Viking Code School Week 2: Algos and Data Structures

July 18, 2016

This week at VCS, we covered the fundamentals of computer science; algorithms and data structures. These topics proved to be very interesting and also served as a nice vehicle for introducing the ideas of space and time complexity, and more generally, efficiency. I’m quite grateful that time was set aside in the curriculum to cover these topics, because they are so relevant to the constraints imposed in an actual we-don’t-have-enough-money-in-the-budget-for-another-server-and-need-to-get-page-load-times-down-by-a-second type situations. It’s this relevance to real-world constraints that makes them so interesting. Because of this, in this post I will explore the implications of time and space complexity analysis on a specific algorithmic challenge, and how we can use this analysis to write better software.

# Well Done

July 10, 2016

So I've officially survived my first week of the Viking Code School! I've made more progress in the past week than I could have in a month on my own. Of course I knew coming into this that this was the idea, but understanding something conceptually and then actually experiencing is of course very different. In other words, I've had a blast this past week. Let me give you a recap.

# Writing a Blog Generator

June 29, 2016

I’ve been reading through the Structure and Interpretation of Computer Programs a fair bit these past few weeks and it’s got me thinking about program design and the “shapes” of programs quite a bit. I was itching to apply this perspective on programming to something concrete, so I began thinking about what my next project might be. As I was reviewing some of my fellow Viking Code School cohort members’ personal websites, I found one. One of them had used a service called Jekyll to generate their blog, and I decided to visit it’s documentation to see if it was possible for me to recreate my own version given my current skill level. Indeed it was, so over the past week I’ve spent my time creating an application that mirrors Jekyll’s functionality as closely as I can manage.

Essentially, what Jekyll does is take the user’s blog posts as input, and then return ready-to-publish HTML and CSS files as output. It includes some auxiliary features, but that’s the core of it.

# Preparations

June 17, 2016

So I’ve got less than a month until my time at Viking Code School truly begins. For better or worse, I’ve been spending much of my time working through SICP.

SICP, or the Structure and Interpretation of Computer Programs, is a wonderful book. Originally used as the primary text for MIT’s Intro to CompSci course, it has come to be known as the de facto book for broadening one’s computer science horizons. The top two reviews on its Amazon page are by Peter Norvig (Director of Research at Google) and Paul Graham (Viaweb co-founder, Y Combinator co-founder) and they both give the book five stars. And while I simply don’t have enough time to work through the entire book before the beginning of VCS, I have been reading through each section as a way to introduce myself to topics like concurrency, streams and meta-linguistic programming. And then there’s Scheme.