Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save grwthomps/c3336e1feb3f05d25f852a610d3ce0cf to your computer and use it in GitHub Desktop.

Select an option

Save grwthomps/c3336e1feb3f05d25f852a610d3ce0cf to your computer and use it in GitHub Desktop.
Mod 0 Session 2 Practice Tasks

Session 2 Practice Tasks

The assignments listed here should take you approximately 2 hours.

To start this assignment, click the button in the upper right-hand corner that says Fork. This is now your copy of the document. Click the Edit button when you're ready to start adding your answers. To save your work, click the green button in the bottom right-hand corner. You can always come back and re-edit your gist.

1. Documentation and Googling (60 min)

Documentation of a langauge, framework, or tool is the information that describes its functionality. For this part of the practice tasks, you're going to practice digging into documentation and other reference material.

NOTE: The linked documentation for each question below is a good starting place, but you should also be practicing your Googling skills and sifting through the results to find relevant and helpful sites.

  • In your own words, what does the Ruby array drop method do? As you're explaining, be sure to provide an example. Your answer: The ruby array drop method will drop (or discard) n number of elements from an array and return the remainder of the array.
numbers = [1, 2, 3, 4, 5, 6]

numbers.drop(3) #=> [4, 5, 6]
  • What did you Google to help you with this task, and how did you pick your results? I googled “ruby array drop method” and took a look at the first four results. Three of four results had similar answers and one result was not applicable. On one result’s page, I had to use cmd+f to find the applicable content on the page.

  • In your own words, what does the Ruby string split method do? As you're explaining, be sure to provide an example. Your answer: The ruby split string method will split (or separate) a given string into an array. How it splits the string can be determined by the argument passed within the method.

str = “this is a string”

p str.split #=> ["this", "is", "a", “string"]

p str.split(//) #=> [“t”, "h", "i", "s", " ", "i", "s", " ", "a", " ", "s", "t", "r", "i", "n", "g"]
  • What did you Google to help you with this task, and how did you pick your results? I googled “ruby split string method examples” but was not understanding while reading the results. So I went to YouTube and searched “ruby split string method” and found a helpful video of someone explaining the method by doing a couple of examples, which made it much clearer.

  • In your own words, what does the JavaScript array slice method do? As you're explaining, be sure to provide an example. Your answer: The Javascript array slice method copies an existing array and alters the copy by removing certain elements. Which elements are removed is specified by the argument used in the method. Note that the original array is not altered by the returned array.

var penguin = ['african', 'chinstrap', 'emperor', 'king', 'gentoo']

console.log(penguin.slice(3));

> Array ["king", “gentoo"]

console.log(penguin.slice(0, 3));

> Array ["african", "chinstrap", “emperor"]
  • What did you Google to help you with this task, and how did you pick your results? I was actually able to grasp this one well enough without googling.

2. Data Types (15 min)

Imagine that you're taking your favorite board game and turning it into a computer-based game.

  • Name of board game: Monopoly

  • Use the space below to categorize game data into each of the following data types. You should have a minimum of two pieces of data for each category.

  1. String data: text printed on the board (e.g. “St. Charles Place” or “Virginia Avenue”); text printed on chance cards (e.g. “Bank pays you a dividend of $50”)
  2. Integer and/or float data: number on dice; value of money
  3. Boolean data: landing on or passing “go to jail” space; rolling doubles or not rolling doubles
  4. Array data: collection of money received by each player at the beginning of the game; property card collection held by a player during the game
  5. Hash or Object data: property card and corresponding space on the board; dice number rolled and number of spaces moved by the player

3. Iteration (30 min)

  • Create a list below of three real-life situations where iteration is used. For each situation, explain why it would be an example of iteration.

  • Folding clothes: You take one piece of clothing from the pile (or collection), fold it, and put it in a drawer (i.e. do something to it). Then you repeat the process for the next piece of clothing. This is an iteration because you are repeating the same process for each item in a collection.

  • Sorting pictures by date: You take one from the pile, look at the date it was taken, and put it in a corresponding spot. Then you repeat the process by taking another picture from the pile. This is an iteration because you are repeating the same process for each item in a collection.

  • Placing items from shopping cart on conveyor belt: You take one item from the cart, place it on the belt, and then proceed to do the same action to the next item. This is an iteration because you are repeating the same process for each item in a collection.

  • Create a list below of three programming situations where iteration would be used. For each situation, explain why it would be an example of iteration.

  • Appending the file names of all the files in a folder: For each file in the folder (the collection), a string is added to the filename. Then the action is repeated on the next file. The same process is being repeated for every item in a collection, making it an example of iteration.

  • Playing songs in a playlist: Each song in the playlist is played before moving on to the next song. This is an iteration because the same task is being performed for each item in the collection.

  • Copying files from one folder to another: For each file, the data is copied to another folder before moving on to the next file. The same task is performed on each item in the collection, making it an iteration.

4. Identifying Mistakes (15 min)

The following code examples each contain a mistake. Describe the problem for each.

Original Mistakes Problem
students.each do |student|
  puts "Welcome, #{student}"
end
students.each do |student|
  puts "Welcome, #(student)"
end
The problem is the wrong type of brackets were used.
.main-content {
  font-size: 12px;
  border: 3px solid black;
  font-family: sans-serif;
}
.main-content {
  font-size: 12px;
  border: 3px solid black;
  font-family: sans serif;
}
The problem is the hyphen in 'sans-serif' is missing.
log(2, (1022 * ((score - min(score) over ()) / ((max(score) over ()) - (min(score) over ()))) + 2)::numeric) log(2, (1022 * ((score - min(score) over ()) / ((min(score) over ()) - (min(score) over ()))) + 2)::numeric) The problem is 'min' is used twice instead of 'max' and 'min'.
arr.product(arr).reject { |a,b| a == b }.any? { |a,b| a + b == n } arr.product(arr).reject { |a,b| b == b }.any? { |a,b| a + b == n } The problem is 'b == b' instead of 'a == b'.
class Cat
  attr_reader :color, :name
  def initialize(data)
    @name = data[:name]
    @color = data[:color]
  end
end
class Cat
  attr_reader :color, :name
  def intialize(data)
    @name = data[:name]
    @color = data[:color]
  end
end
The problem is 'initialize' is spelled incorrectly.

5. Modify your Bash Profile (10 min)

  • Watch this video and follow each step to modify your own bash profile. As mentioned in the video, you will need this snippet below:
# get current branch in git repo
function parse_git_branch() {
  BRANCH=`git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'`
  if [ ! "${BRANCH}" == "" ]
  then
    STAT=`parse_git_dirty`
    echo "[${BRANCH}${STAT}]"
  else
    echo ""
  fi
}

# get current status of git repo
function parse_git_dirty {
  status=`git status 2>&1 | tee`
  dirty=`echo -n "${status}" 2> /dev/null | grep "modified:" &> /dev/null; echo "$?"`
  untracked=`echo -n "${status}" 2> /dev/null | grep "Untracked files" &> /dev/null; echo "$?"`
  ahead=`echo -n "${status}" 2> /dev/null | grep "Your branch is ahead of" &> /dev/null; echo "$?"`
  newfile=`echo -n "${status}" 2> /dev/null | grep "new file:" &> /dev/null; echo "$?"`
  renamed=`echo -n "${status}" 2> /dev/null | grep "renamed:" &> /dev/null; echo "$?"`
  deleted=`echo -n "${status}" 2> /dev/null | grep "deleted:" &> /dev/null; echo "$?"`
  bits=''
  if [ "${renamed}" == "0" ]; then
    bits=">${bits}"
  fi
  if [ "${ahead}" == "0" ]; then
    bits="*${bits}"
  fi
  if [ "${newfile}" == "0" ]; then
    bits="+${bits}"
  fi
  if [ "${untracked}" == "0" ]; then
    bits="?${bits}"
  fi
  if [ "${deleted}" == "0" ]; then
    bits="x${bits}"
  fi
  if [ "${dirty}" == "0" ]; then
    bits="!${bits}"
  fi
  if [ ! "${bits}" == "" ]; then
    echo " ${bits}"
  else
    echo ""
  fi
}

export PS1="\u\w\`parse_git_branch\`$ "

5. Questions/Comments/Confusions

If you have any questions, comments, or confusions from the any of the readings that you would an instructor to address, list them below:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment