Programming Foundations


In this course, we'll increase the level of complexity from the Programming Prep course and work on more meaningful exercises. We'll use a static code analyzer and learn to systematically approach a problem using pseudo-code. As we go through these programs, we'll point out important learning concepts like variable scope, method scope, and using blocks. After this course, you should have a good grasp of how to write programs and think in an imperative, step-by-step, logical fashion. You will also learn to debug and trap tricky bugs, and learn to develop a temperament for debugging.

Major Topics

  • Ruby language and syntax
  • When to use certain data structures
  • Using Pseudo-code and Flowcharts for problem decomposition and analysis
  • Use a static code analyzer
  • Learn to debug small programs
  • Understand local variable scope
  • Understand method arguments


Programming and Back-end Development


Detailed Syllabus

Start with Small Programs

  • Ruby style
  • Build a calculator
  • Think with pseudo-code
  • Use flow charts to map out logical sequence
  • Use Rubocop to enforce styles
  • Refactoring our calculator program
  • Debugging
  • Extra features for the calculator program
  • How to write better code
  • Reference vs value
  • Build a Rock-Paper-Scissors game
  • RPS game bonus features


  • Exercise set: Easy 1
  • Exercise set: Easy 2
  • Exercise set: Easy 3
  • Exercise set: Medium 1
  • Exercise set: Medium 2
  • Exercise set: Medium 3
  • Exercise set: Hard

Ruby Collections

  • Collections basics
  • Looping
  • Selection and transformation
  • Methods
  • Sorting
  • Exercises: Methods and sorting
  • Nested data structures
  • Working with blocks
  • Exercises: Nested collections and blocks

Slightly Larger Programs

  • Customizable Rubocop configuration
  • Decomposition of bigger problems
  • Build a Tic Tac Toe game
  • TTT game bonus features
  • Build a Twenty-One game
  • Twenty-One game extra features