Module 1 Success

Module 1 Learning Goals

Academic success in BEM1 means that students demonstrate proficiency and comfort with the concepts below. The expected mastery level can be understood with the following scale:

  • Mastery: student is able to explain and implement the concept independently or with light reference
  • Functional: student recognizes when to use the concept and can implement it with the support of documentation and/or a collaborator
  • Familiarity: student can recognize and describe the concept when needed/appropriate, but is not able to implement the technology/technique

A student who graduates from this module will be able to do the following.

Ruby Syntax & Style


  • Identify and apply best choice methods for strings, integers, collections
  • Consistently identify best-choice enumerables for interacting with collections
  • Use if/else statements, loops, conditional statements, and boolean operators to manage control flow
  • Use Ruby docs and other online documentation to identify best-choice methods and approaches


  • Import and export data to .csv and .txt files
  • Speak clearly and accurately about language mechanics and correctly name the elements of Ruby syntax
  • Explain the difference between class and instance methods

Breaking Logic Into Components


  • Translate abstract requirements into programmable concepts using whiteboarding and pseudocode
  • Decompose complex technical challenges into a series of smaller challenges
  • Develop complex algorithms and implement them in Ruby


  • Translate specification requirements to tests that will drive design
  • Identify use cases for Modules and Super Classes


  • Use debugging tools (e.g. pry) to help investigate assumptions and verify code behavior
  • Print to console to verify code behavior
  • Use pry or irb console sessions to test code tactics and address bugs
  • Demonstrate ability to choose appropriate debugging tactic to solve problems

Test Driven Development


  • Understand and describe why we test software
  • Understand and describe tests they did not write
  • Write unit and integration tests

Version Control


  • Describe differences between local versus remote repositories


  • Understand git’s version control, both via the command line and through GitHub
  • Demonstrate version control proficiency by adding, committing, merging and pushing code changes, as well as switching branches and retrieving earlier commit history
  • Fork, clone, fetch, and making pull requests to facilitate collaboration

Desktop Environment


  • Navigate machine to write, run, and test programs
  • Understand and explain how CLI, text editor and browser interact


  • Move between programs without relying on mouse
  • Make use of keyboard shortcuts to minimize distractions



  • Co-develop strategies to deal with logistics surrounding pair project work
  • Resolve conflict when necessary during problematic team dynamics or project direction
  • Develop feedback (written and verbal) that is specific, actionable, and kind


  • Articulate personal and learning needs in a constructive, clear manner
  • Advocate for and co-create team dynamics that balance the learning goals of all team members

Career Development (Additional Details

  • Cultivate Self-Awareness
  • Understand one’s key strengths
  • Know how to learn, including how to learn through struggle
  • Ownership over one’s learning
  • Communicate effectively with partners through the entire pairing process from setting expectations to giving feedback
  • Express one’s own story and strengths
  • Manage stress effectively