Skip to content

Ruby Syllabus 2015 Notes

Sam Phillips edited this page Mar 19, 2015 · 10 revisions

The current experience

What are the typical motivations for learning ruby at codebar?

  • Started with Rails, Code Academy etc and wanted to get a grounding in the fundamentals of ruby
  • Working with technology but in a non-programming role (eg project management, consultancy), and wanting to get more involved with the code
  • Working on General Assembly/Makers projects and needing support
  • Working as a school teacher and want to get students more involved in coding

Where do people get stuck?

(some of which will be things we can avoid as you can learn them later once motivation and momentum is strong, some of which are important parts of learning)

  • Finding characters such as #, {, } and others on non-English keyboard layouts
  • Navigating between directory on a computer in explorer/finder and understanding that directory is also available via a Terminal.app/cmd window
  • Understanding gets, blocking and inputting text into the terminal - for the coach, having to explain IO is tough.
  • Understanding the difference between public, private and protected - especially protected
  • How to test a CLI (automation not encouraged by the tutorial, but I have had this as a follow up question)

Ruby 1

  • Not a codebar tutorial - ruby in 100 minutes. Very syntax heavy, without practical examples
  • Requires coach to make a call on which bits are important and which bits are not. E.g.: (1) symbols not easy to explain, and not well explained there. Is it important that a beginner does symbols on their first day? (2) passing a block into a function; this is tough to explain and the examples (gsub) aren't great

Ruby 2 - The Basics

  • gets is tough and always a challenge
  • The introduction of loops and basic arithmetic in this tutorial is good and works well

Ruby 3 - The Basics (part 2)

  • Quickly gets to the point where it's harder to do without objects... maybe teach basic objects earlier?
  • PStore is never used in real life - is it a good thing to teach?
  • This tutorial is more like an extended exercise than a teaching exercise.

Ruby 5 - Object Oriented Ruby and Inheritance (part 2)

  • One student really struggled with the class responsibilities in this one - I don't think the OO is quite right and the mixing of hashes and objects is confusing.

How well do tutorials as a format work?

  • No validation of understanding - e.g. people move on to one tutorial once they've finished it, rather than assessing whether they understand it. I've seen students rush through without truly understanding quite a lot, and students themselves have noticed this.
  • The curve on the tutorials is quite harsh - doing 3 only on the information provided in 2 is difficult - in fact, some students choose to do 4/5 first so they keep learning in the same way, and learn objects which is useful.
  • There simply aren't enough tutorials.
  • Tendency to use copy/paste, rather than type, can be hard to prevent and a major barrier to learning. The coach needs to insist.

Other observations

  • Throughout the ruby tutorials, there is a conflict between learning code organisation and structure, learning ruby principles in the abstract, and learning computation and solving challenges. Eg, it's easy to spend a lot of time on structure, encapsulation etc which it's not easy for students to see the importance of, at the expense of doing computation pieces. I think it would be worth balancing these concerns throughout the tutorials, and also being mindful of which of these aspects of learning are the most important for beginners.

Ideas

  • Replace Ruby #1 with a Codebar tutorial - covering some of the same material, keep focus on syntax
  • Have two streams for ruby - one guided set of tutorials with a common thread ("Introduction"), and then additional exercises/topic areas
  • The Introduction thread could be web-based. Maybe take the output of the HTML tutorials and turn that into a dynamic site gradually?
  • Add tutorial on CSV parsing
  • Add tutorial on web scraping (advanced but a popular topic)
  • Add tutorial(s) on testing. Start by building a basic testing tool yourself, then graduate to Test::Unit?
  • Convert ruby 2/3 into a CLI-specific tutorial set.

Notes from Kriszta

  • High level overview of how ruby is different to HTML/CSS/JS