Skip to content

Instantly share code, notes, and snippets.

@JoshCheek
Created September 6, 2013 14:25
Show Gist options
  • Save JoshCheek/6464538 to your computer and use it in GitHub Desktop.
Save JoshCheek/6464538 to your computer and use it in GitHub Desktop.
Some ideas for projects to work on after RKS.
  • Implement your own Enumerable module! (this will give you some exposure to functional programming ideas and help you understand how modules work)
  • Implement the entire Array class using a linked list and give it much of its functionality by including your Enumerable module! (this will give you experience with some not too complex algorithms, as well as more Ruby exposure, familiarity with the Array class, and a realization that almost everything in Ruby you can implement yourself if you want, Array isn't special other than its literals, also we'll implement it using a linked list, so some CS core ideas, and an opportunity for me to give you a code review and probably expose you to functional ideas by showing you how I implemented it)
  • Implement curry (not too difficult and will give you more exposure to functional ideas)
  • Maybe some of the string functions (or maybe not, the real benefit here is that you would get experience with problem solving and algorithms, we may decide that isn't relevant)
  • Top-down development, aka outside-in development (I find this approach to be incredibly compelling. I'll implement a nontrivial problem using a top-down approach so you can see what this looks like, then give you the problem I made for myself to teach this to myself for the first time).
  • Implement Struct (this will give you experience with metaprogramming -- Yumin, we can do this on Ruby 1.8, but there will be much less nonsense on 1.9).
  • Maybe a small database backed Sinatra app (This will give you some ActiveRecord experience and allow us to talk about some of the ideas that underly the web).
  • If you want, we could maybe write a server (this would help you understand HTTP and some of the ideas underlying the web).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment