From 97a95d21e053effc37eb0881bd40088cf31a99c8 Mon Sep 17 00:00:00 2001 From: Eric Weissman Date: Mon, 4 Jan 2021 09:30:44 -0700 Subject: [PATCH 01/41] Create section1 formatting --- section1/README.md | 299 ++++++++++++++++++++++++++++ section1/exercises/interpolation.rb | 25 +++ section1/exercises/loops.rb | 18 ++ section1/exercises/numbers.rb | 16 ++ section1/exercises/strings.rb | 13 ++ section1/exercises/variables.rb | 29 +++ section1/images/finder.png | Bin 0 -> 84321 bytes section1/images/spotlight.png | Bin 0 -> 9652 bytes section1/images/terminal.png | Bin 0 -> 16383 bytes section1/reflection.md | 19 ++ 10 files changed, 419 insertions(+) create mode 100644 section1/README.md create mode 100644 section1/exercises/interpolation.rb create mode 100644 section1/exercises/loops.rb create mode 100644 section1/exercises/numbers.rb create mode 100644 section1/exercises/strings.rb create mode 100644 section1/exercises/variables.rb create mode 100644 section1/images/finder.png create mode 100644 section1/images/spotlight.png create mode 100644 section1/images/terminal.png create mode 100644 section1/reflection.md diff --git a/section1/README.md b/section1/README.md new file mode 100644 index 000000000..f103df4b5 --- /dev/null +++ b/section1/README.md @@ -0,0 +1,299 @@ +# Section 1: Super Learners + +Section 1 is estimated to take a total of 6-10 hours to complete. Part C is the longest and most time intensive. This section of pre-work involves reading (both from this document as well as the 📒John Duckett book), 👩‍💻exercises, and 📝reflection questions. Make sure to manage your time well so that should you get stuck and need help, you have plenty of time to do so and meet the deadline. + +- [Vocabulary](#Vocabulary) +- [Part A: Super Learner Habits](#Part-A-Super-Learner-Habits) +- [Part B: Terminal](#Part-B-Terminal) +- [Part C: JavaScript Foundations](#Part-C-JavaScript-Foundations) +- [Deliverables](#Deliverables) + +## Vocabulary + +If you've talked to any alum or near-alum of Turing, one thing they likely shared is "Turing teaches you how to learn". For creators of tech, the learning never ends. Not after graduating a program, not after 20 years of experience. We will provide more support as you are starting out, then release some of that support so you are equipped to learn on your own once you graduate. While we provide more support at the beginning, we also intentionally support you in building skills and habits that will help you do that successfully. + +One of those pieces is in how developers approach vocabulary. Knowing technical vocabulary will allow you to get more out of reading doucmentation and tutorials, and will allow you to communicate well with teams and ask good questions when you need help. Each section of your pre-work (and each lesson once you start Mod 1) will start with a vocabulary section. We don't always give you the definitions - this is intentional. You will create your own definition after having several opportunities to read definitions and see examples. + +Here's what we ask you do: +- Find a special spot in your notebook for vocabulary and JavaScript reserved keywords. Mark it with a post-it or bookmark, so it's easy to find and come back to +- When you start a new section of pre-work, write down each term. Leave plenty of space for (future) notes +- As you read and work through the material you will come across definitions and build an understanding of these terms. Write in definitions, draw diagrams, write out relevant code snippets, etc. If you complete a section and don't have a grasp on a term, that's when it's time to reach out to your pre-work small group or cohort, and collaborate! + +### Vocabulary Terms + +- command +- directory +- code comments +- String +- Number +- Boolean +- variable +- assignment operator +- re-assignment (of a variable) +- concatenation + +### JavaScript Reserved Keywords + +- `console.log()` +- `var` +- `true` +- `false` + +## Part A Super Learner Habits + +Read [this article](https://medium.com/personal-growth/6-habits-of-super-learners-63d466a254fd) about the habits of Super Learners. Reflect on this - what do you already do? Does this make you want to do anything new or different as you beginthis learning journey? Jot down your notes now, and we will ask you to share some reflections with your small group at the end of this section. + +## Part B Terminal + +You will likely spend the majority of your time in Module 1 in either the Terminal or your text editor (Atom). When you're new to programming, the terminal can seem like a scary place, but it has some advantages over other means of interacting with your computer. Perhaps the greatest advantage is that it allows programmers to build tools that they can share with each other without going through the process of creating a graphical user interface. This makes it easy to share code quickly so that it can be used in multiple projects. + +You already have had some exposure to the terminal in [Mod 0, Session 2: Terminal and Command Line](http://mod0.turing.io/session2/#terminal-and-command-line). Let's get a little more practice! + +### Explore and Practice + +Visit the [Turing Terminal](https://learn-terminal.turing.io/) and read through the Learn section as needed. Explore the Playground as needed. + +👩‍💻 Complete all three Challenges. + +Take a screenshot of your "complete" notification and keep on your desktop or in a file; it will be part of your [deliverables](#Deliverables) at the end of this section. [This is a guide on taking screenshots on a Mac](https://support.apple.com/en-us/HT201361). + +### Making Things, Navigating + +#### Commands + +In the following section, you will get a little practice using `touch` and `mkdir` to create files and directories, and `ls` and `cd` to navigate the directory structure and check-in. + +#### Terminal Practice + +👩‍💻 Use `mkdir` and `touch` to create the directories/files in the structure illustrated below: + +```sh +|--secretLibraryProject + | + |--README.md + |--package.json + | + |--lib + | | + | |--secretLibrary.js + | |--secretBook.js + | |--secretLibrarian.js + | |--patron.js + | |--librarySystem.js + | + |--test + | + |--secretLibrary.js + |--secretBook.js + |--secretLibrarian.js + |--patron.js + |--librarySystem.js +``` + +Don't worry about putting any text or content into these files. For now, create this structure with empty files. + +Your first command should be: + +```bash +mkdir secretLibraryProject +``` + +Note that in the command provided above, the dashes preceding the directory name were not used in the actual directory name. The dashes are just used as a diagram aide, and is a common pattern you will see in other documentation. + +### Deleting Things + +#### Commands + +* `rm`: This will remove a file from your system. Be careful with this! The terminal assumes you're a little more of an expert than the system does. This doesn't move the file to the Trash, it removes it completely from your system. It's a little like moving the file to the trash and then deleting it immediately. + +* `rm -rf`: Adding the `-r` and `-f` flags to the `rm` command will allow you to delete directories even if they have other files and/or directories inside of them. For more information on each of these flags enter `man rm` into your terminal. It will print out the manual for this command. + +#### Terminal Practice + +👩‍💻 Use `rm` and `rm -rf` to delete each of the files and directories you created in the `Making Things` section above. + +Note that it would be possible to delete the entire directory that you created with just `rm -rf secretLibrary`. **Don't do this!** At this point it's better for you to delete each of the files and directories individually so that you get some practice with these commands, which will help you remember them better in the long run. The goal here (for this particular exercise) isn't to be efficient and creating and deleting files and directories, it's to *get practice* creating and deleting files and directories. Ultimately this practice will allow you to be more efficient in the future. + +## Part C Ruby Foundations + +In this section, you will begin to learn the basics of Ruby. You will work through several exercises which will help you get comfortable running files and seeing output. You will learn about ways to represent data in Ruby as Strings, Numbers, and Booleans, as well as begin to explore how to capture and work with that data. + +At the end of the section, you will use several Git commands to save your work to your local Git repository. Then you will push your updates to your remote GitHub repository. For now, we are building muscle memory with git commands and getting used to seeing what output they produce. We will dive deeper into the inner workings of Git later. For now, all you need to do is follow along and know that we are using Git to save our work, and GitHub to put it on the internet. + +### Open your local copy of backend-mod-1-prework in Atom + +Using your terminal, open the local copy of this repository. To do this, enter these commands into your terminal (this may vary slightly depending on the names of your directories): + +``` +cd ~ +ls +cd turing +ls +cd 0module +ls +cd backend-mod-1-prework +ls +cd section1 +ls +atom . +``` + +This will open the `section1` directory in Atom. You should be able to see the directory and its contents in the file explorer on the left side of your Atom window. + +### An Introduction to Ruby + +[Read This Introduction](https://learnrubythehardway.org/book/intro.html) to the Learn Ruby The Hard Way Tutorial. To reiterate this introduction, ***DO NOT*** copy and paste code examples when working through lessons in your prework. Actually type each of them out. + +### Ruby Basics Lessons + +1. Next, you will complete several lessons from the Learn Ruby the Hard Way Tutorial. *For ***each*** lesson* ***follow these directions closely***: + + 1. Create a file within your `section1` directory that will contain this lesson's work. Verify that you are within the directory by using terminal command `pwd`. If you are not, `cd` into your `section1` directory. Once you are there, use the `touch` command in your terminal to create a file. For the first lesson, name this file `ex1.rb`. For each subsequent lesson, use `ex2.rb`, `ex3.rb`, so on, so forth. + + 1. Work through the lesson, **typing** the code into your file, and running it in the terminal with `ruby ex1.rb`, replacing `ex1` with the actual file name of what you'd like to run. Make sure the output you get is similar to what the lesson shows. If you get an error saying "No such file or directory", be sure to verify the directory you are located in via the terminal- running command `ls` should show the file you are trying to run. + + 1. Complete the Study Drills listed at the end of the lesson. + + 1. Read the Common Student Questions section. + +1. Check off the items below as you complete the steps you just read for each lesson. ***Remember to create a file containing your work for each lesson!*** + + - [ ] [A Good First Program](https://learnrubythehardway.org/book/ex1.html) + + - [ ] [Comments in Code](https://learnrubythehardway.org/book/ex2.html) + + - [ ] [Numbers and Math](https://learnrubythehardway.org/book/ex3.html) + + - [ ] [Variables and Names](https://learnrubythehardway.org/book/ex4.html) + + - [ ] [Strings](https://learnrubythehardway.org/book/ex5.html) + + - [ ] [More Strings](https://learnrubythehardway.org/book/ex6.html) + + - [ ] [Asking for Input](https://learnrubythehardway.org/book/ex11.html) + + - [ ] Have you created 7 `ex.rb` files with your code in them? + +1. Work through the [Strings](http://tutorials.jumpstartlab.com/projects/ruby_in_100_minutes.html#3.-strings) and [Numbers](http://tutorials.jumpstartlab.com/projects/ruby_in_100_minutes.html#5.-numbers) sections from Ruby in 100 Minutes. For each of these sections, open an `irb` session by typing `irb` into your terminal and type in the code snippets provided. + +## Exercises +- Each day contains an exercises directory containing files where you will practice writing code. + +Work through the files in the section1/exercises directory. Complete them in this order: + +1. strings +1. numbers +1. variables +1. interpolation +1. loops + +## Questions +- Each day contains a questions.md file where you will answer questions about what you have learned. + +Answer the day 1 questions within the questions.md file. The `.md` file extension refers to markdown formatting. Markdown is a simple markup language to help format your text. [This article](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) shows everything you need for basic markdown formatting. + + +## Save your work in Git + +When you are finished with all of the `section1` exercises and reflections, follow these steps in order to save your work to your local git repository. + +1. Make sure you are in your `section1` directory. When you run `ls` in your terminal, you should see the `exercises` directory listed, as well as `README.md`, `reflection.md`, etc. +2. In your terminal, run `git status`. You should see output like this: + +``` +On branch master +Changes not staged for commit: + (use "git add ..." to update what will be committed) + (use "git checkout -- ..." to discard changes in working directory) + + modified: exercises/interpolation.rb + modified: exercises/numbers.rb + modified: exercises/variables.rb + modified: reflection.md + +no changes added to commit (use "git add" and/or "git commit -a") +``` + +The command `git status` shows us information about files we changed. Don't worry too much about understanding what this all means just yet. What's important is that you get comfortable typing `git status` often. + +3. Run `git add reflection.md`. +4. Run `git status`. Your status should now look a little different: + +```On branch master +Changes to be committed: + (use "git reset HEAD ..." to unstage) + + modified: reflection.md + +Changes not staged for commit: + (use "git add ..." to update what will be committed) + (use "git checkout -- ..." to discard changes in working directory) + + modified: exercises/interpolation.rb + modified: exercises/numbers.rb + modified: exercises/variables.rb +``` + +Under "Changes to be committed", It now lists "reflection.md". This means that git is getting ready to save this file. We want to do this for each file. + +5. Run `git add exercises`. +6. Run `git status`. You should now see all those exercises files listed under "Changes to be committed". We just used `git add ` to add all the files located in a directory. +7. Run `git status`. You should now see all your files listed under "Changes to be committed". If there are any files listed under "Untracked files" or "Changes not staged for commit", add them using "git add ". +8. Run `git commit -m "Add Section 1"`. +9. Run `git status`. You should see this output: + +``` +On branch master +nothing to commit, working tree clean +``` + +Congratulations! You just saved your work to Git! If `git status` is showing any files, add them with `git add ` and commit them with `git commit -m "Add Section 1"`. + +### Push to GitHub + +You've saved your work to Git on your local machine, but it is not yet accessible through your remote GitHub repository. Updating our remote GitHub repository with our local changes is called pushing. Push your code with the following command: + +``` +git push origin master +``` + +You should see output _similar_ to this: + +``` +Counting objects: 9, done. +Delta compression using up to 4 threads. +Compressing objects: 100% (8/8), done. +Writing objects: 100% (9/9), 1.03 KiB | 1.03 MiB/s, done. +Total 9 (delta 2), reused 0 (delta 0) +remote: Resolving deltas: 100% (2/2), completed with 1 local object. +To github.com:your-username/frontend_mod_1_prework.git + e8ebd7a..32c0ed3 master -> master +``` + +You should now be able to log in to GitHub, navigate to your remote prework repository and see all the work you did in this section! + +## Deliverables + +In the appropriate thread in your pre-work group channel, share the following: + +1. Link to the commit you made with your complete Section 1 pre-work🌟 +2. A screenshot of your complete Turing Terminal challenges +3. A screenshot or photo upload of your notes, including your vocabulary/JavaScript reserved keywords section. + +
+ +🌟 How to find and link a commit: +- Go to the GitHub repository on _your_ account that holds your pre=work +- Click commits (usually in a light blue bar in the middle-ish of the page) +- You'll see a list of all commits made on this. You have probably only made 1 so far, the rest are from Turing staff members). Click the commit you made (it will match whatever you typed in after `git commit -m "...`) +- Copy the URL in the URL bar, then paste that URL into Slack + +## Index Links + +- [Vocabulary](#Vocabulary) +- [Part A: Super Learner Habits](#Part-A-Super-Learner-Habits) +- [Part B: Terminal](#Part-B-Terminal) +- [Part C: JavaScript Foundations](#Part-C-JavaScript-Foundations) +- [Deliverables](#Deliverables) + +🚀 [Go to Section 2](../section2) diff --git a/section1/exercises/interpolation.rb b/section1/exercises/interpolation.rb new file mode 100644 index 000000000..c7f4f47df --- /dev/null +++ b/section1/exercises/interpolation.rb @@ -0,0 +1,25 @@ +# In the below exercises, write code that achieves +# the desired result. To check your work, run this +# file by entering the following command in your terminal: +# `ruby day_1/exercises/interpolation.rb` + +# Example: Write code that uses the variables below to form a string that reads +# "The Chudley Cannons are Ron's favorite Quidditch team": +name = "Ron" +team = "Chudley Cannons" + +p "The #{team} are #{name}'s favorite Quidditch team" + +# Write code that uses the variables below to form a string that reads +# "The quick red fox jumped over the lazy brown dog": +speedy = "quick red fox" +slow_poke = "lazy brown dog" + +p # YOUR CODE HERE + +# Write code that uses the variables below to form a string that reads +# "In a predictable result, the tortoise beat the hare!": +slow_poke = "tortoise" +speedy = "hare" + +# YOUR CODE HERE diff --git a/section1/exercises/loops.rb b/section1/exercises/loops.rb new file mode 100644 index 000000000..90dc15ab1 --- /dev/null +++ b/section1/exercises/loops.rb @@ -0,0 +1,18 @@ +# In the below exercises, write code that achieves +# the desired result. To check your work, run this +# file by entering the following command in your terminal: +# `ruby day_1/exercises/loops.rb` + +# Example: Write code that prints your name five times: +5.times do + p "Hermione Granger" +end + +# Write code that prints the sum of 2 plus 2 seven times: +7.times do + # YOUR CODE HERE +end + +# Write code that prints the phrase 'She sells seashells down by the seashore' +# ten times: +# YOUR CODE HERE diff --git a/section1/exercises/numbers.rb b/section1/exercises/numbers.rb new file mode 100644 index 000000000..9a5468a31 --- /dev/null +++ b/section1/exercises/numbers.rb @@ -0,0 +1,16 @@ +# In the below exercises, write code that achieves +# the desired result. To check your work, run this +# file by entering the following command in your terminal: +# `ruby day_1/exercises/numbers.rb` + +# Example: Write code that prints the result of the sum of 2 and 2: +p 2 + 2 + +# Write code that prints the result of 7 subtracted from 83: +p #YOUR CODE HERE + +# Write code that prints the result of 6 multiplied by 53: +# YOUR CODE HERE + +# Write code that prints the result of the modulo of 10 into 54: +# YOUR CODE HERE diff --git a/section1/exercises/strings.rb b/section1/exercises/strings.rb new file mode 100644 index 000000000..f2f903ffc --- /dev/null +++ b/section1/exercises/strings.rb @@ -0,0 +1,13 @@ +# In the below exercises, write code that achieves +# the desired result. To check your work, run this +# file by entering the following command in your terminal: +# `ruby day_1/exercises/strings.rb` + +# Example: Write code that prints your name to the terminal: +p "Alan Turing" + +# Write code that prints `Welcome to Turing!` to the terminal: +p #YOUR CODE HERE + +# Write code that prints `99 bottles of pop on the wall...` to the terminal: +# YOUR CODE HERE diff --git a/section1/exercises/variables.rb b/section1/exercises/variables.rb new file mode 100644 index 000000000..a1e45bb26 --- /dev/null +++ b/section1/exercises/variables.rb @@ -0,0 +1,29 @@ +# In the below exercises, write code that achieves +# the desired result. To check your work, run this +# file by entering the following command in your terminal: +# `ruby day_1/exercises/variables.rb` + +# Example: Write code that saves your name to a variable and +# prints what that variable holds to the terminal: +name = "Harry Potter" +p name + +# Write code that saves the string 'Dobby' to a variable and +# prints what that variable holds to the terminal: +house_elf = "Dobby" +# YOUR CODE HERE + +# Write code that saves the string 'Harry Potter must not return to Hogwarts!' +# and prints what that variable holds to the terminal: +# YOUR CODE HERE + +# Write code that adds 2 to the `students` variable and +# prints the result: +students = 22 +# YOUR CODE HERE +p students + +# Write code that subracts 2 from the `students` variable and +# prints the result: +# YOUR CODE HERE +p students diff --git a/section1/images/finder.png b/section1/images/finder.png new file mode 100644 index 0000000000000000000000000000000000000000..e1e0eedf0cc2747b9f625c0bf3abc85e55c2b1d7 GIT binary patch literal 84321 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ΑTAH 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 literal 0 HcmV?d00001 diff --git a/section1/reflection.md b/section1/reflection.md new file mode 100644 index 000000000..7ce0895a6 --- /dev/null +++ b/section1/reflection.md @@ -0,0 +1,19 @@ +## Section 1 Reflection + +1. How did the SuperLearner Article resonate with you? What from this list do you already do? Want to start doing or do more of? Is there anything not on this list, that you would add to it? + +1. How would you print the string `"Hello World!"` to the terminal? + +1. What character is used to indicate comments in a ruby file? + +1. Explain the difference between an integer and a float? + +1. In the space below, create a variable `animal` that holds the string `"zebra"` + +1. How would you print the string `"zebra"` using the variable that you created above? + +1. What is interpolation? Use interpolation to print a sentence using the variable `animal`. + +1. What method is used to get input from a user? + +1. Name and describe two common string methods: \ No newline at end of file From d70b07702530451be7f55d8daa342cf084a9bf5d Mon Sep 17 00:00:00 2001 From: Eric Weissman Date: Mon, 4 Jan 2021 09:38:07 -0700 Subject: [PATCH 02/41] Remove deliverables section --- section1/README.md | 20 ++------------------ 1 file changed, 2 insertions(+), 18 deletions(-) diff --git a/section1/README.md b/section1/README.md index f103df4b5..67aa21fff 100644 --- a/section1/README.md +++ b/section1/README.md @@ -5,7 +5,7 @@ Section 1 is estimated to take a total of 6-10 hours to complete. Part C is the - [Vocabulary](#Vocabulary) - [Part A: Super Learner Habits](#Part-A-Super-Learner-Habits) - [Part B: Terminal](#Part-B-Terminal) -- [Part C: JavaScript Foundations](#Part-C-JavaScript-Foundations) +- [Part C: JavaScript Foundations](#Part-C-Ruby-Foundations) - [Deliverables](#Deliverables) ## Vocabulary @@ -272,28 +272,12 @@ To github.com:your-username/frontend_mod_1_prework.git You should now be able to log in to GitHub, navigate to your remote prework repository and see all the work you did in this section! -## Deliverables - -In the appropriate thread in your pre-work group channel, share the following: - -1. Link to the commit you made with your complete Section 1 pre-work🌟 -2. A screenshot of your complete Turing Terminal challenges -3. A screenshot or photo upload of your notes, including your vocabulary/JavaScript reserved keywords section. - -
- -🌟 How to find and link a commit: -- Go to the GitHub repository on _your_ account that holds your pre=work -- Click commits (usually in a light blue bar in the middle-ish of the page) -- You'll see a list of all commits made on this. You have probably only made 1 so far, the rest are from Turing staff members). Click the commit you made (it will match whatever you typed in after `git commit -m "...`) -- Copy the URL in the URL bar, then paste that URL into Slack - ## Index Links - [Vocabulary](#Vocabulary) - [Part A: Super Learner Habits](#Part-A-Super-Learner-Habits) - [Part B: Terminal](#Part-B-Terminal) -- [Part C: JavaScript Foundations](#Part-C-JavaScript-Foundations) +- [Part C: Ruby Foundations](#Part-C-Ruby-Foundations) - [Deliverables](#Deliverables) 🚀 [Go to Section 2](../section2) From 8459c7c0bab6a6bf47570475d2927126f9d95848 Mon Sep 17 00:00:00 2001 From: Eric Weissman Date: Mon, 4 Jan 2021 09:39:02 -0700 Subject: [PATCH 03/41] Adjust index naming --- section1/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/section1/README.md b/section1/README.md index 67aa21fff..b107c8c14 100644 --- a/section1/README.md +++ b/section1/README.md @@ -5,7 +5,7 @@ Section 1 is estimated to take a total of 6-10 hours to complete. Part C is the - [Vocabulary](#Vocabulary) - [Part A: Super Learner Habits](#Part-A-Super-Learner-Habits) - [Part B: Terminal](#Part-B-Terminal) -- [Part C: JavaScript Foundations](#Part-C-Ruby-Foundations) +- [Part C: Ruby Foundations](#Part-C-Ruby-Foundations) - [Deliverables](#Deliverables) ## Vocabulary From a88a6c8b755ce128ce41776970bffaf015f8a012 Mon Sep 17 00:00:00 2001 From: Eric Weissman Date: Mon, 4 Jan 2021 10:09:36 -0700 Subject: [PATCH 04/41] Add Section 2 --- section2/README.md | 124 ++++++++++++++++++++++++++++ section2/exercises/if_statements.rb | 65 +++++++++++++++ section2/exercises/methods.rb | 27 ++++++ section2/reflection.md | 29 +++++++ 4 files changed, 245 insertions(+) create mode 100644 section2/README.md create mode 100644 section2/exercises/if_statements.rb create mode 100644 section2/exercises/methods.rb create mode 100644 section2/reflection.md diff --git a/section2/README.md b/section2/README.md new file mode 100644 index 000000000..5d457751e --- /dev/null +++ b/section2/README.md @@ -0,0 +1,124 @@ +# Section 2 - Asking Questions + +Section 2 is estimated to take a total of 8-12 hours to complete. Similar to Section 1, this section of pre-work involves 📒reading, 👨🏽‍💻exercises, and 📝reflection questions. Make sure to manage your time well so that should you get stuck and need help, you have plenty of time to do so and meet the deadline. + +- [Vocabulary](#Vocabulary) +- [Part A: Asking Questions](#Part-A-Asking-Questions) +- [Part B: Conditionals](#Part-B-If-Statements-and-Conditionals) +- [Part C: Methods](#Part-C-Methods) + +## Vocabulary + +This section will introduce a number of new terms, that may feel a bit more complex. Write these terms and reserved keywords in that special spot in your notebook now. Work to hold yourself acocuntable to updating definitions _as you work through this section_. + +### Vocabulary Terms + +- comparison operators +- logical operators +- condition +- conditionals +- if statements +- function +- argument +- parameter + + +## Get Set Up + +Using your terminal, open the local copy of the repository that you created during setup. To do this, you will need to use the terminal command `cd` to change into the directory that holds the repository. Once you are in the correct directory, use the terminal command `atom .` to open the prework repository. If you are having trouble with this, see the `section1` instructions. + +## Part A Asking Questions + +If you've made it into Section 2 of the pre-work, we hope that you've heard us say loud and clear, that asking questions is a good and important thing to do! That doesn't mean it's easy, though. Some of us have educational experiences that tell us otherwise, some of us have had bad experiences when being vulnerable and asking questions, and sometimes it's just hard to determine which words to use to formulate the question itself! + +Read the three blog posts that follow: +* [It's okay to ask questions](https://dev.to/mporam/its-okay-to-ask-questions-43hf) +* [Asking better questions](https://dev.to/josefine/asking-better-questions-2e2k) +* [Your Questions Are Dumb; Ask Them Anyway](https://dev.to/kathryngrayson/your-questions-are-dumb-ask-them-anyway-3cm6) + +Reflect on these posts, and how you feel about asking questions (specifically, technical questions as you enter your technical work at Turing). How might this positively or negatively impact your growth? + +It's going to take some time to find that balance between googling and pushing yourself to solve a problem without hand-holding, and reaching out for help. That's ok! be patient with yourself. The way you will find that balance is by being cognizant and aware of how you currently operate. Keep this on your mind as you work through this section, and... there is no time like the present to start asking questions! + +Now that you understand the importance of asking questions, read the [Turing guide on asking questions](https://gist.github.com/ericweissman/fb0241e226227867b6bc70a4d49227f5) to ensure that you know the best way to ask the questions you may have! + +## Part B If Statements and Conditionals + + +One of the most important concepts in computer programming is knowing when and how to tell the computer to do either _one_ thing or _another_ thing based on a set of simple criteria. We accomplish this with ***If-Statements*** and ***Conditionals***, which you will learn about today. + +When you are all done with the lessons, exercises, and questions for today, you will once again use git to save your work locally, and then send your work to Github. + +### Open your local copy of backend_mod_1_prework + +Using your terminal, open your local copy of the forked repository you created during setup. To do this, you will need to use the terminal command `cd` to enter the directory that holds the repository. Once you are in the correct directory, use the terminal command `atom .` to open the prework repository. Revisit [day_1](../day_1) for more detail if needed. + +### If statement and Conditional Lessons + +1. Work through the following lessons. Any files that you create while working can be kept in today's `exercises` directory. + + - [ ] [What If?](https://learnrubythehardway.org/book/ex29.html) from Learn Ruby the Hard Way. + + - [ ] [Else and If](https://learnrubythehardway.org/book/ex30.html) from Learn Ruby the Hard Way. + + - [ ] [Making Decisions](https://learnrubythehardway.org/book/ex31.html) from Learn Ruby the Hard Way. + + - [ ] [Conditionals](http://tutorials.jumpstartlab.com/projects/ruby_in_100_minutes.html#9.-conditionals) from Ruby in 100 Minutes. + +1. Work through the if_statements.rb file in the section2/exercises directory. + +1. Answer the questions in the reflection.md file in the section2 directory. + +## Part C Methods + +1. Work through the following lessons. Any files that you create while working can be kept in today's `exercises` directory. + + _*Note*: In some of these lessons, the author refers to methods as functions. They are interchangable here, but at Turing, we will be use the word `method`._ + + - [ ] [Methods](https://launchschool.com/books/ruby/read/methods) from LaunchSchool. Work up to the `obj.method or method(obj)` header. + + - [ ] [Intro to Methods](https://learnrubythehardway.org/book/ex18.html) from Learn Ruby the Hard Way. + + - [ ] [Methods and Variables](https://learnrubythehardway.org/book/ex19.html) from Learn Ruby the Hard Way. + + - [ ] [Methods and Return Values](https://learnrubythehardway.org/book/ex21.html) from Learn Ruby the Hard Way. + +1. Work through the methods.rb file in the section2/exercises directory. + +1. Answer the questions in the reflection.md file in the section2 directory. + +## Vocabulary + +Look back at that special spot in your notebook for vocabulary. Hopefully you updated it with definitions, diagrams, and code samples as you went through this section. If not, do so now. This will be part of this sections deliverables. + +## Relections + +📝 Answer the prompts in the `reflection.md` file in the `section2` directory. If you need a reminder on how to format your markdown, [this is the Markdown Cheatsheet](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet)! + +## Save your work in Git + +When you are finished with all of the `section2` activities, use your terminal to run the following commands in order to save your work to your local Git repository. + +1. `$ git add section2/exercises` +2. `$ git add section2/reflection.md` +3. `$ git status` - you should see only green filenames - if you see any that are red, continue to `git add` those files until `git status` shows all green files. +4. `$ git commit -m "Add Section 2 work"` + +## Push to Github + +You've save your work to git on your local machine, but it is not yet accessible through your remote GitHub repository. Updating our remote GitHub repository with our local changes is called **pushing**. Push your code with the following command: + +``` +git push origin master +``` + +You should now be able to log in to GitHub, navigate to your remote prework repository and see all the work you did in this section! + +## Index Links + +- [Vocabulary](#Vocabulary) +- [Part A: Asking Questions](#Part-A-Asking-Questions) +- [Part B: Conditionals](#Part-B-If-Statements-and-Conditionals) +- [Part C: Methods](#Part-C-Methods) + +🚀 [Go to Section 3](../section3) diff --git a/section2/exercises/if_statements.rb b/section2/exercises/if_statements.rb new file mode 100644 index 000000000..a80b96840 --- /dev/null +++ b/section2/exercises/if_statements.rb @@ -0,0 +1,65 @@ +# In the below exercises, write code that achieves +# the desired result. To check your work, run this +# file by entering the following command in your terminal: +# `ruby day_3/exercises/if_statements.rb` + +# Example: Using the weather variable below, write code that decides +# what you should take with you based on the following conditions: + # if it is sunny, print "sunscreen" + # if it is rainy, print "umbrella" + # if it is snowy, print "coat" + # if it is icy, print "yak traks" + + weather = 'snowy' + + if weather == 'sunny' + p "sunscreen" + elsif weather == 'rainy' + p "umbrella" + elsif weather == 'snowy' + p "coat" + elsif weather == 'icy' + p "yak traks" + else + p "good to go!" + end + +# Experiment with manipulating the value held in variable 'weather' +# to print something other than 'coat' + + +################## +# Using the num_quarters variable defined below, determine +# if you have enough money to buy a gumball. A gumball costs +# two quarters. + +# Right now, the program will print +# out both "I have enough money for a gumball" and +# "I don't have enough money for a gumball". Write a +# conditional statement that prints only one or the other. + +# Experiment with manipulating the value held within num_quarters +# to make sure both conditions can be achieved. + +num_quarters = 0 + +puts "I have enough money for a gumball" +puts "I don't have enough money for a gumball" + + +##################### +# Using the variables defined below, write code that will tell you +# if you have the ingredients to make a pizza. A pizza requires +# at least two cups of flour and sauce. + +# You should be able to change the variables to achieve the following outputs: +# If cups_of_flour = 1 and has_sauce = true, print "I cannot make pizza" +# If cups_of_flour = 5 and has_sauce = false, print "I cannot make pizza" +# If cups_of_flour = 2 and has_sauce = true, print "I can make pizza" +# If cups_of_flour = 3 and has_sauce = true, print "I can make pizza" + +# Experiment with manipulating the value held within both variables +# to make sure all above conditions output what you expect. + +cups_of_flour = 1 +has_sauce = true diff --git a/section2/exercises/methods.rb b/section2/exercises/methods.rb new file mode 100644 index 000000000..6ed338e5d --- /dev/null +++ b/section2/exercises/methods.rb @@ -0,0 +1,27 @@ +# In the below exercises, write code that achieves +# the desired result. To check your work, run this +# file by entering the following command in your terminal: +# `ruby day_4/exercises/methods.rb` + +# Example: Write a method that when called will print your name: +def print_name + p "Severus Snape" +end + +print_name + +# Write a method that takes a name as an argument and prints it: +def print_name(name) + # YOUR CODE HERE +end + +print_name("Albus Dumbledore") + +# Write a method that takes in 2 numbers as arguments and prints +# their sum. Then call your method: +# YOUR CODE HERE + +# Write a method that takes in two strings as arguments and prints +# a concatenation of those two strings. Example: The arguments could be +# (man, woman) and the end result might output: "When Harry Met Sally". +# Then call your method: diff --git a/section2/reflection.md b/section2/reflection.md new file mode 100644 index 000000000..49f0606df --- /dev/null +++ b/section2/reflection.md @@ -0,0 +1,29 @@ +## Section 2 Reflection + +1. Regarding the blog posts in Part A, how do you feel about asking questions? Do you tend to ask them too soon, or wait too long, or somewhere in between? + +### If Statements + +1. What is a conditional statement? Give three examples. + +1. Why might you want to use an if-statement? + +1. What is the Ruby syntax for an if statement? + +1. How do you add multiple conditions to an if statement? + +1. Provide an example of the Ruby syntax for an if/elsif/else statement: + +1. Other than an if-statement, can you think of any other ways we might want to use a conditional statement? + +### Methods + +1. In your own words, what is the purpose of a method? + +1. Create a method named `hello` that will print `"Sam I am"`. + +1. Create a method named `hello_someone` that takes an argument of `name` and prints `"#{name} I am"`. + +1. How would you call or execute the method that you created above? + +1. What questions do you have about methods in Ruby? \ No newline at end of file From eb042260009be39f0766fcd3b89f4671bdc5ad32 Mon Sep 17 00:00:00 2001 From: Eric Weissman Date: Mon, 4 Jan 2021 10:25:47 -0700 Subject: [PATCH 05/41] Adjust command for running exercises --- section1/exercises/interpolation.rb | 2 +- section1/exercises/loops.rb | 2 +- section1/exercises/numbers.rb | 2 +- section1/exercises/strings.rb | 2 +- section1/exercises/variables.rb | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/section1/exercises/interpolation.rb b/section1/exercises/interpolation.rb index c7f4f47df..f62fcb4ff 100644 --- a/section1/exercises/interpolation.rb +++ b/section1/exercises/interpolation.rb @@ -1,7 +1,7 @@ # In the below exercises, write code that achieves # the desired result. To check your work, run this # file by entering the following command in your terminal: -# `ruby day_1/exercises/interpolation.rb` +# `ruby section1/exercises/interpolation.rb` # Example: Write code that uses the variables below to form a string that reads # "The Chudley Cannons are Ron's favorite Quidditch team": diff --git a/section1/exercises/loops.rb b/section1/exercises/loops.rb index 90dc15ab1..d59cc5f7f 100644 --- a/section1/exercises/loops.rb +++ b/section1/exercises/loops.rb @@ -1,7 +1,7 @@ # In the below exercises, write code that achieves # the desired result. To check your work, run this # file by entering the following command in your terminal: -# `ruby day_1/exercises/loops.rb` +# `ruby section1/exercises/loops.rb` # Example: Write code that prints your name five times: 5.times do diff --git a/section1/exercises/numbers.rb b/section1/exercises/numbers.rb index 9a5468a31..91435ffb2 100644 --- a/section1/exercises/numbers.rb +++ b/section1/exercises/numbers.rb @@ -1,7 +1,7 @@ # In the below exercises, write code that achieves # the desired result. To check your work, run this # file by entering the following command in your terminal: -# `ruby day_1/exercises/numbers.rb` +# `ruby section1/exercises/numbers.rb` # Example: Write code that prints the result of the sum of 2 and 2: p 2 + 2 diff --git a/section1/exercises/strings.rb b/section1/exercises/strings.rb index f2f903ffc..a36af6bdd 100644 --- a/section1/exercises/strings.rb +++ b/section1/exercises/strings.rb @@ -1,7 +1,7 @@ # In the below exercises, write code that achieves # the desired result. To check your work, run this # file by entering the following command in your terminal: -# `ruby day_1/exercises/strings.rb` +# `ruby section1/exercises/strings.rb` # Example: Write code that prints your name to the terminal: p "Alan Turing" diff --git a/section1/exercises/variables.rb b/section1/exercises/variables.rb index a1e45bb26..a794d7fa4 100644 --- a/section1/exercises/variables.rb +++ b/section1/exercises/variables.rb @@ -1,7 +1,7 @@ # In the below exercises, write code that achieves # the desired result. To check your work, run this # file by entering the following command in your terminal: -# `ruby day_1/exercises/variables.rb` +# `ruby section1/exercises/variables.rb` # Example: Write code that saves your name to a variable and # prints what that variable holds to the terminal: From 6148e49a0a24a899a9256492ec3719dd97d942d5 Mon Sep 17 00:00:00 2001 From: Eric Weissman Date: Mon, 4 Jan 2021 10:26:34 -0700 Subject: [PATCH 06/41] Adjust commands for section 2 --- section2/README.md | 11 ++--------- section2/exercises/if_statements.rb | 2 +- section2/exercises/methods.rb | 2 +- 3 files changed, 4 insertions(+), 11 deletions(-) diff --git a/section2/README.md b/section2/README.md index 5d457751e..d831ac968 100644 --- a/section2/README.md +++ b/section2/README.md @@ -13,15 +13,8 @@ This section will introduce a number of new terms, that may feel a bit more comp ### Vocabulary Terms -- comparison operators -- logical operators -- condition -- conditionals - if statements -- function -- argument -- parameter - +- method ## Get Set Up @@ -51,7 +44,7 @@ When you are all done with the lessons, exercises, and questions for today, you ### Open your local copy of backend_mod_1_prework -Using your terminal, open your local copy of the forked repository you created during setup. To do this, you will need to use the terminal command `cd` to enter the directory that holds the repository. Once you are in the correct directory, use the terminal command `atom .` to open the prework repository. Revisit [day_1](../day_1) for more detail if needed. +Using your terminal, open your local copy of the forked repository you created during setup. To do this, you will need to use the terminal command `cd` to enter the directory that holds the repository. Once you are in the correct directory, use the terminal command `atom .` to open the prework repository. ### If statement and Conditional Lessons diff --git a/section2/exercises/if_statements.rb b/section2/exercises/if_statements.rb index a80b96840..f29c45cdd 100644 --- a/section2/exercises/if_statements.rb +++ b/section2/exercises/if_statements.rb @@ -1,7 +1,7 @@ # In the below exercises, write code that achieves # the desired result. To check your work, run this # file by entering the following command in your terminal: -# `ruby day_3/exercises/if_statements.rb` +# `ruby section2/exercises/if_statements.rb` # Example: Using the weather variable below, write code that decides # what you should take with you based on the following conditions: diff --git a/section2/exercises/methods.rb b/section2/exercises/methods.rb index 6ed338e5d..604fd3bd3 100644 --- a/section2/exercises/methods.rb +++ b/section2/exercises/methods.rb @@ -1,7 +1,7 @@ # In the below exercises, write code that achieves # the desired result. To check your work, run this # file by entering the following command in your terminal: -# `ruby day_4/exercises/methods.rb` +# `ruby section2/exercises/methods.rb` # Example: Write a method that when called will print your name: def print_name From d832112e21c6227a346ed26895063acd7c72933a Mon Sep 17 00:00:00 2001 From: Eric Weissman Date: Mon, 4 Jan 2021 10:30:17 -0700 Subject: [PATCH 07/41] Create section3 formatting --- section3/README.md | 71 ++++++++++++++++++++++++++++++++++++ section3/exercises/hashes.rb | 28 ++++++++++++++ section3/reflection.md | 17 +++++++++ 3 files changed, 116 insertions(+) create mode 100644 section3/README.md create mode 100644 section3/exercises/hashes.rb create mode 100644 section3/reflection.md diff --git a/section3/README.md b/section3/README.md new file mode 100644 index 000000000..744ee0162 --- /dev/null +++ b/section3/README.md @@ -0,0 +1,71 @@ +# Section 3 - GROWTH MINDSET, Arrays and Loops + +Section 3 is estimated to take a total of 6-10 hours to complete. Similar to the previous sections, this section of pre-work involves reading (both from this document as well as the 📒John Duckett book), 👩🏻‍💻exercises, and 📝reflection questions. Make sure to manage your time well so that should you get stuck and need help, you have plenty of time to do so and meet the deadline. + +Since Arrays are a bigger topic, it is the main focus of this section. Some review work from the first two sections has been woven in so you get opportunities to continue seeing and applying those concepts, as well. + +- [Vocabulary](#Vocabulary) +- [Part A: Growth Mindset](#Part-A-Growth-Mindset) +- [Part B: Hashes](#Part-B-Hashes) + +## Vocabulary + +### Vocabulary Terms + +- hash +- key +- value + +## Open your local copy of backend-mod-1-prework + +Using your terminal, open the local copy of the repository that you created during setup. To do this, you will need to use the terminal command `cd` to change into the directory that holds the repository. Once you are in the correct directory, use the terminal command `atom .` to open the prework repository. If you are having trouble with this, see the `section1` README. + +## Part A Growth Mindset + +Read/watch one or both of the following: +- This [2-part blog post series](https://blog.mindsetworks.com/entry/how-having-a-growth-mindset-can-help-you-learn-to-code) discusses how having a growth mindset is helpful when learning to code, and how coding promotes a growth mindset! +- This [video interview](https://dev.to/hackflix_dev/how-to-hack-a-growth-mindset-b1g) where an experienced Front-End engineer discusses learning about the concept of Growth Mindset and how that's changed how she sees her work and career. (The first 7 minutes are intros and a discussion on Developer Relations. After that, the conversation about Growth Midnset begins.) + +Then, consider on the following questions. We will ask you to share some of these responses at the end of this section. +- What are two points from the article or video that either resonated with you, or were brand new to you? +- In which ways do you currently demonstrate a Growth Mindset? In which ways do you _not_? +- What is something you are good at or knowledgeable at now, that you once weren't? How did you get those skills/knowledge? Was it hard at some point? + +## Part B Hashes + +Earlier, you learned about one type of collection storage - Arrays. Today, you will learn about another collection storage device called a Hash. As professional developers, you will use hashes on a near daily basis- a solid understanding of how to build hashes and how to retrieve information from them will make life much easier. + +When you are all done with the lessons, exercises, and questions for today, you will once again use git to save your work locally, and then send your work to Github. + +1. Work through the following lessons. Any files that you create while working can be kept in today's `exercises` directory. + + - [ ] [Hashes](https://learnrubythehardway.org/book/ex39.html) from Learn Ruby the Hard Way. + + - [ ] [Hashes](http://tutorials.jumpstartlab.com/projects/ruby_in_100_minutes.html#8.-hashes) from Ruby in 100 minutes. + +1. Work through the hashes.rb file in the section4/exercises directory. + +1. Answer the questions in the reflection.md file in the section4 directory. + +## Reflection + +📝 Answer the questions in the `reflection.md` file in the `section3` directory. + +## Save your work in Git + +When you are finished with all of the `section3` activities, use the Git workflow and commands you've learned to add and commit your work. Write a commit message that concisely summarizes what work this commit contains. If you need a refresher on that workflow, look at the Mod 0 lesson where this was covered, of the directions in Sections 1 or 2. + +## Push to GitHub + +You've save your work to Git on your local machine, but it is not yet accessible through your remote Github repository. Push your code to your remote repository. If you don't remember the command, look back at the directions in Sections 1 or 2. + +Visit your GitHub repository to verify the work you did for this section was pushed successfully! + + +## Index Links + +- [Vocabulary](#Vocabulary) +- [Part A: Growth Mindset](#Part-A-Growth-Mindset) +- [Part B: Hashes](#Part-B-Hashes) + +🚀 [Go to Section 4](../section4) diff --git a/section3/exercises/hashes.rb b/section3/exercises/hashes.rb new file mode 100644 index 000000000..7a5564432 --- /dev/null +++ b/section3/exercises/hashes.rb @@ -0,0 +1,28 @@ +# In the below exercises, write code that achieves +# the desired result. To check your work, run this +# file by entering the following command in your terminal: +# `ruby section3/exercises/hashes.rb` + +# Example: Write code that prints a hash holding grocery store inventory: +foods = {apples: 23, grapes: 507, eggs: 48} +p foods + +# Write code that prints a hash holding zoo animal inventory: +zoo = #YOUR CODE HERE +p zoo + +# Write code that prints all of the 'keys' of the zoo variable +# you created above: +# YOUR CODE HERE + +# Write code that prints all of the 'values' of the zoo variable +# you created above: +# YOUR CODE HERE + +# Write code that prints the value of the first animal of the zoo variable +# you created above: +# YOUR CODE HERE + +# Write code that adds an animal to the zoo hash. +# Then, print the updated hash: +# YOUR CODE HERE diff --git a/section3/reflection.md b/section3/reflection.md new file mode 100644 index 000000000..cda726fd3 --- /dev/null +++ b/section3/reflection.md @@ -0,0 +1,17 @@ +## Section 3 Reflection + +1. What are two points from the Growth Mindset article and/or video that either resonated with you, or were brand new to you? + +1. In which ways do you currently demonstrate a Growth Mindset? In which ways do you _not_? + +1. What is a Hash, and how is it different from an Array? + +1. In the space below, create a Hash stored to a variable named `pet_store`. This hash should hold an inventory of items and the number of that item that you might find at a pet store. + +1. Given the following `states = {"CO" => "Colorado", "IA" => "Iowa", "OK" => "Oklahoma"}`, how would you access the value `"Iowa"`? + +1. With the same hash above, how would we get all the keys? How about all the values? + +1. What is another example of when we might use a hash? In your example, why is a hash better than an array? + +1. What questions do you still have about hashes? From 9a1a673c86e360dfcea5611e5c90e0b03904d7eb Mon Sep 17 00:00:00 2001 From: Eric Weissman Date: Mon, 4 Jan 2021 10:32:29 -0700 Subject: [PATCH 08/41] Remove language around JD book --- section3/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/section3/README.md b/section3/README.md index 744ee0162..2e7a6c717 100644 --- a/section3/README.md +++ b/section3/README.md @@ -1,6 +1,6 @@ # Section 3 - GROWTH MINDSET, Arrays and Loops -Section 3 is estimated to take a total of 6-10 hours to complete. Similar to the previous sections, this section of pre-work involves reading (both from this document as well as the 📒John Duckett book), 👩🏻‍💻exercises, and 📝reflection questions. Make sure to manage your time well so that should you get stuck and need help, you have plenty of time to do so and meet the deadline. +Section 3 is estimated to take a total of 6-10 hours to complete. Similar to the previous sections, this section of pre-work involves 📒reading, 👩🏻‍💻exercises, and 📝reflection questions. Make sure to manage your time well so that should you get stuck and need help, you have plenty of time to do so and meet the deadline. Since Arrays are a bigger topic, it is the main focus of this section. Some review work from the first two sections has been woven in so you get opportunities to continue seeing and applying those concepts, as well. From 91ba56d2640f1411dab766f9ae94378ee45cd4d8 Mon Sep 17 00:00:00 2001 From: Eric Weissman Date: Mon, 4 Jan 2021 10:43:33 -0700 Subject: [PATCH 09/41] Add section 4 formatting --- section4/README.md | 68 +++++++++++++++++++++++++++++++++++ section4/exercises/burrito.rb | 19 ++++++++++ section4/exercises/dog.rb | 30 ++++++++++++++++ section4/exercises/person.rb | 5 +++ section4/reflection.md | 22 ++++++++++++ 5 files changed, 144 insertions(+) create mode 100644 section4/README.md create mode 100644 section4/exercises/burrito.rb create mode 100644 section4/exercises/dog.rb create mode 100644 section4/exercises/person.rb create mode 100644 section4/reflection.md diff --git a/section4/README.md b/section4/README.md new file mode 100644 index 000000000..90217917e --- /dev/null +++ b/section4/README.md @@ -0,0 +1,68 @@ +# Section 4 - Objects, Classes and Code Challenges + +Section 4 is estimated to take a total of 10-14 hours to complete. Similar to the previous sections, this section of pre-work involves reading 📒, 👨🏾‍💻exercises, and 📝reflection questions. Make sure to manage your time well so that should you get stuck and need help, you have plenty of time to do so and meet the deadline. + +- [Vocabulary](#Vocabulary) +- [Part A: How You Spend Your Time](#Part-A-How-You-Spend-Your-Time) +- [Part B: Classes](#Part-B-Classes) +- [Deliverables](#Deliverables) + +## Vocabulary + +### Vocabulary Terms + +- method +- class +- class instance +- properties + +## Part A How You Spend Your Time + +One challenge developers face, moreso when they are starting out, is estimating how long something will take. Sometimes we don't account for merge conflicts, bugs, annoying Slack messages, and all the other things that interrupt our workflow or slow us down. + +One challenge learners in a new environment/content area face is feeling like they know nothing, and until they know everything, they feel like they are failing. + +So this week, we would like you to start self-monitoring your progress. Before you start on the technical work, reflect back on how the pre-work has gone so far. +- Have the time estimates matched up with your experience? +- When you sit down to start working, do you have a clear goal of what you want to accomplish and in how much time? If so, how aligned is that to what actually happens? +- How do you work best - in 2 hour blocks, 4 hour blocks, etc? Do you take breaks regularly? Do you have a system to hold yourself accountable to taking breaks? + +You've probably heard of the Pomodoro Technique in Mod 0 classes (and elsewhere, maybe!). During this final section of pre-work, we are going to ask that you follow this technique. Please read about it [here](https://www.dovico.com/blog/2020/08/26/the-pomodoro-technique-how-to-manage-your-work-time-and-flow-the-easy-way/). The article doesn't mention writing down Step 1, but we ask that you find a special spot in your notebook where you do this for each work session. In the deliverables, we will ask that you share what you wrote down for Step 1 of the technique each time you started a new task. _Note: if the 25 minutes on/3-5 minutes off isn't best for you, you do **not** have to follow that! The main focus of this is setting an intention and continuing to better understand your working style._ + +## Part B Classes + +Today, you are going to be learning about Objects and Classes. In ruby, Classes are one of the tools we use to group together specific Methods that are meant to work together, or on the same type of Object. Arriving at Turing with a strong understanding of how to build a class, and how to call Methods on that class will make your first couple of weeks go smoothly! + +When you are all done with the lessons, exercises, and questions for today, you will once again use git to save your work locally, and then send your work to Github. + +1. Work through the following lessons. Any files that you create while working can be kept in today's `exercises` directory. + + - [ ] [What Are Objects](https://launchschool.com/books/oo_ruby/read/the_object_model#whatareobjects) section from LaunchSchool. + + - [ ] [Classes Define Objects](https://launchschool.com/books/oo_ruby/read/the_object_model#classesdefineobjects) section from LaunchSchool. + + - [ ] [Classes and Objects Part 1](https://launchschool.com/books/oo_ruby/read/classes_and_objects_part1) from LaunchSchool. + + - [ ] [Objects, Attributes and Methods](http://tutorials.jumpstartlab.com/projects/ruby_in_100_minutes.html#11.-objects,-attributes,-and-methods) from Ruby in 100 Minutes. + +1. Work through the files in the section4/exercises directory. + +1. Answer the questions in the reflection.md file in the section4 directory. + +## Reflection + +📝 Answer the questions in the `reflection.md` file in the section4 directory. + +## Save your work, push to GitHub + +Commit your Code Challenges and push up to your GitHub repository. + + +## Index Links + +- [Vocabulary](#Vocabulary) +- [Part A: How You Spend Your Time](#Part-A-How-You-Spend-Your-Time) +- [Part B: Classes](#Part-B-Classes) + + +🚀 [Go to the Final Project](../finalProject) diff --git a/section4/exercises/burrito.rb b/section4/exercises/burrito.rb new file mode 100644 index 000000000..967f68b6c --- /dev/null +++ b/section4/exercises/burrito.rb @@ -0,0 +1,19 @@ +# Add the following methods to this burrito class and +# call the methods below the class: +# 1. add_topping +# 2. remove_topping +# 3. change_protein + +class Burrito + attr_reader :protein, :base, :toppings + def initialize(protein, base, toppings) + @protein = protein + @base = base + @toppings = toppings + end +end + +dinner = Burrito.new("Beans", "Rice", ["cheese", "salsa", "guacamole"]) +p dinner.protein +p dinner.base +p dinner.toppings diff --git a/section4/exercises/dog.rb b/section4/exercises/dog.rb new file mode 100644 index 000000000..03221314d --- /dev/null +++ b/section4/exercises/dog.rb @@ -0,0 +1,30 @@ +# In the dog class below, write a `play` method that makes +# the dog hungry. Call that method below the class, and +# print the dog's hunger status. + +class Dog + attr_reader :breed, :name, :age, :hungry + + def initialize(breed, name, age) + @breed = breed + @name = name + @age = age + @hungry = true + end + + def bark + p "woof!" + end + + def eat + @hungry = false + end +end + +fido = Dog.new("Bernese", "Fido", 4) +p fido.breed +p fido.name +p fido.age +p fido.hungry +fido.eat +p fido.hungry diff --git a/section4/exercises/person.rb b/section4/exercises/person.rb new file mode 100644 index 000000000..2c26e9570 --- /dev/null +++ b/section4/exercises/person.rb @@ -0,0 +1,5 @@ +# Create a person class with at least 2 attributes and 2 behaviors. +# Call all person methods below the class and print results +# to the terminal that show the methods in action. + +# YOUR CODE HERE diff --git a/section4/reflection.md b/section4/reflection.md new file mode 100644 index 000000000..68b044b00 --- /dev/null +++ b/section4/reflection.md @@ -0,0 +1,22 @@ +## Section 4 Reflection + +1. How different did your workflow feel this week, considering we asked you to follow the Pomodoro technique? + +1. Regarding the work you did around setting intentions in Step 1 of the Pomodoro technique - how did that go? Were you surprised by anything (did you find yourself way more focused than you realized, more distracted that you thought you'd be, estimating times accurately or totally off, etc)? + +1. In your own words, what is a Class? + +1. What is an attribute of a Class? + +1. What is behavior of a Class? + +1. In the space below, create a Dog class with at least 2 attributes and 2 behaviors: + +```rb + + +``` + +1. How do you create an instance of a class? + +1. What questions do you still have about classes in Ruby? \ No newline at end of file From 15d7698aa731ad17df00ed4fa1118bf6e4a38667 Mon Sep 17 00:00:00 2001 From: Eric Weissman Date: Mon, 4 Jan 2021 10:47:13 -0700 Subject: [PATCH 10/41] Add final project formatting --- finalProject/10_speckled_frogs.md | 27 +++++++++++++++++ finalProject/README.md | 48 +++++++++++++++++++++++++++++++ finalProject/ceasar_cipher.md | 16 +++++++++++ finalProject/checker_board.md | 13 +++++++++ finalProject/fizzbuzz.md | 16 +++++++++++ 5 files changed, 120 insertions(+) create mode 100644 finalProject/10_speckled_frogs.md create mode 100644 finalProject/README.md create mode 100644 finalProject/ceasar_cipher.md create mode 100644 finalProject/checker_board.md create mode 100644 finalProject/fizzbuzz.md diff --git a/finalProject/10_speckled_frogs.md b/finalProject/10_speckled_frogs.md new file mode 100644 index 000000000..67789f479 --- /dev/null +++ b/finalProject/10_speckled_frogs.md @@ -0,0 +1,27 @@ +## 10 Speckled Frogs + +Create a file named `10_speckled_frogs.rb` and within that file, write several a program that will print the following nursery rhyme: + +> 3 speckled frogs sat on a log +> eating some most delicious bugs. +> One jumped in the pool where its nice and cool, +> then there were 2 speckled frogs. +> +> 2 speckled frogs sat on a log +> eating some most delicious bugs. +> One jumped in the pool where its nice and cool, +> then there was 1 speckled frogs. +> +> 1 speckled frog sat on a log +> eating some most delicious bugs. +> One jumped in the pool where its nice and cool, +> then there were no more speckled frogs! + +### Required +Make your program print the rhyme above for *10* frogs, with attention to where language changes. + +### Extension 1 +Print word versions of each number in the first and fourth lines, for example, the first verse in the above example would print 'Three speckled frogs...' and 'were two speckled frogs'. + +### Extension 2 +Make your program work for any number of frogs. diff --git a/finalProject/README.md b/finalProject/README.md new file mode 100644 index 000000000..ddb2acbd3 --- /dev/null +++ b/finalProject/README.md @@ -0,0 +1,48 @@ +# Final Project + +## Project Specifications + +Using what you have learned so far, complete the challenges below. Put any files related to the projects you choose in `finalProject` directory. + +_Note:_ These should be challenging, and require to apply most of the content covered in this pre-work. The use of google is absolutely allowed as you may need to brush up on syntax, etc. However, we strongly discourage you from googling for solution pathways to these problems - the point of these is to push you to think like the programmer you are and apply the knowledge you've built so far in slightly different ways. + +* [FizzBuzz](./fizzbuzz.md) +* [10 Speckled Frogs](./10_speckled_frogs.md) +* [Ceasar Cipher](./ceasar_cipher.md) + +## Next Steps + +Depending on if you are in Section A or B, you have anywhere between 1.5-3.5 weeks before you start Mod 1. This is an important time to take care of life things such as doctor appointments, dog park trips, quality time with friends and family, etc. It is also important that you maintain the knowledge and skills you acquired during Mod 0 and this pre-work. You can absolutely do both, but to do so successfully, **you need a plan**. We recommend spending, on average, 1-2 hours a day coding (totally 20-40 hours of time). + +What is your plan and how are you going to hold yourself to it? Specifically... +- What are you going to work on? [Resources here](https://github.com/turingschool-examples/fe-m1-practice) +- What days are you going to work? +- What times on those days are you going to work? +- Where you going to be sitting/standing as you do this? +- Where are you documenting this plan? Google Calendar, calendar on your wall, your journal? +- Do any stakeholders in your life know about this plan? (The answer needs to be yes by the time you answer this...) +- What personal items/events are important to you during this time? How are you going to make sure those are not neglected? (Hint, block time on the calendar for them!) + +### Final Pre-work Submission + +When you have completed *all* the activities described above, follow the steps below to submit your technical prework. + +1. Go to *your* prework repository on GitHub +1. Click on `New Pull Request` per the image below: + +![New PR](https://i.imgur.com/lGKNxwC.png) + +
+2. On the Pull Request page, make sure you see something similar to below (but with your username): + +![New PR](https://i.imgur.com/CwJH8os.png) + +
+3. Click on `Create New Pull Request` (circled in the image above). +4. Enter `YOUR NAME` as the title of the pull request, and click `Create pull request` as shown below: + +![Create PR](https://i.imgur.com/CQQzfNc.png) + +5. Please complete the form to submit your prework available [here](https://forms.gle/wxoVuhHKjrRyvGW2A). Be sure to include links for your Gear Up pre-work gist and your technical pre-work GitHub repository. The link to your technical pre-work GitHub repository will be in the format https://github.com/YOUR_GITHUB_USERNAME/frontend-mod-1-prework. (using _your_ own GitHub username) + +🏔You did it! This is the end of the pre-work. Continue to monitor slack (and emails from GitHub) for feedback from your instructor. \ No newline at end of file diff --git a/finalProject/ceasar_cipher.md b/finalProject/ceasar_cipher.md new file mode 100644 index 000000000..7390a70bc --- /dev/null +++ b/finalProject/ceasar_cipher.md @@ -0,0 +1,16 @@ +## Ceasar Cipher + +Also known as a shift cipher, the Ceasar Cipher is one of the oldest and simplest encoding techniques. A Ceasar Cipher works by shifting the alphabet by a defined number of letters down the alphabet. For example, with a left shift of 3, 'D' would be replaced by 'A', 'E' would be replaced by 'B', and so on. See below for a full alphabet example with a left shift of 3: + +``` +plain: ABCDEFGHIJKLMNOPQRSTUVWXYZ +cipher: XYZABCDEFGHIJKLMNOPQRSTUVW +``` + +Create a file named caesar_cipher.rb and within that file, write a program that will take any string, and encode it based on a shift value provided by the user. The interaction pattern for this program might look something like this: + +``` +cipher = CeasarCipher.new +cipher.encode("Hello World", 5) +=> "CZGGJ RJMGY" +``` diff --git a/finalProject/checker_board.md b/finalProject/checker_board.md new file mode 100644 index 000000000..e8220394a --- /dev/null +++ b/finalProject/checker_board.md @@ -0,0 +1,13 @@ +## Checker Board + +Create a file called checker_board.rb and within that file, write a program that will print a checkerboard based on the size *indicated by the user*. On this board, the black spaces will be represented with 'X' and the white spaces will be represented with ' '. An example of the output for a size 6 board would look like this: + +``` +X X X + X X X +X X X + X X X +X X X + X X X + ``` + \ No newline at end of file diff --git a/finalProject/fizzbuzz.md b/finalProject/fizzbuzz.md new file mode 100644 index 000000000..b2a5a8e4b --- /dev/null +++ b/finalProject/fizzbuzz.md @@ -0,0 +1,16 @@ +## FizzBuzz + +Create a file named fizzbuzz.rb and within that file, write a program that prints something for each number from 1 to 100 with the following rules: + +* For any number that is a multiple of 3, print 'Fizz' +* For any number that is a multiple of 5, print 'Buzz' +* For any number that is a multiple of both 3 and 5, print 'FizzBuzz' +* For all other numbers, print the number. + +The output of your program will look something like this: +``` +=> 1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14, FizzBuzz, ..., 98, Fizz, Buzz +``` + +### Bonus +Can you write the program so that it will run for any range of numbers? From 96346d485814ae788c856a1754d8b63ea9bad80e Mon Sep 17 00:00:00 2001 From: Eric Weissman Date: Mon, 4 Jan 2021 10:50:31 -0700 Subject: [PATCH 11/41] Added previous day structure to archived directory --- archived/day_0/README.md | 71 ++++++++ archived/day_0/images/finder.png | Bin 0 -> 84321 bytes archived/day_0/images/spotlight.png | Bin 0 -> 9652 bytes archived/day_0/images/terminal.png | Bin 0 -> 16383 bytes archived/day_1/README.md | 194 ++++++++++++++++++++++ archived/day_1/exercises/interpolation.rb | 25 +++ archived/day_1/exercises/loops.rb | 18 ++ archived/day_1/exercises/numbers.rb | 16 ++ archived/day_1/exercises/strings.rb | 13 ++ archived/day_1/exercises/variables.rb | 29 ++++ archived/day_1/questions.md | 17 ++ archived/day_2/README.md | 46 +++++ archived/day_2/exercises/arrays.rb | 40 +++++ archived/day_2/exercises/iteration.rb | 28 ++++ archived/day_2/questions.md | 17 ++ archived/day_3/README.md | 45 +++++ archived/day_3/exercises/if_statements.rb | 65 ++++++++ archived/day_3/questions.md | 13 ++ archived/day_4/README.md | 47 ++++++ archived/day_4/exercises/methods.rb | 27 +++ archived/day_4/questions.md | 11 ++ archived/day_5/README.md | 41 +++++ archived/day_5/exercises/hashes.rb | 28 ++++ archived/day_5/questions.md | 13 ++ archived/day_6/README.md | 44 +++++ archived/day_6/exercises/burrito.rb | 19 +++ archived/day_6/exercises/dog.rb | 30 ++++ archived/day_6/exercises/person.rb | 5 + archived/day_6/questions.md | 13 ++ archived/day_7/10_speckled_frogs.md | 27 +++ archived/day_7/README.md | 66 ++++++++ archived/day_7/ceasar_cipher.md | 16 ++ archived/day_7/checker_board.md | 13 ++ archived/day_7/fizzbuzz.md | 16 ++ 34 files changed, 1053 insertions(+) create mode 100644 archived/day_0/README.md create mode 100644 archived/day_0/images/finder.png create mode 100644 archived/day_0/images/spotlight.png create mode 100644 archived/day_0/images/terminal.png create mode 100644 archived/day_1/README.md create mode 100644 archived/day_1/exercises/interpolation.rb create mode 100644 archived/day_1/exercises/loops.rb create mode 100644 archived/day_1/exercises/numbers.rb create mode 100644 archived/day_1/exercises/strings.rb create mode 100644 archived/day_1/exercises/variables.rb create mode 100644 archived/day_1/questions.md create mode 100644 archived/day_2/README.md create mode 100644 archived/day_2/exercises/arrays.rb create mode 100644 archived/day_2/exercises/iteration.rb create mode 100644 archived/day_2/questions.md create mode 100644 archived/day_3/README.md create mode 100644 archived/day_3/exercises/if_statements.rb create mode 100644 archived/day_3/questions.md create mode 100644 archived/day_4/README.md create mode 100644 archived/day_4/exercises/methods.rb create mode 100644 archived/day_4/questions.md create mode 100644 archived/day_5/README.md create mode 100644 archived/day_5/exercises/hashes.rb create mode 100644 archived/day_5/questions.md create mode 100644 archived/day_6/README.md create mode 100644 archived/day_6/exercises/burrito.rb create mode 100644 archived/day_6/exercises/dog.rb create mode 100644 archived/day_6/exercises/person.rb create mode 100644 archived/day_6/questions.md create mode 100644 archived/day_7/10_speckled_frogs.md create mode 100644 archived/day_7/README.md create mode 100644 archived/day_7/ceasar_cipher.md create mode 100644 archived/day_7/checker_board.md create mode 100644 archived/day_7/fizzbuzz.md diff --git a/archived/day_0/README.md b/archived/day_0/README.md new file mode 100644 index 000000000..ea3042ee8 --- /dev/null +++ b/archived/day_0/README.md @@ -0,0 +1,71 @@ +# Dive Right In! + +You will likely spend the majority of your time in Module 1 in either the Terminal or your text editor. When you're new to programming, the terminal can seem like a scary place, but it has some advantages over other means of interacting with your computer. Perhaps the greatest advantage is that it allows programmers to build tools that they can share with each other without going through the process of creating a graphical user interface. This makes it easy to share code quickly so that it can be used in multiple projects. + +You already have had some exposure to the terminal in the [mod0 session 2: Terminal and Command Line](http://mod0.turing.io/session2/#terminal-and-command-line). Let's practice a little more! + +### Here's a video walk-through of how to navigate your mod 1 prework: + +[![Walkthrough Day 1 and Git stuff](/images/backend-prework-day-one-thumb.jpg)](https://youtu.be/HYAzk6L63ek "Video Walkthrough for Day 1 & Git Stuff") + +### Practice + +Use the terminal commands described in the video above to move around your computer. + +* Dig deep into one of your existing directories by using `cd` to move and `ls` to see what directories are available. +* Navigate out using `cd ../` to get back to your home directory. Use `pwd` to make sure you don't overshoot it! +* Dig deep into another directory, using `ls` as you go. +* Use `cd ~/` to navigate to your home directory. +* Navigate into your Downloads directory using `cd Downloads`. +* Navigate to your Desktop using `cd ~/Desktop`. +* Use `pwd` and `ls` to confirm your current location. + +Continue practicing these commands until you feel comfortable moving around without having to look at this lesson. + +## Making Things + +### Practice + +Lets get a little practice with `touch`, `mkdir`, `ls`, and `cd`: + +Use `mkdir` and `touch` to create the directories/files in the structure described below. + +```sh +|-- _secret_library + | + |--README.md + |--Gemfile + |--Rakefile + | + |--_lib + | | + | |--secret_library.rb + | |--secret_book.rb + | |--secret_librarian.rb + | |--patron.rb + | |--library_system.rb + | + |--_test + | + |--secret_library_test.rb + |--secret_book_test.rb + |--secret_librarian_test.rb + |--patron_test.rb + |--library_system_test.rb +``` + +Don't worry about putting any text into these files. For now, just create this structure and empty files. + +## Deleting Things + +### The rm Command + +Be careful when deleting something though the terminal! While we want to be comfortable using the very helpful `rm` command, once executed, the command cannot be undone. Lets learn more about `rm` before we practice: + +* `rm`: This will remove a file from your system. Be very careful with this and always double check the file you target! The terminal assumes you're a little more of an expert than the system does. `rm` doesn't move the file to the Trash, it removes it completely from your system. It basically moves the file to the trash, then deletes it immediately. No chance to stop it or change your mind. + +* `rm -rf`: Adding the `-r` and `-f` flags to the `rm` command will allow you to delete directories even if they have other files and/or directories inside of them. For more information on each of these flags enter `man rm` into your terminal. It will print out the manual for this command. + +### Practice + +Use `rm` and `rm -rf` to delete each of the files and directories you created in the Making Things section above. Note, that it would be possible to delete the entire directory that you created with just `rm -rf secret_library`. *Don't do this!* At this point, delete each of the files and directories individually to practice these commands. This will help you remember them better in the long run, which is the goal! More practice now will allow you to be more efficient in the future. diff --git a/archived/day_0/images/finder.png b/archived/day_0/images/finder.png new file mode 100644 index 0000000000000000000000000000000000000000..e1e0eedf0cc2747b9f625c0bf3abc85e55c2b1d7 GIT binary patch literal 84321 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
IN|C^{czpR+fw#5*9~xkRr4jGqfykDe*Unc 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ΑTAH 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 literal 0 HcmV?d00001 diff --git a/archived/day_1/README.md b/archived/day_1/README.md new file mode 100644 index 000000000..034ae11da --- /dev/null +++ b/archived/day_1/README.md @@ -0,0 +1,194 @@ +# Day 1 - Strings and Numbers + +Today, you will begin to learn the basics of Ruby. You will work through several tutorials which will help build your comfort running files and seeing output. You will also learn about two ways to represent data in Ruby: *Strings* and *Numbers*. + +In addition to learning Ruby basics, this day will also walk you through entering commands in the terminal to create files. By the end of the day, you should be very comfortable with the commands `cd` and `ls`, both very useful in navigating your machine, and the commands `mkdir` and `touch`, used to create directories and files on the machine. + +After completing the days work, you will use several git commands to save your work to your local git repository. You will then push your updates to your remote Github repository. Doing this each day will help you build muscle memory with git commands and get used to seeing the output they produce. We will dive deeper into the inner workings of git later. For now, most important is to follow along and know that we are using git to save our work, and Github to put it on the internet. + +### This lesson will have you using Git, Github, etc. Here's a video walkthrough + +[![Walkthrough Day 1 and Git stuff](/images/backend-prework-day-one-thumb.jpg)](https://youtu.be/HYAzk6L63ek "Video Walkthrough for Day 1 & Git Stuff") + +## Open your local copy of backend_mod_1_prework in Atom + +Using your terminal, open the local copy of this repo. To do this, enter these commands into your terminal: + +``` +cd ~ +ls +cd turing +ls +cd 0module +ls +cd backend_mod_1_prework +ls +cd day_1 +ls +atom . +``` + +This will open the day_1 directory in Atom. You should be able to see the directory and its contents in the file explorer on the left side of your Atom window. + +## An Introduction to Ruby + +[Read This Introduction](https://learnrubythehardway.org/book/intro.html) to the Learn Ruby The Hard Way Tutorial. To reiterate this introduction, ***DO NOT*** copy and paste code examples when working through lessons in your prework. Actually type each of them out. + +### Ruby Basics Lessons + +1. Next, you will complete several lessons from the Learn Ruby the Hard Way Tutorial. *For ***each*** lesson* ***follow these directions closely***: + + 1. Create a file within your `day_1` directory that will contain this lesson's work. Verify that you are within the directory by using terminal command `pwd`. If you are not, `cd` into your `day_1` directory. Once you are there, use the `touch` command in your terminal to create a file. For the first lesson, name this file `ex1.rb`. For each subsequent lesson, use `ex2.rb`, `ex3.rb`, so on, so forth. Refer to back to [day_0](../day_0) if you need a refresher on terminal commands. + + 1. Work through the lesson, **typing** the code into your file, and running it in the terminal with `ruby ex1.rb`, replacing `ex1` with the actual file name of what you'd like to run. Make sure the output you get is similar to what the lesson shows. If you get an error saying "No such file or directory", be sure to verify the directory you are located in via the terminal- running command `ls` should show the file you are trying to run. + + 1. Complete the Study Drills listed at the end of the lesson. + + 1. Read the Common Student Questions section. + +1. Check off the items below as you complete the steps you just read for each lesson. ***Remember to create a file containing your work for each lesson!*** + + - [ ] [A Good First Program](https://learnrubythehardway.org/book/ex1.html) + + - [ ] [Comments in Code](https://learnrubythehardway.org/book/ex2.html) + + - [ ] [Numbers and Math](https://learnrubythehardway.org/book/ex3.html) + + - [ ] [Variables and Names](https://learnrubythehardway.org/book/ex4.html) + + - [ ] [Strings](https://learnrubythehardway.org/book/ex5.html) + + - [ ] [More Strings](https://learnrubythehardway.org/book/ex6.html) + + - [ ] [Asking for Input](https://learnrubythehardway.org/book/ex11.html) + + - [ ] Have you created 7 `ex.rb` files with your code in them? + +1. Work through the [Strings](http://tutorials.jumpstartlab.com/projects/ruby_in_100_minutes.html#3.-strings) and [Numbers](http://tutorials.jumpstartlab.com/projects/ruby_in_100_minutes.html#5.-numbers) sections from Ruby in 100 Minutes. For each of these sections, open an `irb` session by typing `irb` into your terminal and type in the code snippets provided. + +## Exercises +- Each day contains an exercises directory containing files where you will practice writing code. + +Work through the files in the day_1/exercises directory. Complete them in this order: + +1. strings +1. numbers +1. variables +1. interpolation +1. loops + +## Questions +- Each day contains a questions.md file where you will answer questions about what you have learned. + +Answer the day 1 questions within the questions.md file. The `.md` file extension refers to markdown formatting. Markdown is a simple markup language to help format your text. [This article](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) shows everything you need for basic markdown formatting. + +## Save your work in Git + +When you are finished with all of the day_1 activities, follow these steps in order to save your work to your local git repository. + +1. Make sure you are in your `day_1` directory. Enter `ls` in your terminal- You should see the exercises directory, README.md, and questions.md all listed. + +1. In your terminal, enter `git status`. You should see output like this: + + ``` + On branch master + Changes not staged for commit: + (use "git add ..." to update what will be committed) + (use "git checkout -- ..." to discard changes in working directory) + + modified: exercises/interpolation.rb + modified: exercises/loops.rb + modified: exercises/numbers.rb + modified: exercises/strings.rb + modified: exercises/variables.rb + modified: questions.md + + Untracked files: + (use "git add ..." to include in what will be committed) + + ex1.rb + ex2.rb + ex3.rb + ex4.rb + ex5.rb + ex6.rb + ex7.rb + + no changes added to commit (use "git add" and/or "git commit -a") + ``` + + The command `git status` shows us information about files we changed. Don't worry too much about understanding what this all means just yet. What's important is that you get comfortable typing `git status` often. + +1. Enter `git add ex1.rb`. +1. Enter `git status`. Your status should now look a little different: + + ```On branch master + Changes to be committed: + (use "git reset HEAD ..." to unstage) + + new file: ex1.rb + + Changes not staged for commit: + (use "git add ..." to update what will be committed) + (use "git checkout -- ..." to discard changes in working directory) + + modified: exercises/interpolation.rb + modified: exercises/loops.rb + modified: exercises/numbers.rb + modified: exercises/strings.rb + modified: exercises/variables.rb + modified: questions.md + + Untracked files: + (use "git add ..." to include in what will be committed) + + ex2.rb + ex3.rb + ex4.rb + ex5.rb + ex6.rb + ex7.rb + ``` + + Under "Changes to be committed", "ex1.rb" is now listed. This means that git is now prepared to save this file. We want to do this for each file that has been modified. + +1. Enter `git add ex2.rb` +1. Enter `git status`. "ex2.rb" should now be listed under "Changes to be committed". +1. Do this for each of the "ex#.rb" files you created and for the "questions.md" file. +1. Enter `git status`. Under "Changes not staged for commit", you should see all the files in the exercises directory. +1. Enter `git add exercises`. +1. Enter `git status`. You should now see all those exercises files listed under "Changes to be committed". We just used `git add ` to add all the files located in a directory. +1. Enter `git status`. You should now see all your files listed under "Changes to be committed". If there are any files listed under "Untracked files" or "Changes not staged for commit", add them using `git add `. +1. Enter `git commit -m "Add day 1"`. Don't forget to close the quotes of your message! +1. Run `git status`. You should see this output: + +``` +On branch master +nothing to commit, working tree clean +``` + +Congratulations! You just saved your work to Git! If `git status` is showing any files, add them with `git add ` and commit them with `git commit -m "Add day 1"`. + + +## Push to Github + +You've saved your work to git on your **local** machine, but it is not yet accessible through your **remote** Github repository. Updating our **remote** Github repository with our **local** changes is called **pushing**. Push your code with the following command: + +``` +git push origin master +``` + +You should see output similar to this: + +``` +Counting objects: 9, done. +Delta compression using up to 4 threads. +Compressing objects: 100% (8/8), done. +Writing objects: 100% (9/9), 1.03 KiB | 1.03 MiB/s, done. +Total 9 (delta 2), reused 0 (delta 0) +remote: Resolving deltas: 100% (2/2), completed with 1 local object. +To github.com:JohnDoe/backend_mod_1_prework.git + e8ebd7a..32c0ed3 master -> master +``` + +You should now be able to log in to GitHub, navigate to your remote prework repository and see all the work you did today! diff --git a/archived/day_1/exercises/interpolation.rb b/archived/day_1/exercises/interpolation.rb new file mode 100644 index 000000000..c7f4f47df --- /dev/null +++ b/archived/day_1/exercises/interpolation.rb @@ -0,0 +1,25 @@ +# In the below exercises, write code that achieves +# the desired result. To check your work, run this +# file by entering the following command in your terminal: +# `ruby day_1/exercises/interpolation.rb` + +# Example: Write code that uses the variables below to form a string that reads +# "The Chudley Cannons are Ron's favorite Quidditch team": +name = "Ron" +team = "Chudley Cannons" + +p "The #{team} are #{name}'s favorite Quidditch team" + +# Write code that uses the variables below to form a string that reads +# "The quick red fox jumped over the lazy brown dog": +speedy = "quick red fox" +slow_poke = "lazy brown dog" + +p # YOUR CODE HERE + +# Write code that uses the variables below to form a string that reads +# "In a predictable result, the tortoise beat the hare!": +slow_poke = "tortoise" +speedy = "hare" + +# YOUR CODE HERE diff --git a/archived/day_1/exercises/loops.rb b/archived/day_1/exercises/loops.rb new file mode 100644 index 000000000..90dc15ab1 --- /dev/null +++ b/archived/day_1/exercises/loops.rb @@ -0,0 +1,18 @@ +# In the below exercises, write code that achieves +# the desired result. To check your work, run this +# file by entering the following command in your terminal: +# `ruby day_1/exercises/loops.rb` + +# Example: Write code that prints your name five times: +5.times do + p "Hermione Granger" +end + +# Write code that prints the sum of 2 plus 2 seven times: +7.times do + # YOUR CODE HERE +end + +# Write code that prints the phrase 'She sells seashells down by the seashore' +# ten times: +# YOUR CODE HERE diff --git a/archived/day_1/exercises/numbers.rb b/archived/day_1/exercises/numbers.rb new file mode 100644 index 000000000..9a5468a31 --- /dev/null +++ b/archived/day_1/exercises/numbers.rb @@ -0,0 +1,16 @@ +# In the below exercises, write code that achieves +# the desired result. To check your work, run this +# file by entering the following command in your terminal: +# `ruby day_1/exercises/numbers.rb` + +# Example: Write code that prints the result of the sum of 2 and 2: +p 2 + 2 + +# Write code that prints the result of 7 subtracted from 83: +p #YOUR CODE HERE + +# Write code that prints the result of 6 multiplied by 53: +# YOUR CODE HERE + +# Write code that prints the result of the modulo of 10 into 54: +# YOUR CODE HERE diff --git a/archived/day_1/exercises/strings.rb b/archived/day_1/exercises/strings.rb new file mode 100644 index 000000000..f2f903ffc --- /dev/null +++ b/archived/day_1/exercises/strings.rb @@ -0,0 +1,13 @@ +# In the below exercises, write code that achieves +# the desired result. To check your work, run this +# file by entering the following command in your terminal: +# `ruby day_1/exercises/strings.rb` + +# Example: Write code that prints your name to the terminal: +p "Alan Turing" + +# Write code that prints `Welcome to Turing!` to the terminal: +p #YOUR CODE HERE + +# Write code that prints `99 bottles of pop on the wall...` to the terminal: +# YOUR CODE HERE diff --git a/archived/day_1/exercises/variables.rb b/archived/day_1/exercises/variables.rb new file mode 100644 index 000000000..a1e45bb26 --- /dev/null +++ b/archived/day_1/exercises/variables.rb @@ -0,0 +1,29 @@ +# In the below exercises, write code that achieves +# the desired result. To check your work, run this +# file by entering the following command in your terminal: +# `ruby day_1/exercises/variables.rb` + +# Example: Write code that saves your name to a variable and +# prints what that variable holds to the terminal: +name = "Harry Potter" +p name + +# Write code that saves the string 'Dobby' to a variable and +# prints what that variable holds to the terminal: +house_elf = "Dobby" +# YOUR CODE HERE + +# Write code that saves the string 'Harry Potter must not return to Hogwarts!' +# and prints what that variable holds to the terminal: +# YOUR CODE HERE + +# Write code that adds 2 to the `students` variable and +# prints the result: +students = 22 +# YOUR CODE HERE +p students + +# Write code that subracts 2 from the `students` variable and +# prints the result: +# YOUR CODE HERE +p students diff --git a/archived/day_1/questions.md b/archived/day_1/questions.md new file mode 100644 index 000000000..73700e323 --- /dev/null +++ b/archived/day_1/questions.md @@ -0,0 +1,17 @@ +## Day 1 Questions + +1. How would you print the string `"Hello World!"` to the terminal? + +1. What character is used to indicate comments in a ruby file? + +1. Explain the difference between an integer and a float? + +1. In the space below, create a variable `animal` that holds the string `"zebra"` + +1. How would you print the string `"zebra"` using the variable that you created above? + +1. What is interpolation? Use interpolation to print a sentence using the variable `animal`. + +1. What method is used to get input from a user? + +1. Name and describe two common string methods: diff --git a/archived/day_2/README.md b/archived/day_2/README.md new file mode 100644 index 000000000..0c8c1571c --- /dev/null +++ b/archived/day_2/README.md @@ -0,0 +1,46 @@ +# Day 2 - Arrays and Iteration + +Computers may not be smart, but they are good at processing things *very* quickly, like working through tons of data. To take full advantage, we need some way of storing lots of data. Today, you will learn about a Ruby data structure, the *Array*, that allows us to store collections of data. You will also learn about *iteration*: when you go through every element of an array. + +When you are all done with the lessons, exercises, and questions for today, you will once again use git to save your work locally, and then send your work to Github. + +## Open your local copy of backend_mod_1_prework + +Using your terminal, open your local copy of the forked repository you created during setup. To do this, you will need to use the terminal command `cd` to enter the directory that holds the repository. Once you are in the correct directory, use the terminal command `atom .` to open the prework repository. Revisit [day_1](../day_1) for more detail if needed. + +## Array and Iteration Lessons + +1. Work through the [Arrays](http://tutorials.jumpstartlab.com/projects/ruby_in_100_minutes.html#7.-arrays) section of Ruby in 100 Minutes. As you work through this section, research each of the methods mentioned by looking through the [Ruby docs for Arrays](https://ruby-doc.org/core-2.4.1/Array.html). Documentation like this might look intimidating, but diving in and practicing now will build your comfort level. Create a file in your day_2 directory called `array_methods.md` and describe what each method does in your own words. +1. Work through the following lessons. Any files that you create while working can be kept in today's `exercises` directory. + + - [ ] Turing's [Iteration and Each](http://backend.turing.io/module1/lessons/iteration_and_each) lesson. + + - [ ] [Booleans](https://learnrubythehardway.org/book/ex27.html) from Learn Ruby the Hard Way. + + - [ ] [Boolean Practice](https://learnrubythehardway.org/book/ex28.html) from Learn Ruby the Hard Way. + +1. Work through the exercise files in the day_2/exercises directory. Complete them in this order: + 1. arrays + 1. iteration + +1. Answer the questions in the questions.md file in the day_2 directory. + +## Save your work in Git + +When you finish all of the day_2 activities, enter the following commands in your terminal in order to save your work to your local git repository: + +1. `$ git add day_2/exercises` +1. `$ git add day_2/questions.md` +1. Use `git add day_2/` to add all additional files that you created today +1. `$ git status` - you should see only green filenames - if you see any that are red, continue to `git add` those files until `git status` shows all green files. +1. `$ git commit -m "Add Day 2 Work"` + +## Push to Github + +Remember- You've saved your work to git on your **local** machine, but it is not yet accessible through your **remote** Github repository. Push your code up to Github with the following command: + +``` +git push origin master +``` + +You should now be able to log in to GitHub, navigate to your remote prework repository and see all the work you did today! diff --git a/archived/day_2/exercises/arrays.rb b/archived/day_2/exercises/arrays.rb new file mode 100644 index 000000000..f572a5ae6 --- /dev/null +++ b/archived/day_2/exercises/arrays.rb @@ -0,0 +1,40 @@ +# In the below exercises, write code that achieves +# the desired result. To check your work, run this +# file by entering the following command in your terminal: +# `ruby day_2/exercises/arrays.rb` + +# Example: Write code that stores an array in a variable, +# then prints that array: +animals = ["Zebra", "Giraffe", "Elephant"] +p animals + +# Write code that stores an array of states in a variable, +# then prints that array: +states = #YOUR CODE HERE +p states + +# Write code that stores an array of foods in a variable, +# then prints that array: +# YOUR CODE HERE + +# Example: Write code that prints the number of elements +# in your above array of animals: +p animals.count + +# Write code that prints the number of elements +# in your above array of foods: +# YOUR CODE HERE + +# Write code that prints "Zebra" from your animals array: +# YOUR CODE HERE + +# Write code that prints the last item of your foods array: +# YOUR CODE HERE + +# Write code that adds "lion" to your animals array +# and prints the result (Hint- use a method): +# YOUR CODE HERE + +# Write code that removes the last element from your foods array +# and prints the result (Hint- use a method): +# YOUR CODE HERE diff --git a/archived/day_2/exercises/iteration.rb b/archived/day_2/exercises/iteration.rb new file mode 100644 index 000000000..a801cb4fc --- /dev/null +++ b/archived/day_2/exercises/iteration.rb @@ -0,0 +1,28 @@ +# In the below exercises, write code that achieves +# the desired result. To check your work, run this +# file by entering the following command in your terminal: +# `ruby day_2/exercises/iteration.rb` + +# Example: Write code that iterates through a list of animals +# and print each animal: +animals = ["Zebra", "Giraffe", "Elephant"] + +animals.each do |animal| + p animal +end + +# Write code that iterates through a list of animals and prints +# "The is awesome!" for each animal: + +animals.each do |animal| + # YOUR CODE HERE +end + +# Write code that stores an array of foods in a variable, +# then iterates over that array to print +# "Add to shopping list" for each food item: +# YOUR CODE HERE + +# Write code that stores an array of numbers in a variable, +# then iterates over that array to print doubles of each number: +# YOUR CODE HERE diff --git a/archived/day_2/questions.md b/archived/day_2/questions.md new file mode 100644 index 000000000..a179f0b04 --- /dev/null +++ b/archived/day_2/questions.md @@ -0,0 +1,17 @@ +## Day 2 Questions + +1. Create an array containing the following strings: `"zebra", "giraffe", "elephant"`. + +1. Save the array you created above to a variable `animals`. + +1. Using the array `animals`, how would you access `"giraffe"`? + +1. How would you add `"lion"` to the `animals` array? + +1. Name and describe two additional array methods: + +1. What are the boolean values in Ruby? + +1. In Ruby, how would you evaluate if `2` is equal to `25`? What is the result of this evaluation? + +1. In Ruby, how would you evaluate if `25` is greater than `2`? What is the result of this evaluation? diff --git a/archived/day_3/README.md b/archived/day_3/README.md new file mode 100644 index 000000000..d4534e0e1 --- /dev/null +++ b/archived/day_3/README.md @@ -0,0 +1,45 @@ +# Day 3 - If Statements and Conditionals + +One of the most important concepts in computer programming is knowing when and how to tell the computer to do either _one_ thing or _another_ thing based on a set of simple criteria. We accomplish this with ***If-Statements*** and ***Conditionals***, which you will learn about today. + +When you are all done with the lessons, exercises, and questions for today, you will once again use git to save your work locally, and then send your work to Github. + +## Open your local copy of backend_mod_1_prework + +Using your terminal, open your local copy of the forked repository you created during setup. To do this, you will need to use the terminal command `cd` to enter the directory that holds the repository. Once you are in the correct directory, use the terminal command `atom .` to open the prework repository. Revisit [day_1](../day_1) for more detail if needed. + +## If statement and Conditional Lessons + +1. Work through the following lessons. Any files that you create while working can be kept in today's `exercises` directory. + + - [ ] [What If?](https://learnrubythehardway.org/book/ex29.html) from Learn Ruby the Hard Way. + + - [ ] [Else and If](https://learnrubythehardway.org/book/ex30.html) from Learn Ruby the Hard Way. + + - [ ] [Making Decisions](https://learnrubythehardway.org/book/ex31.html) from Learn Ruby the Hard Way. + + - [ ] [Conditionals](http://tutorials.jumpstartlab.com/projects/ruby_in_100_minutes.html#9.-conditionals) from Ruby in 100 Minutes. + +1. Work through the exercise files in the day_3/exercises directory. + +1. Answer the questions in the questions.md file in the day_3 directory. + +## Save your work in Git + +When you are finished with all of the day_3 activities, enter the following commands in your terminal in order to save your work to your local git repository: + +1. `$ git add day_3/exercises` +1. `$ git add day_3/questions.md` +1. Use `git add day_3/` to add all additional files that you created today +1. `$ git status` - you should see only green filenames - if you see any that are red, continue to `git add` those files until `git status` shows all green files. +1. `$ git commit -m "Add Day 3 Work"` + +## Push to Github + +Remember- You've saved your work to git on your **local** machine, but it is not yet accessible through your **remote** Github repository. Push your code up to Github with the following command: + +``` +git push origin master +``` + +You should now be able to log in to GitHub, navigate to your remote prework repository and see all the work you did today! diff --git a/archived/day_3/exercises/if_statements.rb b/archived/day_3/exercises/if_statements.rb new file mode 100644 index 000000000..a80b96840 --- /dev/null +++ b/archived/day_3/exercises/if_statements.rb @@ -0,0 +1,65 @@ +# In the below exercises, write code that achieves +# the desired result. To check your work, run this +# file by entering the following command in your terminal: +# `ruby day_3/exercises/if_statements.rb` + +# Example: Using the weather variable below, write code that decides +# what you should take with you based on the following conditions: + # if it is sunny, print "sunscreen" + # if it is rainy, print "umbrella" + # if it is snowy, print "coat" + # if it is icy, print "yak traks" + + weather = 'snowy' + + if weather == 'sunny' + p "sunscreen" + elsif weather == 'rainy' + p "umbrella" + elsif weather == 'snowy' + p "coat" + elsif weather == 'icy' + p "yak traks" + else + p "good to go!" + end + +# Experiment with manipulating the value held in variable 'weather' +# to print something other than 'coat' + + +################## +# Using the num_quarters variable defined below, determine +# if you have enough money to buy a gumball. A gumball costs +# two quarters. + +# Right now, the program will print +# out both "I have enough money for a gumball" and +# "I don't have enough money for a gumball". Write a +# conditional statement that prints only one or the other. + +# Experiment with manipulating the value held within num_quarters +# to make sure both conditions can be achieved. + +num_quarters = 0 + +puts "I have enough money for a gumball" +puts "I don't have enough money for a gumball" + + +##################### +# Using the variables defined below, write code that will tell you +# if you have the ingredients to make a pizza. A pizza requires +# at least two cups of flour and sauce. + +# You should be able to change the variables to achieve the following outputs: +# If cups_of_flour = 1 and has_sauce = true, print "I cannot make pizza" +# If cups_of_flour = 5 and has_sauce = false, print "I cannot make pizza" +# If cups_of_flour = 2 and has_sauce = true, print "I can make pizza" +# If cups_of_flour = 3 and has_sauce = true, print "I can make pizza" + +# Experiment with manipulating the value held within both variables +# to make sure all above conditions output what you expect. + +cups_of_flour = 1 +has_sauce = true diff --git a/archived/day_3/questions.md b/archived/day_3/questions.md new file mode 100644 index 000000000..db6170fa7 --- /dev/null +++ b/archived/day_3/questions.md @@ -0,0 +1,13 @@ +## Day 3 Questions + +1. What is a conditional statement? Give three examples. + +1. Why might you want to use an if-statement? + +1. What is the Ruby syntax for an if statement? + +1. How do you add multiple conditions to an if statement? + +1. Provide an example of the Ruby syntax for an if/elsif/else statement: + +1. Other than an if-statement, can you think of any other ways we might want to use a conditional statement? diff --git a/archived/day_4/README.md b/archived/day_4/README.md new file mode 100644 index 000000000..5fb1100bc --- /dev/null +++ b/archived/day_4/README.md @@ -0,0 +1,47 @@ +# Day 4 - Methods and Return Values + +On day 1 of the prework, you learned how to store information in Variables. Today, you will learn about another way to store information; more specifically, how to use Methods to create Return Values. In programming, we _often_ use methods, so this is an important concept to get familiar with! + +When you are all done with the lessons, exercises, and questions for today, you will once again use git to save your work locally, and then send your work to Github. + +## Open your local copy of backend_mod_1_prework + +Using your terminal, open your local copy of the forked repository you created during setup. To do this, you will need to use the terminal command `cd` to enter the directory that holds the repository. Once you are in the correct directory, use the terminal command `atom .` to open the prework repository. Revisit [day_1](../day_1) for more detail if needed. + +## Method Lessons + +1. Work through the following lessons. Any files that you create while working can be kept in today's `exercises` directory. + + _*Note*: In some of these lessons, the author refers to methods as functions. They are interchangable here, but at Turing, we will be use the word `method`._ + + - [ ] [Methods](https://launchschool.com/books/ruby/read/methods) from LaunchSchool. Work up to the `obj.method or method(obj)` header. + + - [ ] [Intro to Methods](https://learnrubythehardway.org/book/ex18.html) from Learn Ruby the Hard Way. + + - [ ] [Methods and Variables](https://learnrubythehardway.org/book/ex19.html) from Learn Ruby the Hard Way. + + - [ ] [Methods and Return Values](https://learnrubythehardway.org/book/ex21.html) from Learn Ruby the Hard Way. + +1. Work through the methods.rb file in the day_4/exercises directory. + +1. Answer the questions in the questions.md file in the day_4 directory. + +## Save your work in Git + +When you are finished with all of the day_4 activities, enter the following commands in your terminal in order to save your work to your local git repository: + +1. `$ git add day_4/exercises` +1. `$ git add day_4/questions.md` +1. Use `git add day_4/` to add all additional files that you created today +1. `$ git status` - you should see only green filenames - if you see any that are red, continue to `git add` those files until `git status` shows all green files. +1. `$ git commit -m "Add Day 4 Work"` + +## Push to Github + +Remember- You've saved your work to git on your **local** machine, but it is not yet accessible through your **remote** Github repository. Push your code up to Github with the following command: + +``` +git push origin master +``` + +You should now be able to log in to GitHub, navigate to your remote prework repository and see all the work you did today! diff --git a/archived/day_4/exercises/methods.rb b/archived/day_4/exercises/methods.rb new file mode 100644 index 000000000..6ed338e5d --- /dev/null +++ b/archived/day_4/exercises/methods.rb @@ -0,0 +1,27 @@ +# In the below exercises, write code that achieves +# the desired result. To check your work, run this +# file by entering the following command in your terminal: +# `ruby day_4/exercises/methods.rb` + +# Example: Write a method that when called will print your name: +def print_name + p "Severus Snape" +end + +print_name + +# Write a method that takes a name as an argument and prints it: +def print_name(name) + # YOUR CODE HERE +end + +print_name("Albus Dumbledore") + +# Write a method that takes in 2 numbers as arguments and prints +# their sum. Then call your method: +# YOUR CODE HERE + +# Write a method that takes in two strings as arguments and prints +# a concatenation of those two strings. Example: The arguments could be +# (man, woman) and the end result might output: "When Harry Met Sally". +# Then call your method: diff --git a/archived/day_4/questions.md b/archived/day_4/questions.md new file mode 100644 index 000000000..af17ab4da --- /dev/null +++ b/archived/day_4/questions.md @@ -0,0 +1,11 @@ +## Day 4 Questions + +1. In your own words, what is the purpose of a method? + +1. Create a method named `hello` that will print `"Sam I am"`. + +1. Create a method named `hello_someone` that takes an argument of `name` and prints `"#{name} I am"`. + +1. How would you call or execute the method that you created above? + +1. What questions do you have about methods in Ruby? diff --git a/archived/day_5/README.md b/archived/day_5/README.md new file mode 100644 index 000000000..28be6b8fb --- /dev/null +++ b/archived/day_5/README.md @@ -0,0 +1,41 @@ +# Day 5 - Hashes + +Earlier in the week, you learned about one type of collection storage - Arrays. Today, you will learn about another collection storage device called a Hash. As professional developers, you will use hashes on a near daily basis- a solid understanding of how to build hashes and how to retrieve information from them will make life much easier. + +When you are all done with the lessons, exercises, and questions for today, you will once again use git to save your work locally, and then send your work to Github. + +## Open your local copy of backend_mod_1_prework + +Using your terminal, open your local copy of the forked repository you created during setup. Hopefully you are getting the hang of this, but revisit [day_1](../day_1) for more detail if needed. + +## Hash Lessons + +1. Work through the following lessons. Any files that you create while working can be kept in today's `exercises` directory. + + - [ ] [Hashes](https://learnrubythehardway.org/book/ex39.html) from Learn Ruby the Hard Way. + + - [ ] [Hashes](http://tutorials.jumpstartlab.com/projects/ruby_in_100_minutes.html#8.-hashes) from Ruby in 100 minutes. + +1. Work through the hashes.rb file in the day_5/exercises directory. + +1. Answer the questions in the questions.md file in the day_5 directory. + +## Save your work in Git + +When you are finished with all of the day_5 activities, enter the following commands in your terminal in order to save your work to your local git repository: + +1. `$ git add day_5/exercises` +1. `$ git add day_5/questions.md` +1. Use `git add day_5/` to add all additional files that you created today +1. `$ git status` - you should see only green filenames - if you see any that are red, continue to `git add` those files until `git status` shows all green files. +1. `$ git commit -m "Add Day 5 Work"` + +## Push to Github + +Remember- You've saved your work to git on your **local** machine, but it is not yet accessible through your **remote** Github repository. Push your code up to Github with the following command: + +``` +git push origin master +``` + +You should now be able to log in to GitHub, navigate to your remote prework repository and see all the work you did today! diff --git a/archived/day_5/exercises/hashes.rb b/archived/day_5/exercises/hashes.rb new file mode 100644 index 000000000..99fcebb77 --- /dev/null +++ b/archived/day_5/exercises/hashes.rb @@ -0,0 +1,28 @@ +# In the below exercises, write code that achieves +# the desired result. To check your work, run this +# file by entering the following command in your terminal: +# `ruby day_5/exercises/hashes.rb` + +# Example: Write code that prints a hash holding grocery store inventory: +foods = {apples: 23, grapes: 507, eggs: 48} +p foods + +# Write code that prints a hash holding zoo animal inventory: +zoo = #YOUR CODE HERE +p zoo + +# Write code that prints all of the 'keys' of the zoo variable +# you created above: +# YOUR CODE HERE + +# Write code that prints all of the 'values' of the zoo variable +# you created above: +# YOUR CODE HERE + +# Write code that prints the value of the first animal of the zoo variable +# you created above: +# YOUR CODE HERE + +# Write code that adds an animal to the zoo hash. +# Then, print the updated hash: +# YOUR CODE HERE diff --git a/archived/day_5/questions.md b/archived/day_5/questions.md new file mode 100644 index 000000000..d059e12c6 --- /dev/null +++ b/archived/day_5/questions.md @@ -0,0 +1,13 @@ +## Day 5 Questions + +1. What is a Hash, and how is it different from an Array? + +1. In the space below, create a Hash stored to a variable named `pet_store`. This hash should hold an inventory of items and the number of that item that you might find at a pet store. + +1. Given the following `states = {"CO" => "Colorado", "IA" => "Iowa", "OK" => "Oklahoma"}`, how would you access the value `"Iowa"`? + +1. With the same hash above, how would we get all the keys? How about all the values? + +1. What is another example of when we might use a hash? In your example, why is a hash better than an array? + +1. What questions do you still have about hashes? diff --git a/archived/day_6/README.md b/archived/day_6/README.md new file mode 100644 index 000000000..829fe4809 --- /dev/null +++ b/archived/day_6/README.md @@ -0,0 +1,44 @@ +# Day 6 - Classes + +Today, you are going to be learning about Objects and Classes. In ruby, Classes are one of the tools we use to group together specific Methods that are meant to work together, or on the same type of Object. Arriving at Turing with a strong understanding of how to build a class, and how to call Methods on that class will make your first couple of weeks go smoothly! + +When you are all done with the lessons, exercises, and questions for today, you will once again use git to save your work locally, and then send your work to Github. + +## Open your local copy of backend_mod_1_prework +Using your terminal, open your local copy of the forked repository you created during setup. Hopefully you are getting the hang of this, but revisit [day_1](../day_1) for more detail if needed. + +## Class lessons + +1. Work through the following lessons. Any files that you create while working can be kept in today's `exercises` directory. + + - [ ] [What Are Objects](https://launchschool.com/books/oo_ruby/read/the_object_model#whatareobjects) section from LaunchSchool. + + - [ ] [Classes Define Objects](https://launchschool.com/books/oo_ruby/read/the_object_model#classesdefineobjects) section from LaunchSchool. + + - [ ] [Classes and Objects Part 1](https://launchschool.com/books/oo_ruby/read/classes_and_objects_part1) from LaunchSchool. + + - [ ] [Objects, Attributes and Methods](http://tutorials.jumpstartlab.com/projects/ruby_in_100_minutes.html#11.-objects,-attributes,-and-methods) from Ruby in 100 Minutes. + +1. Work through the files in the day_6/exercises directory. + +1. Answer the questions in the questions.md file in the day_6 directory. + +## Save your work in Git + +When you are finished with all of the day_6 activities, enter the following commands in your terminal in order to save your work to your local git repository: + +1. `$ git add day_6/exercises` +1. `$ git add day_6/questions.md` +1. Use `git add day_6/` to add all additional files that you created today +1. `$ git status` - you should see only green filenames - if you see any that are red, continue to `git add` those files until `git status` shows all green files. +1. `$ git commit -m "Add Day 6 Work"` + +## Push to Github + +Remember- You've saved your work to git on your **local** machine, but it is not yet accessible through your **remote** Github repository. Push your code up to Github with the following command: + +``` +git push origin master +``` + +You should now be able to log in to GitHub, navigate to your remote prework repository and see all the work you did today! diff --git a/archived/day_6/exercises/burrito.rb b/archived/day_6/exercises/burrito.rb new file mode 100644 index 000000000..967f68b6c --- /dev/null +++ b/archived/day_6/exercises/burrito.rb @@ -0,0 +1,19 @@ +# Add the following methods to this burrito class and +# call the methods below the class: +# 1. add_topping +# 2. remove_topping +# 3. change_protein + +class Burrito + attr_reader :protein, :base, :toppings + def initialize(protein, base, toppings) + @protein = protein + @base = base + @toppings = toppings + end +end + +dinner = Burrito.new("Beans", "Rice", ["cheese", "salsa", "guacamole"]) +p dinner.protein +p dinner.base +p dinner.toppings diff --git a/archived/day_6/exercises/dog.rb b/archived/day_6/exercises/dog.rb new file mode 100644 index 000000000..03221314d --- /dev/null +++ b/archived/day_6/exercises/dog.rb @@ -0,0 +1,30 @@ +# In the dog class below, write a `play` method that makes +# the dog hungry. Call that method below the class, and +# print the dog's hunger status. + +class Dog + attr_reader :breed, :name, :age, :hungry + + def initialize(breed, name, age) + @breed = breed + @name = name + @age = age + @hungry = true + end + + def bark + p "woof!" + end + + def eat + @hungry = false + end +end + +fido = Dog.new("Bernese", "Fido", 4) +p fido.breed +p fido.name +p fido.age +p fido.hungry +fido.eat +p fido.hungry diff --git a/archived/day_6/exercises/person.rb b/archived/day_6/exercises/person.rb new file mode 100644 index 000000000..2c26e9570 --- /dev/null +++ b/archived/day_6/exercises/person.rb @@ -0,0 +1,5 @@ +# Create a person class with at least 2 attributes and 2 behaviors. +# Call all person methods below the class and print results +# to the terminal that show the methods in action. + +# YOUR CODE HERE diff --git a/archived/day_6/questions.md b/archived/day_6/questions.md new file mode 100644 index 000000000..f58ca5f71 --- /dev/null +++ b/archived/day_6/questions.md @@ -0,0 +1,13 @@ +## Day 6 Questions + +1. In your own words, what is a Class? + +1. What is an attribute of a Class? + +1. What is behavior of a Class? + +1. In the space below, create a Dog class with at least 2 attributes and 2 behaviors: + +1. How do you create an instance of a class? + +1. What questions do you still have about classes in Ruby? diff --git a/archived/day_7/10_speckled_frogs.md b/archived/day_7/10_speckled_frogs.md new file mode 100644 index 000000000..67789f479 --- /dev/null +++ b/archived/day_7/10_speckled_frogs.md @@ -0,0 +1,27 @@ +## 10 Speckled Frogs + +Create a file named `10_speckled_frogs.rb` and within that file, write several a program that will print the following nursery rhyme: + +> 3 speckled frogs sat on a log +> eating some most delicious bugs. +> One jumped in the pool where its nice and cool, +> then there were 2 speckled frogs. +> +> 2 speckled frogs sat on a log +> eating some most delicious bugs. +> One jumped in the pool where its nice and cool, +> then there was 1 speckled frogs. +> +> 1 speckled frog sat on a log +> eating some most delicious bugs. +> One jumped in the pool where its nice and cool, +> then there were no more speckled frogs! + +### Required +Make your program print the rhyme above for *10* frogs, with attention to where language changes. + +### Extension 1 +Print word versions of each number in the first and fourth lines, for example, the first verse in the above example would print 'Three speckled frogs...' and 'were two speckled frogs'. + +### Extension 2 +Make your program work for any number of frogs. diff --git a/archived/day_7/README.md b/archived/day_7/README.md new file mode 100644 index 000000000..c9a053cd5 --- /dev/null +++ b/archived/day_7/README.md @@ -0,0 +1,66 @@ +# Day 7 - Build a Thing! + +Congrats on making it through the first 6 days of Prework! Today, you will put together everything you have learned to actually build a program! Hopefully, this will show you how much you have already accomplished in your first week as a programmer! + +When you have completed the activities for day 7, you will follow instructions to submit your work through a GitHub Pull Request. + +## Open your local copy of backend_mod_1_prework +Using your terminal, open your local copy of the forked repository you created during setup. Hopefully you are getting the hang of this, but revisit [day_1](../day_1) for more detail if needed. + +## Make a Program + +1. Using what you have learned in the last week, complete both of the projects below. Put any files related to the projects you choose in a day_7 directory. + + 1. [FizzBuzz](./fizzbuzz.md) + 1. [10 Speckled Frogs](./10_speckled_frogs.md) + +1. When you are finished with your projects, you should add, commit, and push your changes to GitHub. + +1. Add a `high_level.md` file to your day_7 directory. In that file, write up high level notes about how you would solve one of the following problems. When you're finished writing your detailed notes, you can also choose to code a solution to the problem(s). + + 1. [Ceasar Cipher](./ceasar_cipher.md) + 1. [Checker Board](./checker_board.md) + +1. When you are finished with your high level explanation, you should add, commit, and push your changes to GitHub. + +1. Log in to GitHub, navigate to your remote prework repository and make sure all work from all the days is there! + +## Submission + +When you have completed *all* the activities described above, follow the steps below to submit your technical prework. + +1. Go to *your* prework repository on GitHub + +1. click on `New Pull Request` per the image below: + + ![New PR](https://i.imgur.com/lGKNxwC.png) + +1. On the Pull Request page, make sure you see something similar to below (but with your username): + + ![New PR](https://i.imgur.com/CwJH8os.png) + +1. Click on `Create New Pull Request` (circled in the image above). + +1. Enter `YOUR NAME` as the title of the pull request, and click `Create pull request` as shown below: + + ![Create PR](https://i.imgur.com/CQQzfNc.png) + +1. ***[Please complete this form to submit your prework.](https://forms.gle/wxoVuhHKjrRyvGW2A)*** Be sure to include links to your Gear Up pre-work gist and your technical pre-work GitHub repository. The link to your technical pre-work GitHub repository will look something like: `https://github.com/YOUR_GITHUB_USERNAME/backend_mod_1_prework`. (using your own GitHub username, of course!) + +And with that form submission, ***you're done!!!*** Any feedback after this has been reviewed will be Slacked to you. Can't wait to see you on the first day of class!! + +---------------------------------- + +# Extension (optional, after pre-work completed) + +You've finished your Mod 1 pre-work assignment! + +But there's always more to learn! + +If you're interested in challenging yourself _even more_ and getting a step ahead in your coding abilities before your first day, we recommend working on either: + +- [Turing's ruby exercises repo](https://github.com/turingschool/ruby-exercises) +- [A back-end grad's advice and useful study resources](https://josh.works/turing-backend-prep-01-intro) +- [Credit Check](https://github.com/turingschool-examples/credit_check). + +If you do Credit Check, follow the same steps as you did with your pre-work to fork and clone the repo on to your local computer. diff --git a/archived/day_7/ceasar_cipher.md b/archived/day_7/ceasar_cipher.md new file mode 100644 index 000000000..7390a70bc --- /dev/null +++ b/archived/day_7/ceasar_cipher.md @@ -0,0 +1,16 @@ +## Ceasar Cipher + +Also known as a shift cipher, the Ceasar Cipher is one of the oldest and simplest encoding techniques. A Ceasar Cipher works by shifting the alphabet by a defined number of letters down the alphabet. For example, with a left shift of 3, 'D' would be replaced by 'A', 'E' would be replaced by 'B', and so on. See below for a full alphabet example with a left shift of 3: + +``` +plain: ABCDEFGHIJKLMNOPQRSTUVWXYZ +cipher: XYZABCDEFGHIJKLMNOPQRSTUVW +``` + +Create a file named caesar_cipher.rb and within that file, write a program that will take any string, and encode it based on a shift value provided by the user. The interaction pattern for this program might look something like this: + +``` +cipher = CeasarCipher.new +cipher.encode("Hello World", 5) +=> "CZGGJ RJMGY" +``` diff --git a/archived/day_7/checker_board.md b/archived/day_7/checker_board.md new file mode 100644 index 000000000..e8220394a --- /dev/null +++ b/archived/day_7/checker_board.md @@ -0,0 +1,13 @@ +## Checker Board + +Create a file called checker_board.rb and within that file, write a program that will print a checkerboard based on the size *indicated by the user*. On this board, the black spaces will be represented with 'X' and the white spaces will be represented with ' '. An example of the output for a size 6 board would look like this: + +``` +X X X + X X X +X X X + X X X +X X X + X X X + ``` + \ No newline at end of file diff --git a/archived/day_7/fizzbuzz.md b/archived/day_7/fizzbuzz.md new file mode 100644 index 000000000..b2a5a8e4b --- /dev/null +++ b/archived/day_7/fizzbuzz.md @@ -0,0 +1,16 @@ +## FizzBuzz + +Create a file named fizzbuzz.rb and within that file, write a program that prints something for each number from 1 to 100 with the following rules: + +* For any number that is a multiple of 3, print 'Fizz' +* For any number that is a multiple of 5, print 'Buzz' +* For any number that is a multiple of both 3 and 5, print 'FizzBuzz' +* For all other numbers, print the number. + +The output of your program will look something like this: +``` +=> 1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14, FizzBuzz, ..., 98, Fizz, Buzz +``` + +### Bonus +Can you write the program so that it will run for any range of numbers? From 5a444e9826d90d4f9f569870cc127cb3ad876f5f Mon Sep 17 00:00:00 2001 From: Eric Weissman Date: Mon, 4 Jan 2021 10:51:00 -0700 Subject: [PATCH 12/41] Adjust README to follow Section formatting --- README.md | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 33eef4a63..abd4e3603 100644 --- a/README.md +++ b/README.md @@ -6,14 +6,11 @@ Each day has a folder containing a `README.md` file with instructions for the da ### Pre-work Index -* [Day 0 - More Terminal Practice](day_0) -* [Day 1 - Strings and Numbers](day_1) -* [Day 2 - Arrays and Iteration](day_2) -* [Day 3 - If Statements and Loops](day_3) -* [Day 4 - Methods and Return Values](day_4) -* [Day 5 - Hashes](day_5) -* [Day 6 - Classes](day_6) -* [Day 7 - Build A Thing](day_7) +* [Section 1 - SUPER LEARNERS, Terminal and Ruby Foundations](section1) +* [Section 2 - ASKING QUESTIONS, Conditionals and Methods](section2) +* [Section 3 - GROWTH MINDSET, Hashes](section3) +* [Section 4 - HOW YOU USE YOUR TIME, Objects and Classes](section4) +* [Final Project - Final Project and Submission](finalProject) # Environment @@ -228,7 +225,7 @@ From here on out, all the work you do will be in your personal copy of this repo Here's _another_ video walk-through you may find helpful: -[![Walkthrough Day 1 and Git stuff](/images/backend-prework-day-one-thumb.jpg)](https://youtu.be/HYAzk6L63ek "Video Walkthrough for Day 1 & Git Stuff") +[![Walkthrough Git stuff](/images/backend-prework-day-one-thumb.jpg)](https://youtu.be/HYAzk6L63ek "Video Walkthrough for Git Stuff") Each day's `README` will walk you through the necessary steps to save your work. From e9ba0995192c5ef9b2cc13c60a5648c26f1c3588 Mon Sep 17 00:00:00 2001 From: Eric Weissman Date: Mon, 4 Jan 2021 10:53:33 -0700 Subject: [PATCH 13/41] Add instructions on expectations --- README.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/README.md b/README.md index abd4e3603..5ad94464f 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,22 @@ Each day has a folder containing a `README.md` file with instructions for the da * [Section 4 - HOW YOU USE YOUR TIME, Objects and Classes](section4) * [Final Project - Final Project and Submission](finalProject) +## What to Expect + +Through completing this pre-work, you can expect to get practice re-inforcing what you learned/are learning in Mod 0, learn more technical content, and deeply reflect on your mindsets and habits and start thinking about which of those mindsets and habits will help you learn to code, and which of those you may need to change. + +We will remind you of the best practices that follow from time-to-time, but to ground yourself in the work ahead, read them carefully. + +## Best Practices: Learning to Write Code + +**If you are stuck for longer than 30 minutes, know that it is always ok to ask for help!** The process of becoming a software developer is difficult, and learning to code is hard. At some point, everyone struggles. Struggle is a normal, healthy part of the learning process - don't give up if you hit a hard spot. If you consistently practice every day and don't take shortcuts, you will be on the path to learning how to code. When you reach out for help, challenge yourself to ask clear questions and use technical vocabulary. Speaking accurately about code is a great way to help lock in technical understanding. Use [this guide](https://gist.github.com/ericweissman/fb0241e226227867b6bc70a4d49227f5) to learn the optimial way to ask for help when you get stuck! + +**Process over Product.** When asking for help, do your best to seek understanding rather than `the answer` or `the solution`. Even if your helper gets you a solution that works, make sure to spend time on *why* it works, rather than just accepting the solution and moving on. + +**Type every line of code.** One of the best things you can do to set yourself for success is to make sure you type out all the code examples you see in the readings and exercises in this pre-work, *do not* copy and paste. The more hands-on-keyboard practice you can give yourself, the better. Copying and pasting won't help you solidify these concepts, manually typing all the code in will. This also applies to auto complete features in popular text editors. They are helpful, no doubt, but doing things the hard way at the beginning is a great way to hone your workflow later on. + +**Details matter.** Pay close attention to small details in syntax, spacing, and language. The most detailed oriented you are as you're working, the more reliable and well-crafted your code will be. In programming, being detail oriented helps cut down on buggy code and difficult to use systems. It can also help you notice differences in your code, enabling you to identify typos and mistakes more quickly. + # Environment Before we can experiment with coding out the concepts we will learn in Mod0, we need to do a bit more setup to prepare a Ruby-specific development environment. From a34ba34b6a62012fe9f385b8584d4076b5e6f16f Mon Sep 17 00:00:00 2001 From: Eric Weissman Date: Mon, 4 Jan 2021 10:55:41 -0700 Subject: [PATCH 14/41] Move all Day 1 - 7 to archived --- day_0/README.md | 71 ----------- day_0/images/finder.png | Bin 84321 -> 0 bytes day_0/images/spotlight.png | Bin 9652 -> 0 bytes day_0/images/terminal.png | Bin 16383 -> 0 bytes day_1/README.md | 194 ------------------------------- day_1/exercises/interpolation.rb | 25 ---- day_1/exercises/loops.rb | 18 --- day_1/exercises/numbers.rb | 16 --- day_1/exercises/strings.rb | 13 --- day_1/exercises/variables.rb | 29 ----- day_1/questions.md | 17 --- day_2/README.md | 46 -------- day_2/exercises/arrays.rb | 40 ------- day_2/exercises/iteration.rb | 28 ----- day_2/questions.md | 17 --- day_3/README.md | 45 ------- day_3/exercises/if_statements.rb | 65 ----------- day_3/questions.md | 13 --- day_4/README.md | 47 -------- day_4/exercises/methods.rb | 27 ----- day_4/questions.md | 11 -- day_5/README.md | 41 ------- day_5/exercises/hashes.rb | 28 ----- day_5/questions.md | 13 --- day_6/README.md | 44 ------- day_6/exercises/burrito.rb | 19 --- day_6/exercises/dog.rb | 30 ----- day_6/exercises/person.rb | 5 - day_6/questions.md | 13 --- day_7/10_speckled_frogs.md | 27 ----- day_7/README.md | 66 ----------- day_7/ceasar_cipher.md | 16 --- day_7/checker_board.md | 13 --- day_7/fizzbuzz.md | 16 --- 34 files changed, 1053 deletions(-) delete mode 100644 day_0/README.md delete mode 100644 day_0/images/finder.png delete mode 100644 day_0/images/spotlight.png delete mode 100644 day_0/images/terminal.png delete mode 100644 day_1/README.md delete mode 100644 day_1/exercises/interpolation.rb delete mode 100644 day_1/exercises/loops.rb delete mode 100644 day_1/exercises/numbers.rb delete mode 100644 day_1/exercises/strings.rb delete mode 100644 day_1/exercises/variables.rb delete mode 100644 day_1/questions.md delete mode 100644 day_2/README.md delete mode 100644 day_2/exercises/arrays.rb delete mode 100644 day_2/exercises/iteration.rb delete mode 100644 day_2/questions.md delete mode 100644 day_3/README.md delete mode 100644 day_3/exercises/if_statements.rb delete mode 100644 day_3/questions.md delete mode 100644 day_4/README.md delete mode 100644 day_4/exercises/methods.rb delete mode 100644 day_4/questions.md delete mode 100644 day_5/README.md delete mode 100644 day_5/exercises/hashes.rb delete mode 100644 day_5/questions.md delete mode 100644 day_6/README.md delete mode 100644 day_6/exercises/burrito.rb delete mode 100644 day_6/exercises/dog.rb delete mode 100644 day_6/exercises/person.rb delete mode 100644 day_6/questions.md delete mode 100644 day_7/10_speckled_frogs.md delete mode 100644 day_7/README.md delete mode 100644 day_7/ceasar_cipher.md delete mode 100644 day_7/checker_board.md delete mode 100644 day_7/fizzbuzz.md diff --git a/day_0/README.md b/day_0/README.md deleted file mode 100644 index ea3042ee8..000000000 --- a/day_0/README.md +++ /dev/null @@ -1,71 +0,0 @@ -# Dive Right In! - -You will likely spend the majority of your time in Module 1 in either the Terminal or your text editor. When you're new to programming, the terminal can seem like a scary place, but it has some advantages over other means of interacting with your computer. Perhaps the greatest advantage is that it allows programmers to build tools that they can share with each other without going through the process of creating a graphical user interface. This makes it easy to share code quickly so that it can be used in multiple projects. - -You already have had some exposure to the terminal in the [mod0 session 2: Terminal and Command Line](http://mod0.turing.io/session2/#terminal-and-command-line). Let's practice a little more! - -### Here's a video walk-through of how to navigate your mod 1 prework: - -[![Walkthrough Day 1 and Git stuff](/images/backend-prework-day-one-thumb.jpg)](https://youtu.be/HYAzk6L63ek "Video Walkthrough for Day 1 & Git Stuff") - -### Practice - -Use the terminal commands described in the video above to move around your computer. - -* Dig deep into one of your existing directories by using `cd` to move and `ls` to see what directories are available. -* Navigate out using `cd ../` to get back to your home directory. Use `pwd` to make sure you don't overshoot it! -* Dig deep into another directory, using `ls` as you go. -* Use `cd ~/` to navigate to your home directory. -* Navigate into your Downloads directory using `cd Downloads`. -* Navigate to your Desktop using `cd ~/Desktop`. -* Use `pwd` and `ls` to confirm your current location. - -Continue practicing these commands until you feel comfortable moving around without having to look at this lesson. - -## Making Things - -### Practice - -Lets get a little practice with `touch`, `mkdir`, `ls`, and `cd`: - -Use `mkdir` and `touch` to create the directories/files in the structure described below. - -```sh -|-- _secret_library - | - |--README.md - |--Gemfile - |--Rakefile - | - |--_lib - | | - | |--secret_library.rb - | |--secret_book.rb - | |--secret_librarian.rb - | |--patron.rb - | |--library_system.rb - | - |--_test - | - |--secret_library_test.rb - |--secret_book_test.rb - |--secret_librarian_test.rb - |--patron_test.rb - |--library_system_test.rb -``` - -Don't worry about putting any text into these files. For now, just create this structure and empty files. - -## Deleting Things - -### The rm Command - -Be careful when deleting something though the terminal! While we want to be comfortable using the very helpful `rm` command, once executed, the command cannot be undone. Lets learn more about `rm` before we practice: - -* `rm`: This will remove a file from your system. Be very careful with this and always double check the file you target! The terminal assumes you're a little more of an expert than the system does. `rm` doesn't move the file to the Trash, it removes it completely from your system. It basically moves the file to the trash, then deletes it immediately. No chance to stop it or change your mind. - -* `rm -rf`: Adding the `-r` and `-f` flags to the `rm` command will allow you to delete directories even if they have other files and/or directories inside of them. For more information on each of these flags enter `man rm` into your terminal. It will print out the manual for this command. - -### Practice - -Use `rm` and `rm -rf` to delete each of the files and directories you created in the Making Things section above. Note, that it would be possible to delete the entire directory that you created with just `rm -rf secret_library`. *Don't do this!* At this point, delete each of the files and directories individually to practice these commands. This will help you remember them better in the long run, which is the goal! More practice now will allow you to be more efficient in the future. diff --git a/day_0/images/finder.png b/day_0/images/finder.png deleted file mode 100644 index e1e0eedf0cc2747b9f625c0bf3abc85e55c2b1d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 84321 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ΑTAH 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 diff --git a/day_1/README.md b/day_1/README.md deleted file mode 100644 index 034ae11da..000000000 --- a/day_1/README.md +++ /dev/null @@ -1,194 +0,0 @@ -# Day 1 - Strings and Numbers - -Today, you will begin to learn the basics of Ruby. You will work through several tutorials which will help build your comfort running files and seeing output. You will also learn about two ways to represent data in Ruby: *Strings* and *Numbers*. - -In addition to learning Ruby basics, this day will also walk you through entering commands in the terminal to create files. By the end of the day, you should be very comfortable with the commands `cd` and `ls`, both very useful in navigating your machine, and the commands `mkdir` and `touch`, used to create directories and files on the machine. - -After completing the days work, you will use several git commands to save your work to your local git repository. You will then push your updates to your remote Github repository. Doing this each day will help you build muscle memory with git commands and get used to seeing the output they produce. We will dive deeper into the inner workings of git later. For now, most important is to follow along and know that we are using git to save our work, and Github to put it on the internet. - -### This lesson will have you using Git, Github, etc. Here's a video walkthrough - -[![Walkthrough Day 1 and Git stuff](/images/backend-prework-day-one-thumb.jpg)](https://youtu.be/HYAzk6L63ek "Video Walkthrough for Day 1 & Git Stuff") - -## Open your local copy of backend_mod_1_prework in Atom - -Using your terminal, open the local copy of this repo. To do this, enter these commands into your terminal: - -``` -cd ~ -ls -cd turing -ls -cd 0module -ls -cd backend_mod_1_prework -ls -cd day_1 -ls -atom . -``` - -This will open the day_1 directory in Atom. You should be able to see the directory and its contents in the file explorer on the left side of your Atom window. - -## An Introduction to Ruby - -[Read This Introduction](https://learnrubythehardway.org/book/intro.html) to the Learn Ruby The Hard Way Tutorial. To reiterate this introduction, ***DO NOT*** copy and paste code examples when working through lessons in your prework. Actually type each of them out. - -### Ruby Basics Lessons - -1. Next, you will complete several lessons from the Learn Ruby the Hard Way Tutorial. *For ***each*** lesson* ***follow these directions closely***: - - 1. Create a file within your `day_1` directory that will contain this lesson's work. Verify that you are within the directory by using terminal command `pwd`. If you are not, `cd` into your `day_1` directory. Once you are there, use the `touch` command in your terminal to create a file. For the first lesson, name this file `ex1.rb`. For each subsequent lesson, use `ex2.rb`, `ex3.rb`, so on, so forth. Refer to back to [day_0](../day_0) if you need a refresher on terminal commands. - - 1. Work through the lesson, **typing** the code into your file, and running it in the terminal with `ruby ex1.rb`, replacing `ex1` with the actual file name of what you'd like to run. Make sure the output you get is similar to what the lesson shows. If you get an error saying "No such file or directory", be sure to verify the directory you are located in via the terminal- running command `ls` should show the file you are trying to run. - - 1. Complete the Study Drills listed at the end of the lesson. - - 1. Read the Common Student Questions section. - -1. Check off the items below as you complete the steps you just read for each lesson. ***Remember to create a file containing your work for each lesson!*** - - - [ ] [A Good First Program](https://learnrubythehardway.org/book/ex1.html) - - - [ ] [Comments in Code](https://learnrubythehardway.org/book/ex2.html) - - - [ ] [Numbers and Math](https://learnrubythehardway.org/book/ex3.html) - - - [ ] [Variables and Names](https://learnrubythehardway.org/book/ex4.html) - - - [ ] [Strings](https://learnrubythehardway.org/book/ex5.html) - - - [ ] [More Strings](https://learnrubythehardway.org/book/ex6.html) - - - [ ] [Asking for Input](https://learnrubythehardway.org/book/ex11.html) - - - [ ] Have you created 7 `ex.rb` files with your code in them? - -1. Work through the [Strings](http://tutorials.jumpstartlab.com/projects/ruby_in_100_minutes.html#3.-strings) and [Numbers](http://tutorials.jumpstartlab.com/projects/ruby_in_100_minutes.html#5.-numbers) sections from Ruby in 100 Minutes. For each of these sections, open an `irb` session by typing `irb` into your terminal and type in the code snippets provided. - -## Exercises -- Each day contains an exercises directory containing files where you will practice writing code. - -Work through the files in the day_1/exercises directory. Complete them in this order: - -1. strings -1. numbers -1. variables -1. interpolation -1. loops - -## Questions -- Each day contains a questions.md file where you will answer questions about what you have learned. - -Answer the day 1 questions within the questions.md file. The `.md` file extension refers to markdown formatting. Markdown is a simple markup language to help format your text. [This article](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) shows everything you need for basic markdown formatting. - -## Save your work in Git - -When you are finished with all of the day_1 activities, follow these steps in order to save your work to your local git repository. - -1. Make sure you are in your `day_1` directory. Enter `ls` in your terminal- You should see the exercises directory, README.md, and questions.md all listed. - -1. In your terminal, enter `git status`. You should see output like this: - - ``` - On branch master - Changes not staged for commit: - (use "git add ..." to update what will be committed) - (use "git checkout -- ..." to discard changes in working directory) - - modified: exercises/interpolation.rb - modified: exercises/loops.rb - modified: exercises/numbers.rb - modified: exercises/strings.rb - modified: exercises/variables.rb - modified: questions.md - - Untracked files: - (use "git add ..." to include in what will be committed) - - ex1.rb - ex2.rb - ex3.rb - ex4.rb - ex5.rb - ex6.rb - ex7.rb - - no changes added to commit (use "git add" and/or "git commit -a") - ``` - - The command `git status` shows us information about files we changed. Don't worry too much about understanding what this all means just yet. What's important is that you get comfortable typing `git status` often. - -1. Enter `git add ex1.rb`. -1. Enter `git status`. Your status should now look a little different: - - ```On branch master - Changes to be committed: - (use "git reset HEAD ..." to unstage) - - new file: ex1.rb - - Changes not staged for commit: - (use "git add ..." to update what will be committed) - (use "git checkout -- ..." to discard changes in working directory) - - modified: exercises/interpolation.rb - modified: exercises/loops.rb - modified: exercises/numbers.rb - modified: exercises/strings.rb - modified: exercises/variables.rb - modified: questions.md - - Untracked files: - (use "git add ..." to include in what will be committed) - - ex2.rb - ex3.rb - ex4.rb - ex5.rb - ex6.rb - ex7.rb - ``` - - Under "Changes to be committed", "ex1.rb" is now listed. This means that git is now prepared to save this file. We want to do this for each file that has been modified. - -1. Enter `git add ex2.rb` -1. Enter `git status`. "ex2.rb" should now be listed under "Changes to be committed". -1. Do this for each of the "ex#.rb" files you created and for the "questions.md" file. -1. Enter `git status`. Under "Changes not staged for commit", you should see all the files in the exercises directory. -1. Enter `git add exercises`. -1. Enter `git status`. You should now see all those exercises files listed under "Changes to be committed". We just used `git add ` to add all the files located in a directory. -1. Enter `git status`. You should now see all your files listed under "Changes to be committed". If there are any files listed under "Untracked files" or "Changes not staged for commit", add them using `git add `. -1. Enter `git commit -m "Add day 1"`. Don't forget to close the quotes of your message! -1. Run `git status`. You should see this output: - -``` -On branch master -nothing to commit, working tree clean -``` - -Congratulations! You just saved your work to Git! If `git status` is showing any files, add them with `git add ` and commit them with `git commit -m "Add day 1"`. - - -## Push to Github - -You've saved your work to git on your **local** machine, but it is not yet accessible through your **remote** Github repository. Updating our **remote** Github repository with our **local** changes is called **pushing**. Push your code with the following command: - -``` -git push origin master -``` - -You should see output similar to this: - -``` -Counting objects: 9, done. -Delta compression using up to 4 threads. -Compressing objects: 100% (8/8), done. -Writing objects: 100% (9/9), 1.03 KiB | 1.03 MiB/s, done. -Total 9 (delta 2), reused 0 (delta 0) -remote: Resolving deltas: 100% (2/2), completed with 1 local object. -To github.com:JohnDoe/backend_mod_1_prework.git - e8ebd7a..32c0ed3 master -> master -``` - -You should now be able to log in to GitHub, navigate to your remote prework repository and see all the work you did today! diff --git a/day_1/exercises/interpolation.rb b/day_1/exercises/interpolation.rb deleted file mode 100644 index c7f4f47df..000000000 --- a/day_1/exercises/interpolation.rb +++ /dev/null @@ -1,25 +0,0 @@ -# In the below exercises, write code that achieves -# the desired result. To check your work, run this -# file by entering the following command in your terminal: -# `ruby day_1/exercises/interpolation.rb` - -# Example: Write code that uses the variables below to form a string that reads -# "The Chudley Cannons are Ron's favorite Quidditch team": -name = "Ron" -team = "Chudley Cannons" - -p "The #{team} are #{name}'s favorite Quidditch team" - -# Write code that uses the variables below to form a string that reads -# "The quick red fox jumped over the lazy brown dog": -speedy = "quick red fox" -slow_poke = "lazy brown dog" - -p # YOUR CODE HERE - -# Write code that uses the variables below to form a string that reads -# "In a predictable result, the tortoise beat the hare!": -slow_poke = "tortoise" -speedy = "hare" - -# YOUR CODE HERE diff --git a/day_1/exercises/loops.rb b/day_1/exercises/loops.rb deleted file mode 100644 index 90dc15ab1..000000000 --- a/day_1/exercises/loops.rb +++ /dev/null @@ -1,18 +0,0 @@ -# In the below exercises, write code that achieves -# the desired result. To check your work, run this -# file by entering the following command in your terminal: -# `ruby day_1/exercises/loops.rb` - -# Example: Write code that prints your name five times: -5.times do - p "Hermione Granger" -end - -# Write code that prints the sum of 2 plus 2 seven times: -7.times do - # YOUR CODE HERE -end - -# Write code that prints the phrase 'She sells seashells down by the seashore' -# ten times: -# YOUR CODE HERE diff --git a/day_1/exercises/numbers.rb b/day_1/exercises/numbers.rb deleted file mode 100644 index 9a5468a31..000000000 --- a/day_1/exercises/numbers.rb +++ /dev/null @@ -1,16 +0,0 @@ -# In the below exercises, write code that achieves -# the desired result. To check your work, run this -# file by entering the following command in your terminal: -# `ruby day_1/exercises/numbers.rb` - -# Example: Write code that prints the result of the sum of 2 and 2: -p 2 + 2 - -# Write code that prints the result of 7 subtracted from 83: -p #YOUR CODE HERE - -# Write code that prints the result of 6 multiplied by 53: -# YOUR CODE HERE - -# Write code that prints the result of the modulo of 10 into 54: -# YOUR CODE HERE diff --git a/day_1/exercises/strings.rb b/day_1/exercises/strings.rb deleted file mode 100644 index f2f903ffc..000000000 --- a/day_1/exercises/strings.rb +++ /dev/null @@ -1,13 +0,0 @@ -# In the below exercises, write code that achieves -# the desired result. To check your work, run this -# file by entering the following command in your terminal: -# `ruby day_1/exercises/strings.rb` - -# Example: Write code that prints your name to the terminal: -p "Alan Turing" - -# Write code that prints `Welcome to Turing!` to the terminal: -p #YOUR CODE HERE - -# Write code that prints `99 bottles of pop on the wall...` to the terminal: -# YOUR CODE HERE diff --git a/day_1/exercises/variables.rb b/day_1/exercises/variables.rb deleted file mode 100644 index a1e45bb26..000000000 --- a/day_1/exercises/variables.rb +++ /dev/null @@ -1,29 +0,0 @@ -# In the below exercises, write code that achieves -# the desired result. To check your work, run this -# file by entering the following command in your terminal: -# `ruby day_1/exercises/variables.rb` - -# Example: Write code that saves your name to a variable and -# prints what that variable holds to the terminal: -name = "Harry Potter" -p name - -# Write code that saves the string 'Dobby' to a variable and -# prints what that variable holds to the terminal: -house_elf = "Dobby" -# YOUR CODE HERE - -# Write code that saves the string 'Harry Potter must not return to Hogwarts!' -# and prints what that variable holds to the terminal: -# YOUR CODE HERE - -# Write code that adds 2 to the `students` variable and -# prints the result: -students = 22 -# YOUR CODE HERE -p students - -# Write code that subracts 2 from the `students` variable and -# prints the result: -# YOUR CODE HERE -p students diff --git a/day_1/questions.md b/day_1/questions.md deleted file mode 100644 index 73700e323..000000000 --- a/day_1/questions.md +++ /dev/null @@ -1,17 +0,0 @@ -## Day 1 Questions - -1. How would you print the string `"Hello World!"` to the terminal? - -1. What character is used to indicate comments in a ruby file? - -1. Explain the difference between an integer and a float? - -1. In the space below, create a variable `animal` that holds the string `"zebra"` - -1. How would you print the string `"zebra"` using the variable that you created above? - -1. What is interpolation? Use interpolation to print a sentence using the variable `animal`. - -1. What method is used to get input from a user? - -1. Name and describe two common string methods: diff --git a/day_2/README.md b/day_2/README.md deleted file mode 100644 index 0c8c1571c..000000000 --- a/day_2/README.md +++ /dev/null @@ -1,46 +0,0 @@ -# Day 2 - Arrays and Iteration - -Computers may not be smart, but they are good at processing things *very* quickly, like working through tons of data. To take full advantage, we need some way of storing lots of data. Today, you will learn about a Ruby data structure, the *Array*, that allows us to store collections of data. You will also learn about *iteration*: when you go through every element of an array. - -When you are all done with the lessons, exercises, and questions for today, you will once again use git to save your work locally, and then send your work to Github. - -## Open your local copy of backend_mod_1_prework - -Using your terminal, open your local copy of the forked repository you created during setup. To do this, you will need to use the terminal command `cd` to enter the directory that holds the repository. Once you are in the correct directory, use the terminal command `atom .` to open the prework repository. Revisit [day_1](../day_1) for more detail if needed. - -## Array and Iteration Lessons - -1. Work through the [Arrays](http://tutorials.jumpstartlab.com/projects/ruby_in_100_minutes.html#7.-arrays) section of Ruby in 100 Minutes. As you work through this section, research each of the methods mentioned by looking through the [Ruby docs for Arrays](https://ruby-doc.org/core-2.4.1/Array.html). Documentation like this might look intimidating, but diving in and practicing now will build your comfort level. Create a file in your day_2 directory called `array_methods.md` and describe what each method does in your own words. -1. Work through the following lessons. Any files that you create while working can be kept in today's `exercises` directory. - - - [ ] Turing's [Iteration and Each](http://backend.turing.io/module1/lessons/iteration_and_each) lesson. - - - [ ] [Booleans](https://learnrubythehardway.org/book/ex27.html) from Learn Ruby the Hard Way. - - - [ ] [Boolean Practice](https://learnrubythehardway.org/book/ex28.html) from Learn Ruby the Hard Way. - -1. Work through the exercise files in the day_2/exercises directory. Complete them in this order: - 1. arrays - 1. iteration - -1. Answer the questions in the questions.md file in the day_2 directory. - -## Save your work in Git - -When you finish all of the day_2 activities, enter the following commands in your terminal in order to save your work to your local git repository: - -1. `$ git add day_2/exercises` -1. `$ git add day_2/questions.md` -1. Use `git add day_2/` to add all additional files that you created today -1. `$ git status` - you should see only green filenames - if you see any that are red, continue to `git add` those files until `git status` shows all green files. -1. `$ git commit -m "Add Day 2 Work"` - -## Push to Github - -Remember- You've saved your work to git on your **local** machine, but it is not yet accessible through your **remote** Github repository. Push your code up to Github with the following command: - -``` -git push origin master -``` - -You should now be able to log in to GitHub, navigate to your remote prework repository and see all the work you did today! diff --git a/day_2/exercises/arrays.rb b/day_2/exercises/arrays.rb deleted file mode 100644 index f572a5ae6..000000000 --- a/day_2/exercises/arrays.rb +++ /dev/null @@ -1,40 +0,0 @@ -# In the below exercises, write code that achieves -# the desired result. To check your work, run this -# file by entering the following command in your terminal: -# `ruby day_2/exercises/arrays.rb` - -# Example: Write code that stores an array in a variable, -# then prints that array: -animals = ["Zebra", "Giraffe", "Elephant"] -p animals - -# Write code that stores an array of states in a variable, -# then prints that array: -states = #YOUR CODE HERE -p states - -# Write code that stores an array of foods in a variable, -# then prints that array: -# YOUR CODE HERE - -# Example: Write code that prints the number of elements -# in your above array of animals: -p animals.count - -# Write code that prints the number of elements -# in your above array of foods: -# YOUR CODE HERE - -# Write code that prints "Zebra" from your animals array: -# YOUR CODE HERE - -# Write code that prints the last item of your foods array: -# YOUR CODE HERE - -# Write code that adds "lion" to your animals array -# and prints the result (Hint- use a method): -# YOUR CODE HERE - -# Write code that removes the last element from your foods array -# and prints the result (Hint- use a method): -# YOUR CODE HERE diff --git a/day_2/exercises/iteration.rb b/day_2/exercises/iteration.rb deleted file mode 100644 index a801cb4fc..000000000 --- a/day_2/exercises/iteration.rb +++ /dev/null @@ -1,28 +0,0 @@ -# In the below exercises, write code that achieves -# the desired result. To check your work, run this -# file by entering the following command in your terminal: -# `ruby day_2/exercises/iteration.rb` - -# Example: Write code that iterates through a list of animals -# and print each animal: -animals = ["Zebra", "Giraffe", "Elephant"] - -animals.each do |animal| - p animal -end - -# Write code that iterates through a list of animals and prints -# "The is awesome!" for each animal: - -animals.each do |animal| - # YOUR CODE HERE -end - -# Write code that stores an array of foods in a variable, -# then iterates over that array to print -# "Add to shopping list" for each food item: -# YOUR CODE HERE - -# Write code that stores an array of numbers in a variable, -# then iterates over that array to print doubles of each number: -# YOUR CODE HERE diff --git a/day_2/questions.md b/day_2/questions.md deleted file mode 100644 index a179f0b04..000000000 --- a/day_2/questions.md +++ /dev/null @@ -1,17 +0,0 @@ -## Day 2 Questions - -1. Create an array containing the following strings: `"zebra", "giraffe", "elephant"`. - -1. Save the array you created above to a variable `animals`. - -1. Using the array `animals`, how would you access `"giraffe"`? - -1. How would you add `"lion"` to the `animals` array? - -1. Name and describe two additional array methods: - -1. What are the boolean values in Ruby? - -1. In Ruby, how would you evaluate if `2` is equal to `25`? What is the result of this evaluation? - -1. In Ruby, how would you evaluate if `25` is greater than `2`? What is the result of this evaluation? diff --git a/day_3/README.md b/day_3/README.md deleted file mode 100644 index d4534e0e1..000000000 --- a/day_3/README.md +++ /dev/null @@ -1,45 +0,0 @@ -# Day 3 - If Statements and Conditionals - -One of the most important concepts in computer programming is knowing when and how to tell the computer to do either _one_ thing or _another_ thing based on a set of simple criteria. We accomplish this with ***If-Statements*** and ***Conditionals***, which you will learn about today. - -When you are all done with the lessons, exercises, and questions for today, you will once again use git to save your work locally, and then send your work to Github. - -## Open your local copy of backend_mod_1_prework - -Using your terminal, open your local copy of the forked repository you created during setup. To do this, you will need to use the terminal command `cd` to enter the directory that holds the repository. Once you are in the correct directory, use the terminal command `atom .` to open the prework repository. Revisit [day_1](../day_1) for more detail if needed. - -## If statement and Conditional Lessons - -1. Work through the following lessons. Any files that you create while working can be kept in today's `exercises` directory. - - - [ ] [What If?](https://learnrubythehardway.org/book/ex29.html) from Learn Ruby the Hard Way. - - - [ ] [Else and If](https://learnrubythehardway.org/book/ex30.html) from Learn Ruby the Hard Way. - - - [ ] [Making Decisions](https://learnrubythehardway.org/book/ex31.html) from Learn Ruby the Hard Way. - - - [ ] [Conditionals](http://tutorials.jumpstartlab.com/projects/ruby_in_100_minutes.html#9.-conditionals) from Ruby in 100 Minutes. - -1. Work through the exercise files in the day_3/exercises directory. - -1. Answer the questions in the questions.md file in the day_3 directory. - -## Save your work in Git - -When you are finished with all of the day_3 activities, enter the following commands in your terminal in order to save your work to your local git repository: - -1. `$ git add day_3/exercises` -1. `$ git add day_3/questions.md` -1. Use `git add day_3/` to add all additional files that you created today -1. `$ git status` - you should see only green filenames - if you see any that are red, continue to `git add` those files until `git status` shows all green files. -1. `$ git commit -m "Add Day 3 Work"` - -## Push to Github - -Remember- You've saved your work to git on your **local** machine, but it is not yet accessible through your **remote** Github repository. Push your code up to Github with the following command: - -``` -git push origin master -``` - -You should now be able to log in to GitHub, navigate to your remote prework repository and see all the work you did today! diff --git a/day_3/exercises/if_statements.rb b/day_3/exercises/if_statements.rb deleted file mode 100644 index a80b96840..000000000 --- a/day_3/exercises/if_statements.rb +++ /dev/null @@ -1,65 +0,0 @@ -# In the below exercises, write code that achieves -# the desired result. To check your work, run this -# file by entering the following command in your terminal: -# `ruby day_3/exercises/if_statements.rb` - -# Example: Using the weather variable below, write code that decides -# what you should take with you based on the following conditions: - # if it is sunny, print "sunscreen" - # if it is rainy, print "umbrella" - # if it is snowy, print "coat" - # if it is icy, print "yak traks" - - weather = 'snowy' - - if weather == 'sunny' - p "sunscreen" - elsif weather == 'rainy' - p "umbrella" - elsif weather == 'snowy' - p "coat" - elsif weather == 'icy' - p "yak traks" - else - p "good to go!" - end - -# Experiment with manipulating the value held in variable 'weather' -# to print something other than 'coat' - - -################## -# Using the num_quarters variable defined below, determine -# if you have enough money to buy a gumball. A gumball costs -# two quarters. - -# Right now, the program will print -# out both "I have enough money for a gumball" and -# "I don't have enough money for a gumball". Write a -# conditional statement that prints only one or the other. - -# Experiment with manipulating the value held within num_quarters -# to make sure both conditions can be achieved. - -num_quarters = 0 - -puts "I have enough money for a gumball" -puts "I don't have enough money for a gumball" - - -##################### -# Using the variables defined below, write code that will tell you -# if you have the ingredients to make a pizza. A pizza requires -# at least two cups of flour and sauce. - -# You should be able to change the variables to achieve the following outputs: -# If cups_of_flour = 1 and has_sauce = true, print "I cannot make pizza" -# If cups_of_flour = 5 and has_sauce = false, print "I cannot make pizza" -# If cups_of_flour = 2 and has_sauce = true, print "I can make pizza" -# If cups_of_flour = 3 and has_sauce = true, print "I can make pizza" - -# Experiment with manipulating the value held within both variables -# to make sure all above conditions output what you expect. - -cups_of_flour = 1 -has_sauce = true diff --git a/day_3/questions.md b/day_3/questions.md deleted file mode 100644 index db6170fa7..000000000 --- a/day_3/questions.md +++ /dev/null @@ -1,13 +0,0 @@ -## Day 3 Questions - -1. What is a conditional statement? Give three examples. - -1. Why might you want to use an if-statement? - -1. What is the Ruby syntax for an if statement? - -1. How do you add multiple conditions to an if statement? - -1. Provide an example of the Ruby syntax for an if/elsif/else statement: - -1. Other than an if-statement, can you think of any other ways we might want to use a conditional statement? diff --git a/day_4/README.md b/day_4/README.md deleted file mode 100644 index 5fb1100bc..000000000 --- a/day_4/README.md +++ /dev/null @@ -1,47 +0,0 @@ -# Day 4 - Methods and Return Values - -On day 1 of the prework, you learned how to store information in Variables. Today, you will learn about another way to store information; more specifically, how to use Methods to create Return Values. In programming, we _often_ use methods, so this is an important concept to get familiar with! - -When you are all done with the lessons, exercises, and questions for today, you will once again use git to save your work locally, and then send your work to Github. - -## Open your local copy of backend_mod_1_prework - -Using your terminal, open your local copy of the forked repository you created during setup. To do this, you will need to use the terminal command `cd` to enter the directory that holds the repository. Once you are in the correct directory, use the terminal command `atom .` to open the prework repository. Revisit [day_1](../day_1) for more detail if needed. - -## Method Lessons - -1. Work through the following lessons. Any files that you create while working can be kept in today's `exercises` directory. - - _*Note*: In some of these lessons, the author refers to methods as functions. They are interchangable here, but at Turing, we will be use the word `method`._ - - - [ ] [Methods](https://launchschool.com/books/ruby/read/methods) from LaunchSchool. Work up to the `obj.method or method(obj)` header. - - - [ ] [Intro to Methods](https://learnrubythehardway.org/book/ex18.html) from Learn Ruby the Hard Way. - - - [ ] [Methods and Variables](https://learnrubythehardway.org/book/ex19.html) from Learn Ruby the Hard Way. - - - [ ] [Methods and Return Values](https://learnrubythehardway.org/book/ex21.html) from Learn Ruby the Hard Way. - -1. Work through the methods.rb file in the day_4/exercises directory. - -1. Answer the questions in the questions.md file in the day_4 directory. - -## Save your work in Git - -When you are finished with all of the day_4 activities, enter the following commands in your terminal in order to save your work to your local git repository: - -1. `$ git add day_4/exercises` -1. `$ git add day_4/questions.md` -1. Use `git add day_4/` to add all additional files that you created today -1. `$ git status` - you should see only green filenames - if you see any that are red, continue to `git add` those files until `git status` shows all green files. -1. `$ git commit -m "Add Day 4 Work"` - -## Push to Github - -Remember- You've saved your work to git on your **local** machine, but it is not yet accessible through your **remote** Github repository. Push your code up to Github with the following command: - -``` -git push origin master -``` - -You should now be able to log in to GitHub, navigate to your remote prework repository and see all the work you did today! diff --git a/day_4/exercises/methods.rb b/day_4/exercises/methods.rb deleted file mode 100644 index 6ed338e5d..000000000 --- a/day_4/exercises/methods.rb +++ /dev/null @@ -1,27 +0,0 @@ -# In the below exercises, write code that achieves -# the desired result. To check your work, run this -# file by entering the following command in your terminal: -# `ruby day_4/exercises/methods.rb` - -# Example: Write a method that when called will print your name: -def print_name - p "Severus Snape" -end - -print_name - -# Write a method that takes a name as an argument and prints it: -def print_name(name) - # YOUR CODE HERE -end - -print_name("Albus Dumbledore") - -# Write a method that takes in 2 numbers as arguments and prints -# their sum. Then call your method: -# YOUR CODE HERE - -# Write a method that takes in two strings as arguments and prints -# a concatenation of those two strings. Example: The arguments could be -# (man, woman) and the end result might output: "When Harry Met Sally". -# Then call your method: diff --git a/day_4/questions.md b/day_4/questions.md deleted file mode 100644 index af17ab4da..000000000 --- a/day_4/questions.md +++ /dev/null @@ -1,11 +0,0 @@ -## Day 4 Questions - -1. In your own words, what is the purpose of a method? - -1. Create a method named `hello` that will print `"Sam I am"`. - -1. Create a method named `hello_someone` that takes an argument of `name` and prints `"#{name} I am"`. - -1. How would you call or execute the method that you created above? - -1. What questions do you have about methods in Ruby? diff --git a/day_5/README.md b/day_5/README.md deleted file mode 100644 index 28be6b8fb..000000000 --- a/day_5/README.md +++ /dev/null @@ -1,41 +0,0 @@ -# Day 5 - Hashes - -Earlier in the week, you learned about one type of collection storage - Arrays. Today, you will learn about another collection storage device called a Hash. As professional developers, you will use hashes on a near daily basis- a solid understanding of how to build hashes and how to retrieve information from them will make life much easier. - -When you are all done with the lessons, exercises, and questions for today, you will once again use git to save your work locally, and then send your work to Github. - -## Open your local copy of backend_mod_1_prework - -Using your terminal, open your local copy of the forked repository you created during setup. Hopefully you are getting the hang of this, but revisit [day_1](../day_1) for more detail if needed. - -## Hash Lessons - -1. Work through the following lessons. Any files that you create while working can be kept in today's `exercises` directory. - - - [ ] [Hashes](https://learnrubythehardway.org/book/ex39.html) from Learn Ruby the Hard Way. - - - [ ] [Hashes](http://tutorials.jumpstartlab.com/projects/ruby_in_100_minutes.html#8.-hashes) from Ruby in 100 minutes. - -1. Work through the hashes.rb file in the day_5/exercises directory. - -1. Answer the questions in the questions.md file in the day_5 directory. - -## Save your work in Git - -When you are finished with all of the day_5 activities, enter the following commands in your terminal in order to save your work to your local git repository: - -1. `$ git add day_5/exercises` -1. `$ git add day_5/questions.md` -1. Use `git add day_5/` to add all additional files that you created today -1. `$ git status` - you should see only green filenames - if you see any that are red, continue to `git add` those files until `git status` shows all green files. -1. `$ git commit -m "Add Day 5 Work"` - -## Push to Github - -Remember- You've saved your work to git on your **local** machine, but it is not yet accessible through your **remote** Github repository. Push your code up to Github with the following command: - -``` -git push origin master -``` - -You should now be able to log in to GitHub, navigate to your remote prework repository and see all the work you did today! diff --git a/day_5/exercises/hashes.rb b/day_5/exercises/hashes.rb deleted file mode 100644 index 99fcebb77..000000000 --- a/day_5/exercises/hashes.rb +++ /dev/null @@ -1,28 +0,0 @@ -# In the below exercises, write code that achieves -# the desired result. To check your work, run this -# file by entering the following command in your terminal: -# `ruby day_5/exercises/hashes.rb` - -# Example: Write code that prints a hash holding grocery store inventory: -foods = {apples: 23, grapes: 507, eggs: 48} -p foods - -# Write code that prints a hash holding zoo animal inventory: -zoo = #YOUR CODE HERE -p zoo - -# Write code that prints all of the 'keys' of the zoo variable -# you created above: -# YOUR CODE HERE - -# Write code that prints all of the 'values' of the zoo variable -# you created above: -# YOUR CODE HERE - -# Write code that prints the value of the first animal of the zoo variable -# you created above: -# YOUR CODE HERE - -# Write code that adds an animal to the zoo hash. -# Then, print the updated hash: -# YOUR CODE HERE diff --git a/day_5/questions.md b/day_5/questions.md deleted file mode 100644 index d059e12c6..000000000 --- a/day_5/questions.md +++ /dev/null @@ -1,13 +0,0 @@ -## Day 5 Questions - -1. What is a Hash, and how is it different from an Array? - -1. In the space below, create a Hash stored to a variable named `pet_store`. This hash should hold an inventory of items and the number of that item that you might find at a pet store. - -1. Given the following `states = {"CO" => "Colorado", "IA" => "Iowa", "OK" => "Oklahoma"}`, how would you access the value `"Iowa"`? - -1. With the same hash above, how would we get all the keys? How about all the values? - -1. What is another example of when we might use a hash? In your example, why is a hash better than an array? - -1. What questions do you still have about hashes? diff --git a/day_6/README.md b/day_6/README.md deleted file mode 100644 index 829fe4809..000000000 --- a/day_6/README.md +++ /dev/null @@ -1,44 +0,0 @@ -# Day 6 - Classes - -Today, you are going to be learning about Objects and Classes. In ruby, Classes are one of the tools we use to group together specific Methods that are meant to work together, or on the same type of Object. Arriving at Turing with a strong understanding of how to build a class, and how to call Methods on that class will make your first couple of weeks go smoothly! - -When you are all done with the lessons, exercises, and questions for today, you will once again use git to save your work locally, and then send your work to Github. - -## Open your local copy of backend_mod_1_prework -Using your terminal, open your local copy of the forked repository you created during setup. Hopefully you are getting the hang of this, but revisit [day_1](../day_1) for more detail if needed. - -## Class lessons - -1. Work through the following lessons. Any files that you create while working can be kept in today's `exercises` directory. - - - [ ] [What Are Objects](https://launchschool.com/books/oo_ruby/read/the_object_model#whatareobjects) section from LaunchSchool. - - - [ ] [Classes Define Objects](https://launchschool.com/books/oo_ruby/read/the_object_model#classesdefineobjects) section from LaunchSchool. - - - [ ] [Classes and Objects Part 1](https://launchschool.com/books/oo_ruby/read/classes_and_objects_part1) from LaunchSchool. - - - [ ] [Objects, Attributes and Methods](http://tutorials.jumpstartlab.com/projects/ruby_in_100_minutes.html#11.-objects,-attributes,-and-methods) from Ruby in 100 Minutes. - -1. Work through the files in the day_6/exercises directory. - -1. Answer the questions in the questions.md file in the day_6 directory. - -## Save your work in Git - -When you are finished with all of the day_6 activities, enter the following commands in your terminal in order to save your work to your local git repository: - -1. `$ git add day_6/exercises` -1. `$ git add day_6/questions.md` -1. Use `git add day_6/` to add all additional files that you created today -1. `$ git status` - you should see only green filenames - if you see any that are red, continue to `git add` those files until `git status` shows all green files. -1. `$ git commit -m "Add Day 6 Work"` - -## Push to Github - -Remember- You've saved your work to git on your **local** machine, but it is not yet accessible through your **remote** Github repository. Push your code up to Github with the following command: - -``` -git push origin master -``` - -You should now be able to log in to GitHub, navigate to your remote prework repository and see all the work you did today! diff --git a/day_6/exercises/burrito.rb b/day_6/exercises/burrito.rb deleted file mode 100644 index 967f68b6c..000000000 --- a/day_6/exercises/burrito.rb +++ /dev/null @@ -1,19 +0,0 @@ -# Add the following methods to this burrito class and -# call the methods below the class: -# 1. add_topping -# 2. remove_topping -# 3. change_protein - -class Burrito - attr_reader :protein, :base, :toppings - def initialize(protein, base, toppings) - @protein = protein - @base = base - @toppings = toppings - end -end - -dinner = Burrito.new("Beans", "Rice", ["cheese", "salsa", "guacamole"]) -p dinner.protein -p dinner.base -p dinner.toppings diff --git a/day_6/exercises/dog.rb b/day_6/exercises/dog.rb deleted file mode 100644 index 03221314d..000000000 --- a/day_6/exercises/dog.rb +++ /dev/null @@ -1,30 +0,0 @@ -# In the dog class below, write a `play` method that makes -# the dog hungry. Call that method below the class, and -# print the dog's hunger status. - -class Dog - attr_reader :breed, :name, :age, :hungry - - def initialize(breed, name, age) - @breed = breed - @name = name - @age = age - @hungry = true - end - - def bark - p "woof!" - end - - def eat - @hungry = false - end -end - -fido = Dog.new("Bernese", "Fido", 4) -p fido.breed -p fido.name -p fido.age -p fido.hungry -fido.eat -p fido.hungry diff --git a/day_6/exercises/person.rb b/day_6/exercises/person.rb deleted file mode 100644 index 2c26e9570..000000000 --- a/day_6/exercises/person.rb +++ /dev/null @@ -1,5 +0,0 @@ -# Create a person class with at least 2 attributes and 2 behaviors. -# Call all person methods below the class and print results -# to the terminal that show the methods in action. - -# YOUR CODE HERE diff --git a/day_6/questions.md b/day_6/questions.md deleted file mode 100644 index f58ca5f71..000000000 --- a/day_6/questions.md +++ /dev/null @@ -1,13 +0,0 @@ -## Day 6 Questions - -1. In your own words, what is a Class? - -1. What is an attribute of a Class? - -1. What is behavior of a Class? - -1. In the space below, create a Dog class with at least 2 attributes and 2 behaviors: - -1. How do you create an instance of a class? - -1. What questions do you still have about classes in Ruby? diff --git a/day_7/10_speckled_frogs.md b/day_7/10_speckled_frogs.md deleted file mode 100644 index 67789f479..000000000 --- a/day_7/10_speckled_frogs.md +++ /dev/null @@ -1,27 +0,0 @@ -## 10 Speckled Frogs - -Create a file named `10_speckled_frogs.rb` and within that file, write several a program that will print the following nursery rhyme: - -> 3 speckled frogs sat on a log -> eating some most delicious bugs. -> One jumped in the pool where its nice and cool, -> then there were 2 speckled frogs. -> -> 2 speckled frogs sat on a log -> eating some most delicious bugs. -> One jumped in the pool where its nice and cool, -> then there was 1 speckled frogs. -> -> 1 speckled frog sat on a log -> eating some most delicious bugs. -> One jumped in the pool where its nice and cool, -> then there were no more speckled frogs! - -### Required -Make your program print the rhyme above for *10* frogs, with attention to where language changes. - -### Extension 1 -Print word versions of each number in the first and fourth lines, for example, the first verse in the above example would print 'Three speckled frogs...' and 'were two speckled frogs'. - -### Extension 2 -Make your program work for any number of frogs. diff --git a/day_7/README.md b/day_7/README.md deleted file mode 100644 index c9a053cd5..000000000 --- a/day_7/README.md +++ /dev/null @@ -1,66 +0,0 @@ -# Day 7 - Build a Thing! - -Congrats on making it through the first 6 days of Prework! Today, you will put together everything you have learned to actually build a program! Hopefully, this will show you how much you have already accomplished in your first week as a programmer! - -When you have completed the activities for day 7, you will follow instructions to submit your work through a GitHub Pull Request. - -## Open your local copy of backend_mod_1_prework -Using your terminal, open your local copy of the forked repository you created during setup. Hopefully you are getting the hang of this, but revisit [day_1](../day_1) for more detail if needed. - -## Make a Program - -1. Using what you have learned in the last week, complete both of the projects below. Put any files related to the projects you choose in a day_7 directory. - - 1. [FizzBuzz](./fizzbuzz.md) - 1. [10 Speckled Frogs](./10_speckled_frogs.md) - -1. When you are finished with your projects, you should add, commit, and push your changes to GitHub. - -1. Add a `high_level.md` file to your day_7 directory. In that file, write up high level notes about how you would solve one of the following problems. When you're finished writing your detailed notes, you can also choose to code a solution to the problem(s). - - 1. [Ceasar Cipher](./ceasar_cipher.md) - 1. [Checker Board](./checker_board.md) - -1. When you are finished with your high level explanation, you should add, commit, and push your changes to GitHub. - -1. Log in to GitHub, navigate to your remote prework repository and make sure all work from all the days is there! - -## Submission - -When you have completed *all* the activities described above, follow the steps below to submit your technical prework. - -1. Go to *your* prework repository on GitHub - -1. click on `New Pull Request` per the image below: - - ![New PR](https://i.imgur.com/lGKNxwC.png) - -1. On the Pull Request page, make sure you see something similar to below (but with your username): - - ![New PR](https://i.imgur.com/CwJH8os.png) - -1. Click on `Create New Pull Request` (circled in the image above). - -1. Enter `YOUR NAME` as the title of the pull request, and click `Create pull request` as shown below: - - ![Create PR](https://i.imgur.com/CQQzfNc.png) - -1. ***[Please complete this form to submit your prework.](https://forms.gle/wxoVuhHKjrRyvGW2A)*** Be sure to include links to your Gear Up pre-work gist and your technical pre-work GitHub repository. The link to your technical pre-work GitHub repository will look something like: `https://github.com/YOUR_GITHUB_USERNAME/backend_mod_1_prework`. (using your own GitHub username, of course!) - -And with that form submission, ***you're done!!!*** Any feedback after this has been reviewed will be Slacked to you. Can't wait to see you on the first day of class!! - ----------------------------------- - -# Extension (optional, after pre-work completed) - -You've finished your Mod 1 pre-work assignment! - -But there's always more to learn! - -If you're interested in challenging yourself _even more_ and getting a step ahead in your coding abilities before your first day, we recommend working on either: - -- [Turing's ruby exercises repo](https://github.com/turingschool/ruby-exercises) -- [A back-end grad's advice and useful study resources](https://josh.works/turing-backend-prep-01-intro) -- [Credit Check](https://github.com/turingschool-examples/credit_check). - -If you do Credit Check, follow the same steps as you did with your pre-work to fork and clone the repo on to your local computer. diff --git a/day_7/ceasar_cipher.md b/day_7/ceasar_cipher.md deleted file mode 100644 index 7390a70bc..000000000 --- a/day_7/ceasar_cipher.md +++ /dev/null @@ -1,16 +0,0 @@ -## Ceasar Cipher - -Also known as a shift cipher, the Ceasar Cipher is one of the oldest and simplest encoding techniques. A Ceasar Cipher works by shifting the alphabet by a defined number of letters down the alphabet. For example, with a left shift of 3, 'D' would be replaced by 'A', 'E' would be replaced by 'B', and so on. See below for a full alphabet example with a left shift of 3: - -``` -plain: ABCDEFGHIJKLMNOPQRSTUVWXYZ -cipher: XYZABCDEFGHIJKLMNOPQRSTUVW -``` - -Create a file named caesar_cipher.rb and within that file, write a program that will take any string, and encode it based on a shift value provided by the user. The interaction pattern for this program might look something like this: - -``` -cipher = CeasarCipher.new -cipher.encode("Hello World", 5) -=> "CZGGJ RJMGY" -``` diff --git a/day_7/checker_board.md b/day_7/checker_board.md deleted file mode 100644 index e8220394a..000000000 --- a/day_7/checker_board.md +++ /dev/null @@ -1,13 +0,0 @@ -## Checker Board - -Create a file called checker_board.rb and within that file, write a program that will print a checkerboard based on the size *indicated by the user*. On this board, the black spaces will be represented with 'X' and the white spaces will be represented with ' '. An example of the output for a size 6 board would look like this: - -``` -X X X - X X X -X X X - X X X -X X X - X X X - ``` - \ No newline at end of file diff --git a/day_7/fizzbuzz.md b/day_7/fizzbuzz.md deleted file mode 100644 index b2a5a8e4b..000000000 --- a/day_7/fizzbuzz.md +++ /dev/null @@ -1,16 +0,0 @@ -## FizzBuzz - -Create a file named fizzbuzz.rb and within that file, write a program that prints something for each number from 1 to 100 with the following rules: - -* For any number that is a multiple of 3, print 'Fizz' -* For any number that is a multiple of 5, print 'Buzz' -* For any number that is a multiple of both 3 and 5, print 'FizzBuzz' -* For all other numbers, print the number. - -The output of your program will look something like this: -``` -=> 1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14, FizzBuzz, ..., 98, Fizz, Buzz -``` - -### Bonus -Can you write the program so that it will run for any range of numbers? From 4969ec427bc5f4b7696d6527bc9b49c9ed7692a5 Mon Sep 17 00:00:00 2001 From: Eric Weissman Date: Mon, 4 Jan 2021 14:08:44 -0700 Subject: [PATCH 15/41] Adjust to main branch rather than master --- README.md | 4 ++-- section1/README.md | 10 +++++----- section2/README.md | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 5ad94464f..a6c6d969d 100644 --- a/README.md +++ b/README.md @@ -233,13 +233,13 @@ Resolving deltas: 100% (332/332), done. $ cd backend_mod_1_prework $ git status . // If everything worked correctly, you should see: -On branch master +On branch main nothing to commit, working tree clean ``` From here on out, all the work you do will be in your personal copy of this repository. Throughout Mod 0, we may call this your "prework repository" or "backend prework"... this refers to your forked copy of this `backend_mod_1_prework` repository that you have just now cloned to your device. -Here's _another_ video walk-through you may find helpful: +Here's _another_ video walk-through you may find helpful. **NOTE - The video may reference a "master" branch - we have renamed this branch to "main"** [![Walkthrough Git stuff](/images/backend-prework-day-one-thumb.jpg)](https://youtu.be/HYAzk6L63ek "Video Walkthrough for Git Stuff") diff --git a/section1/README.md b/section1/README.md index b107c8c14..b9d65520f 100644 --- a/section1/README.md +++ b/section1/README.md @@ -201,7 +201,7 @@ When you are finished with all of the `section1` exercises and reflections, foll 2. In your terminal, run `git status`. You should see output like this: ``` -On branch master +On branch main Changes not staged for commit: (use "git add ..." to update what will be committed) (use "git checkout -- ..." to discard changes in working directory) @@ -219,7 +219,7 @@ The command `git status` shows us information about files we changed. Don't worr 3. Run `git add reflection.md`. 4. Run `git status`. Your status should now look a little different: -```On branch master +```On branch main Changes to be committed: (use "git reset HEAD ..." to unstage) @@ -243,7 +243,7 @@ Under "Changes to be committed", It now lists "reflection.md". This means that g 9. Run `git status`. You should see this output: ``` -On branch master +On branch main nothing to commit, working tree clean ``` @@ -254,7 +254,7 @@ Congratulations! You just saved your work to Git! If `git status` is showing any You've saved your work to Git on your local machine, but it is not yet accessible through your remote GitHub repository. Updating our remote GitHub repository with our local changes is called pushing. Push your code with the following command: ``` -git push origin master +git push origin main ``` You should see output _similar_ to this: @@ -267,7 +267,7 @@ Writing objects: 100% (9/9), 1.03 KiB | 1.03 MiB/s, done. Total 9 (delta 2), reused 0 (delta 0) remote: Resolving deltas: 100% (2/2), completed with 1 local object. To github.com:your-username/frontend_mod_1_prework.git - e8ebd7a..32c0ed3 master -> master + e8ebd7a..32c0ed3 main -> main ``` You should now be able to log in to GitHub, navigate to your remote prework repository and see all the work you did in this section! diff --git a/section2/README.md b/section2/README.md index d831ac968..b81832248 100644 --- a/section2/README.md +++ b/section2/README.md @@ -102,7 +102,7 @@ When you are finished with all of the `section2` activities, use your terminal t You've save your work to git on your local machine, but it is not yet accessible through your remote GitHub repository. Updating our remote GitHub repository with our local changes is called **pushing**. Push your code with the following command: ``` -git push origin master +git push origin main ``` You should now be able to log in to GitHub, navigate to your remote prework repository and see all the work you did in this section! From 9078c461f200e353ddcc253c2857fb2f9bed3144 Mon Sep 17 00:00:00 2001 From: Eric Weissman Date: Mon, 4 Jan 2021 14:51:12 -0700 Subject: [PATCH 16/41] Adjust deliverables in index --- section4/README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/section4/README.md b/section4/README.md index 90217917e..cdc45d668 100644 --- a/section4/README.md +++ b/section4/README.md @@ -5,7 +5,6 @@ Section 4 is estimated to take a total of 10-14 hours to complete. Similar to th - [Vocabulary](#Vocabulary) - [Part A: How You Spend Your Time](#Part-A-How-You-Spend-Your-Time) - [Part B: Classes](#Part-B-Classes) -- [Deliverables](#Deliverables) ## Vocabulary From 07825e754326228900941f5900229c3cd6c9e074 Mon Sep 17 00:00:00 2001 From: Eric Weissman Date: Mon, 11 Jan 2021 14:10:24 -0700 Subject: [PATCH 17/41] Adjust Section 1 readme --- section1/README.md | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/section1/README.md b/section1/README.md index b9d65520f..22e0978bc 100644 --- a/section1/README.md +++ b/section1/README.md @@ -32,12 +32,6 @@ Here's what we ask you do: - re-assignment (of a variable) - concatenation -### JavaScript Reserved Keywords - -- `console.log()` -- `var` -- `true` -- `false` ## Part A Super Learner Habits @@ -172,12 +166,11 @@ This will open the `section1` directory in Atom. You should be able to see the d - [ ] [Asking for Input](https://learnrubythehardway.org/book/ex11.html) - - [ ] Have you created 7 `ex.rb` files with your code in them? 1. Work through the [Strings](http://tutorials.jumpstartlab.com/projects/ruby_in_100_minutes.html#3.-strings) and [Numbers](http://tutorials.jumpstartlab.com/projects/ruby_in_100_minutes.html#5.-numbers) sections from Ruby in 100 Minutes. For each of these sections, open an `irb` session by typing `irb` into your terminal and type in the code snippets provided. ## Exercises -- Each day contains an exercises directory containing files where you will practice writing code. +- Each section contains an exercises directory containing files where you will practice writing code. Work through the files in the section1/exercises directory. Complete them in this order: From a88f311c6fc67663ff9e40371de8d1dbbf1295dc Mon Sep 17 00:00:00 2001 From: Eric Weissman Date: Mon, 11 Jan 2021 14:12:23 -0700 Subject: [PATCH 18/41] Adjust deliverables --- section1/README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/section1/README.md b/section1/README.md index 22e0978bc..d985f6f11 100644 --- a/section1/README.md +++ b/section1/README.md @@ -6,7 +6,6 @@ Section 1 is estimated to take a total of 6-10 hours to complete. Part C is the - [Part A: Super Learner Habits](#Part-A-Super-Learner-Habits) - [Part B: Terminal](#Part-B-Terminal) - [Part C: Ruby Foundations](#Part-C-Ruby-Foundations) -- [Deliverables](#Deliverables) ## Vocabulary @@ -30,7 +29,7 @@ Here's what we ask you do: - variable - assignment operator - re-assignment (of a variable) -- concatenation +- interpolation ## Part A Super Learner Habits @@ -271,6 +270,5 @@ You should now be able to log in to GitHub, navigate to your remote prework repo - [Part A: Super Learner Habits](#Part-A-Super-Learner-Habits) - [Part B: Terminal](#Part-B-Terminal) - [Part C: Ruby Foundations](#Part-C-Ruby-Foundations) -- [Deliverables](#Deliverables) 🚀 [Go to Section 2](../section2) From bdeb64081c8aced04c8f70445ec6ef99f2831974 Mon Sep 17 00:00:00 2001 From: Eric Weissman Date: Mon, 11 Jan 2021 14:15:57 -0700 Subject: [PATCH 19/41] Remove outdated language from instructions --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index a6c6d969d..51da4ca99 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ This repository will walk you through the Mod 1 Pre-work for the Backend program at Turing. -Each day has a folder containing a `README.md` file with instructions for the day, exercises, and questions. Please complete all the exercises and questions, as well as lessons listed in the day's readme. +Each day has a folder containing a `README.md` file with instructions for the section, exercises, and questions. Please complete all the exercises and questions, as well as lessons listed in the section's README. ### Pre-work Index @@ -47,7 +47,7 @@ First, let's get a Ruby version management tool on our machines. ## Set up Ruby Environment Manager: [rbenv](https://github.com/rbenv/rbenv#homebrew-on-mac-os-x) -Over the years, Ruby has evolved through various version releases over time that contain new features and upgrades. Version 0.95, the very first, was released in 1995, and at the beginning of year 2020, we're at version 2.7. +Over the years, Ruby has evolved through various version releases over time that contain new features and upgrades. Version 0.95, the very first, was released in 1995, and at the beginning of year 2021, we're at version 2.7. Generally, programs written in one version of Ruby will run just fine on another version, but sometimes incompatibilities can be encountered, meaning that particular program needs to be run with a specific version of Ruby. @@ -176,7 +176,7 @@ $ rbenv rehash ## Terminal -We will be referencing many terminal commands throughout the prework. It is recommended that you practice using terminal commands before getting started with day_1. +We will be referencing many terminal commands throughout the prework. It is recommended that you practice using terminal commands before getting started with section1. [Check out day_0 to practice!](day_0) @@ -245,7 +245,7 @@ Here's _another_ video walk-through you may find helpful. **NOTE - The video may Each day's `README` will walk you through the necessary steps to save your work. -To begin, open your terminal and `cd` into the `day_0` directory. Follow the instructions contained in the `README.md` file, and have fun experimenting! +To begin, open your terminal and `cd` into the `section1` directory. Follow the instructions contained in the `README.md` file, and have fun experimenting! ---------------------------------- From 409f3392a721ed08d11d214a381f07dd7dfae694 Mon Sep 17 00:00:00 2001 From: Eric Weissman Date: Mon, 11 Jan 2021 14:16:21 -0700 Subject: [PATCH 20/41] Add extensions --- finalProject/README.md | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/finalProject/README.md b/finalProject/README.md index ddb2acbd3..02d97adbe 100644 --- a/finalProject/README.md +++ b/finalProject/README.md @@ -45,4 +45,18 @@ When you have completed *all* the activities described above, follow the steps b 5. Please complete the form to submit your prework available [here](https://forms.gle/wxoVuhHKjrRyvGW2A). Be sure to include links for your Gear Up pre-work gist and your technical pre-work GitHub repository. The link to your technical pre-work GitHub repository will be in the format https://github.com/YOUR_GITHUB_USERNAME/frontend-mod-1-prework. (using _your_ own GitHub username) -🏔You did it! This is the end of the pre-work. Continue to monitor slack (and emails from GitHub) for feedback from your instructor. \ No newline at end of file +🏔You did it! This is the end of the pre-work. Continue to monitor slack (and emails from GitHub) for feedback from your instructor. + +# Extensions (optional, after pre-work completed) + +You've finished your Mod 1 pre-work assignment! + +But there's always more to learn! + +If you're interested in challenging yourself _even more_ and getting a step ahead in your coding abilities before your first day, we recommend working on either: + +- [Turing's ruby exercises repo](https://github.com/turingschool/ruby-exercises) +- [A back-end grad's advice and useful study resources](https://josh.works/turing-backend-prep-01-intro) +- [Credit Check](https://github.com/turingschool-examples/credit_check). + +If you do Credit Check, follow the [same steps](#forking-the-module-1-prework-repository) as you did previously to fork and clone this repo on to your local computer. \ No newline at end of file From 752212dda824cc1c23532d6933320507a356d5c4 Mon Sep 17 00:00:00 2001 From: Eric Weissman Date: Mon, 11 Jan 2021 14:55:36 -0700 Subject: [PATCH 21/41] Remove deliverales language --- section1/README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/section1/README.md b/section1/README.md index d985f6f11..2420f2b7b 100644 --- a/section1/README.md +++ b/section1/README.md @@ -48,8 +48,6 @@ Visit the [Turing Terminal](https://learn-terminal.turing.io/) and read through 👩‍💻 Complete all three Challenges. -Take a screenshot of your "complete" notification and keep on your desktop or in a file; it will be part of your [deliverables](#Deliverables) at the end of this section. [This is a guide on taking screenshots on a Mac](https://support.apple.com/en-us/HT201361). - ### Making Things, Navigating #### Commands From 2a22f36f3726d971ae1026be4568a50552fcf961 Mon Sep 17 00:00:00 2001 From: Eric Weissman Date: Mon, 18 Jan 2021 13:06:21 -0700 Subject: [PATCH 22/41] Adjust section 1 exercises --- section1/exercises/booleans.rb | 15 +++++++++++++++ section1/exercises/interpolation.rb | 5 +++++ section1/exercises/loops.rb | 4 ++++ section1/exercises/strings.rb | 2 ++ section1/exercises/variables.rb | 30 +++++++++++++++++++++++++++++ 5 files changed, 56 insertions(+) create mode 100644 section1/exercises/booleans.rb diff --git a/section1/exercises/booleans.rb b/section1/exercises/booleans.rb new file mode 100644 index 000000000..d3216d9d5 --- /dev/null +++ b/section1/exercises/booleans.rb @@ -0,0 +1,15 @@ +#------------------- +# BOOLEANS +#------------------- + +# EXAMPLE: log to the console the result of 1 is equal to 2: +p 1 === 2 + +# EXAMPLE: log to the console the result of 7 is greater than 2: +p 7 > 2 + +# YOU DO: log to the console the result of "hello" is equal to "Hello": + +# YOU DO: log to the console the result of 3 is not equal to 4: + +# YOU DO: log to the console the result of 4 is less than or equal to 5: diff --git a/section1/exercises/interpolation.rb b/section1/exercises/interpolation.rb index f62fcb4ff..2988c5181 100644 --- a/section1/exercises/interpolation.rb +++ b/section1/exercises/interpolation.rb @@ -23,3 +23,8 @@ speedy = "hare" # YOUR CODE HERE + + +# YOU DO: +# Declare three variables, name/content/data type of your choice. Think carefully about what you name the variables. Remember, the goal is to be concise but descriptive (it's a hard balance!) Then, log out ONE sentence that incorporates all THREE variables. + diff --git a/section1/exercises/loops.rb b/section1/exercises/loops.rb index d59cc5f7f..e8e69523e 100644 --- a/section1/exercises/loops.rb +++ b/section1/exercises/loops.rb @@ -16,3 +16,7 @@ # Write code that prints the phrase 'She sells seashells down by the seashore' # ten times: # YOUR CODE HERE + + +# Write code that prints the result of 5 + 7 a total of 9 timees +# YOUR CODE HERE diff --git a/section1/exercises/strings.rb b/section1/exercises/strings.rb index a36af6bdd..b514a5a63 100644 --- a/section1/exercises/strings.rb +++ b/section1/exercises/strings.rb @@ -11,3 +11,5 @@ # Write code that prints `99 bottles of pop on the wall...` to the terminal: # YOUR CODE HERE + +# Write out code to log one line from your favorite song or movie. \ No newline at end of file diff --git a/section1/exercises/variables.rb b/section1/exercises/variables.rb index a794d7fa4..d765e886a 100644 --- a/section1/exercises/variables.rb +++ b/section1/exercises/variables.rb @@ -27,3 +27,33 @@ # prints the result: # YOUR CODE HERE p students + + +# YOU DO: +# Declare three variables, named `first_name`, `is_hungry` and `number_of_pets`. +# Store the appropriate data types in each. +# print all three variables to the terminal. + +# IN WORDS: +# How did you decide to use the data type you did for each of the three variables above? + +# Explain. + + +# YOU DO: +# Re-assign the values to the three variables from the previous challenge to different values (but same data type). +# print all three variables to the terminal. + + +# YOU DO: +# Using the variables below, print the total number of snacks to the terminal: +healthy_snacks = 6; +junk_food_snacks = 8; + + +#------------------- +# FINAL CHECK +#------------------- + +# Did you run this file in your terminal to make sure everything printed out to the terminal + # as you would expect? \ No newline at end of file From 564d8f4db4b671ffa8f340ed5e56da55a51f0fd0 Mon Sep 17 00:00:00 2001 From: Eric Weissman Date: Mon, 18 Jan 2021 13:10:55 -0700 Subject: [PATCH 23/41] Adjust section 2 exercises --- section2/exercises/methods.rb | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/section2/exercises/methods.rb b/section2/exercises/methods.rb index 604fd3bd3..f2517f1b3 100644 --- a/section2/exercises/methods.rb +++ b/section2/exercises/methods.rb @@ -18,10 +18,24 @@ def print_name(name) print_name("Albus Dumbledore") # Write a method that takes in 2 numbers as arguments and prints -# their sum. Then call your method: +# their sum. Then call your method three times with different arguments passed in: # YOUR CODE HERE # Write a method that takes in two strings as arguments and prints # a concatenation of those two strings. Example: The arguments could be # (man, woman) and the end result might output: "When Harry Met Sally". -# Then call your method: +# Then call your method three times with different arguments passed in. + + +#------------------- +# PART 3: Naming is Hard +#------------------- + + +# Naming is notoriously hard in programming. It is a skill to name a variable or function concisely enough that it is reasonable to type, but descriptive enough that others can infer the meaning. + +# Look at the code you wrote for the previous YOU DO🎈 - what did you name the function, and why? +# What did you name each parameter, and why? + +# EXPLAIN: + From c006e0ce619fc14b5398eb25c38cffc9d2ce6922 Mon Sep 17 00:00:00 2001 From: Eric Weissman Date: Mon, 18 Jan 2021 13:31:55 -0700 Subject: [PATCH 24/41] Adjust section 3 exercises --- section3/exercises/arrays.rb | 87 ++++++++++++++++++++++++++++++++++++ section3/exercises/hashes.rb | 73 ++++++++++++++++++++++++++++++ 2 files changed, 160 insertions(+) create mode 100644 section3/exercises/arrays.rb diff --git a/section3/exercises/arrays.rb b/section3/exercises/arrays.rb new file mode 100644 index 000000000..f710c6000 --- /dev/null +++ b/section3/exercises/arrays.rb @@ -0,0 +1,87 @@ + +# In the exercises below, write your own code where indicated +# to achieve the desired result. + +# Two examples are already completed. Your task is to complete +# any remaining prompt. + + + + +#------------------- +# PART 1: Animals: Array Syntax +#------------------- + +# EXAMPLE: write code below that will print an array of animals. +# Store the array in a variable. +animals = ["Zebra", "Giraffe", "Elephant"]; +print animals + +# EXAMPLE: Write code below that will print "Zebra" from the animals array +# YOUR CODE HERE +print animals[0] + +# YOU DO: Write code below that will print the number of elements in array of +# animals from above. + + +# YOU DO: Write code that will reassign the last item in the animals +# array to "Gorilla" + + +# YOU DO: Write code that will add a new animal (type of your choice) to position 3. + + +# YOU DO: Write code that will print the String "Elephant" in the animals array + + +#------------------- +# PART 2: Foods: Array Methods +#------------------- + +# YOU DO: Declare a variable that will store an an array of at least 4 foods (strings) + + +# YOU DO: Write code below that will print the number of elements in the array of +# foods from above. + + +# YOU DO: Write code below that uses a method to add "broccoli" to the foods array and +# print the changed array to verify "broccoli" has been added + + +# YOU DO: Write code below that removes the last item of food from the foods array and +# print the changed array to verify that item has been removed + + +# YOU DO: Write code to add 3 new foods to the array. + # There are several ways to do this - choose whichever you'd like! +# Then, print the changed array to verify the new items have been added + +# YOU DO: Remove the food that is in index position 0. + +#------------------- +# PART 3: Where are Arrays used? +#------------------- + + +# Sometimes we need to hold on to multiple pieces of data, but have it grouped together in a list. +# This is why programming languages have arrays! + +# One example of a web/mobile application that uses arrays is Instagram. Each user has a set of posts +# associated with their account. Each post, is one of potentially many, that are grouped together in a list, or, array. + +# The post itself likely has more complex data, but here is one way we can think about it: + + +posts = ["image at beach", "holiday party", "adorable puppy", "video of cute baby"]; + +# YOU DO: Think of a web application you commonly use. Where do you see LISTS utilized, where arrays +# may be storing data? Come up with 3 examples - they could be from different web applications or +# all from the same one. + +# 1: +# 2: +# 3: + + diff --git a/section3/exercises/hashes.rb b/section3/exercises/hashes.rb index 7a5564432..9d368c753 100644 --- a/section3/exercises/hashes.rb +++ b/section3/exercises/hashes.rb @@ -26,3 +26,76 @@ # Write code that adds an animal to the zoo hash. # Then, print the updated hash: # YOUR CODE HERE + + +#------------------- +# Part 2: Email +#------------------- + + +# Think about all the pieces of information associated with one single email in your inbox. +# It has a sender, a subject, ... + +# Declare a variable that stores hash. Each key should be an attribute of an email and each +# value should be some appropriate value for that key. Work to have at least 5 key-value pairs. + +# Write code that prints your email hash to the terminal. + + +# Write code that prints all of the 'keys' of the email hash +# you created above: +# YOUR CODE HERE + +# Write code that prints all of the 'values' of the email hash +# you created above: +# YOUR CODE HERE + + +#------------------- +# Part 3: Many Emails - OPTIONAL EXTENSION +#------------------- + +# LONG EXAMPLE: +# Now that we've learned about Objects AND Arrays, we can combine them. + +# Check out the following example of an array of Instagram posts: + + +# posts = ["image at beach", "holiday party", "adorable puppy", "video of cute baby"]; + + +# Frankly, that was a very simplified version of the Array the Instagram developers have +# written and work with. Still probably slightly simplified as we don't know what their code +# actually looks like, but it may look more like this: + + +posts = [ + { + 'image_src' => "./images/beach.png", + 'caption' => "At the beach with my besties", + 'timestamp' => "4:37 PM August 13, 2019", + 'number_likes' => 0, + 'comments' => [] + }, + { + 'image_src' => "./images/holiday-party.png", + 'caption' => "What a great holiday party omg", + 'timestamp' => "11:37 PM December 31, 2019", + 'number_likes' => 13, + 'comments' => [] + } +] + +puts posts +puts posts[0] + + +# The code snippet above shows an Array with 2 elements. Each element in an +# Object Literal. Each of those Object Literals has 4 key-value pairs. This may LOOK +# a bit daunting - it's OK! You don't need to be 100% comfortable with this, but it's +# good to have some exposure before going into Mod 1. + + +# YOU DO: Create an array of at least 3 EMAIL Object Literals, using the same +# key-value pairs you used in your email Object above. +# Then, log the email Array to the console. \ No newline at end of file From 5fe3424aa20f01885207523267a7efa365d67876 Mon Sep 17 00:00:00 2001 From: Eric Weissman Date: Mon, 18 Jan 2021 15:26:45 -0700 Subject: [PATCH 25/41] Clarify format --- finalProject/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/finalProject/README.md b/finalProject/README.md index 02d97adbe..38c1dafe8 100644 --- a/finalProject/README.md +++ b/finalProject/README.md @@ -43,7 +43,7 @@ When you have completed *all* the activities described above, follow the steps b ![Create PR](https://i.imgur.com/CQQzfNc.png) -5. Please complete the form to submit your prework available [here](https://forms.gle/wxoVuhHKjrRyvGW2A). Be sure to include links for your Gear Up pre-work gist and your technical pre-work GitHub repository. The link to your technical pre-work GitHub repository will be in the format https://github.com/YOUR_GITHUB_USERNAME/frontend-mod-1-prework. (using _your_ own GitHub username) +5. Please complete the form to submit your prework available [here](https://forms.gle/wxoVuhHKjrRyvGW2A). Be sure to include links for your Gear Up pre-work gist and your technical pre-work GitHub repository. The link to your technical pre-work GitHub repository will be in the format https://github.com/YOUR_GITHUB_USERNAME/backend_mod1_prework. (using _your_ own GitHub username) 🏔You did it! This is the end of the pre-work. Continue to monitor slack (and emails from GitHub) for feedback from your instructor. From 3463ffc23d9df00945ef8b306e3299aaff93df80 Mon Sep 17 00:00:00 2001 From: Eric Weissman Date: Thu, 21 Jan 2021 12:07:36 -0700 Subject: [PATCH 26/41] Adjust final prep --- .gitignore | 1 + README.md | 2 +- finalProject/10_speckled_frogs.md | 27 --------- finalProject/ceasar_cipher.md | 16 ----- finalProject/checker_board.md | 13 ---- finalProject/fizzbuzz.md | 16 ----- {finalProject => final_prep}/README.md | 57 +++++++++-------- final_prep/annotations.rb | 43 +++++++++++++ final_prep/mod_zero_hero.rb | 84 ++++++++++++++++++++++++++ 9 files changed, 160 insertions(+), 99 deletions(-) create mode 100644 .gitignore delete mode 100644 finalProject/10_speckled_frogs.md delete mode 100644 finalProject/ceasar_cipher.md delete mode 100644 finalProject/checker_board.md delete mode 100644 finalProject/fizzbuzz.md rename {finalProject => final_prep}/README.md (60%) create mode 100644 final_prep/annotations.rb create mode 100644 final_prep/mod_zero_hero.rb diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..6c6a27176 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +archived/ diff --git a/README.md b/README.md index 51da4ca99..ba6f8c9af 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ Each day has a folder containing a `README.md` file with instructions for the se * [Section 2 - ASKING QUESTIONS, Conditionals and Methods](section2) * [Section 3 - GROWTH MINDSET, Hashes](section3) * [Section 4 - HOW YOU USE YOUR TIME, Objects and Classes](section4) -* [Final Project - Final Project and Submission](finalProject) +* [Final Prep - Final Deliverables and Submission](finalPrep) ## What to Expect diff --git a/finalProject/10_speckled_frogs.md b/finalProject/10_speckled_frogs.md deleted file mode 100644 index 67789f479..000000000 --- a/finalProject/10_speckled_frogs.md +++ /dev/null @@ -1,27 +0,0 @@ -## 10 Speckled Frogs - -Create a file named `10_speckled_frogs.rb` and within that file, write several a program that will print the following nursery rhyme: - -> 3 speckled frogs sat on a log -> eating some most delicious bugs. -> One jumped in the pool where its nice and cool, -> then there were 2 speckled frogs. -> -> 2 speckled frogs sat on a log -> eating some most delicious bugs. -> One jumped in the pool where its nice and cool, -> then there was 1 speckled frogs. -> -> 1 speckled frog sat on a log -> eating some most delicious bugs. -> One jumped in the pool where its nice and cool, -> then there were no more speckled frogs! - -### Required -Make your program print the rhyme above for *10* frogs, with attention to where language changes. - -### Extension 1 -Print word versions of each number in the first and fourth lines, for example, the first verse in the above example would print 'Three speckled frogs...' and 'were two speckled frogs'. - -### Extension 2 -Make your program work for any number of frogs. diff --git a/finalProject/ceasar_cipher.md b/finalProject/ceasar_cipher.md deleted file mode 100644 index 7390a70bc..000000000 --- a/finalProject/ceasar_cipher.md +++ /dev/null @@ -1,16 +0,0 @@ -## Ceasar Cipher - -Also known as a shift cipher, the Ceasar Cipher is one of the oldest and simplest encoding techniques. A Ceasar Cipher works by shifting the alphabet by a defined number of letters down the alphabet. For example, with a left shift of 3, 'D' would be replaced by 'A', 'E' would be replaced by 'B', and so on. See below for a full alphabet example with a left shift of 3: - -``` -plain: ABCDEFGHIJKLMNOPQRSTUVWXYZ -cipher: XYZABCDEFGHIJKLMNOPQRSTUVW -``` - -Create a file named caesar_cipher.rb and within that file, write a program that will take any string, and encode it based on a shift value provided by the user. The interaction pattern for this program might look something like this: - -``` -cipher = CeasarCipher.new -cipher.encode("Hello World", 5) -=> "CZGGJ RJMGY" -``` diff --git a/finalProject/checker_board.md b/finalProject/checker_board.md deleted file mode 100644 index e8220394a..000000000 --- a/finalProject/checker_board.md +++ /dev/null @@ -1,13 +0,0 @@ -## Checker Board - -Create a file called checker_board.rb and within that file, write a program that will print a checkerboard based on the size *indicated by the user*. On this board, the black spaces will be represented with 'X' and the white spaces will be represented with ' '. An example of the output for a size 6 board would look like this: - -``` -X X X - X X X -X X X - X X X -X X X - X X X - ``` - \ No newline at end of file diff --git a/finalProject/fizzbuzz.md b/finalProject/fizzbuzz.md deleted file mode 100644 index b2a5a8e4b..000000000 --- a/finalProject/fizzbuzz.md +++ /dev/null @@ -1,16 +0,0 @@ -## FizzBuzz - -Create a file named fizzbuzz.rb and within that file, write a program that prints something for each number from 1 to 100 with the following rules: - -* For any number that is a multiple of 3, print 'Fizz' -* For any number that is a multiple of 5, print 'Buzz' -* For any number that is a multiple of both 3 and 5, print 'FizzBuzz' -* For all other numbers, print the number. - -The output of your program will look something like this: -``` -=> 1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14, FizzBuzz, ..., 98, Fizz, Buzz -``` - -### Bonus -Can you write the program so that it will run for any range of numbers? diff --git a/finalProject/README.md b/final_prep/README.md similarity index 60% rename from finalProject/README.md rename to final_prep/README.md index 38c1dafe8..49cd181a1 100644 --- a/finalProject/README.md +++ b/final_prep/README.md @@ -1,30 +1,29 @@ -# Final Project +# Mod 0 Final Prep +Congrats on making it to the Mod 0 Final Prep! Complete the final exercises below and be sure to carefully follow the Pull Request steps to submit your work! -## Project Specifications +### Final Technical Prep -Using what you have learned so far, complete the challenges below. Put any files related to the projects you choose in `finalProject` directory. +You've learned a ton about some of the core foundations of Javascript! Show us how far you've come by completing the following exercises! You will be using your work from these exercises in your first day of Mod 1! -_Note:_ These should be challenging, and require to apply most of the content covered in this pre-work. The use of google is absolutely allowed as you may need to brush up on syntax, etc. However, we strongly discourage you from googling for solution pathways to these problems - the point of these is to push you to think like the programmer you are and apply the knowledge you've built so far in slightly different ways. +- [ ] Complete the [Mod Zero Hero Challenge](./mod_zero_hero.rb) +- [ ] Complete the [Annotation Challenge](./annotations.rb) -* [FizzBuzz](./fizzbuzz.md) -* [10 Speckled Frogs](./10_speckled_frogs.md) -* [Ceasar Cipher](./ceasar_cipher.md) +### Mentorship Prep +Mentorship is an integral part of the Turing experience and will help jumpstart your technical career. In order to get your mentor relationship started on the right foot, please complete the following deliverables: +- [ ] Complete the [Mentorship DTR Prep](https://gist.github.com/ericweissman/51965bdcbf42970d43d817818bfaef3c) + - [ ] Add link to your gist here: -## Next Steps - -Depending on if you are in Section A or B, you have anywhere between 1.5-3.5 weeks before you start Mod 1. This is an important time to take care of life things such as doctor appointments, dog park trips, quality time with friends and family, etc. It is also important that you maintain the knowledge and skills you acquired during Mod 0 and this pre-work. You can absolutely do both, but to do so successfully, **you need a plan**. We recommend spending, on average, 1-2 hours a day coding (totally 20-40 hours of time). - -What is your plan and how are you going to hold yourself to it? Specifically... -- What are you going to work on? [Resources here](https://github.com/turingschool-examples/fe-m1-practice) -- What days are you going to work? -- What times on those days are you going to work? -- Where you going to be sitting/standing as you do this? -- Where are you documenting this plan? Google Calendar, calendar on your wall, your journal? -- Do any stakeholders in your life know about this plan? (The answer needs to be yes by the time you answer this...) -- What personal items/events are important to you during this time? How are you going to make sure those are not neglected? (Hint, block time on the calendar for them!) +### Lesson Prep +You've learned a lot about how to take strong notes during Mod 0. Show us your skills while you learn how to pre-teach content for your first lesson in Mod 1! +- [ ] Complete the [Pre Teaching Practice exercise](https://gist.github.com/ericweissman/0036e8fe272c02bd6d4bb14f42fd2f79) gist + - [ ] Add a link to your gist here: -### Final Pre-work Submission +### Group Work Prep +As part of Turing's project-based learning approach, you will often be working in pairs or larger groups. In order to set yourself (and your team) up for success, it is important to ensure you are prepared to be an equitable contributor and teammate. +- [ ] Complete the [DTR Guiding Questions](https://gist.github.com/ericweissman/c56f3a98cdce761808c21d498a52f5c6) + - [ ] Add a link to your gist here: +## All Done? How to Submit your M1 Prework When you have completed *all* the activities described above, follow the steps below to submit your technical prework. 1. Go to *your* prework repository on GitHub @@ -43,16 +42,22 @@ When you have completed *all* the activities described above, follow the steps b ![Create PR](https://i.imgur.com/CQQzfNc.png) -5. Please complete the form to submit your prework available [here](https://forms.gle/wxoVuhHKjrRyvGW2A). Be sure to include links for your Gear Up pre-work gist and your technical pre-work GitHub repository. The link to your technical pre-work GitHub repository will be in the format https://github.com/YOUR_GITHUB_USERNAME/backend_mod1_prework. (using _your_ own GitHub username) +5. Please complete the form to submit your prework available [here](https://forms.gle/wxoVuhHKjrRyvGW2A). Be sure to include links for your Gear Up pre-work gist and your technical pre-work GitHub repository. The link to your technical pre-work GitHub repository will be in the format https://github.com/YOUR_GITHUB_USERNAME/frontend-mod-1-prework. (using _your_ own GitHub username) -🏔You did it! This is the end of the pre-work. Continue to monitor slack (and emails from GitHub) for feedback from your instructor. - -# Extensions (optional, after pre-work completed) +## Next Steps -You've finished your Mod 1 pre-work assignment! +Depending on if you are in Section A or B, you have anywhere between 1.5-3.5 weeks before you start Mod 1. This is an important time to take care of life things such as doctor appointments, dog park trips, quality time with friends and family, etc. It is also important that you maintain the knowledge and skills you acquired during Mod 0 and this pre-work. You can absolutely do both, but to do so successfully, **you need a plan**. We recommend spending, on average, 1-2 hours a day coding (totally 20-40 hours of time). -But there's always more to learn! +What is your plan and how are you going to hold yourself to it? Specifically... +- What are you going to work on? [Resources here](https://github.com/turingschool-examples/fe-m1-practice) +- What days are you going to work? +- What times on those days are you going to work? +- Where you going to be sitting/standing as you do this? +- Where are you documenting this plan? Google Calendar, calendar on your wall, your journal? +- Do any stakeholders in your life know about this plan? (The answer needs to be yes by the time you answer this...) +- What personal items/events are important to you during this time? How are you going to make sure those are not neglected? (Hint, block time on the calendar for them!) +## Extensions If you're interested in challenging yourself _even more_ and getting a step ahead in your coding abilities before your first day, we recommend working on either: - [Turing's ruby exercises repo](https://github.com/turingschool/ruby-exercises) diff --git a/final_prep/annotations.rb b/final_prep/annotations.rb new file mode 100644 index 000000000..8b938706c --- /dev/null +++ b/final_prep/annotations.rb @@ -0,0 +1,43 @@ +# Add your annotations, line by line, to the code below using code comments. +# Try to focus on using correct technical vocabulary. +# Use the # to create a new comment + +# Build a Bear + +def build_a_bear(name, age, fur, clothes, special_power) + greeting = "Hey partner! My name is #{name} - will you be my friend?!" + demographics = [name, age] + power_saying = "Did you know that I can #{special_power}?" + built_bear = { + 'basic_info' => demographics, + 'clothes' => clothes, + 'exterior' => fur, + 'cost' => 49.99, + 'sayings' => [greeting, power_saying, "Goodnight my friend!"], + 'is_cuddly' => true, + } + return built_bear +end + +build_a_bear('Fluffy', 4, 'brown', ['pants', 'jorts', 'tanktop'], 'give you nightmares') +build_a_bear('Sleepy', 2, 'purple', ['pajamas', 'sleeping cap'], 'sleeping in') + + +# FizzBuzz + +def fizzbuzz(num_1, num_2, range) + (1..range).each do |i| + if i % num_1 === 0 && i % num_2 === 0 + puts 'fizzbuzz' + elsif i % num_1 === 0 + puts 'fizz' + elsif i % num_2 === 0 + puts 'buzz' + else + puts i + end + end +end + +fizzbuzz(3, 5, 100) +fizzbuzz(5, 8, 400) \ No newline at end of file diff --git a/final_prep/mod_zero_hero.rb b/final_prep/mod_zero_hero.rb new file mode 100644 index 000000000..35eb2cdac --- /dev/null +++ b/final_prep/mod_zero_hero.rb @@ -0,0 +1,84 @@ +# Challenge - See if you can follow the instructions and complete the exercise in under 30 minutes! + +# Declare two variables - hero_name AND special_ability - set to strings + +# Declare two variables - greeting AND catchphrase +# greeting should be assigned to a string that uses interpolation to include the hero_name +# catchphrase should be assigned to a string that uses interpolation to include the special_ability + +# Declare two variables - power AND energy - set to integers + +# Declare two variables - full_power AND full_energy +# full_power should multiply your current power by 500 +# full_energy should add 150 to your current energy + +# Declare two variables - is_human and identity_concealed - assigned to booleans + + +# Declare two variables - arch_enemies AND sidekicks +# arch_enemies should be an array of at least 3 different enemy strings +# sidekicks should be an array of at least 3 different sidekick strings + +# Print the first sidekick to your terminal + +# Print the last arch_enemy to the terminal + +# Write some code to add a new arch_enemy to the arch_enemies array + +# Print the arch_enemies array to terminal to ensure you added a new arch_enemey + +# Remove the first sidekick from the sidekicks array + +# Print the sidekicks array to terminal to ensure you added a new sidekick + +# Create a function called assess_situation that takes three arguments - danger_level, save_the_day, bad_excuse +# - danger_level should be an integer +# - save_the_day should be a string a hero would say once they save the day +# - bad_excuse should be a string a hero would say if they are too afraid of the danger_level + +# Your function should include an if/else statement that meets the following criteria +# - Danger levels that are above 50 are too scary for your hero. Any danger level that is above 50 should result in printing the bad_excuse to the terminal +# - Anything danger_level that is between 10 and 50 should result in printing the save_the_day string to the terminal +# - If the danger_level is below 10, it means it is not worth your time and should result in printing the string "Meh. Hard pass." to the terminal. + +#Test Cases +announcement = 'Never fear, the Courageous Curly Bracket is here!' +excuse = 'I think I forgot to lock up my 1992 Toyota Coralla. Be right back.' +# assess_situation(99, announcement, excuse) > Should print - 'I think I forgot to lock up my 1992 Toyota Coralla. Be right back.' +#assess_situation(21, announcement, excuse) > should print - 'Never fear, the Courageous Curly Bracket is here!' +#assess_situation(3, announcement, excuse) > should print - "Meh. Hard pass." + +# Declare a new variable - scary_monster - assigned to an hash with the following key/values +# - name (string) +# - smell (string) +# - weight (integer) +# - citiesDestroyed (array) +# - luckyNumbers (array) +# - address (hash with following key/values: number , street , state, zip) + + +# Create a new class called SuperHero +# - Your class should have the following DYNAMIC values +# - name +# - super_power +# - age +# - Your class should have the following STATIC values +# - arch_nemesis, assigned to "The Syntax Error" +# - power_level = 100 +# - energy_level = 50 + +# - Create the following class methods +# - say_name, should print the hero's name to the terminal +# - maximize_energy, should update the energy_level to 1000 +# - gain_power, should take an argument of a number and INCREASE the power_level by that number + +# - Create 2 instances of your SuperHero class + + +# Reflection +# What parts were most difficult about this exerise? + +# What parts felt most comfortable to you? + +# What skills do you need to continue to practice before starting Mod 1? + From bca2f74cee11121b7d12ed6ddaa0fdeae9182bb4 Mon Sep 17 00:00:00 2001 From: Eric Weissman Date: Thu, 21 Jan 2021 12:13:27 -0700 Subject: [PATCH 27/41] Adjust link to correct prework in README --- .gitignore | 1 - README.md | 4 +- archived/day_0/README.md | 71 -------- archived/day_0/images/finder.png | Bin 84321 -> 0 bytes archived/day_0/images/spotlight.png | Bin 9652 -> 0 bytes archived/day_0/images/terminal.png | Bin 16383 -> 0 bytes archived/day_1/README.md | 194 ---------------------- archived/day_1/exercises/interpolation.rb | 25 --- archived/day_1/exercises/loops.rb | 18 -- archived/day_1/exercises/numbers.rb | 16 -- archived/day_1/exercises/strings.rb | 13 -- archived/day_1/exercises/variables.rb | 29 ---- archived/day_1/questions.md | 17 -- archived/day_2/README.md | 46 ----- archived/day_2/exercises/arrays.rb | 40 ----- archived/day_2/exercises/iteration.rb | 28 ---- archived/day_2/questions.md | 17 -- archived/day_3/README.md | 45 ----- archived/day_3/exercises/if_statements.rb | 65 -------- archived/day_3/questions.md | 13 -- archived/day_4/README.md | 47 ------ archived/day_4/exercises/methods.rb | 27 --- archived/day_4/questions.md | 11 -- archived/day_5/README.md | 41 ----- archived/day_5/exercises/hashes.rb | 28 ---- archived/day_5/questions.md | 13 -- archived/day_6/README.md | 44 ----- archived/day_6/exercises/burrito.rb | 19 --- archived/day_6/exercises/dog.rb | 30 ---- archived/day_6/exercises/person.rb | 5 - archived/day_6/questions.md | 13 -- archived/day_7/10_speckled_frogs.md | 27 --- archived/day_7/README.md | 66 -------- archived/day_7/ceasar_cipher.md | 16 -- archived/day_7/checker_board.md | 13 -- archived/day_7/fizzbuzz.md | 16 -- 36 files changed, 2 insertions(+), 1056 deletions(-) delete mode 100644 .gitignore delete mode 100644 archived/day_0/README.md delete mode 100644 archived/day_0/images/finder.png delete mode 100644 archived/day_0/images/spotlight.png delete mode 100644 archived/day_0/images/terminal.png delete mode 100644 archived/day_1/README.md delete mode 100644 archived/day_1/exercises/interpolation.rb delete mode 100644 archived/day_1/exercises/loops.rb delete mode 100644 archived/day_1/exercises/numbers.rb delete mode 100644 archived/day_1/exercises/strings.rb delete mode 100644 archived/day_1/exercises/variables.rb delete mode 100644 archived/day_1/questions.md delete mode 100644 archived/day_2/README.md delete mode 100644 archived/day_2/exercises/arrays.rb delete mode 100644 archived/day_2/exercises/iteration.rb delete mode 100644 archived/day_2/questions.md delete mode 100644 archived/day_3/README.md delete mode 100644 archived/day_3/exercises/if_statements.rb delete mode 100644 archived/day_3/questions.md delete mode 100644 archived/day_4/README.md delete mode 100644 archived/day_4/exercises/methods.rb delete mode 100644 archived/day_4/questions.md delete mode 100644 archived/day_5/README.md delete mode 100644 archived/day_5/exercises/hashes.rb delete mode 100644 archived/day_5/questions.md delete mode 100644 archived/day_6/README.md delete mode 100644 archived/day_6/exercises/burrito.rb delete mode 100644 archived/day_6/exercises/dog.rb delete mode 100644 archived/day_6/exercises/person.rb delete mode 100644 archived/day_6/questions.md delete mode 100644 archived/day_7/10_speckled_frogs.md delete mode 100644 archived/day_7/README.md delete mode 100644 archived/day_7/ceasar_cipher.md delete mode 100644 archived/day_7/checker_board.md delete mode 100644 archived/day_7/fizzbuzz.md diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 6c6a27176..000000000 --- a/.gitignore +++ /dev/null @@ -1 +0,0 @@ -archived/ diff --git a/README.md b/README.md index ba6f8c9af..40570e269 100644 --- a/README.md +++ b/README.md @@ -178,7 +178,7 @@ $ rbenv rehash We will be referencing many terminal commands throughout the prework. It is recommended that you practice using terminal commands before getting started with section1. -[Check out day_0 to practice!](day_0) +[Check out section 1 to practice!](section1) ### Forking the Module 1 Prework Repository @@ -190,7 +190,7 @@ In order to fork the repository, follow these steps: #### 1. Make sure you are logged in to GitHub (if you are not logged in, log in and come back to this page) -#### 2. You'll want to find this repository's Fork button. Scroll to the top of *this* webpage... yes, [this one](https://github.com/turingschool-examples/backend_mod_1_prework) that you're reading right now! +#### 2. You'll want to find this repository's Fork button. Scroll to the top of *this* webpage... yes, [this one](https://github.com/turingschool/backend_mod_1_prework) that you're reading right now! #### 3. Click on `Fork` in the upper right corner of the screen, just under the top banner. diff --git a/archived/day_0/README.md b/archived/day_0/README.md deleted file mode 100644 index ea3042ee8..000000000 --- a/archived/day_0/README.md +++ /dev/null @@ -1,71 +0,0 @@ -# Dive Right In! - -You will likely spend the majority of your time in Module 1 in either the Terminal or your text editor. When you're new to programming, the terminal can seem like a scary place, but it has some advantages over other means of interacting with your computer. Perhaps the greatest advantage is that it allows programmers to build tools that they can share with each other without going through the process of creating a graphical user interface. This makes it easy to share code quickly so that it can be used in multiple projects. - -You already have had some exposure to the terminal in the [mod0 session 2: Terminal and Command Line](http://mod0.turing.io/session2/#terminal-and-command-line). Let's practice a little more! - -### Here's a video walk-through of how to navigate your mod 1 prework: - -[![Walkthrough Day 1 and Git stuff](/images/backend-prework-day-one-thumb.jpg)](https://youtu.be/HYAzk6L63ek "Video Walkthrough for Day 1 & Git Stuff") - -### Practice - -Use the terminal commands described in the video above to move around your computer. - -* Dig deep into one of your existing directories by using `cd` to move and `ls` to see what directories are available. -* Navigate out using `cd ../` to get back to your home directory. Use `pwd` to make sure you don't overshoot it! -* Dig deep into another directory, using `ls` as you go. -* Use `cd ~/` to navigate to your home directory. -* Navigate into your Downloads directory using `cd Downloads`. -* Navigate to your Desktop using `cd ~/Desktop`. -* Use `pwd` and `ls` to confirm your current location. - -Continue practicing these commands until you feel comfortable moving around without having to look at this lesson. - -## Making Things - -### Practice - -Lets get a little practice with `touch`, `mkdir`, `ls`, and `cd`: - -Use `mkdir` and `touch` to create the directories/files in the structure described below. - -```sh -|-- _secret_library - | - |--README.md - |--Gemfile - |--Rakefile - | - |--_lib - | | - | |--secret_library.rb - | |--secret_book.rb - | |--secret_librarian.rb - | |--patron.rb - | |--library_system.rb - | - |--_test - | - |--secret_library_test.rb - |--secret_book_test.rb - |--secret_librarian_test.rb - |--patron_test.rb - |--library_system_test.rb -``` - -Don't worry about putting any text into these files. For now, just create this structure and empty files. - -## Deleting Things - -### The rm Command - -Be careful when deleting something though the terminal! While we want to be comfortable using the very helpful `rm` command, once executed, the command cannot be undone. Lets learn more about `rm` before we practice: - -* `rm`: This will remove a file from your system. Be very careful with this and always double check the file you target! The terminal assumes you're a little more of an expert than the system does. `rm` doesn't move the file to the Trash, it removes it completely from your system. It basically moves the file to the trash, then deletes it immediately. No chance to stop it or change your mind. - -* `rm -rf`: Adding the `-r` and `-f` flags to the `rm` command will allow you to delete directories even if they have other files and/or directories inside of them. For more information on each of these flags enter `man rm` into your terminal. It will print out the manual for this command. - -### Practice - -Use `rm` and `rm -rf` to delete each of the files and directories you created in the Making Things section above. Note, that it would be possible to delete the entire directory that you created with just `rm -rf secret_library`. *Don't do this!* At this point, delete each of the files and directories individually to practice these commands. This will help you remember them better in the long run, which is the goal! More practice now will allow you to be more efficient in the future. diff --git a/archived/day_0/images/finder.png b/archived/day_0/images/finder.png deleted file mode 100644 index e1e0eedf0cc2747b9f625c0bf3abc85e55c2b1d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 84321 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ΑTAH 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 diff --git a/archived/day_1/README.md b/archived/day_1/README.md deleted file mode 100644 index 034ae11da..000000000 --- a/archived/day_1/README.md +++ /dev/null @@ -1,194 +0,0 @@ -# Day 1 - Strings and Numbers - -Today, you will begin to learn the basics of Ruby. You will work through several tutorials which will help build your comfort running files and seeing output. You will also learn about two ways to represent data in Ruby: *Strings* and *Numbers*. - -In addition to learning Ruby basics, this day will also walk you through entering commands in the terminal to create files. By the end of the day, you should be very comfortable with the commands `cd` and `ls`, both very useful in navigating your machine, and the commands `mkdir` and `touch`, used to create directories and files on the machine. - -After completing the days work, you will use several git commands to save your work to your local git repository. You will then push your updates to your remote Github repository. Doing this each day will help you build muscle memory with git commands and get used to seeing the output they produce. We will dive deeper into the inner workings of git later. For now, most important is to follow along and know that we are using git to save our work, and Github to put it on the internet. - -### This lesson will have you using Git, Github, etc. Here's a video walkthrough - -[![Walkthrough Day 1 and Git stuff](/images/backend-prework-day-one-thumb.jpg)](https://youtu.be/HYAzk6L63ek "Video Walkthrough for Day 1 & Git Stuff") - -## Open your local copy of backend_mod_1_prework in Atom - -Using your terminal, open the local copy of this repo. To do this, enter these commands into your terminal: - -``` -cd ~ -ls -cd turing -ls -cd 0module -ls -cd backend_mod_1_prework -ls -cd day_1 -ls -atom . -``` - -This will open the day_1 directory in Atom. You should be able to see the directory and its contents in the file explorer on the left side of your Atom window. - -## An Introduction to Ruby - -[Read This Introduction](https://learnrubythehardway.org/book/intro.html) to the Learn Ruby The Hard Way Tutorial. To reiterate this introduction, ***DO NOT*** copy and paste code examples when working through lessons in your prework. Actually type each of them out. - -### Ruby Basics Lessons - -1. Next, you will complete several lessons from the Learn Ruby the Hard Way Tutorial. *For ***each*** lesson* ***follow these directions closely***: - - 1. Create a file within your `day_1` directory that will contain this lesson's work. Verify that you are within the directory by using terminal command `pwd`. If you are not, `cd` into your `day_1` directory. Once you are there, use the `touch` command in your terminal to create a file. For the first lesson, name this file `ex1.rb`. For each subsequent lesson, use `ex2.rb`, `ex3.rb`, so on, so forth. Refer to back to [day_0](../day_0) if you need a refresher on terminal commands. - - 1. Work through the lesson, **typing** the code into your file, and running it in the terminal with `ruby ex1.rb`, replacing `ex1` with the actual file name of what you'd like to run. Make sure the output you get is similar to what the lesson shows. If you get an error saying "No such file or directory", be sure to verify the directory you are located in via the terminal- running command `ls` should show the file you are trying to run. - - 1. Complete the Study Drills listed at the end of the lesson. - - 1. Read the Common Student Questions section. - -1. Check off the items below as you complete the steps you just read for each lesson. ***Remember to create a file containing your work for each lesson!*** - - - [ ] [A Good First Program](https://learnrubythehardway.org/book/ex1.html) - - - [ ] [Comments in Code](https://learnrubythehardway.org/book/ex2.html) - - - [ ] [Numbers and Math](https://learnrubythehardway.org/book/ex3.html) - - - [ ] [Variables and Names](https://learnrubythehardway.org/book/ex4.html) - - - [ ] [Strings](https://learnrubythehardway.org/book/ex5.html) - - - [ ] [More Strings](https://learnrubythehardway.org/book/ex6.html) - - - [ ] [Asking for Input](https://learnrubythehardway.org/book/ex11.html) - - - [ ] Have you created 7 `ex.rb` files with your code in them? - -1. Work through the [Strings](http://tutorials.jumpstartlab.com/projects/ruby_in_100_minutes.html#3.-strings) and [Numbers](http://tutorials.jumpstartlab.com/projects/ruby_in_100_minutes.html#5.-numbers) sections from Ruby in 100 Minutes. For each of these sections, open an `irb` session by typing `irb` into your terminal and type in the code snippets provided. - -## Exercises -- Each day contains an exercises directory containing files where you will practice writing code. - -Work through the files in the day_1/exercises directory. Complete them in this order: - -1. strings -1. numbers -1. variables -1. interpolation -1. loops - -## Questions -- Each day contains a questions.md file where you will answer questions about what you have learned. - -Answer the day 1 questions within the questions.md file. The `.md` file extension refers to markdown formatting. Markdown is a simple markup language to help format your text. [This article](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) shows everything you need for basic markdown formatting. - -## Save your work in Git - -When you are finished with all of the day_1 activities, follow these steps in order to save your work to your local git repository. - -1. Make sure you are in your `day_1` directory. Enter `ls` in your terminal- You should see the exercises directory, README.md, and questions.md all listed. - -1. In your terminal, enter `git status`. You should see output like this: - - ``` - On branch master - Changes not staged for commit: - (use "git add ..." to update what will be committed) - (use "git checkout -- ..." to discard changes in working directory) - - modified: exercises/interpolation.rb - modified: exercises/loops.rb - modified: exercises/numbers.rb - modified: exercises/strings.rb - modified: exercises/variables.rb - modified: questions.md - - Untracked files: - (use "git add ..." to include in what will be committed) - - ex1.rb - ex2.rb - ex3.rb - ex4.rb - ex5.rb - ex6.rb - ex7.rb - - no changes added to commit (use "git add" and/or "git commit -a") - ``` - - The command `git status` shows us information about files we changed. Don't worry too much about understanding what this all means just yet. What's important is that you get comfortable typing `git status` often. - -1. Enter `git add ex1.rb`. -1. Enter `git status`. Your status should now look a little different: - - ```On branch master - Changes to be committed: - (use "git reset HEAD ..." to unstage) - - new file: ex1.rb - - Changes not staged for commit: - (use "git add ..." to update what will be committed) - (use "git checkout -- ..." to discard changes in working directory) - - modified: exercises/interpolation.rb - modified: exercises/loops.rb - modified: exercises/numbers.rb - modified: exercises/strings.rb - modified: exercises/variables.rb - modified: questions.md - - Untracked files: - (use "git add ..." to include in what will be committed) - - ex2.rb - ex3.rb - ex4.rb - ex5.rb - ex6.rb - ex7.rb - ``` - - Under "Changes to be committed", "ex1.rb" is now listed. This means that git is now prepared to save this file. We want to do this for each file that has been modified. - -1. Enter `git add ex2.rb` -1. Enter `git status`. "ex2.rb" should now be listed under "Changes to be committed". -1. Do this for each of the "ex#.rb" files you created and for the "questions.md" file. -1. Enter `git status`. Under "Changes not staged for commit", you should see all the files in the exercises directory. -1. Enter `git add exercises`. -1. Enter `git status`. You should now see all those exercises files listed under "Changes to be committed". We just used `git add ` to add all the files located in a directory. -1. Enter `git status`. You should now see all your files listed under "Changes to be committed". If there are any files listed under "Untracked files" or "Changes not staged for commit", add them using `git add `. -1. Enter `git commit -m "Add day 1"`. Don't forget to close the quotes of your message! -1. Run `git status`. You should see this output: - -``` -On branch master -nothing to commit, working tree clean -``` - -Congratulations! You just saved your work to Git! If `git status` is showing any files, add them with `git add ` and commit them with `git commit -m "Add day 1"`. - - -## Push to Github - -You've saved your work to git on your **local** machine, but it is not yet accessible through your **remote** Github repository. Updating our **remote** Github repository with our **local** changes is called **pushing**. Push your code with the following command: - -``` -git push origin master -``` - -You should see output similar to this: - -``` -Counting objects: 9, done. -Delta compression using up to 4 threads. -Compressing objects: 100% (8/8), done. -Writing objects: 100% (9/9), 1.03 KiB | 1.03 MiB/s, done. -Total 9 (delta 2), reused 0 (delta 0) -remote: Resolving deltas: 100% (2/2), completed with 1 local object. -To github.com:JohnDoe/backend_mod_1_prework.git - e8ebd7a..32c0ed3 master -> master -``` - -You should now be able to log in to GitHub, navigate to your remote prework repository and see all the work you did today! diff --git a/archived/day_1/exercises/interpolation.rb b/archived/day_1/exercises/interpolation.rb deleted file mode 100644 index c7f4f47df..000000000 --- a/archived/day_1/exercises/interpolation.rb +++ /dev/null @@ -1,25 +0,0 @@ -# In the below exercises, write code that achieves -# the desired result. To check your work, run this -# file by entering the following command in your terminal: -# `ruby day_1/exercises/interpolation.rb` - -# Example: Write code that uses the variables below to form a string that reads -# "The Chudley Cannons are Ron's favorite Quidditch team": -name = "Ron" -team = "Chudley Cannons" - -p "The #{team} are #{name}'s favorite Quidditch team" - -# Write code that uses the variables below to form a string that reads -# "The quick red fox jumped over the lazy brown dog": -speedy = "quick red fox" -slow_poke = "lazy brown dog" - -p # YOUR CODE HERE - -# Write code that uses the variables below to form a string that reads -# "In a predictable result, the tortoise beat the hare!": -slow_poke = "tortoise" -speedy = "hare" - -# YOUR CODE HERE diff --git a/archived/day_1/exercises/loops.rb b/archived/day_1/exercises/loops.rb deleted file mode 100644 index 90dc15ab1..000000000 --- a/archived/day_1/exercises/loops.rb +++ /dev/null @@ -1,18 +0,0 @@ -# In the below exercises, write code that achieves -# the desired result. To check your work, run this -# file by entering the following command in your terminal: -# `ruby day_1/exercises/loops.rb` - -# Example: Write code that prints your name five times: -5.times do - p "Hermione Granger" -end - -# Write code that prints the sum of 2 plus 2 seven times: -7.times do - # YOUR CODE HERE -end - -# Write code that prints the phrase 'She sells seashells down by the seashore' -# ten times: -# YOUR CODE HERE diff --git a/archived/day_1/exercises/numbers.rb b/archived/day_1/exercises/numbers.rb deleted file mode 100644 index 9a5468a31..000000000 --- a/archived/day_1/exercises/numbers.rb +++ /dev/null @@ -1,16 +0,0 @@ -# In the below exercises, write code that achieves -# the desired result. To check your work, run this -# file by entering the following command in your terminal: -# `ruby day_1/exercises/numbers.rb` - -# Example: Write code that prints the result of the sum of 2 and 2: -p 2 + 2 - -# Write code that prints the result of 7 subtracted from 83: -p #YOUR CODE HERE - -# Write code that prints the result of 6 multiplied by 53: -# YOUR CODE HERE - -# Write code that prints the result of the modulo of 10 into 54: -# YOUR CODE HERE diff --git a/archived/day_1/exercises/strings.rb b/archived/day_1/exercises/strings.rb deleted file mode 100644 index f2f903ffc..000000000 --- a/archived/day_1/exercises/strings.rb +++ /dev/null @@ -1,13 +0,0 @@ -# In the below exercises, write code that achieves -# the desired result. To check your work, run this -# file by entering the following command in your terminal: -# `ruby day_1/exercises/strings.rb` - -# Example: Write code that prints your name to the terminal: -p "Alan Turing" - -# Write code that prints `Welcome to Turing!` to the terminal: -p #YOUR CODE HERE - -# Write code that prints `99 bottles of pop on the wall...` to the terminal: -# YOUR CODE HERE diff --git a/archived/day_1/exercises/variables.rb b/archived/day_1/exercises/variables.rb deleted file mode 100644 index a1e45bb26..000000000 --- a/archived/day_1/exercises/variables.rb +++ /dev/null @@ -1,29 +0,0 @@ -# In the below exercises, write code that achieves -# the desired result. To check your work, run this -# file by entering the following command in your terminal: -# `ruby day_1/exercises/variables.rb` - -# Example: Write code that saves your name to a variable and -# prints what that variable holds to the terminal: -name = "Harry Potter" -p name - -# Write code that saves the string 'Dobby' to a variable and -# prints what that variable holds to the terminal: -house_elf = "Dobby" -# YOUR CODE HERE - -# Write code that saves the string 'Harry Potter must not return to Hogwarts!' -# and prints what that variable holds to the terminal: -# YOUR CODE HERE - -# Write code that adds 2 to the `students` variable and -# prints the result: -students = 22 -# YOUR CODE HERE -p students - -# Write code that subracts 2 from the `students` variable and -# prints the result: -# YOUR CODE HERE -p students diff --git a/archived/day_1/questions.md b/archived/day_1/questions.md deleted file mode 100644 index 73700e323..000000000 --- a/archived/day_1/questions.md +++ /dev/null @@ -1,17 +0,0 @@ -## Day 1 Questions - -1. How would you print the string `"Hello World!"` to the terminal? - -1. What character is used to indicate comments in a ruby file? - -1. Explain the difference between an integer and a float? - -1. In the space below, create a variable `animal` that holds the string `"zebra"` - -1. How would you print the string `"zebra"` using the variable that you created above? - -1. What is interpolation? Use interpolation to print a sentence using the variable `animal`. - -1. What method is used to get input from a user? - -1. Name and describe two common string methods: diff --git a/archived/day_2/README.md b/archived/day_2/README.md deleted file mode 100644 index 0c8c1571c..000000000 --- a/archived/day_2/README.md +++ /dev/null @@ -1,46 +0,0 @@ -# Day 2 - Arrays and Iteration - -Computers may not be smart, but they are good at processing things *very* quickly, like working through tons of data. To take full advantage, we need some way of storing lots of data. Today, you will learn about a Ruby data structure, the *Array*, that allows us to store collections of data. You will also learn about *iteration*: when you go through every element of an array. - -When you are all done with the lessons, exercises, and questions for today, you will once again use git to save your work locally, and then send your work to Github. - -## Open your local copy of backend_mod_1_prework - -Using your terminal, open your local copy of the forked repository you created during setup. To do this, you will need to use the terminal command `cd` to enter the directory that holds the repository. Once you are in the correct directory, use the terminal command `atom .` to open the prework repository. Revisit [day_1](../day_1) for more detail if needed. - -## Array and Iteration Lessons - -1. Work through the [Arrays](http://tutorials.jumpstartlab.com/projects/ruby_in_100_minutes.html#7.-arrays) section of Ruby in 100 Minutes. As you work through this section, research each of the methods mentioned by looking through the [Ruby docs for Arrays](https://ruby-doc.org/core-2.4.1/Array.html). Documentation like this might look intimidating, but diving in and practicing now will build your comfort level. Create a file in your day_2 directory called `array_methods.md` and describe what each method does in your own words. -1. Work through the following lessons. Any files that you create while working can be kept in today's `exercises` directory. - - - [ ] Turing's [Iteration and Each](http://backend.turing.io/module1/lessons/iteration_and_each) lesson. - - - [ ] [Booleans](https://learnrubythehardway.org/book/ex27.html) from Learn Ruby the Hard Way. - - - [ ] [Boolean Practice](https://learnrubythehardway.org/book/ex28.html) from Learn Ruby the Hard Way. - -1. Work through the exercise files in the day_2/exercises directory. Complete them in this order: - 1. arrays - 1. iteration - -1. Answer the questions in the questions.md file in the day_2 directory. - -## Save your work in Git - -When you finish all of the day_2 activities, enter the following commands in your terminal in order to save your work to your local git repository: - -1. `$ git add day_2/exercises` -1. `$ git add day_2/questions.md` -1. Use `git add day_2/` to add all additional files that you created today -1. `$ git status` - you should see only green filenames - if you see any that are red, continue to `git add` those files until `git status` shows all green files. -1. `$ git commit -m "Add Day 2 Work"` - -## Push to Github - -Remember- You've saved your work to git on your **local** machine, but it is not yet accessible through your **remote** Github repository. Push your code up to Github with the following command: - -``` -git push origin master -``` - -You should now be able to log in to GitHub, navigate to your remote prework repository and see all the work you did today! diff --git a/archived/day_2/exercises/arrays.rb b/archived/day_2/exercises/arrays.rb deleted file mode 100644 index f572a5ae6..000000000 --- a/archived/day_2/exercises/arrays.rb +++ /dev/null @@ -1,40 +0,0 @@ -# In the below exercises, write code that achieves -# the desired result. To check your work, run this -# file by entering the following command in your terminal: -# `ruby day_2/exercises/arrays.rb` - -# Example: Write code that stores an array in a variable, -# then prints that array: -animals = ["Zebra", "Giraffe", "Elephant"] -p animals - -# Write code that stores an array of states in a variable, -# then prints that array: -states = #YOUR CODE HERE -p states - -# Write code that stores an array of foods in a variable, -# then prints that array: -# YOUR CODE HERE - -# Example: Write code that prints the number of elements -# in your above array of animals: -p animals.count - -# Write code that prints the number of elements -# in your above array of foods: -# YOUR CODE HERE - -# Write code that prints "Zebra" from your animals array: -# YOUR CODE HERE - -# Write code that prints the last item of your foods array: -# YOUR CODE HERE - -# Write code that adds "lion" to your animals array -# and prints the result (Hint- use a method): -# YOUR CODE HERE - -# Write code that removes the last element from your foods array -# and prints the result (Hint- use a method): -# YOUR CODE HERE diff --git a/archived/day_2/exercises/iteration.rb b/archived/day_2/exercises/iteration.rb deleted file mode 100644 index a801cb4fc..000000000 --- a/archived/day_2/exercises/iteration.rb +++ /dev/null @@ -1,28 +0,0 @@ -# In the below exercises, write code that achieves -# the desired result. To check your work, run this -# file by entering the following command in your terminal: -# `ruby day_2/exercises/iteration.rb` - -# Example: Write code that iterates through a list of animals -# and print each animal: -animals = ["Zebra", "Giraffe", "Elephant"] - -animals.each do |animal| - p animal -end - -# Write code that iterates through a list of animals and prints -# "The is awesome!" for each animal: - -animals.each do |animal| - # YOUR CODE HERE -end - -# Write code that stores an array of foods in a variable, -# then iterates over that array to print -# "Add to shopping list" for each food item: -# YOUR CODE HERE - -# Write code that stores an array of numbers in a variable, -# then iterates over that array to print doubles of each number: -# YOUR CODE HERE diff --git a/archived/day_2/questions.md b/archived/day_2/questions.md deleted file mode 100644 index a179f0b04..000000000 --- a/archived/day_2/questions.md +++ /dev/null @@ -1,17 +0,0 @@ -## Day 2 Questions - -1. Create an array containing the following strings: `"zebra", "giraffe", "elephant"`. - -1. Save the array you created above to a variable `animals`. - -1. Using the array `animals`, how would you access `"giraffe"`? - -1. How would you add `"lion"` to the `animals` array? - -1. Name and describe two additional array methods: - -1. What are the boolean values in Ruby? - -1. In Ruby, how would you evaluate if `2` is equal to `25`? What is the result of this evaluation? - -1. In Ruby, how would you evaluate if `25` is greater than `2`? What is the result of this evaluation? diff --git a/archived/day_3/README.md b/archived/day_3/README.md deleted file mode 100644 index d4534e0e1..000000000 --- a/archived/day_3/README.md +++ /dev/null @@ -1,45 +0,0 @@ -# Day 3 - If Statements and Conditionals - -One of the most important concepts in computer programming is knowing when and how to tell the computer to do either _one_ thing or _another_ thing based on a set of simple criteria. We accomplish this with ***If-Statements*** and ***Conditionals***, which you will learn about today. - -When you are all done with the lessons, exercises, and questions for today, you will once again use git to save your work locally, and then send your work to Github. - -## Open your local copy of backend_mod_1_prework - -Using your terminal, open your local copy of the forked repository you created during setup. To do this, you will need to use the terminal command `cd` to enter the directory that holds the repository. Once you are in the correct directory, use the terminal command `atom .` to open the prework repository. Revisit [day_1](../day_1) for more detail if needed. - -## If statement and Conditional Lessons - -1. Work through the following lessons. Any files that you create while working can be kept in today's `exercises` directory. - - - [ ] [What If?](https://learnrubythehardway.org/book/ex29.html) from Learn Ruby the Hard Way. - - - [ ] [Else and If](https://learnrubythehardway.org/book/ex30.html) from Learn Ruby the Hard Way. - - - [ ] [Making Decisions](https://learnrubythehardway.org/book/ex31.html) from Learn Ruby the Hard Way. - - - [ ] [Conditionals](http://tutorials.jumpstartlab.com/projects/ruby_in_100_minutes.html#9.-conditionals) from Ruby in 100 Minutes. - -1. Work through the exercise files in the day_3/exercises directory. - -1. Answer the questions in the questions.md file in the day_3 directory. - -## Save your work in Git - -When you are finished with all of the day_3 activities, enter the following commands in your terminal in order to save your work to your local git repository: - -1. `$ git add day_3/exercises` -1. `$ git add day_3/questions.md` -1. Use `git add day_3/` to add all additional files that you created today -1. `$ git status` - you should see only green filenames - if you see any that are red, continue to `git add` those files until `git status` shows all green files. -1. `$ git commit -m "Add Day 3 Work"` - -## Push to Github - -Remember- You've saved your work to git on your **local** machine, but it is not yet accessible through your **remote** Github repository. Push your code up to Github with the following command: - -``` -git push origin master -``` - -You should now be able to log in to GitHub, navigate to your remote prework repository and see all the work you did today! diff --git a/archived/day_3/exercises/if_statements.rb b/archived/day_3/exercises/if_statements.rb deleted file mode 100644 index a80b96840..000000000 --- a/archived/day_3/exercises/if_statements.rb +++ /dev/null @@ -1,65 +0,0 @@ -# In the below exercises, write code that achieves -# the desired result. To check your work, run this -# file by entering the following command in your terminal: -# `ruby day_3/exercises/if_statements.rb` - -# Example: Using the weather variable below, write code that decides -# what you should take with you based on the following conditions: - # if it is sunny, print "sunscreen" - # if it is rainy, print "umbrella" - # if it is snowy, print "coat" - # if it is icy, print "yak traks" - - weather = 'snowy' - - if weather == 'sunny' - p "sunscreen" - elsif weather == 'rainy' - p "umbrella" - elsif weather == 'snowy' - p "coat" - elsif weather == 'icy' - p "yak traks" - else - p "good to go!" - end - -# Experiment with manipulating the value held in variable 'weather' -# to print something other than 'coat' - - -################## -# Using the num_quarters variable defined below, determine -# if you have enough money to buy a gumball. A gumball costs -# two quarters. - -# Right now, the program will print -# out both "I have enough money for a gumball" and -# "I don't have enough money for a gumball". Write a -# conditional statement that prints only one or the other. - -# Experiment with manipulating the value held within num_quarters -# to make sure both conditions can be achieved. - -num_quarters = 0 - -puts "I have enough money for a gumball" -puts "I don't have enough money for a gumball" - - -##################### -# Using the variables defined below, write code that will tell you -# if you have the ingredients to make a pizza. A pizza requires -# at least two cups of flour and sauce. - -# You should be able to change the variables to achieve the following outputs: -# If cups_of_flour = 1 and has_sauce = true, print "I cannot make pizza" -# If cups_of_flour = 5 and has_sauce = false, print "I cannot make pizza" -# If cups_of_flour = 2 and has_sauce = true, print "I can make pizza" -# If cups_of_flour = 3 and has_sauce = true, print "I can make pizza" - -# Experiment with manipulating the value held within both variables -# to make sure all above conditions output what you expect. - -cups_of_flour = 1 -has_sauce = true diff --git a/archived/day_3/questions.md b/archived/day_3/questions.md deleted file mode 100644 index db6170fa7..000000000 --- a/archived/day_3/questions.md +++ /dev/null @@ -1,13 +0,0 @@ -## Day 3 Questions - -1. What is a conditional statement? Give three examples. - -1. Why might you want to use an if-statement? - -1. What is the Ruby syntax for an if statement? - -1. How do you add multiple conditions to an if statement? - -1. Provide an example of the Ruby syntax for an if/elsif/else statement: - -1. Other than an if-statement, can you think of any other ways we might want to use a conditional statement? diff --git a/archived/day_4/README.md b/archived/day_4/README.md deleted file mode 100644 index 5fb1100bc..000000000 --- a/archived/day_4/README.md +++ /dev/null @@ -1,47 +0,0 @@ -# Day 4 - Methods and Return Values - -On day 1 of the prework, you learned how to store information in Variables. Today, you will learn about another way to store information; more specifically, how to use Methods to create Return Values. In programming, we _often_ use methods, so this is an important concept to get familiar with! - -When you are all done with the lessons, exercises, and questions for today, you will once again use git to save your work locally, and then send your work to Github. - -## Open your local copy of backend_mod_1_prework - -Using your terminal, open your local copy of the forked repository you created during setup. To do this, you will need to use the terminal command `cd` to enter the directory that holds the repository. Once you are in the correct directory, use the terminal command `atom .` to open the prework repository. Revisit [day_1](../day_1) for more detail if needed. - -## Method Lessons - -1. Work through the following lessons. Any files that you create while working can be kept in today's `exercises` directory. - - _*Note*: In some of these lessons, the author refers to methods as functions. They are interchangable here, but at Turing, we will be use the word `method`._ - - - [ ] [Methods](https://launchschool.com/books/ruby/read/methods) from LaunchSchool. Work up to the `obj.method or method(obj)` header. - - - [ ] [Intro to Methods](https://learnrubythehardway.org/book/ex18.html) from Learn Ruby the Hard Way. - - - [ ] [Methods and Variables](https://learnrubythehardway.org/book/ex19.html) from Learn Ruby the Hard Way. - - - [ ] [Methods and Return Values](https://learnrubythehardway.org/book/ex21.html) from Learn Ruby the Hard Way. - -1. Work through the methods.rb file in the day_4/exercises directory. - -1. Answer the questions in the questions.md file in the day_4 directory. - -## Save your work in Git - -When you are finished with all of the day_4 activities, enter the following commands in your terminal in order to save your work to your local git repository: - -1. `$ git add day_4/exercises` -1. `$ git add day_4/questions.md` -1. Use `git add day_4/` to add all additional files that you created today -1. `$ git status` - you should see only green filenames - if you see any that are red, continue to `git add` those files until `git status` shows all green files. -1. `$ git commit -m "Add Day 4 Work"` - -## Push to Github - -Remember- You've saved your work to git on your **local** machine, but it is not yet accessible through your **remote** Github repository. Push your code up to Github with the following command: - -``` -git push origin master -``` - -You should now be able to log in to GitHub, navigate to your remote prework repository and see all the work you did today! diff --git a/archived/day_4/exercises/methods.rb b/archived/day_4/exercises/methods.rb deleted file mode 100644 index 6ed338e5d..000000000 --- a/archived/day_4/exercises/methods.rb +++ /dev/null @@ -1,27 +0,0 @@ -# In the below exercises, write code that achieves -# the desired result. To check your work, run this -# file by entering the following command in your terminal: -# `ruby day_4/exercises/methods.rb` - -# Example: Write a method that when called will print your name: -def print_name - p "Severus Snape" -end - -print_name - -# Write a method that takes a name as an argument and prints it: -def print_name(name) - # YOUR CODE HERE -end - -print_name("Albus Dumbledore") - -# Write a method that takes in 2 numbers as arguments and prints -# their sum. Then call your method: -# YOUR CODE HERE - -# Write a method that takes in two strings as arguments and prints -# a concatenation of those two strings. Example: The arguments could be -# (man, woman) and the end result might output: "When Harry Met Sally". -# Then call your method: diff --git a/archived/day_4/questions.md b/archived/day_4/questions.md deleted file mode 100644 index af17ab4da..000000000 --- a/archived/day_4/questions.md +++ /dev/null @@ -1,11 +0,0 @@ -## Day 4 Questions - -1. In your own words, what is the purpose of a method? - -1. Create a method named `hello` that will print `"Sam I am"`. - -1. Create a method named `hello_someone` that takes an argument of `name` and prints `"#{name} I am"`. - -1. How would you call or execute the method that you created above? - -1. What questions do you have about methods in Ruby? diff --git a/archived/day_5/README.md b/archived/day_5/README.md deleted file mode 100644 index 28be6b8fb..000000000 --- a/archived/day_5/README.md +++ /dev/null @@ -1,41 +0,0 @@ -# Day 5 - Hashes - -Earlier in the week, you learned about one type of collection storage - Arrays. Today, you will learn about another collection storage device called a Hash. As professional developers, you will use hashes on a near daily basis- a solid understanding of how to build hashes and how to retrieve information from them will make life much easier. - -When you are all done with the lessons, exercises, and questions for today, you will once again use git to save your work locally, and then send your work to Github. - -## Open your local copy of backend_mod_1_prework - -Using your terminal, open your local copy of the forked repository you created during setup. Hopefully you are getting the hang of this, but revisit [day_1](../day_1) for more detail if needed. - -## Hash Lessons - -1. Work through the following lessons. Any files that you create while working can be kept in today's `exercises` directory. - - - [ ] [Hashes](https://learnrubythehardway.org/book/ex39.html) from Learn Ruby the Hard Way. - - - [ ] [Hashes](http://tutorials.jumpstartlab.com/projects/ruby_in_100_minutes.html#8.-hashes) from Ruby in 100 minutes. - -1. Work through the hashes.rb file in the day_5/exercises directory. - -1. Answer the questions in the questions.md file in the day_5 directory. - -## Save your work in Git - -When you are finished with all of the day_5 activities, enter the following commands in your terminal in order to save your work to your local git repository: - -1. `$ git add day_5/exercises` -1. `$ git add day_5/questions.md` -1. Use `git add day_5/` to add all additional files that you created today -1. `$ git status` - you should see only green filenames - if you see any that are red, continue to `git add` those files until `git status` shows all green files. -1. `$ git commit -m "Add Day 5 Work"` - -## Push to Github - -Remember- You've saved your work to git on your **local** machine, but it is not yet accessible through your **remote** Github repository. Push your code up to Github with the following command: - -``` -git push origin master -``` - -You should now be able to log in to GitHub, navigate to your remote prework repository and see all the work you did today! diff --git a/archived/day_5/exercises/hashes.rb b/archived/day_5/exercises/hashes.rb deleted file mode 100644 index 99fcebb77..000000000 --- a/archived/day_5/exercises/hashes.rb +++ /dev/null @@ -1,28 +0,0 @@ -# In the below exercises, write code that achieves -# the desired result. To check your work, run this -# file by entering the following command in your terminal: -# `ruby day_5/exercises/hashes.rb` - -# Example: Write code that prints a hash holding grocery store inventory: -foods = {apples: 23, grapes: 507, eggs: 48} -p foods - -# Write code that prints a hash holding zoo animal inventory: -zoo = #YOUR CODE HERE -p zoo - -# Write code that prints all of the 'keys' of the zoo variable -# you created above: -# YOUR CODE HERE - -# Write code that prints all of the 'values' of the zoo variable -# you created above: -# YOUR CODE HERE - -# Write code that prints the value of the first animal of the zoo variable -# you created above: -# YOUR CODE HERE - -# Write code that adds an animal to the zoo hash. -# Then, print the updated hash: -# YOUR CODE HERE diff --git a/archived/day_5/questions.md b/archived/day_5/questions.md deleted file mode 100644 index d059e12c6..000000000 --- a/archived/day_5/questions.md +++ /dev/null @@ -1,13 +0,0 @@ -## Day 5 Questions - -1. What is a Hash, and how is it different from an Array? - -1. In the space below, create a Hash stored to a variable named `pet_store`. This hash should hold an inventory of items and the number of that item that you might find at a pet store. - -1. Given the following `states = {"CO" => "Colorado", "IA" => "Iowa", "OK" => "Oklahoma"}`, how would you access the value `"Iowa"`? - -1. With the same hash above, how would we get all the keys? How about all the values? - -1. What is another example of when we might use a hash? In your example, why is a hash better than an array? - -1. What questions do you still have about hashes? diff --git a/archived/day_6/README.md b/archived/day_6/README.md deleted file mode 100644 index 829fe4809..000000000 --- a/archived/day_6/README.md +++ /dev/null @@ -1,44 +0,0 @@ -# Day 6 - Classes - -Today, you are going to be learning about Objects and Classes. In ruby, Classes are one of the tools we use to group together specific Methods that are meant to work together, or on the same type of Object. Arriving at Turing with a strong understanding of how to build a class, and how to call Methods on that class will make your first couple of weeks go smoothly! - -When you are all done with the lessons, exercises, and questions for today, you will once again use git to save your work locally, and then send your work to Github. - -## Open your local copy of backend_mod_1_prework -Using your terminal, open your local copy of the forked repository you created during setup. Hopefully you are getting the hang of this, but revisit [day_1](../day_1) for more detail if needed. - -## Class lessons - -1. Work through the following lessons. Any files that you create while working can be kept in today's `exercises` directory. - - - [ ] [What Are Objects](https://launchschool.com/books/oo_ruby/read/the_object_model#whatareobjects) section from LaunchSchool. - - - [ ] [Classes Define Objects](https://launchschool.com/books/oo_ruby/read/the_object_model#classesdefineobjects) section from LaunchSchool. - - - [ ] [Classes and Objects Part 1](https://launchschool.com/books/oo_ruby/read/classes_and_objects_part1) from LaunchSchool. - - - [ ] [Objects, Attributes and Methods](http://tutorials.jumpstartlab.com/projects/ruby_in_100_minutes.html#11.-objects,-attributes,-and-methods) from Ruby in 100 Minutes. - -1. Work through the files in the day_6/exercises directory. - -1. Answer the questions in the questions.md file in the day_6 directory. - -## Save your work in Git - -When you are finished with all of the day_6 activities, enter the following commands in your terminal in order to save your work to your local git repository: - -1. `$ git add day_6/exercises` -1. `$ git add day_6/questions.md` -1. Use `git add day_6/` to add all additional files that you created today -1. `$ git status` - you should see only green filenames - if you see any that are red, continue to `git add` those files until `git status` shows all green files. -1. `$ git commit -m "Add Day 6 Work"` - -## Push to Github - -Remember- You've saved your work to git on your **local** machine, but it is not yet accessible through your **remote** Github repository. Push your code up to Github with the following command: - -``` -git push origin master -``` - -You should now be able to log in to GitHub, navigate to your remote prework repository and see all the work you did today! diff --git a/archived/day_6/exercises/burrito.rb b/archived/day_6/exercises/burrito.rb deleted file mode 100644 index 967f68b6c..000000000 --- a/archived/day_6/exercises/burrito.rb +++ /dev/null @@ -1,19 +0,0 @@ -# Add the following methods to this burrito class and -# call the methods below the class: -# 1. add_topping -# 2. remove_topping -# 3. change_protein - -class Burrito - attr_reader :protein, :base, :toppings - def initialize(protein, base, toppings) - @protein = protein - @base = base - @toppings = toppings - end -end - -dinner = Burrito.new("Beans", "Rice", ["cheese", "salsa", "guacamole"]) -p dinner.protein -p dinner.base -p dinner.toppings diff --git a/archived/day_6/exercises/dog.rb b/archived/day_6/exercises/dog.rb deleted file mode 100644 index 03221314d..000000000 --- a/archived/day_6/exercises/dog.rb +++ /dev/null @@ -1,30 +0,0 @@ -# In the dog class below, write a `play` method that makes -# the dog hungry. Call that method below the class, and -# print the dog's hunger status. - -class Dog - attr_reader :breed, :name, :age, :hungry - - def initialize(breed, name, age) - @breed = breed - @name = name - @age = age - @hungry = true - end - - def bark - p "woof!" - end - - def eat - @hungry = false - end -end - -fido = Dog.new("Bernese", "Fido", 4) -p fido.breed -p fido.name -p fido.age -p fido.hungry -fido.eat -p fido.hungry diff --git a/archived/day_6/exercises/person.rb b/archived/day_6/exercises/person.rb deleted file mode 100644 index 2c26e9570..000000000 --- a/archived/day_6/exercises/person.rb +++ /dev/null @@ -1,5 +0,0 @@ -# Create a person class with at least 2 attributes and 2 behaviors. -# Call all person methods below the class and print results -# to the terminal that show the methods in action. - -# YOUR CODE HERE diff --git a/archived/day_6/questions.md b/archived/day_6/questions.md deleted file mode 100644 index f58ca5f71..000000000 --- a/archived/day_6/questions.md +++ /dev/null @@ -1,13 +0,0 @@ -## Day 6 Questions - -1. In your own words, what is a Class? - -1. What is an attribute of a Class? - -1. What is behavior of a Class? - -1. In the space below, create a Dog class with at least 2 attributes and 2 behaviors: - -1. How do you create an instance of a class? - -1. What questions do you still have about classes in Ruby? diff --git a/archived/day_7/10_speckled_frogs.md b/archived/day_7/10_speckled_frogs.md deleted file mode 100644 index 67789f479..000000000 --- a/archived/day_7/10_speckled_frogs.md +++ /dev/null @@ -1,27 +0,0 @@ -## 10 Speckled Frogs - -Create a file named `10_speckled_frogs.rb` and within that file, write several a program that will print the following nursery rhyme: - -> 3 speckled frogs sat on a log -> eating some most delicious bugs. -> One jumped in the pool where its nice and cool, -> then there were 2 speckled frogs. -> -> 2 speckled frogs sat on a log -> eating some most delicious bugs. -> One jumped in the pool where its nice and cool, -> then there was 1 speckled frogs. -> -> 1 speckled frog sat on a log -> eating some most delicious bugs. -> One jumped in the pool where its nice and cool, -> then there were no more speckled frogs! - -### Required -Make your program print the rhyme above for *10* frogs, with attention to where language changes. - -### Extension 1 -Print word versions of each number in the first and fourth lines, for example, the first verse in the above example would print 'Three speckled frogs...' and 'were two speckled frogs'. - -### Extension 2 -Make your program work for any number of frogs. diff --git a/archived/day_7/README.md b/archived/day_7/README.md deleted file mode 100644 index c9a053cd5..000000000 --- a/archived/day_7/README.md +++ /dev/null @@ -1,66 +0,0 @@ -# Day 7 - Build a Thing! - -Congrats on making it through the first 6 days of Prework! Today, you will put together everything you have learned to actually build a program! Hopefully, this will show you how much you have already accomplished in your first week as a programmer! - -When you have completed the activities for day 7, you will follow instructions to submit your work through a GitHub Pull Request. - -## Open your local copy of backend_mod_1_prework -Using your terminal, open your local copy of the forked repository you created during setup. Hopefully you are getting the hang of this, but revisit [day_1](../day_1) for more detail if needed. - -## Make a Program - -1. Using what you have learned in the last week, complete both of the projects below. Put any files related to the projects you choose in a day_7 directory. - - 1. [FizzBuzz](./fizzbuzz.md) - 1. [10 Speckled Frogs](./10_speckled_frogs.md) - -1. When you are finished with your projects, you should add, commit, and push your changes to GitHub. - -1. Add a `high_level.md` file to your day_7 directory. In that file, write up high level notes about how you would solve one of the following problems. When you're finished writing your detailed notes, you can also choose to code a solution to the problem(s). - - 1. [Ceasar Cipher](./ceasar_cipher.md) - 1. [Checker Board](./checker_board.md) - -1. When you are finished with your high level explanation, you should add, commit, and push your changes to GitHub. - -1. Log in to GitHub, navigate to your remote prework repository and make sure all work from all the days is there! - -## Submission - -When you have completed *all* the activities described above, follow the steps below to submit your technical prework. - -1. Go to *your* prework repository on GitHub - -1. click on `New Pull Request` per the image below: - - ![New PR](https://i.imgur.com/lGKNxwC.png) - -1. On the Pull Request page, make sure you see something similar to below (but with your username): - - ![New PR](https://i.imgur.com/CwJH8os.png) - -1. Click on `Create New Pull Request` (circled in the image above). - -1. Enter `YOUR NAME` as the title of the pull request, and click `Create pull request` as shown below: - - ![Create PR](https://i.imgur.com/CQQzfNc.png) - -1. ***[Please complete this form to submit your prework.](https://forms.gle/wxoVuhHKjrRyvGW2A)*** Be sure to include links to your Gear Up pre-work gist and your technical pre-work GitHub repository. The link to your technical pre-work GitHub repository will look something like: `https://github.com/YOUR_GITHUB_USERNAME/backend_mod_1_prework`. (using your own GitHub username, of course!) - -And with that form submission, ***you're done!!!*** Any feedback after this has been reviewed will be Slacked to you. Can't wait to see you on the first day of class!! - ----------------------------------- - -# Extension (optional, after pre-work completed) - -You've finished your Mod 1 pre-work assignment! - -But there's always more to learn! - -If you're interested in challenging yourself _even more_ and getting a step ahead in your coding abilities before your first day, we recommend working on either: - -- [Turing's ruby exercises repo](https://github.com/turingschool/ruby-exercises) -- [A back-end grad's advice and useful study resources](https://josh.works/turing-backend-prep-01-intro) -- [Credit Check](https://github.com/turingschool-examples/credit_check). - -If you do Credit Check, follow the same steps as you did with your pre-work to fork and clone the repo on to your local computer. diff --git a/archived/day_7/ceasar_cipher.md b/archived/day_7/ceasar_cipher.md deleted file mode 100644 index 7390a70bc..000000000 --- a/archived/day_7/ceasar_cipher.md +++ /dev/null @@ -1,16 +0,0 @@ -## Ceasar Cipher - -Also known as a shift cipher, the Ceasar Cipher is one of the oldest and simplest encoding techniques. A Ceasar Cipher works by shifting the alphabet by a defined number of letters down the alphabet. For example, with a left shift of 3, 'D' would be replaced by 'A', 'E' would be replaced by 'B', and so on. See below for a full alphabet example with a left shift of 3: - -``` -plain: ABCDEFGHIJKLMNOPQRSTUVWXYZ -cipher: XYZABCDEFGHIJKLMNOPQRSTUVW -``` - -Create a file named caesar_cipher.rb and within that file, write a program that will take any string, and encode it based on a shift value provided by the user. The interaction pattern for this program might look something like this: - -``` -cipher = CeasarCipher.new -cipher.encode("Hello World", 5) -=> "CZGGJ RJMGY" -``` diff --git a/archived/day_7/checker_board.md b/archived/day_7/checker_board.md deleted file mode 100644 index e8220394a..000000000 --- a/archived/day_7/checker_board.md +++ /dev/null @@ -1,13 +0,0 @@ -## Checker Board - -Create a file called checker_board.rb and within that file, write a program that will print a checkerboard based on the size *indicated by the user*. On this board, the black spaces will be represented with 'X' and the white spaces will be represented with ' '. An example of the output for a size 6 board would look like this: - -``` -X X X - X X X -X X X - X X X -X X X - X X X - ``` - \ No newline at end of file diff --git a/archived/day_7/fizzbuzz.md b/archived/day_7/fizzbuzz.md deleted file mode 100644 index b2a5a8e4b..000000000 --- a/archived/day_7/fizzbuzz.md +++ /dev/null @@ -1,16 +0,0 @@ -## FizzBuzz - -Create a file named fizzbuzz.rb and within that file, write a program that prints something for each number from 1 to 100 with the following rules: - -* For any number that is a multiple of 3, print 'Fizz' -* For any number that is a multiple of 5, print 'Buzz' -* For any number that is a multiple of both 3 and 5, print 'FizzBuzz' -* For all other numbers, print the number. - -The output of your program will look something like this: -``` -=> 1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14, FizzBuzz, ..., 98, Fizz, Buzz -``` - -### Bonus -Can you write the program so that it will run for any range of numbers? From 223a5100ac6281766c794376258645a1e5020158 Mon Sep 17 00:00:00 2001 From: Eric Weissman Date: Mon, 15 Feb 2021 11:05:47 -0700 Subject: [PATCH 28/41] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 40570e269..694eb3c5f 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ Each day has a folder containing a `README.md` file with instructions for the se * [Section 2 - ASKING QUESTIONS, Conditionals and Methods](section2) * [Section 3 - GROWTH MINDSET, Hashes](section3) * [Section 4 - HOW YOU USE YOUR TIME, Objects and Classes](section4) -* [Final Prep - Final Deliverables and Submission](finalPrep) +* [Final Prep - Final Deliverables and Submission](final_prep) ## What to Expect From b4097eefb1a6d486512dde9dba587512d8be9c1b Mon Sep 17 00:00:00 2001 From: Eric Weissman Date: Mon, 15 Feb 2021 14:30:47 -0700 Subject: [PATCH 29/41] Remove environment setup --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 694eb3c5f..1d9f924f4 100644 --- a/README.md +++ b/README.md @@ -45,7 +45,7 @@ We will now cover these three topics: First, let's get a Ruby version management tool on our machines. -## Set up Ruby Environment Manager: [rbenv](https://github.com/rbenv/rbenv#homebrew-on-mac-os-x) + ## Terminal From e10bd2df0372c39c6077c20ac4759cbee908b4d3 Mon Sep 17 00:00:00 2001 From: Eric Weissman Date: Mon, 15 Feb 2021 14:31:18 -0700 Subject: [PATCH 30/41] Adjust super learners link --- section1/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/section1/README.md b/section1/README.md index 2420f2b7b..9ee9ce59d 100644 --- a/section1/README.md +++ b/section1/README.md @@ -34,7 +34,7 @@ Here's what we ask you do: ## Part A Super Learner Habits -Read [this article](https://medium.com/personal-growth/6-habits-of-super-learners-63d466a254fd) about the habits of Super Learners. Reflect on this - what do you already do? Does this make you want to do anything new or different as you beginthis learning journey? Jot down your notes now, and we will ask you to share some reflections with your small group at the end of this section. +Read [this article](https://pubs.ppai.org/pc-today/six-habits-of-super-learners/) about the habits of Super Learners. Reflect on this - what do you already do? Does this make you want to do anything new or different as you beginthis learning journey? Jot down your notes now, and we will ask you to share some reflections with your small group at the end of this section. ## Part B Terminal From 618703fbae2fb1b1ea1f1d074a1d0e0ae33a302c Mon Sep 17 00:00:00 2001 From: Eric Weissman Date: Tue, 16 Feb 2021 09:16:42 -0700 Subject: [PATCH 31/41] Adjust setup instructions --- README.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 1d9f924f4..1e3c27470 100644 --- a/README.md +++ b/README.md @@ -36,14 +36,15 @@ Follow this guide step-by-step to make sure you have everything you need, then y ***Before proceeding***, if you have not already, complete the [mod-0 environment setup instructions](http://mod0.turing.io/setup-instructions) to install Atom, xcode-select, Homebrew, git, and Chrome. -We will now cover these three topics: +We will cover the following: -* [Installing Rbenv - a Ruby Version Manager](#set-up-ruby-environment-manager-rbenv) -* [Installing Ruby Versions using Rbenv](#use-rbenv-to-install-a-certain-version-of-ruby) + +* [Terminal](#terminal) * [Forking and Cloning the Prework Repository](#forking-the-module-1-prework-repository) - -First, let's get a Ruby version management tool on our machines. + +* [Installing Rbenv - a Ruby Version Manager](#set-up-ruby-environment-manager-rbenv) +* [Installing Ruby Versions using Rbenv](#use-rbenv-to-install-a-certain-version-of-ruby) * [Terminal](#terminal) * [Forking and Cloning the Prework Repository](#forking-the-module-1-prework-repository) - - +``` ## Terminal From 97de725208b9937a332827900b015b2e3a47a1b4 Mon Sep 17 00:00:00 2001 From: Eric Weissman Date: Wed, 17 Feb 2021 15:34:45 -0700 Subject: [PATCH 33/41] Adjust rbenv install to 2.7.2 --- README.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 341d7d4dd..c902f72d0 100644 --- a/README.md +++ b/README.md @@ -56,13 +56,13 @@ Additionally, very useful tools called "gems" are out there that were created sp To solve potential compatability issues, we'd like to be able to install and manage multiple versions of Ruby on our system. We would also like to be able to use gems across different versions of Ruby. These are the kinds of things `rbenv` handles. -#### Installation +### Installation -**NOTE: If you have any issues with the `rbenv` setup, make note and we will address in Mod 1. You're system version of ruby will work fine for your Prework exercises!** +#### NOTE: If you have any issues with the `rbenv` setup, please message Eric Weissman on slack (@ericweissman) and we will address your issues at a later date! You're system version of ruby will work fine for your Prework exercises! Here is a video walk-through that may be helpful for the following steps. Check it out! -Keep in mind that the steps in the video are correct, but we want you to install **ruby version 2.5.3**, per the written instructions below. +Keep in mind that the steps in the video are correct, but we want you to install **ruby version 2.7.2**, per the written instructions below. [![Walkthrough RBENV and Ruby](images/rbenv-ruby-thumbnail.jpg)](https://youtu.be/3DtqMlK8In0 "Video Walkthrough for RBENV and Ruby Installation") @@ -121,14 +121,14 @@ More information about rbenv can be found [here](https://github.com/rbenv/rbenv# ### Use rbenv to install a certain version of Ruby -Now that we have rbenv installed, we're going to use it to install a specific version of Ruby: Ruby 2.5.3. This is the version we will use in the Backend Program. +Now that we have rbenv installed, we're going to use it to install a specific version of Ruby: Ruby 2.7.2. This is the version we will use in the Backend Program. -If you need another version it'll be the same procedure, just replace `2.5.3` in the instructions with whichever version you want. +If you need another version it'll be the same procedure, just replace `2.7.2` in the instructions with whichever version you want. Install it with: ``` -$ rbenv install 2.5.3 +$ rbenv install 2.7.2 ``` It will take a while to finish installing, and print a _lot_ of text to your terminal. @@ -139,14 +139,14 @@ When it's all finished, type: $ rbenv versions ``` -and you should now see `2.5.3` listed. +and you should now see `2.7.2` listed. Be careful, there are two different rbenv commands, `version` and `versions`. The first shows you _your current ruby version_. The second shows _all installed versions_. Switch to your newly installed version with ``` -$ rbenv local 2.5.3 +$ rbenv local 2.7.2 ``` Now enter: @@ -158,17 +158,17 @@ $ ruby -v This shows us what version of Ruby we are running. You should see something like: ``` -ruby 2.5.3p105 (2018-10-18 revision 65156) [x86_64-darwin17] +ruby 2.7.2p105 (2018-10-18 revision 65156) [x86_64-darwin17] ``` -You can ignore everything after the `p` in `2.5.3p105`- the first bit shows us we are running Ruby 2.5.3, which is what we want to verify. If you got something different than `2.5.3`, such as `2.4.1`, go back through the Rbenv installation, make sure you have you successfully edited your `bash_profile`, restart your terminal, and try again. +You can ignore everything after the `p` in `2.7.2p105`- the first bit shows us we are running Ruby 2.7.2, which is what we want to verify. If you got something different than `2.7.2`, such as `2.4.1`, go back through the Rbenv installation, make sure you have you successfully edited your `bash_profile`, restart your terminal, and try again. #### Setting the Default Version You can tell rbenv which Ruby version you want to use by default. Let's do that with terminal command: ``` -$ rbenv global 2.5.3 +$ rbenv global 2.7.2 ``` Now, let's make your terminal aware of this update with command: From b2b7e477e319d24efbb01482f54fbb1caaa9e725 Mon Sep 17 00:00:00 2001 From: Brant Fuller Date: Tue, 23 Feb 2021 09:58:05 -0600 Subject: [PATCH 34/41] Add Section 1 --- section1/exercises/booleans.rb | 7 ++- section1/exercises/interpolation.rb | 12 +++-- section1/exercises/loops.rb | 12 +++-- section1/exercises/numbers.rb | 8 ++-- section1/exercises/strings.rb | 9 ++-- section1/exercises/variables.rb | 46 +++++++++++++------ section1/practice_exercises/ex1.rb | 8 ++++ section1/practice_exercises/ex2.rb | 9 ++++ section1/practice_exercises/ex3.rb | 37 +++++++++++++++ section1/practice_exercises/ex3_math_drill.rb | 1 + section1/practice_exercises/ex4.rb | 25 ++++++++++ section1/practice_exercises/ex5.rb | 17 +++++++ section1/practice_exercises/ex6.rb | 37 +++++++++++++++ section1/practice_exercises/ex7.rb | 8 ++++ section1/reflection.md | 22 ++++++++- 15 files changed, 225 insertions(+), 33 deletions(-) create mode 100644 section1/practice_exercises/ex1.rb create mode 100644 section1/practice_exercises/ex2.rb create mode 100644 section1/practice_exercises/ex3.rb create mode 100644 section1/practice_exercises/ex3_math_drill.rb create mode 100644 section1/practice_exercises/ex4.rb create mode 100644 section1/practice_exercises/ex5.rb create mode 100644 section1/practice_exercises/ex6.rb create mode 100644 section1/practice_exercises/ex7.rb diff --git a/section1/exercises/booleans.rb b/section1/exercises/booleans.rb index d3216d9d5..299da8b63 100644 --- a/section1/exercises/booleans.rb +++ b/section1/exercises/booleans.rb @@ -3,13 +3,16 @@ #------------------- # EXAMPLE: log to the console the result of 1 is equal to 2: -p 1 === 2 +puts 1 == 2 # EXAMPLE: log to the console the result of 7 is greater than 2: -p 7 > 2 +puts 7 > 2 # YOU DO: log to the console the result of "hello" is equal to "Hello": +puts "hello" == "Hello" # YOU DO: log to the console the result of 3 is not equal to 4: +puts 3 != 4 # YOU DO: log to the console the result of 4 is less than or equal to 5: +puts 4 <= 5 diff --git a/section1/exercises/interpolation.rb b/section1/exercises/interpolation.rb index 2988c5181..73d48044e 100644 --- a/section1/exercises/interpolation.rb +++ b/section1/exercises/interpolation.rb @@ -8,23 +8,29 @@ name = "Ron" team = "Chudley Cannons" -p "The #{team} are #{name}'s favorite Quidditch team" +puts "The #{team} are #{name}'s favorite Quidditch team" # Write code that uses the variables below to form a string that reads # "The quick red fox jumped over the lazy brown dog": speedy = "quick red fox" slow_poke = "lazy brown dog" -p # YOUR CODE HERE +puts "The #{speedy} jumped over the #{slow_poke}" # Write code that uses the variables below to form a string that reads # "In a predictable result, the tortoise beat the hare!": slow_poke = "tortoise" speedy = "hare" -# YOUR CODE HERE + +puts "In a predictable result, the #{slow_poke} beat the #{speedy}!" # YOU DO: # Declare three variables, name/content/data type of your choice. Think carefully about what you name the variables. Remember, the goal is to be concise but descriptive (it's a hard balance!) Then, log out ONE sentence that incorporates all THREE variables. +bad = "worst" +da_clink = "prison" +soul_suckers = "dementors" + +puts "The #{bad} part about #{da_clink} was the #{soul_suckers}." diff --git a/section1/exercises/loops.rb b/section1/exercises/loops.rb index e8e69523e..e16c75c16 100644 --- a/section1/exercises/loops.rb +++ b/section1/exercises/loops.rb @@ -5,18 +5,22 @@ # Example: Write code that prints your name five times: 5.times do - p "Hermione Granger" + puts "Hermione Granger" end # Write code that prints the sum of 2 plus 2 seven times: 7.times do - # YOUR CODE HERE + puts 2 + 2 end # Write code that prints the phrase 'She sells seashells down by the seashore' # ten times: -# YOUR CODE HERE +10.times do + puts "She sells seashells down by the seashore" +end # Write code that prints the result of 5 + 7 a total of 9 timees -# YOUR CODE HERE +9.times do + puts 5 + 7 +end diff --git a/section1/exercises/numbers.rb b/section1/exercises/numbers.rb index 91435ffb2..3cc700191 100644 --- a/section1/exercises/numbers.rb +++ b/section1/exercises/numbers.rb @@ -4,13 +4,13 @@ # `ruby section1/exercises/numbers.rb` # Example: Write code that prints the result of the sum of 2 and 2: -p 2 + 2 +puts 2 + 2 # Write code that prints the result of 7 subtracted from 83: -p #YOUR CODE HERE +puts 83 - 7 # Write code that prints the result of 6 multiplied by 53: -# YOUR CODE HERE +puts 6 * 53 # Write code that prints the result of the modulo of 10 into 54: -# YOUR CODE HERE +puts 54 % 10 diff --git a/section1/exercises/strings.rb b/section1/exercises/strings.rb index b514a5a63..0b4a162ff 100644 --- a/section1/exercises/strings.rb +++ b/section1/exercises/strings.rb @@ -4,12 +4,13 @@ # `ruby section1/exercises/strings.rb` # Example: Write code that prints your name to the terminal: -p "Alan Turing" +puts "Brant Fuller" # Write code that prints `Welcome to Turing!` to the terminal: -p #YOUR CODE HERE +puts "Welcome to Turing!" # Write code that prints `99 bottles of pop on the wall...` to the terminal: -# YOUR CODE HERE +puts "99 bottles of pop on the wall..." -# Write out code to log one line from your favorite song or movie. \ No newline at end of file +# Write out code to log one line from your favorite song or movie. +puts "I'm a peacock. You gotta let me fly." diff --git a/section1/exercises/variables.rb b/section1/exercises/variables.rb index d765e886a..ab9c2d503 100644 --- a/section1/exercises/variables.rb +++ b/section1/exercises/variables.rb @@ -1,48 +1,62 @@ # In the below exercises, write code that achieves # the desired result. To check your work, run this -# file by entering the following command in your terminal: +# file by entering the following command in your terminal: # `ruby section1/exercises/variables.rb` # Example: Write code that saves your name to a variable and # prints what that variable holds to the terminal: -name = "Harry Potter" -p name +name = "Brant" +puts name # Write code that saves the string 'Dobby' to a variable and # prints what that variable holds to the terminal: house_elf = "Dobby" -# YOUR CODE HERE +puts house_elf # Write code that saves the string 'Harry Potter must not return to Hogwarts!' # and prints what that variable holds to the terminal: -# YOUR CODE HERE +warning = 'Harry Potter must not return to Hogwarts!' +puts warning # Write code that adds 2 to the `students` variable and # prints the result: students = 22 -# YOUR CODE HERE -p students +students += 2 +puts students # Write code that subracts 2 from the `students` variable and # prints the result: -# YOUR CODE HERE -p students +students -= 2 +puts students # YOU DO: -# Declare three variables, named `first_name`, `is_hungry` and `number_of_pets`. +# Declare three variables, named `first_name`, `is_hungry` and `number_of_pets`. # Store the appropriate data types in each. -# print all three variables to the terminal. +first_name = "Brant" +is_hungry = true +number_of_pets = 0 # IN WORDS: -# How did you decide to use the data type you did for each of the three variables above? +# How did you decide to use the data type you did for each of the three variables above? -# Explain. +# If I were to add a question mark to the end of each variable, I could see the +# appropriate data type. When prompting for a first name, a string is the appropriate response. +# When asking if you are hungry, you might respond with yes or no. That is a true/false answer +# which is perfect for a boolean. Also, many boolean variables start with is_ or has_. +# number_of_pets has 'number' right there in the name. # YOU DO: # Re-assign the values to the three variables from the previous challenge to different values (but same data type). # print all three variables to the terminal. +first_name = "Clark" +is_hungry = false +number_of_pets = 1 + +puts first_name +puts is_hungry +puts number_of_pets # YOU DO: @@ -50,10 +64,12 @@ healthy_snacks = 6; junk_food_snacks = 8; +puts healthy_snacks + junk_food_snacks + #------------------- # FINAL CHECK #------------------- -# Did you run this file in your terminal to make sure everything printed out to the terminal - # as you would expect? \ No newline at end of file +# Did you run this file in your terminal to make sure everything printed out to the terminal + # as you would expect? diff --git a/section1/practice_exercises/ex1.rb b/section1/practice_exercises/ex1.rb new file mode 100644 index 000000000..5f2c98470 --- /dev/null +++ b/section1/practice_exercises/ex1.rb @@ -0,0 +1,8 @@ +puts "Hello World!" +puts "Hello Again" +puts "I like typing this." +puts "This is fun." +puts "Yay! Printing." +puts "I'd much rather you 'not'." +puts 'I "said" do not touch this.' +puts "One more line." diff --git a/section1/practice_exercises/ex2.rb b/section1/practice_exercises/ex2.rb new file mode 100644 index 000000000..dffb2b27c --- /dev/null +++ b/section1/practice_exercises/ex2.rb @@ -0,0 +1,9 @@ +# A comment, this is so you can read your program later. +# Anything after the # is ignored by ruby. + +puts "I could have code like this." # and the comment after is ignored + +# You can also use a comment to "disable" or comment out a piece of code: +# puts "This won't run." + +puts "This will run." diff --git a/section1/practice_exercises/ex3.rb b/section1/practice_exercises/ex3.rb new file mode 100644 index 000000000..5c371d1f4 --- /dev/null +++ b/section1/practice_exercises/ex3.rb @@ -0,0 +1,37 @@ +# This line prints the string +puts "I will now count my chickens:" + +# This line counts the hens and interpolates a mathematical expression +puts "Hens #{25.0 + 30.0 / 6.0}" +# This line counts the Roosters and interpolates a mathematical expression +puts "Roosters #{100.0 - 25.0 * 3.0 % 4.0}" + +# This line prints the string +puts "Now I will count the eggs:" + +# This line computes and prints a mathematical expression +puts 3.0 + 2.0 + 1.0 - 5.0 + 4.0 % 2.0 - 1.0 / 4.0 + 6.0 + +# This line prints the string +puts "Is it true that 3 + 2 < 5 - 7?" + +# This line computes and prints a comparitive expression +puts 3.0 + 2.0 < 5.0 - 7.0 + +# This line prints a string and interpolates a mathematical expression +puts "What is 3 + 2? #{3.0 + 2.0}" +# This line prints a string and interpolates a mathematical expression +puts "What is 5 - 7 #{5.0 - 7.0}" + +# This line prints a string +puts "Oh, that's why it's false." + +# This line prints a string +puts "How about some more." + +# This line prints a string and interpolates a comparitive expression +puts "Is it greater #{5.0 > -2.0}" +# This line prints a string and interpolates a comparitive expression +puts "Is it greater or equal? #{5.0 >= -2.0}" +# This line prints a string and interpolates a include comparitive expression +puts "Is it less or equal? #{5.0 <= -2.0}" diff --git a/section1/practice_exercises/ex3_math_drill.rb b/section1/practice_exercises/ex3_math_drill.rb new file mode 100644 index 000000000..c09446271 --- /dev/null +++ b/section1/practice_exercises/ex3_math_drill.rb @@ -0,0 +1 @@ +puts 365 / 5.0 diff --git a/section1/practice_exercises/ex4.rb b/section1/practice_exercises/ex4.rb new file mode 100644 index 000000000..e695b3bfa --- /dev/null +++ b/section1/practice_exercises/ex4.rb @@ -0,0 +1,25 @@ +# This assigns the number 100 to the variable cars +cars = 100 +# This assigns the float 4.0 to the variable space_in_a_car +space_in_a_car = 4.0 +# This assigns the integer 30 to the variable drivers +drivers = 30 +# This assigns the integer 90 to the variable passengers +passengers = 90 +# Assigns the difference of cars and drivers to the vairiable cars_not_driven +cars_not_driven = cars - drivers +# Assigns drivers to the variable cars_driven +cars_driven = drivers +# Assigns the product of cars_driven and space_in_a_car to the varialbe +# carpool_capacity +carpool_capacity = cars_driven * space_in_a_car +# Assigns the quotient of passengers / cars_driven to average_passengers_per_car +average_passengers_per_car = passengers / cars_driven + + +puts "There are #{cars} cars available." +puts "There are only #{drivers} drivers available." +puts "There will be #{cars_not_driven} empty cars today." +puts "We can transport #{carpool_capacity} people today." +puts "We have #{passengers} to carpool today." +puts "We need to put about #{average_passengers_per_car} in each car." diff --git a/section1/practice_exercises/ex5.rb b/section1/practice_exercises/ex5.rb new file mode 100644 index 000000000..49e513dd1 --- /dev/null +++ b/section1/practice_exercises/ex5.rb @@ -0,0 +1,17 @@ +name = 'Zed A. Shaw' +age = 35 # not a lie in 2009 +height = 74 * 2.54 # cm +weight = 180 / 2.2 # kg +eyes = 'Blue' +teeth = 'White' +hair = 'Brown' + +puts "Let's talk about #{name}." +puts "He's #{height} cm tall." +puts "He's #{weight} kg heavy." +puts "Actually that's not too heavy." +puts "He's got #{eyes} eyes and #{hair} hair." +puts "His teeth are usually #{teeth} depending on the coffee." + +# this line is tricky, try to get it exactly right +puts "If I add #{age}, #{height}, and #{weight} I get #{age + height + weight}." diff --git a/section1/practice_exercises/ex6.rb b/section1/practice_exercises/ex6.rb new file mode 100644 index 000000000..27a3d0fc3 --- /dev/null +++ b/section1/practice_exercises/ex6.rb @@ -0,0 +1,37 @@ + +# This assigns the number 10 to a variable +types_of_people = 10 +# Asigns a string with an interpolation to a variable +x = "There are #{types_of_people} types of people." +# Assigns a string to a variable +binary = "binary" +# Assigns a string to a variable +do_not = "don't" +# Assigns a string with interpolation to a variable +y = "Those who know #{binary} and those who #{do_not}." + +# Prints a variable with string data type +puts x +# Prints a variable with string data type +puts y + +# Prints string with interpolation +puts "I said: #{x}." +# Prints string with interpolation +puts "I also said: '#{y}'." + +# Assigns boolean data type to variable +hilarious = false +# Assigns string with interpolation to a variable +joke_evaluation = "Isn't that joke so funny?! #{hilarious}" + +# Prints variable with string data type +puts joke_evaluation + +# Assigns string to a variable +w = "This is the left side of..." +# Assigns string to a variable +e = "a string with a right side." + +# prints two variables with string data types to create one long string +puts w + e diff --git a/section1/practice_exercises/ex7.rb b/section1/practice_exercises/ex7.rb new file mode 100644 index 000000000..4bd3b1902 --- /dev/null +++ b/section1/practice_exercises/ex7.rb @@ -0,0 +1,8 @@ +print "How old are you? " +age = gets.chomp +print "How tall are you? " +height = gets.chomp +print "How much do you weigh? " +weight = gets.chomp + +puts "So, you're #{age} old, #{height} tall and #{weight} heavy." diff --git a/section1/reflection.md b/section1/reflection.md index 7ce0895a6..f96793ee8 100644 --- a/section1/reflection.md +++ b/section1/reflection.md @@ -2,18 +2,38 @@ 1. How did the SuperLearner Article resonate with you? What from this list do you already do? Want to start doing or do more of? Is there anything not on this list, that you would add to it? +I was pleasantly surprised to find that I already have several of the SuperLearner attributes. I think that is why my first response was that the article was underwhelming. I already read a good amount everyday but that is usually news and not in the form of fiction or non-fiction novels. I really enjoy teaching others what I know or what I’ve discovered. I have seen it in many forms. I have taught my classmates as we were studying for tests in college. When I find a new concept, I love to share it with my brother or any of my friends I think may enjoy that information as well. I take short breaks early and often which I always thought was a form of laziness. For the most part I enjoy the journey of learning. That is evident by looking at my 3 undergraduate degrees. I typically watch YouTube or read articles in order to learn and stay informed rather than just to seek entertainment. I mostly eat a very healthy diet thanks to my wife, but I think it would be simple to make small tweaks to have my diet geared toward anti-cognitive decline. I love the idea of growth and improvement but maybe I should take steps to gamify my growth. I think the idea of trying to break stuff to learn how it works or the idea of being curious enough to figure out how something works is another thing that SuperLearners do. + 1. How would you print the string `"Hello World!"` to the terminal? +`puts "Hello World!"`` + 1. What character is used to indicate comments in a ruby file? +`#` + 1. Explain the difference between an integer and a float? +An integer is a whole number where a float has a decimal point + 1. In the space below, create a variable `animal` that holds the string `"zebra"` +`animal = "zebra"` + 1. How would you print the string `"zebra"` using the variable that you created above? +`puts animal` + 1. What is interpolation? Use interpolation to print a sentence using the variable `animal`. +Interpolation is a way to insert data into a string by referencing that data through a variable. + +`puts "Every time I travel from Lubbock to Austin, I have to look for the #{animal}s in Zephyr!"` + 1. What method is used to get input from a user? -1. Name and describe two common string methods: \ No newline at end of file +`gets.chomp` will get input from a method but will not include `\n` in the input. + +1. Name and describe two common string methods: +`.split()` splits a string into an array. The elements inside the created array are split based on the input in the `.split()` method. +`.length` returns the number of characters in the string. From 4a2f497544f9d3082ce302fc619d83e291af64f4 Mon Sep 17 00:00:00 2001 From: Brant Fuller Date: Thu, 25 Feb 2021 14:20:46 -0600 Subject: [PATCH 35/41] Add Section 2 work --- section2/exercises/ex1.rb | 36 ++++++++++++++++++++ section2/exercises/ex2.rb | 53 +++++++++++++++++++++++++++++ section2/exercises/ex3.rb | 42 +++++++++++++++++++++++ section2/exercises/ex3_bonus.rb | 47 +++++++++++++++++++++++++ section2/exercises/ex4.rb | 8 +++++ section2/exercises/ex5.rb | 26 ++++++++++++++ section2/exercises/ex6.rb | 40 ++++++++++++++++++++++ section2/exercises/ex6_bonus.rb | 52 ++++++++++++++++++++++++++++ section2/exercises/ex7.rb | 45 ++++++++++++++++++++++++ section2/exercises/if_statements.rb | 36 +++++++++++++------- section2/exercises/methods.rb | 38 ++++++++++++++++----- section2/reflection.md | 51 ++++++++++++++++++++++++++- 12 files changed, 451 insertions(+), 23 deletions(-) create mode 100644 section2/exercises/ex1.rb create mode 100644 section2/exercises/ex2.rb create mode 100644 section2/exercises/ex3.rb create mode 100644 section2/exercises/ex3_bonus.rb create mode 100644 section2/exercises/ex4.rb create mode 100644 section2/exercises/ex5.rb create mode 100644 section2/exercises/ex6.rb create mode 100644 section2/exercises/ex6_bonus.rb create mode 100644 section2/exercises/ex7.rb diff --git a/section2/exercises/ex1.rb b/section2/exercises/ex1.rb new file mode 100644 index 000000000..1bcf231f6 --- /dev/null +++ b/section2/exercises/ex1.rb @@ -0,0 +1,36 @@ +people = 20 +cats = 30 +dogs = 15 + + +if people < cats + puts "Too many cats! The world is doomed!" +end + +if people > cats + puts "Not many cats! The world is saved!" +end + +if people < dogs + puts "The world is drooled on!" +end + +if people > dogs + puts "The world is dry!" +end + + +dogs += 5 + +if people >= dogs + puts "People are greater than or equal to dogs." +end + +if people <= dogs + puts "People are less than or equal to dogs." +end + + +if people == dogs + puts "People are dogs." +end diff --git a/section2/exercises/ex2.rb b/section2/exercises/ex2.rb new file mode 100644 index 000000000..b9bb67d21 --- /dev/null +++ b/section2/exercises/ex2.rb @@ -0,0 +1,53 @@ +# Assigns integer to a people variable +people = 30 +# Assigns integer to a cars variable +cars = 31 +# Assigns integer to a trucks variable +trucks = 32 + + + +# Decides if the instance of cars are greater than people and +# cars are greater than trucks +if cars > people && cars > trucks + # Prints this statement if the if condition is satisfied + puts "We should take the cars." + # If the if statement condition is not satisfied, look to this + # condition of whether the cars are less than the number of people +elsif cars < people + # Prints this statement if this second condition is satisfied + puts "We should not take the cars." + # If neither of the if conditions are met, procede with this block +else + # Prints this statement if none of the previous conditions are satisfied + puts "We can't decide." + # End the if/elseif block +end + +# Decides if the instance of trucks are greater than cars +if trucks > cars + # Prints this statement if trucks are greater than cars + puts "That's too many trucks." + # If the trucks are not greater than cars, check to see if + # the trucks are less than cars +elsif trucks < cars + # Prints this statement if trucks are less than cars + puts "Maybe we could take the trucks." + # If the trucks are neither greater than or less than cars + # execute this block +else + # Prints this statement + puts "We still can't decide." + # Ends the if/elseif block +end + +# Checks to see if there are more people than trucks +if people > trucks + # Prints this statement if there are more people than trucks + puts "Alright, lets just take the trucks." + # If people aren't greater than trucks, enter this block +else + # Prints this statemetn if people aren't greater than trucks + puts "Fine, let's stay home then." + # Ends the if/elseif block +end diff --git a/section2/exercises/ex3.rb b/section2/exercises/ex3.rb new file mode 100644 index 000000000..c436b98c9 --- /dev/null +++ b/section2/exercises/ex3.rb @@ -0,0 +1,42 @@ +puts "You enter a dark room with two doors. Do you go through door #1 or door #2?" + +print "> " +door = $stdin.gets.chomp + +if door == "1" + puts "There's a giant bear here eating a cheese cake. What do you do?" + puts "1. Take the cake." + puts "2. Scream at the bear." + puts "3. Take a picture." + + print "> " + bear = $stdin.gets.chomp + + if bear == "1" + puts "The bear eats your face off. Good job!" + elsif bear == "2" + puts "The bear eats your legs off. Good job!" + elsif bear == "3" + puts "No one will believe you if it's not on the gram. Good Job!" + else + puts "Well, doing %s is probably better. Bear runs away." % bear + end + +elsif door == "2" + puts "You stare into the endless abyss at Cthulu's retna." + puts "1. Blueberries." + puts "2. Yellow jacket clothespins." + puts "3. Understanding revolvers yelling melodies." + + print "> " + insanity = $stdin.gets.chomp + + if insanity == "1" || insanity == "2" + puts "Your body survives powered by a mind of jello. Good Job!" + else + puts "The insanity rots your eyes into a pool of muck. Good Job!" + end + +else + puts "You stumble around and fall on a knife and die. Good Job!" +end diff --git a/section2/exercises/ex3_bonus.rb b/section2/exercises/ex3_bonus.rb new file mode 100644 index 000000000..6071e84e3 --- /dev/null +++ b/section2/exercises/ex3_bonus.rb @@ -0,0 +1,47 @@ +puts "You need to pick out your outfit for the day. Do you want to (1) look fancy or (2) dress comfortably?" + +print "> " +choice = $stdin.gets.chomp + +if choice == "1" + puts "1. Black-tie" + puts "2. Business" + puts "3. Business Casual" + puts "4. Smart Casual" + + print "> " + fancy = $stdin.gets.chomp + + if fancy == "1" + puts "Where do you even buy something like this? Good luck!" + elsif fancy == "2" + puts "Are you applying for a loan? Good luck!" + elsif fancy == "3" + puts "Perfect, you can hit the golf course after work. Good luck!" + elsif fancy == "4" + puts "What even is smart casual? You'd better start Googling. Good Luck!" + else + puts "I thought we were getting fancy today?" + end + +elsif choice == "2" + puts "1. Athleasure" + puts "2. Cargo shorts" + puts "3. Sweats" + + print "> " + casual = $stdin.gets.chomp + + if casual == "1" + puts "You never know when you'll need to break into a workout. Smart!" + elsif casual == "2" + puts "You always want a place to keep your bottle openers. Smart!" + elsif casual == "3" + puts "Who are we kidding ourselves? No one will see us on camera. Smart!" + else + puts "Staying in bed means less laundry to do. Smart!" + end + +else + puts "Decisions are hard. Get some coffee." +end diff --git a/section2/exercises/ex4.rb b/section2/exercises/ex4.rb new file mode 100644 index 000000000..c9c80fca6 --- /dev/null +++ b/section2/exercises/ex4.rb @@ -0,0 +1,8 @@ +def say(words='hello') + puts words + '.' +end + +say() +say("hi") +say("how are you") +say("I'm fine") diff --git a/section2/exercises/ex5.rb b/section2/exercises/ex5.rb new file mode 100644 index 000000000..2e27229b1 --- /dev/null +++ b/section2/exercises/ex5.rb @@ -0,0 +1,26 @@ +# this one is like your scripts with ARGV +def print_two(*args) + arg1, arg2 = args + puts "arg1: #{arg1}, arg2: #{arg2}" +end + +# ok, that *args is actually pointless, we can just do this +def print_two_again(arg1, arg2) + puts "arg1: #{arg1}, arg2: #{arg2}" +end + +# this just takes one argument +def print_one(arg1) + puts "arg1: #{arg1}" +end + +# this one takes no arguments +def print_none() + puts "I got nothin'." +end + + +print_two("Zed", "Shaw") +print_two_again("Zed", "Shaw") +print_one("First!") +print_none() diff --git a/section2/exercises/ex6.rb b/section2/exercises/ex6.rb new file mode 100644 index 000000000..7a4335bf1 --- /dev/null +++ b/section2/exercises/ex6.rb @@ -0,0 +1,40 @@ +# define a cheese and crachers method that takes 2 parameters +def cheese_and_crackers(cheese_count, boxes_of_crackers) + # prints an interpolated string + puts "You have #{cheese_count} cheeses!" + # prints an interpolated string + puts "You have #{boxes_of_crackers} boxes of crackers!" + # prints a string + puts "Man that's enough for a party!" + # prints a string + puts "Get a blanket.\n" + # ends the method definition block +end + + +# prints a string +puts "We can just give the fuction numbers directly:" +# calls our function with two integer arguments +cheese_and_crackers(20, 30) + + +# prints a string +puts "OR, we can use variables from our script:" +# creates a variable of integer data type +amount_of_cheese = 10 +# creates a variable of integer data type +amount_of_crackers = 50 + +# calls our function with our two newly created variables as arguments +cheese_and_crackers(amount_of_cheese, amount_of_crackers) + + +# prints a string +puts "We can even do math inside too:" +# calls our function using addition within each argument +cheese_and_crackers(10 + 20, 5 + 6) + +# prints a string +puts "And we can combine the two, variables and math:" +# calls our function using variables and math within each argument +cheese_and_crackers(amount_of_cheese + 100, amount_of_crackers + 1000) diff --git a/section2/exercises/ex6_bonus.rb b/section2/exercises/ex6_bonus.rb new file mode 100644 index 000000000..7f41812d6 --- /dev/null +++ b/section2/exercises/ex6_bonus.rb @@ -0,0 +1,52 @@ +# this is to practice using methods + +def sibling(sibling_number) + puts "You have #{sibling_number} sibling(s)." +end + +def reduce_by_one(number_to_be_reduced) + return number_to_be_reduced - 1 +end + +puts "If you had 3 siblings:" +sibling(3) + +puts "How many siblings do you have?" +print "> " +query = gets.chomp.to_i + +sibling(query) +puts "But what if you had 2 more?" +sibling(query + 2) + +twins = 2 + +puts "If you only had one pair of twins for your siblings:" +sibling(twins) +puts "If you had 2 pairs of twins for your siblings:" +sibling(twins + 2) + +puts "How many siblings do you wish you had?" +print "> " +wish = gets.chomp.to_i + +puts "Your wish:" +sibling(wish) + +puts "If you had your ideal siblings less your actual siblings:" +sibling(wish - query) + +difference = wish - query + +puts "Again but different:" +sibling(difference) + +puts "If you had 4 less than that:" +sibling(difference - 4) + +puts "If you had one less than your wish:" +sibling(reduce_by_one(wish)) +puts "If you had one less than 6 more than the difference between your ideal siblings and your actual siblings:" +sibling(reduce_by_one(difference + 6)) +puts "If you had 2 more than one less than 2 more than the difference between your ideal siblings and your actual siblings:" +sibling(2 + reduce_by_one(difference + 2)) diff --git a/section2/exercises/ex7.rb b/section2/exercises/ex7.rb new file mode 100644 index 000000000..92c0e1986 --- /dev/null +++ b/section2/exercises/ex7.rb @@ -0,0 +1,45 @@ +def add(a, b) + puts "ADDING #{a} + #{b}" + return a + b +end + +def subtract(a, b) + puts "SUBTRACTING #{a} - #{b}" + return a - b +end + +def multiply(a, b) + puts "MULTIPLYING #{a} * #{b}" + return a * b +end + +def divide(a, b) + puts "DIVIDING #{a} / #{b}" + return a / b +end + + +puts "Let's do some math with just functions!" + +age = add(30, 5) +height = subtract(78, 4) +weight = multiply(90, 2) +iq = divide(100, 2) + +puts "Age: #{age}, Height: #{height}, Weight: #{weight}, IQ: #{iq}" + + +# A puzzle for the extra credit, type it in anyway. +puts "Here is a puzzle." + +what = add(age, subtract(height, multiply(weight, divide(iq, 2)))) + +puts "That becomes: #{what}. Can you do it by hand?" + +puts "My turn." + +my_turn = divide(100, add(58, subtract(6, multiply(6, 10)))) + +puts "This should equal 25: #{my_turn}" + +puts 24 + 34 / 100 - 1023 diff --git a/section2/exercises/if_statements.rb b/section2/exercises/if_statements.rb index f29c45cdd..177cb43f2 100644 --- a/section2/exercises/if_statements.rb +++ b/section2/exercises/if_statements.rb @@ -3,25 +3,25 @@ # file by entering the following command in your terminal: # `ruby section2/exercises/if_statements.rb` -# Example: Using the weather variable below, write code that decides +# Example: Using the weather variable below, write code that decides # what you should take with you based on the following conditions: # if it is sunny, print "sunscreen" # if it is rainy, print "umbrella" # if it is snowy, print "coat" # if it is icy, print "yak traks" - weather = 'snowy' + weather = 'icy' if weather == 'sunny' - p "sunscreen" + puts "sunscreen" elsif weather == 'rainy' - p "umbrella" + puts "umbrella" elsif weather == 'snowy' - p "coat" + puts "coat" elsif weather == 'icy' - p "yak traks" + puts "yak traks" else - p "good to go!" + puts "good to go!" end # Experiment with manipulating the value held in variable 'weather' @@ -35,21 +35,25 @@ # Right now, the program will print # out both "I have enough money for a gumball" and -# "I don't have enough money for a gumball". Write a +# "I don't have enough money for a gumball". Write a # conditional statement that prints only one or the other. # Experiment with manipulating the value held within num_quarters # to make sure both conditions can be achieved. -num_quarters = 0 +num_quarters = 2 + +if num_quarters < 2 + puts "I don't have enough money for a gumball" +else + puts "I have enough money for a gumball" +end -puts "I have enough money for a gumball" -puts "I don't have enough money for a gumball" ##################### # Using the variables defined below, write code that will tell you -# if you have the ingredients to make a pizza. A pizza requires +# if you have the ingredients to make a pizza. A pizza requires # at least two cups of flour and sauce. # You should be able to change the variables to achieve the following outputs: @@ -61,5 +65,11 @@ # Experiment with manipulating the value held within both variables # to make sure all above conditions output what you expect. -cups_of_flour = 1 +cups_of_flour = 2 has_sauce = true + +if cups_of_flour >=2 && has_sauce + puts "I can make pizza" +else + puts "I cannot make pizza" +end diff --git a/section2/exercises/methods.rb b/section2/exercises/methods.rb index f2517f1b3..4dc11cf93 100644 --- a/section2/exercises/methods.rb +++ b/section2/exercises/methods.rb @@ -5,26 +5,40 @@ # Example: Write a method that when called will print your name: def print_name - p "Severus Snape" + puts "Severus Snape" end print_name # Write a method that takes a name as an argument and prints it: def print_name(name) - # YOUR CODE HERE + puts "#{name}" end print_name("Albus Dumbledore") -# Write a method that takes in 2 numbers as arguments and prints +# Write a method that takes in 2 numbers as arguments and prints # their sum. Then call your method three times with different arguments passed in: -# YOUR CODE HERE +def sum_of_two_numbers(num_1, num_2) + puts num_1 + num_2 +end + +sum_of_two_numbers(1, 3) +sum_of_two_numbers(0, 45) +sum_of_two_numbers(92, -2) + +# Write a method that takes in two strings as arguments and prints +# a concatenation of those two strings. Example: The arguments could be +# (man, woman) and the end result might output: "When Harry Met Sally". +# Then call your method three times with different arguments passed in. + +def get_coffee_with_friends(friend_1, friend_2) + puts "#{friend_1} and #{friend_2} get coffee at Central Perk." +end -# Write a method that takes in two strings as arguments and prints -# a concatenation of those two strings. Example: The arguments could be -# (man, woman) and the end result might output: "When Harry Met Sally". -# Then call your method three times with different arguments passed in. +get_coffee_with_friends("Joey Tribbiani", "Chandler Bing") +get_coffee_with_friends("Monica Geller", "Phoebe Buffay") +get_coffee_with_friends("Ross Geller", "Rachel Green") #------------------- @@ -37,5 +51,11 @@ def print_name(name) # Look at the code you wrote for the previous YOU DO🎈 - what did you name the function, and why? # What did you name each parameter, and why? -# EXPLAIN: +# EXPLAIN: The method name I chose for adding 2 numbers was "sum_of_two_numbers" because it is short, +# it explains what the method does, and it starts with an action word. I named the parameters "num_1" and "num_2" +# because it is easy to understand that we will be passing in two numbers. +# For the method taking two strings, I named it get_coffee_with_friends. I knew the outcome would be a string +# stating two friends characters would be getting coffee at Central Perk. The method name is descriptive, +# it isn't too short or too long, and it begins with an action word. I chose "friend_1" and "friend_2" as the +# parameters because it is descriptive of what arguments should be passed. diff --git a/section2/reflection.md b/section2/reflection.md index 49f0606df..a4cadd79a 100644 --- a/section2/reflection.md +++ b/section2/reflection.md @@ -2,28 +2,77 @@ 1. Regarding the blog posts in Part A, how do you feel about asking questions? Do you tend to ask them too soon, or wait too long, or somewhere in between? +In my previous careers, I have waited too long to ask questions. I have to remind myself that I am paid to do a job and not to remain stuck. + ### If Statements 1. What is a conditional statement? Give three examples. +A conditional statement checks to see if a statement is true or false. +`cars >= trucks` +`3 != 4` +`time > 12` + 1. Why might you want to use an if-statement? +You would want to use an if-statement if you want to only perform a task in a certain situation. + 1. What is the Ruby syntax for an if statement? +``` +if conditional_statement + execute this block +end +``` 1. How do you add multiple conditions to an if statement? +You can use nested if statements and you can use else-if statements. + 1. Provide an example of the Ruby syntax for an if/elsif/else statement: +``` +if bananas > apples && bananas > grapes + puts "bananas are the greatest" +elsif apples > bananas && apples > grapes + puts "apples are the greatest" +elsif grapes > bananas && grapes > apples + puts "grapes are the greatest" +else + puts "there is a tie" +end +``` 1. Other than an if-statement, can you think of any other ways we might want to use a conditional statement? +I can see how it would be useful in testing but I think you would write the test using if-statements. Maybe it would be good to check if variables are what you expect them to be. + ### Methods 1. In your own words, what is the purpose of a method? +Oftentimes a block of code is repeated several times. A method is a good way to make an abstraction that not only reduces the lines of code one has to read +but it can also make the code more clear to understand. + 1. Create a method named `hello` that will print `"Sam I am"`. +``` +def hello() + puts "Sam I am" +end +``` + 1. Create a method named `hello_someone` that takes an argument of `name` and prints `"#{name} I am"`. +``` +def hello_someone(name) + puts ""#{name} I am" +end +``` + 1. How would you call or execute the method that you created above? -1. What questions do you have about methods in Ruby? \ No newline at end of file +`hello_someone("Sam")` + +1. What questions do you have about methods in Ruby? + +- How many parameters should a method reasonably take? +- Could you use a method to generate hashes? From 4b338ddd391a6659484fc3c0f97fa9dcc3de02a3 Mon Sep 17 00:00:00 2001 From: Brant Fuller Date: Sun, 28 Feb 2021 20:22:51 -0600 Subject: [PATCH 36/41] Add section 3 work --- section3/exercises/arrays.rb | 42 +++++++++++++--- section3/exercises/ex1.rb | 68 ++++++++++++++++++++++++++ section3/exercises/hashes.rb | 93 ++++++++++++++++++++++++++---------- section3/reflection.md | 44 +++++++++++++++++ 4 files changed, 216 insertions(+), 31 deletions(-) create mode 100644 section3/exercises/ex1.rb diff --git a/section3/exercises/arrays.rb b/section3/exercises/arrays.rb index f710c6000..d8c2016f2 100644 --- a/section3/exercises/arrays.rb +++ b/section3/exercises/arrays.rb @@ -16,23 +16,32 @@ # Store the array in a variable. animals = ["Zebra", "Giraffe", "Elephant"]; print animals +print "\n" # EXAMPLE: Write code below that will print "Zebra" from the animals array # YOUR CODE HERE -print animals[0] +puts animals[0] # YOU DO: Write code below that will print the number of elements in array of # animals from above. +puts animals.length # YOU DO: Write code that will reassign the last item in the animals # array to "Gorilla" +animals[2] = "Gorilla" -# YOU DO: Write code that will add a new animal (type of your choice) to position 3. +# YOU DO: Write code that will add a new animal (type of your choice) to position 3. +animals[3] = "Tiger" # YOU DO: Write code that will print the String "Elephant" in the animals array +animals[4] = "Elephant" +puts animals[4] +# "Elephant" was in the last element in the array originally. There were directions to +# reassign the last element to "Gorrila". When this happened, "Elephant" was removed +# from the array so I had to add it to the array in order to print the "Elephant" string. #------------------- @@ -40,25 +49,43 @@ #------------------- # YOU DO: Declare a variable that will store an an array of at least 4 foods (strings) - +foods = ["Pizza", "Waffles", "Pasta", "Hamburgers"] # YOU DO: Write code below that will print the number of elements in the array of # foods from above. +puts foods.length + # YOU DO: Write code below that uses a method to add "broccoli" to the foods array and # print the changed array to verify "broccoli" has been added +foods[4] = "broccoli" +print foods +puts "" # YOU DO: Write code below that removes the last item of food from the foods array and # print the changed array to verify that item has been removed +foods.pop() +print foods +puts "" -# YOU DO: Write code to add 3 new foods to the array. +# YOU DO: Write code to add 3 new foods to the array. # There are several ways to do this - choose whichever you'd like! + +extra_foods = ["Rice", "Ham", "Donuts"] +foods += extra_foods + + # Then, print the changed array to verify the new items have been added +print foods +puts "" # YOU DO: Remove the food that is in index position 0. +foods.delete_at(0) +print foods +puts "" #------------------- # PART 3: Where are Arrays used? @@ -77,11 +104,12 @@ posts = ["image at beach", "holiday party", "adorable puppy", "video of cute baby"]; # YOU DO: Think of a web application you commonly use. Where do you see LISTS utilized, where arrays -# may be storing data? Come up with 3 examples - they could be from different web applications or +# may be storing data? Come up with 3 examples - they could be from different web applications or # all from the same one. # 1: +spotify_playlists = ["Lo-Fi Cafe", "Classical Essentials", "Muted Jazz", "All New Indie"] # 2: +espn_favorite_teams = ["Texas Tech Men's Basketball", "Texas Tech Football", "Dallas Mavericks", "Texas Rangers", "Dallas Cowboys"] # 3: - - +ynab_account_names = ["Checking Account", "Double Cash CC", "Ally Savings", "Yotta Savings", "Charles Schwab"] diff --git a/section3/exercises/ex1.rb b/section3/exercises/ex1.rb new file mode 100644 index 000000000..eba450c48 --- /dev/null +++ b/section3/exercises/ex1.rb @@ -0,0 +1,68 @@ +# create a mapping of state to abbreviation +states = { + 'Oregon' => 'OR', + 'Florida' => 'FL', + 'California' => 'CA', + 'New York' => 'NY', + 'Michigan' => 'MI', + 'New Mexico' => 'NM' +} + +# create a basic set of states and some cities in them +cities = { + 'CA' => 'San Francisco', + 'MI' => 'Detroit', + 'FL' => 'Jacksonville', + 'NM' => 'Santa Fe' +} + +# add some more cities +cities['NY'] = 'New York' +cities['OR'] = 'Portland' + +# puts out some cities +puts '-' * 10 +puts "NY state has: #{cities['NY']}" +puts "OR State has: #{cities['OR']}" + +# puts some states +puts '-' * 10 +puts "Michigan's abbreviation is: #{states['Michigan']}" +puts "Florida's abbreviation is: #{states['Florida']}" + +# do it by using the state then cities dict +puts '-' * 10 +puts "Michigan has: #{cities[states['Michigan']]}" +puts "Florida has: #{cities[states['Florida']]}" + +# puts every state abbreviation +puts '-' * 10 +states.each do |state, abbrev| + puts "#{state} is abbreviated #{abbrev}" +end + +# puts every city in state +puts '-' * 10 +cities.each do |abbrev, city| + puts "#{abbrev} has the city #{city}" +end + +# now do bot at the same time +puts '-' * 10 +states.each do |state, abbrev| + city = cities[abbrev] + puts "#{state} is abbreviated #{abbrev} and has city #{city}" +end + +puts '-' * 10 +# by default ruby says "nil" when something isn't in there +state = states['Texas'] + +if !state + puts "Sorry, no Texas." +end + +# default values using //= with the nil result +city = cities['TX'] +city ||= 'Does Not Exist' +puts "The city for the state 'TX' is: #{city}" diff --git a/section3/exercises/hashes.rb b/section3/exercises/hashes.rb index 9d368c753..ce6a2869d 100644 --- a/section3/exercises/hashes.rb +++ b/section3/exercises/hashes.rb @@ -1,31 +1,40 @@ # In the below exercises, write code that achieves # the desired result. To check your work, run this -# file by entering the following command in your terminal: +# file by entering the following command in your terminal: # `ruby section3/exercises/hashes.rb` # Example: Write code that prints a hash holding grocery store inventory: -foods = {apples: 23, grapes: 507, eggs: 48} -p foods +foods = { + apples: 23, + grapes: 507, + eggs: 48} +puts foods # Write code that prints a hash holding zoo animal inventory: -zoo = #YOUR CODE HERE -p zoo - -# Write code that prints all of the 'keys' of the zoo variable +zoo = { + apes: 6, + elephants: 4, + lions: 7, + pandas: 3, + penguins: 13} +puts zoo + +# Write code that prints all of the 'keys' of the zoo variable # you created above: -# YOUR CODE HERE +puts zoo.keys -# Write code that prints all of the 'values' of the zoo variable +# Write code that prints all of the 'values' of the zoo variable # you created above: -# YOUR CODE HERE +puts zoo.values -# Write code that prints the value of the first animal of the zoo variable +# Write code that prints the value of the first animal of the zoo variable # you created above: -# YOUR CODE HERE +puts zoo[:apes] -# Write code that adds an animal to the zoo hash. +# Write code that adds an animal to the zoo hash. # Then, print the updated hash: -# YOUR CODE HERE +zoo[:tigers] = 3 +puts zoo #------------------- @@ -39,16 +48,26 @@ # Declare a variable that stores hash. Each key should be an attribute of an email and each # value should be some appropriate value for that key. Work to have at least 5 key-value pairs. +email_information = { + sender: "George Bluth", + subject: "There's Always Money in the Banana Stand", + date: "11/09/2003", + recipient: "Michael Bluth", + timestamp: "8:00 PM" +} + # Write code that prints your email hash to the terminal. +puts email_information + -# Write code that prints all of the 'keys' of the email hash +# Write code that prints all of the 'keys' of the email hash # you created above: -# YOUR CODE HERE +puts email_information.keys -# Write code that prints all of the 'values' of the email hash +# Write code that prints all of the 'values' of the email hash # you created above: -# YOUR CODE HERE +puts email_information.values #------------------- @@ -64,7 +83,7 @@ # posts = ["image at beach", "holiday party", "adorable puppy", "video of cute baby"]; -# Frankly, that was a very simplified version of the Array the Instagram developers have +# Frankly, that was a very simplified version of the Array the Instagram developers have # written and work with. Still probably slightly simplified as we don't know what their code # actually looks like, but it may look more like this: @@ -76,7 +95,7 @@ 'timestamp' => "4:37 PM August 13, 2019", 'number_likes' => 0, 'comments' => [] - }, + }, { 'image_src' => "./images/holiday-party.png", 'caption' => "What a great holiday party omg", @@ -90,12 +109,38 @@ puts posts[0] -# The code snippet above shows an Array with 2 elements. Each element in an -# Object Literal. Each of those Object Literals has 4 key-value pairs. This may LOOK +# The code snippet above shows an Array with 2 elements. Each element in an +# Object Literal. Each of those Object Literals has 4 key-value pairs. This may LOOK # a bit daunting - it's OK! You don't need to be 100% comfortable with this, but it's # good to have some exposure before going into Mod 1. -# YOU DO: Create an array of at least 3 EMAIL Object Literals, using the same +# YOU DO: Create an array of at least 3 EMAIL Object Literals, using the same # key-value pairs you used in your email Object above. -# Then, log the email Array to the console. \ No newline at end of file +# Then, log the email Array to the console. + +bluth_emails = [ + { + sender: "Gob Bluth", + subject: "I've Made a Huge Mistake", + date: "11/07/2004", + recipient: "Michael Bluth", + timestamp: "8:01 PM" + }, + { + sender: "Carl Weathers", + subject: "Baby You've Got a Stew Going", + date: "02/08/2004", + recipient: "Tobias Funke", + timestamp: "3:15 PM" + }, + { + sender: "Lindsay Bluth", + subject: "Hot Ham Water", + date: "01/02/2006", + recipient: "Buster Bluth", + timestamp: "1:23 PM" + } +] + +puts bluth_emails diff --git a/section3/reflection.md b/section3/reflection.md index cda726fd3..1f77921f6 100644 --- a/section3/reflection.md +++ b/section3/reflection.md @@ -2,16 +2,60 @@ 1. What are two points from the Growth Mindset article and/or video that either resonated with you, or were brand new to you? +- Don't compare yourself to the growth of other developers to determine if you are growing or not. This will be difficult for me. I like to compare myself to others because it often motivates me if I feel like I'm falling behind. +- I used to reflect monthly in one of my previous jobs to see what went well and what could be improved. I was able to be intentional in how I was able to improve myself in that position. I need to do more of that moving forward. + 1. In which ways do you currently demonstrate a Growth Mindset? In which ways do you _not_? +- I always want to improve. It is one of the things that I really enjoy seeing in myself and other aspects of life. It's what I like about golf. I love seeing the progress of a house being built over time. I love making processes more efficient. Progress is the best! +- I struggle with the importance and role of making mistakes. I think I've been groomed through public schooling to think that making a mistake means that I'm not good enough. If something we're doing doesn't fail, we rarely take the time to look and see if we were simply lucky or if we actually did the task correctly. If, instead, we fail, we must examine the process and diagnose what went wrong. By way of investigating and thinking, we learn the process more deeply. 1. What is a Hash, and how is it different from an Array? +- A hash is a data type that consists of pairs of keys and values. The key/value pairs are not indexed numerically unlike elements within an array. + 1. In the space below, create a Hash stored to a variable named `pet_store`. This hash should hold an inventory of items and the number of that item that you might find at a pet store. +``` +pet_store = { + 'Dog collars' => 42, + 'Chew toys' => 24, + 'Cans of Catfood' => 326, + 'Fish tanks' => 19 +} +``` + 1. Given the following `states = {"CO" => "Colorado", "IA" => "Iowa", "OK" => "Oklahoma"}`, how would you access the value `"Iowa"`? +`states['IA']` + 1. With the same hash above, how would we get all the keys? How about all the values? +**keys:** +``` +states.each do |abbrev, state| + puts "#{abbrev}" +end +``` + +*or* + +`puts states.keys` + +**values:** +``` +states.each do |abbrev, state| + puts "#{state}" +end +``` + +*or* + +`puts states.values` + 1. What is another example of when we might use a hash? In your example, why is a hash better than an array? +- You might use a hash when you have something like a phone registry where you have the name as a key and the phone number as a value. It is better than an array because you can search for the number without iterating over the array to find the number. You would also likely need to create an array of arrays to keep track of the same data pairs. + 1. What questions do you still have about hashes? + +- I'd be interested to know why some refer to hashes as objects. Is this common among languages that aren't Ruby? Is this a Turing specific decision and other companies could have different standards? From ba01c600f04b9134607dbca56b7fc470719460b2 Mon Sep 17 00:00:00 2001 From: Brant Fuller Date: Mon, 1 Mar 2021 14:59:39 -0600 Subject: [PATCH 37/41] Add section 4 work --- section4/exercises/burrito.rb | 31 +++++++++++++++++---- section4/exercises/dog.rb | 18 ++++++++----- section4/exercises/ex1.rb | 51 +++++++++++++++++++++++++++++++++++ section4/exercises/ex2.rb | 16 +++++++++++ section4/exercises/person.rb | 22 +++++++++++++-- section4/reflection.md | 38 +++++++++++++++++++++++--- 6 files changed, 160 insertions(+), 16 deletions(-) create mode 100644 section4/exercises/ex1.rb create mode 100644 section4/exercises/ex2.rb diff --git a/section4/exercises/burrito.rb b/section4/exercises/burrito.rb index 967f68b6c..17930392e 100644 --- a/section4/exercises/burrito.rb +++ b/section4/exercises/burrito.rb @@ -1,19 +1,40 @@ -# Add the following methods to this burrito class and +# Add the following methods to this burrito class and # call the methods below the class: # 1. add_topping # 2. remove_topping # 3. change_protein class Burrito - attr_reader :protein, :base, :toppings + attr_accessor :protein, :base, :toppings def initialize(protein, base, toppings) @protein = protein @base = base @toppings = toppings end + + def add_topping(new_topping) + self.toppings.append(new_topping) + end + + def remove_topping(sans_topping) + self.toppings.delete(sans_topping) + end + + def change_protein(protein) + self.protein = protein + end end dinner = Burrito.new("Beans", "Rice", ["cheese", "salsa", "guacamole"]) -p dinner.protein -p dinner.base -p dinner.toppings +puts dinner.protein +puts dinner.base +print dinner.toppings +puts "" +dinner.add_topping("sour cream") +print dinner.toppings +puts "" +dinner.remove_topping("salsa") +print dinner.toppings +puts "" +dinner.change_protein("Chicken") +puts dinner.protein diff --git a/section4/exercises/dog.rb b/section4/exercises/dog.rb index 03221314d..00a838c95 100644 --- a/section4/exercises/dog.rb +++ b/section4/exercises/dog.rb @@ -1,5 +1,5 @@ # In the dog class below, write a `play` method that makes -# the dog hungry. Call that method below the class, and +# the dog hungry. Call that method below the class, and # print the dog's hunger status. class Dog @@ -12,6 +12,10 @@ def initialize(breed, name, age) @hungry = true end + def play + @hungry = true + end + def bark p "woof!" end @@ -22,9 +26,11 @@ def eat end fido = Dog.new("Bernese", "Fido", 4) -p fido.breed -p fido.name -p fido.age -p fido.hungry +puts fido.breed +puts fido.name +puts fido.age +puts fido.hungry fido.eat -p fido.hungry +puts fido.hungry +fido.play +puts fido.hungry diff --git a/section4/exercises/ex1.rb b/section4/exercises/ex1.rb new file mode 100644 index 000000000..143602810 --- /dev/null +++ b/section4/exercises/ex1.rb @@ -0,0 +1,51 @@ + class MyCar + attr_accessor :color + attr_reader :year + + def initialize(year, model, color) + @year = year + @model = model + @color = color + @current_speed = 0 + end + + def speed_up(number) + @current_speed += number + puts "You push the gas and accelerate #{number} mph." + end + + def brake(number) + @current_speed -= number + puts "You push the brake and decelerate #{number} mph." + end + + def current_speed + puts "You are giong #{@current_speed} mph." + end + + def shut_down + @current_speed = 0 + puts "Let's park this bad boy!" + end + + def spray_paint(color) + self.color = color + puts "Your new #{color} paint job looks great!" + end + end + + lumina = MyCar.new(1997, 'Chevy lumina', 'white') + lumina.speed_up(20) + lumina.current_speed + lumina.speed_up(20) + lumina.current_speed + lumina.brake(20) + lumina.current_speed + lumina.brake(20) + lumina.current_speed + lumina.shut_down + lumina.current_speed + lumina.color = 'black' + puts lumina.color + puts lumina.year + lumina.spray_paint("red") diff --git a/section4/exercises/ex2.rb b/section4/exercises/ex2.rb new file mode 100644 index 000000000..37506d866 --- /dev/null +++ b/section4/exercises/ex2.rb @@ -0,0 +1,16 @@ +class Student + attr_accessor :first_name, :last_name, :primary_phone_number + + def introduction(target) + puts "Hi #{target}, I'm #{first_name}!" + end + + def favorite_number + 7 + end +end + +frank = Student.new +frank.first_name = "Frank" +# frank.introduction('Katrina') +puts "Frank's favorite number is #{frank.favorite_number}." diff --git a/section4/exercises/person.rb b/section4/exercises/person.rb index 2c26e9570..099cf3004 100644 --- a/section4/exercises/person.rb +++ b/section4/exercises/person.rb @@ -1,5 +1,23 @@ -# Create a person class with at least 2 attributes and 2 behaviors. +# Create a person class with at least 2 attributes and 2 behaviors. # Call all person methods below the class and print results # to the terminal that show the methods in action. -# YOUR CODE HERE +class Person + attr_accessor :first_name, :weight_in_lbs + def initialize(first_name, weight_in_lbs) + @first_name = first_name + @weight_in_lbs = weight_in_lbs + end + + def greet + puts "Hello, my name is #{first_name}" + end + + def weight_statement + puts "I weigh #{weight_in_lbs} lbs but I'm not to my fighting weight yet." + end +end + +robert = Person.new("Robert", 172) +robert.greet +robert.weight_statement diff --git a/section4/reflection.md b/section4/reflection.md index 68b044b00..18ac61d3f 100644 --- a/section4/reflection.md +++ b/section4/reflection.md @@ -1,22 +1,54 @@ ## Section 4 Reflection 1. How different did your workflow feel this week, considering we asked you to follow the Pomodoro technique? +- When I went to reach for my phone for a mental break, I would first check my pom timer to see if it was acceptable. I stayed more focused but it was more difficult to commit to starting a pom. 1. Regarding the work you did around setting intentions in Step 1 of the Pomodoro technique - how did that go? Were you surprised by anything (did you find yourself way more focused than you realized, more distracted that you thought you'd be, estimating times accurately or totally off, etc)? +- Luckily the layout of the section helped me to set my step 1 pom intention. I think I was surprised at how disciplined I was during the pom. 1. In your own words, what is a Class? +- A Class is a category of a thing. It is also like a factory or a mold that produces instances with common attributes. 1. What is an attribute of a Class? +- An attribute is a characteristic of a class that *every* instance of that class has. 1. What is behavior of a Class? +- A behavior of a class is what *every* instance of a class is capable of doing. 1. In the space below, create a Dog class with at least 2 attributes and 2 behaviors: ```rb - - +class Dog + attr_accessor :name, :bone_pile, :posture + + def initialize(name, bone_pile) + @name = name + @bone_pile = bone_pile + @posture = "Standing" + end + + def sit + @posture = "Sitting" + end + + def up + @posture = "Standing" + end + + def dig_for_bones(number_of_bones) + self.bone_pile += number_of_bones + puts "#{name} has #{bone_pile} bones!" + end + + def eat_bone + self.bone_pile -= 1 + puts "#{name} now has #{bone_pile} bones." + end +end ``` 1. How do you create an instance of a class? +`instance = Class.new()` -1. What questions do you still have about classes in Ruby? \ No newline at end of file +1. What questions do you still have about classes in Ruby? +- I still need to iron out when the '@' symbol is used and when it isn't inside of a definition. From 9f0ce3f02d3642d641d4d4afef30561e833ad35b Mon Sep 17 00:00:00 2001 From: Brant <57786638+branfull@users.noreply.github.com> Date: Tue, 2 Mar 2021 14:32:43 -0600 Subject: [PATCH 38/41] Update with link to mentor DTR gist --- final_prep/README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/final_prep/README.md b/final_prep/README.md index 49cd181a1..10b7512f7 100644 --- a/final_prep/README.md +++ b/final_prep/README.md @@ -5,13 +5,13 @@ Congrats on making it to the Mod 0 Final Prep! Complete the final exercises belo You've learned a ton about some of the core foundations of Javascript! Show us how far you've come by completing the following exercises! You will be using your work from these exercises in your first day of Mod 1! -- [ ] Complete the [Mod Zero Hero Challenge](./mod_zero_hero.rb) -- [ ] Complete the [Annotation Challenge](./annotations.rb) +- [X] Complete the [Mod Zero Hero Challenge](./mod_zero_hero.rb) +- [X] Complete the [Annotation Challenge](./annotations.rb) ### Mentorship Prep Mentorship is an integral part of the Turing experience and will help jumpstart your technical career. In order to get your mentor relationship started on the right foot, please complete the following deliverables: -- [ ] Complete the [Mentorship DTR Prep](https://gist.github.com/ericweissman/51965bdcbf42970d43d817818bfaef3c) - - [ ] Add link to your gist here: +- [X] Complete the [Mentorship DTR Prep](https://gist.github.com/ericweissman/51965bdcbf42970d43d817818bfaef3c) + - [X] Add link to your gist here: https://gist.github.com/branfull/6147cc3ab0df0b6c8860b0d4c5a3a429 ### Lesson Prep You've learned a lot about how to take strong notes during Mod 0. Show us your skills while you learn how to pre-teach content for your first lesson in Mod 1! @@ -64,4 +64,4 @@ If you're interested in challenging yourself _even more_ and getting a step ahea - [A back-end grad's advice and useful study resources](https://josh.works/turing-backend-prep-01-intro) - [Credit Check](https://github.com/turingschool-examples/credit_check). -If you do Credit Check, follow the [same steps](#forking-the-module-1-prework-repository) as you did previously to fork and clone this repo on to your local computer. \ No newline at end of file +If you do Credit Check, follow the [same steps](#forking-the-module-1-prework-repository) as you did previously to fork and clone this repo on to your local computer. From 6542d5c501257c46952836a37960e1ab940948bd Mon Sep 17 00:00:00 2001 From: Brant <57786638+branfull@users.noreply.github.com> Date: Tue, 2 Mar 2021 16:24:42 -0600 Subject: [PATCH 39/41] Add group work dtr link --- final_prep/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/final_prep/README.md b/final_prep/README.md index 10b7512f7..eac22c2dc 100644 --- a/final_prep/README.md +++ b/final_prep/README.md @@ -20,8 +20,8 @@ You've learned a lot about how to take strong notes during Mod 0. Show us your s ### Group Work Prep As part of Turing's project-based learning approach, you will often be working in pairs or larger groups. In order to set yourself (and your team) up for success, it is important to ensure you are prepared to be an equitable contributor and teammate. -- [ ] Complete the [DTR Guiding Questions](https://gist.github.com/ericweissman/c56f3a98cdce761808c21d498a52f5c6) - - [ ] Add a link to your gist here: +- [X] Complete the [DTR Guiding Questions](https://gist.github.com/ericweissman/c56f3a98cdce761808c21d498a52f5c6) + - [X] Add a link to your gist here: https://gist.github.com/branfull/7ed44abb2bd3c8d1f9e0f3b42d22c1c9 ## All Done? How to Submit your M1 Prework When you have completed *all* the activities described above, follow the steps below to submit your technical prework. From a14a2d197e3495070acd663eb20ebaa0b1c923af Mon Sep 17 00:00:00 2001 From: Brant <57786638+branfull@users.noreply.github.com> Date: Tue, 2 Mar 2021 18:02:12 -0600 Subject: [PATCH 40/41] Add pre-teaching practice gist --- final_prep/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/final_prep/README.md b/final_prep/README.md index eac22c2dc..3b44a4d30 100644 --- a/final_prep/README.md +++ b/final_prep/README.md @@ -15,8 +15,8 @@ Mentorship is an integral part of the Turing experience and will help jumpstart ### Lesson Prep You've learned a lot about how to take strong notes during Mod 0. Show us your skills while you learn how to pre-teach content for your first lesson in Mod 1! -- [ ] Complete the [Pre Teaching Practice exercise](https://gist.github.com/ericweissman/0036e8fe272c02bd6d4bb14f42fd2f79) gist - - [ ] Add a link to your gist here: +- [X] Complete the [Pre Teaching Practice exercise](https://gist.github.com/ericweissman/0036e8fe272c02bd6d4bb14f42fd2f79) gist + - [X] Add a link to your gist here: https://gist.github.com/branfull/4e405b3aaeeb18ec2d98a54e21b92051 ### Group Work Prep As part of Turing's project-based learning approach, you will often be working in pairs or larger groups. In order to set yourself (and your team) up for success, it is important to ensure you are prepared to be an equitable contributor and teammate. From ac70d3f1bd54249597ce2d4e8c0f393ac9a43aa2 Mon Sep 17 00:00:00 2001 From: Brant Fuller Date: Tue, 9 Mar 2021 18:50:32 -0600 Subject: [PATCH 41/41] Add annotations and mod zero hero --- final_prep/annotations.rb | 35 ++++++++++++- final_prep/mod_zero_hero.rb | 100 ++++++++++++++++++++++++++++++++---- 2 files changed, 124 insertions(+), 11 deletions(-) diff --git a/final_prep/annotations.rb b/final_prep/annotations.rb index 8b938706c..bd56f5866 100644 --- a/final_prep/annotations.rb +++ b/final_prep/annotations.rb @@ -4,40 +4,73 @@ # Build a Bear +# Defines a method called build_a_bear with name, age, fur, clothes, and special_power as its parameters def build_a_bear(name, age, fur, clothes, special_power) + # Declares a local greeting variable with a string data type. The string uses interpolation to output name greeting = "Hey partner! My name is #{name} - will you be my friend?!" + # Declares a local demographics variable with an array data type containing name and age elememnts demographics = [name, age] + # Declares a local power_saying variable with a string data type. The string uses interpolation to output special_power power_saying = "Did you know that I can #{special_power}?" + # Declares a local built_bear variable with a hash data type. built_bear = { + # The string 'basic_info' is the key and the deographics parameter is the value 'basic_info' => demographics, + # The string 'clothes' is the key and the clothes parameter is the value 'clothes' => clothes, + # The string 'exterior' is the key and the fur parameter is the value 'exterior' => fur, + # The string 'cost' is the key and 49.99 is the value 'cost' => 49.99, + # The string 'sayings' is the key and the array containing the local variable greeting, the local variable power_saying and + # the string "Goodnight my friend!" is the value 'sayings' => [greeting, power_saying, "Goodnight my friend!"], + # The string 'is_cuddly' is the key and the boolean value true is the value 'is_cuddly' => true, } + # Returns the built_bear hash return built_bear +# Ends the method definition end +# Calls the build_a_bear method by passing the appropriate arguments build_a_bear('Fluffy', 4, 'brown', ['pants', 'jorts', 'tanktop'], 'give you nightmares') +# Calls the build_a_bear method by passing the appropriate arguments build_a_bear('Sleepy', 2, 'purple', ['pajamas', 'sleeping cap'], 'sleeping in') # FizzBuzz +# Defines a method called fizzbuzz that has 3 parameters def fizzbuzz(num_1, num_2, range) + # Iterates i from 1 to the range specified by the range parameter which means it performs the loop range times (1..range).each do |i| + # if the current (or i'th) number is divisible by num_1 and num_2 if i % num_1 === 0 && i % num_2 === 0 + # Prints this statement if the conditions in the if statement are met puts 'fizzbuzz' + # If the previous if-statement conditions are not met, this then checks to see if the + # current (or i'th) number is only divisible by num_1 elsif i % num_1 === 0 + # Prints this statement if the conditions in the elsif statement are met puts 'fizz' + # If the previous elsif-statement conditions are not met, this then checks to see if the + # current (or i'th) number is divisible by num_2 elsif i % num_2 === 0 + # Prints this statement if the conditions in the elsif statement are met puts 'buzz' + # If none of the previous conditions are met else + # Prints the current (or i'th) charachter is none of the previous conditions were met puts i + # Ends the if/elsif/else statments end + # Ends the loop end +# Ends the method definition end +# Executes the fizzbuzz method by passing in 3 arguments fizzbuzz(3, 5, 100) -fizzbuzz(5, 8, 400) \ No newline at end of file +# Executes the fizzbuzz method by passing in 3 arguments +fizzbuzz(5, 8, 400) diff --git a/final_prep/mod_zero_hero.rb b/final_prep/mod_zero_hero.rb index 35eb2cdac..8bdb38f7a 100644 --- a/final_prep/mod_zero_hero.rb +++ b/final_prep/mod_zero_hero.rb @@ -1,52 +1,87 @@ # Challenge - See if you can follow the instructions and complete the exercise in under 30 minutes! # Declare two variables - hero_name AND special_ability - set to strings +hero_name = "Superman" +special_ability = "Fly" # Declare two variables - greeting AND catchphrase # greeting should be assigned to a string that uses interpolation to include the hero_name # catchphrase should be assigned to a string that uses interpolation to include the special_ability +greeting = "Hello #{hero_name}!" +catchphrase = "Let's #{special_ability} outta here" # Declare two variables - power AND energy - set to integers +power = 6 +energy = 8 # Declare two variables - full_power AND full_energy # full_power should multiply your current power by 500 # full_energy should add 150 to your current energy +full_power = power * 500 +full_energy = energy + 150 -# Declare two variables - is_human and identity_concealed - assigned to booleans +# Declare two variables - is_human and identity_concealed - assigned to booleans +is_human = false +identity_concealed = true # Declare two variables - arch_enemies AND sidekicks # arch_enemies should be an array of at least 3 different enemy strings # sidekicks should be an array of at least 3 different sidekick strings +arch_enemies = ["Lex Luthor", "Kryptonite", "Bizarro"] +sidekicks = ["Supergirl", "Superboy", "Earth's yellow sun"] + # Print the first sidekick to your terminal +puts sidekicks[0] # Print the last arch_enemy to the terminal +puts arch_enemies[-1] # Write some code to add a new arch_enemy to the arch_enemies array +arch_enemies[3] = "Batman" # Print the arch_enemies array to terminal to ensure you added a new arch_enemey +print arch_enemies +puts "" # Remove the first sidekick from the sidekicks array +sidekicks.shift() # Print the sidekicks array to terminal to ensure you added a new sidekick +print sidekicks +puts "" # Create a function called assess_situation that takes three arguments - danger_level, save_the_day, bad_excuse # - danger_level should be an integer -# - save_the_day should be a string a hero would say once they save the day +# - save_the_day should be a string a hero would say once they save the day # - bad_excuse should be a string a hero would say if they are too afraid of the danger_level # Your function should include an if/else statement that meets the following criteria # - Danger levels that are above 50 are too scary for your hero. Any danger level that is above 50 should result in printing the bad_excuse to the terminal # - Anything danger_level that is between 10 and 50 should result in printing the save_the_day string to the terminal # - If the danger_level is below 10, it means it is not worth your time and should result in printing the string "Meh. Hard pass." to the terminal. +def assess_situation(danger_level, save_the_day, bad_excuse) + if danger_level > 50 + puts "#{bad_excuse}" + elsif danger_level <= 50 && danger_level >= 10 + puts "#{save_the_day}" + else + puts "Meh. Hard pass." + end +end + + #Test Cases announcement = 'Never fear, the Courageous Curly Bracket is here!' excuse = 'I think I forgot to lock up my 1992 Toyota Coralla. Be right back.' # assess_situation(99, announcement, excuse) > Should print - 'I think I forgot to lock up my 1992 Toyota Coralla. Be right back.' +assess_situation(99, announcement, excuse) #assess_situation(21, announcement, excuse) > should print - 'Never fear, the Courageous Curly Bracket is here!' +assess_situation(21, announcement, excuse) #assess_situation(3, announcement, excuse) > should print - "Meh. Hard pass." +assess_situation(3, announcement, excuse) # Declare a new variable - scary_monster - assigned to an hash with the following key/values # - name (string) @@ -55,30 +90,75 @@ # - citiesDestroyed (array) # - luckyNumbers (array) # - address (hash with following key/values: number , street , state, zip) +scary_monster = { + name: "Razor Burn", + smell: "Metallic", + weight: 2, + cities_destroyed: ["London", "Paris", "New York", "Tokyo"], + lucky_numbers: [10, 2, 24, 98], + address: { + number: 123, + street: "Main", + state: "Kansas", + zip: 67226 + } +} # Create a new class called SuperHero # - Your class should have the following DYNAMIC values -# - name +# - name # - super_power -# - age +# - age # - Your class should have the following STATIC values # - arch_nemesis, assigned to "The Syntax Error" # - power_level = 100 -# - energy_level = 50 +# - energy_level = 50 + +class SuperHero + attr_accessor :name, :energy_level, :power_level + def initialize(name, super_power, age) + @name = name + @super_power = super_power + @age = age + @arch_nemesis = "The Syntax Error" + @power_level = 100 + @energy_level = 50 + end + + # - Create the following class methods + # - say_name, should print the hero's name to the terminal + # - maximize_energy, should update the energy_level to 1000 + # - gain_power, should take an argument of a number and INCREASE the power_level by that number + def say_name + puts "#{name}" + end + + def maximize_energy + self.energy_level = 1000 + end + + def gain_power(number_to_increase) + self.power_level += number_to_increase + end +end + + + -# - Create the following class methods -# - say_name, should print the hero's name to the terminal -# - maximize_energy, should update the energy_level to 1000 -# - gain_power, should take an argument of a number and INCREASE the power_level by that number # - Create 2 instances of your SuperHero class +the_typist = SuperHero.new("The Typist", "Typing 180 WPM", 84) +matrix = SuperHero.new("Matrix", "Ability to slow things down", 25) # Reflection # What parts were most difficult about this exerise? +# It was difficult to remember the syntax and layout of functions and classes. # What parts felt most comfortable to you? +# I felt very comfortable declaring variables. # What skills do you need to continue to practice before starting Mod 1? - +# I need to continue to dive into classes and to determine with to use the "@" +# symbol. I also need to make prototypes for classes and functions.