Ruby Immersion Prerequisites
Student prerequisites for the components of Ruby Immersion are as follows:
- Ruby Immersion is not appropriate for absolute beginners in software development.
- General - Any previous on-the-job and/or coursework experience with any of the following will give the student considerable advantage in these bootcamp classes: text editing; applications in a "classical" language (e.g., C, Pascal, Fortran, VB, etc.); debugging; shell scripting (bash, DCL, etc.); command-line utilities; operating systems fundamentals.
Because it is commonly accepted in most professional environments that a software developer will possess and use his or her own personal laptop computer for programming and project activities, including both employment/on-the-job work and community/volunteer projects, Ruby Immersion requires that each student bring their own laptop computer to each class. Each student must provide and use his or her own laptop computer throughout the class, configured for one of the following environments.
- dedicated/single boot with Ubuntu Linux (preferred); or
- for dual-boot with Ubuntu and Windows; or
- Mac/OSX; or
- a Virtual Machine, hosted on the laptop's native operating system, running Ubuntu Linux as a guest - VirtualBox is recommended, with the VM's guest disk (container file) sized at no less than 60 GB capacity, with NAT networking enabled, and with Guest Additions installed.
Although a student may have an employment-related and/or personal need and/or desire to work within the Mac/OSX or Windows environment, this coursework will focus primarily on software development within the Linux (Ubuntu) environment, with minimal coverage of the specifics of Mac/OSX, and near silence on Windows.
Coursework will be almost entirely Linux (Ubuntu) oriented, so it is strongly recommended that the student's laptop have the latest Ubuntu release (currently v14.04-LTS, "Trusty Tahr") installed either as the sole OS or as a dual-boot option alongside an existing Windows partition. Other Linux distros (non-Ubuntu) are acceptable if cleared with the bootcamp instructor. A Mac computer with OSX is also acceptable. A Windows-only laptop is not acceptable for this bootcamp.
Each student should arrange to pre-configure his or her own laptop computer (i.e., install Ubuntu, if necessary) prior to arrival for the Introductory class, and should maintain the Ubuntu (and added software packages) configuration for the subsequent Intermediate and Advanced classes. The bootcamp instructor can provide written OS-installation and configuration instructions to any student who requests them, provided that such request is made at least fourteen (14) days prior to the start of class.
Wireless Network Access
Wireless network access, both to the Internet and among participants' laptops, will be provided during each class.
Students will learn sufficient skills about installing and configuring Linux (Ubuntu) and other Free/Libre Open Source Software (FLOSS) packages to be able to configure their own personal laptop or desktop system.
Each laptop's Linux partition (or VM) will be configured as follows:
- Current Ubuntu (Linux) distro, currently 14.04 "Trusty Tahr"
- Default user account sysadmin (password SysAdmin): will be used to create at least one developer (personal) account per laptop
- Ruby Version Manager (RVM) to support Ruby (MRI) version 2.x
- Sublime Text editor/IDE (free evaluation copy)
Each student will, over the course of the bootcamp, install the following components (at a minimum) on their own laptop computer (note that these are all free/open-source packages, available at no cost to the student):
- Linux packages:
- Sublime Text (free evaluation copy)
- Git (revision control repository)
- RVM (Ruby Version Manager)
- Ruby (latest version)
- (others to be determined)
- Ruby Gems:
- RSpec / RDoc / ri
- (others to be determined)
The text editor is perhaps the programmer's most important and frequently-used software tool. And although developers who use other languages (e.g., Java, C, Perl, Python, etc.) usually rely on text editors which are embedded in more comprehensive (and costly) "Integrated Development Environments" (IDEs), Ruby's syntax and development environment is considerably more straight forward, and such IDE resources provide only complexity and confusion without contributing value to the experience...
Fortunately, the Ruby community enjoys (and has largely embraced) a relative newcomer to the text editor toolkit, Sublime Text (www.SublimeText.com), which is exquisitely attuned to the Ruby programming language and attendant development cycle. It runs cross-platform (available for Linux, Mac/OSX, and Windows). It is an excellent choice for Ruby Immersion students.
And, although Sublime Text is sold for professional use on a single-user licensing basis (its EULA is not a GPL), it is made available to any potential user for unrestricted evaluation, without feature-disabling or functional timeouts. Sublime Text will be used during the bootcamp for all text editing tasks and requirements, as an exemplar of a modern, advanced-feature editor. And because it is reasonably priced (currently ~$70 for the single-user license), students can elect to purchase Sublime Text for their own personal use after the conclusion of the bootcamp.
In mid-2014, a new, open source (and free) text editor is under development and has progressed to a sufficient "beta" stage that it too becomes a viable alternative for the class: Atom (atom.io).
All students will be required to work together in team units, ranging from paired-programming sessions to four-to-six person development teams working on class projects. Because this participation is viewed as an essential, non-optional experience requiring in-classroom, physical presence, the Ruby Immersion does not allow or support "distance learning" (e-classroom).
Students will be strongly encouraged to help each other, in true peer support and collaborative learning: "If you don't know, ask for help. If you really get it, help someone else."
Students will be expected to "present" material to each other (the class), ranging in scope from individual units of Ruby material, solutions to exercises, original research, answers to questions, even including full project designs and defending particular implementation approaches.
This approach models "the real world" of software development, where small, agile teams work closely together to produce high-quality software products, and where community support and participation is valuable, recognized and rewarded.