From a2a4223c141a48a40f03249f238a99389795771e Mon Sep 17 00:00:00 2001 From: Laura Guerra Date: Wed, 31 Jan 2024 15:11:15 -0500 Subject: [PATCH 1/9] Separate Ruby and JS try coding --- .ruby-version | 2 +- .../control-flow/index.md | 0 .../index.md | 0 .../js-number-guesser/index.md | 0 .../ruby-intro/index.md | 0 .../ruby-methods/index.md | 0 .../what-is-fe-be/index.md | 0 .../wrap-up/index.md | 0 try-coding-fe/control-flow/index.md | 92 ++++++++++++ try-coding-fe/index.md | 52 +++++++ try-coding-fe/js-intro/index.md | 131 ++++++++++++++++++ try-coding-fe/js-methods/index.md | 89 ++++++++++++ try-coding-fe/rb-number-guesser/index.md | 63 +++++++++ try-coding-fe/what-is-fe-be/index.md | 78 +++++++++++ try-coding-fe/wrap-up/index.md | 28 ++++ 15 files changed, 534 insertions(+), 1 deletion(-) rename {try-coding-general => try-coding-be}/control-flow/index.md (100%) rename {try-coding-general => try-coding-be}/index.md (100%) rename {try-coding-general => try-coding-be}/js-number-guesser/index.md (100%) rename {try-coding-general => try-coding-be}/ruby-intro/index.md (100%) rename {try-coding-general => try-coding-be}/ruby-methods/index.md (100%) rename {try-coding-general => try-coding-be}/what-is-fe-be/index.md (100%) rename {try-coding-general => try-coding-be}/wrap-up/index.md (100%) create mode 100644 try-coding-fe/control-flow/index.md create mode 100644 try-coding-fe/index.md create mode 100644 try-coding-fe/js-intro/index.md create mode 100644 try-coding-fe/js-methods/index.md create mode 100644 try-coding-fe/rb-number-guesser/index.md create mode 100644 try-coding-fe/what-is-fe-be/index.md create mode 100644 try-coding-fe/wrap-up/index.md diff --git a/.ruby-version b/.ruby-version index 2714f53..37c2961 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -2.6.4 +2.7.2 diff --git a/try-coding-general/control-flow/index.md b/try-coding-be/control-flow/index.md similarity index 100% rename from try-coding-general/control-flow/index.md rename to try-coding-be/control-flow/index.md diff --git a/try-coding-general/index.md b/try-coding-be/index.md similarity index 100% rename from try-coding-general/index.md rename to try-coding-be/index.md diff --git a/try-coding-general/js-number-guesser/index.md b/try-coding-be/js-number-guesser/index.md similarity index 100% rename from try-coding-general/js-number-guesser/index.md rename to try-coding-be/js-number-guesser/index.md diff --git a/try-coding-general/ruby-intro/index.md b/try-coding-be/ruby-intro/index.md similarity index 100% rename from try-coding-general/ruby-intro/index.md rename to try-coding-be/ruby-intro/index.md diff --git a/try-coding-general/ruby-methods/index.md b/try-coding-be/ruby-methods/index.md similarity index 100% rename from try-coding-general/ruby-methods/index.md rename to try-coding-be/ruby-methods/index.md diff --git a/try-coding-general/what-is-fe-be/index.md b/try-coding-be/what-is-fe-be/index.md similarity index 100% rename from try-coding-general/what-is-fe-be/index.md rename to try-coding-be/what-is-fe-be/index.md diff --git a/try-coding-general/wrap-up/index.md b/try-coding-be/wrap-up/index.md similarity index 100% rename from try-coding-general/wrap-up/index.md rename to try-coding-be/wrap-up/index.md diff --git a/try-coding-fe/control-flow/index.md b/try-coding-fe/control-flow/index.md new file mode 100644 index 0000000..93f529a --- /dev/null +++ b/try-coding-fe/control-flow/index.md @@ -0,0 +1,92 @@ +--- +layout: lesson +--- + +### Go Back + +- [Welcome and Introductions](../) +- [Ruby Methods](../ruby-methods) + +# Control Flow + +The control flow is the order in which the computer executes the statements in our text editor. Code normally runs from the first line in the file to the last line, top to bottom, unless something changes that. Enter Control Flow. + + +## What is Control Flow? + +You probably noticed the program we wrote before isn’t very flexible. We can ask the user a question and store their input, but we pretty much always say the same thing in response. What if we wanted the flexibility to change the behavior in reaction to the data? + +Control flow gives us the flexibility we’re looking for. We can change the response depending on the information the user types. Take a look at the code below and see if you can guess what the output might look like. Be prepared to share. + +```ruby +puts "How old are you?" +age = gets.chomp.to_i + +if age >= 21 + puts "Welcome to Sierra Nevada Brewing Company!" +else + puts "Sorry, you’re not old enough to access our site. Come back later!" +end +``` + +## if Statements + +Ruby’s if statement is always followed by an expression, which is a fancy way of saying something that evaluates to true or false. If the expression evaluates to true, anything inside that code block is executed. However, if the expression is false, Ruby skips over that block of code. Here’s an example of what that might look like: + +```ruby +if 5 > 4 + puts "You will see this statement in the console, because five is greater than four!" +end +``` + +The way our code is written now, if the expression evaluates to false, we don’t see any output in the console. In order to have another statement that runs if the expression is false, we need an else statement. Here’s an example: + +```ruby +if 5 < 4 + puts "This statement won’t print, because five is NOT less than 4." +else + puts "This statement will print instead!" +end +``` + +We can also check a second condition if we want using an elsif statement. + +```ruby +if 5 < 4 + puts "This statement won’t print, because five is NOT less than 4." +elsif 5 > 4 + puts "This statement will print, because five is greater than 4." +else + puts "This statement won’t print, because a true expression was already found!" +end +``` + +
+

Try It: Control Flow with if Statements

+

Back in your sandbox replit, write a program that will check the user’s age and determine whether or not they can rent a car using the following guidelines:

+ + +

Ready for another challenge? Write a program that asks the user for the product of 5 and 10 and collects their response. Give the user some feedback based on their response. You decide what feedback makes sense!

+ +
+ +
+

Building a "Guess the Number" Game

+

Use this replit as a starting point. We are going to build a “Guess the Number” game for a user in the console. In the starter kit, you already have a secret_number variable assigned to 6 and a puts statement that shows the user the title of game. Follow the steps below to keep going!

+
    +
  1. Next, prompt the user to enter a number from 1 to 10.
  2. +
  3. If the guess is less than the secret number, tell the user, "Not quite. Too low."
  4. +
  5. If the guess is greater than the secret number, tell the user, "Oops. Too high."
  6. +
  7. Otherwise, tell the user they guessed the number with the statement, "You did it!"
  8. +
  9. Test your code a few times to make sure you can generate all 3 responses.
  10. +
  11. Finally, update the value assigned to secret_number to a random number from 1 to 10.
  12. +
+
+ + +### Up Next +- [JavaScript Number Guesser](../js-number-guesser) \ No newline at end of file diff --git a/try-coding-fe/index.md b/try-coding-fe/index.md new file mode 100644 index 0000000..b73db19 --- /dev/null +++ b/try-coding-fe/index.md @@ -0,0 +1,52 @@ +--- +layout: lesson +--- + +# Try Coding + +Please sign up for a free replit.com account before beginning this workshop. + +## Welcome + +- Open up replit.com in a browser (preferably Chrome) and log into your account. +- Change your Zoom display name to your first name, last initial, and pronouns – Kaitlyn V. (she/her). To do that, hover over your image in the gallery view, click the three dots, and select Rename. +- Heads up! We will ask you to introduce yourself in a moment. + +## What to Expect + +Over the course of the day, we will write code, practice the habits of successful developers, and learn a little more about Turing. We will ask you to introduce yourself, ask questions, and occasionally share answers to the technical work we do! By the end of today, you will build your very own “Guess the Number” console game. Below is our agenda for the day: + +- Welcome & Introductions (30 minutes) +- Instruction (90 minutes) +- Wrap-Up (15 minutes) + +## Learning Norms + +- No question is too small and no question is a bad question. Ask them! +- We all benefit from each other's ideas! Push yourself to share at least one time today. +- Keep your camera on during the session (if you can). +- **Questions?** Type into the zoom chat, raise your hand, or come off of mute! Please avoid direct messages unless it is a specific issue only to yourself. +- **Disconnected?** Jump back on! +
+ +## Zoom Practice + +There are several ways to get my attention throughout the workshop today. Let’s practice using some of these tools now. + +- **Type in the chat to everyone.** What is your favorite genre of music? +- **Send the instructor a direct message.** What word describes how you are feeling today? +- **Raise your hand.** Find your zoom toolbar, click Reactions, then Raise Hand. +- **Introduce yourself!** Share your name, pronouns, and your location. Then, share why you’re here. + +1. I’m looking for a career change and I’m trying coding for the first time. +2. I already know I want to attend Turing, but I need to pick a program! +3. My friend or family member won’t stop bugging me about checking this out, so here I am! + +### Up Next + +- [What is Front End and Back End Engineering?](./what-is-fe-be) +- [JavaScript Introduction](./js-intro) +- [JavaScript Methods](./js-methods) +- [Control Flow](./control-flow) +- [Ruby Number Guesser](./rb-number-guesser) +- [Wrap-Up](./wrap-up) diff --git a/try-coding-fe/js-intro/index.md b/try-coding-fe/js-intro/index.md new file mode 100644 index 0000000..6e7f0bf --- /dev/null +++ b/try-coding-fe/js-intro/index.md @@ -0,0 +1,131 @@ +--- +layout: lesson +--- + +### Go Back + +- [Welcome and Introductions](../) +- [What is Front End and Back End Engineering?](../what-is-fe-be) + +# Ruby Introduction + +Ruby is a dynamic, open-source programming language widely known for its simplicity. It has an intuitive syntax that is natural to read and comparatively easy to write. It is used primarily for Back End Engineering. + + +## Forking Your First Replit + +Replit is a web-based interactive development environment or IDE. It allows us to write code and see the output in the console at the same time. To get started today, we will be working in this Ruby sandbox replit. When you open this replit, click the blue "Fork Repl" button to make your own copy on your account. From here, you can add code or delete code as much as you like. It's yours! + +A sandbox is a place where we can play around with code! Use this space to take notes or try things throughout the workshop today. + +## puts + +In your sandbox replit, complete the activity that follows. + +
+

Try It: Exploring puts

+

Read the Ruby code and then run it.

+

What does the output tell you about the job of the puts command?

+
+ +
+
+

Takeaways

+
+ +
+
+
+
    +
  • puts is a command that is built into the Ruby language
  • +
  • puts will print the value it is instructed to print and creates a line break after printing the data
  • +
+
+
+
+ +## Variables + +In order to store a piece of data and reference it later, possibly many times throughout our code, we need to use variables. You can think of a variable like a storage container with a label on it where we can hold items we care about. In Ruby we define variables by typing the name of the variable we wish to create, followed by the assignment operator, and then the value we want to store in that variable. + +When working with Ruby, we use snake_case for any variable names, meaning all characters should be lowercase with multiple words separated by underscores. + +```ruby +email = "helloworld@gmail.com" +first_name = "Brandi" +location = "Tampa, FL 🌴" +``` + +
+

Try It: Variables in Ruby

+

Back in your sandbox replit, declare three variables that describe yourself. Use puts followed by each variable name to confirm that you’ve done this correctly!

+
+ +## Data Types + +In Ruby, your data (information) can be different types. There are two data types we will be working with today: Integer (any whole number), and String (words or phrases like "Ruby is fun!"). We use the Integer data type if we are storing data that may be manipulated in some way. We use the String data type if our data needs to remain consistent. With String data, anything inside of the quotation marks is preserved. + +
+

Deciding on a Data Type

+

For each item listed below, determine which data type is most appropriate for the information. +

+

+
+ +
+

Try It: Data Types

+

Back in your replit, add two more variables assigned to Integer values. Use puts or print to verify that the data was stored in the variable as expected!

+
+ +## User Input + +Our programs haven’t been very exciting so far because we already know what will happen just by looking at the code. What if your program incorporated dynamic input from the user? + +**Explore** + +1. Read the code in this replit and *guess* what it will do. It is also available below, if you prefer to preview it here. +2. Run the program. It's interactive! Be ready to type in your answers in the console area. + + + +
+
+

Takeaways

+
+ +
+
+
+
    +
  • Instead of manually typing in every value, we can collect values from our user to provide a dynamic experience.
  • +
  • When the code is run, it will stop at gets.chomp and wait for the user to type input into the console.
  • +
  • gets collects a string from the console and chomp removes the final character which is the enter/return.
  • +
+
+
+
+ +
+

Try It: Getting User Input

+
    +
  1. In your sandbox replit, write a small program that asks the user for their name and responds with a sentence of your choice!
  2. +
  3. Now, add on to your program and ask your user two more questions. If you’re not feeling creative, ask them how they are feeling today or their best friend’s name! Try running your program a few times with different values stored in the variables each time.
  4. +
+
+ +### Up Next +- [Ruby Methods](../ruby-methods) diff --git a/try-coding-fe/js-methods/index.md b/try-coding-fe/js-methods/index.md new file mode 100644 index 0000000..9f9902b --- /dev/null +++ b/try-coding-fe/js-methods/index.md @@ -0,0 +1,89 @@ +--- +layout: lesson +--- + +### Go Back + +- [Welcome and Introductions](../) +- [Ruby Introduction](../ruby-intro) + +# Ruby Methods + +Depending on the data type, we can use some built-in Ruby methods to manipulate the data! + +## String Methods + +In the spirit of _exploring to learn_, take a look at the code below. What do you think will happen when you run it? + +```ruby +first_name = "osCAr" +puts "Hello, #{first_name}!" +puts "Hello, #{first_name.capitalize}!" +``` + +
+

Try It: Exploring String Methods

+

Read the code above and predict what will happen when you run it. Try to explain why.

+

Now, type or copy and paste the code into your replit and run it. Was your prediction correct?

+

Then, change capitalize to upcase, then downcase, then reverse. Re-run the code each time to change it, and observe the output.

+
+ +
+
+

Takeaways

+
+ +
+
+
+
    +
  • Ruby provides a variety of methods that can be used specifically on Strings - we can think of them as actions.
  • +
  • A Ruby developer doesn't need to memorize every method that is available; some will be used regularly but others won't. For this reason, developers rely heavily on resources like ruby-doc.org!
  • +
+
+
+ +### The rand() Method + +There are some methods that can be used for a specific purpose without having data to manipulate. The rand() method returns a random integer. When the rand() method is called with no arguments, it returns a decimal value greater than or equal to 0 and less than 1. + +```ruby +random_value = rand() +puts random_value +# => 0.7893798326241 +``` + +To get a random integer, you can pass in an integer as an argument, between the parenthesis. The rand() method returns an integer value that is greater than or equal to 0 and less than the integer passed in. + +```ruby +random_value = rand(6) +puts random_value +# => 5 +``` + +You can also pass in a range for the rand() method. To use an inclusive range, use two dots. For a non-inclusive range, use three dots. The following example shows how to use an inclusive range as the argument with a lower limit of 1 up to (and including) the upper limit of 20. + +```ruby +random_value = rand(1..20) +puts random_value +# => 20 +``` + + +
+

Try It: Using the rand() Method

+

Back in your sandbox replit, solve each of the challenges below.

+
    +
  1. Store a random number between 1 and 99, inclusive of 99, in a variable called random_num. Use puts or print and run your code a few times to verify the result.
  2. +
  3. Create a variable named lottery_number assigned to a random six-digit number.
  4. +
+
+ + +### Up Next + +- [Control Flow](../control-flow) \ No newline at end of file diff --git a/try-coding-fe/rb-number-guesser/index.md b/try-coding-fe/rb-number-guesser/index.md new file mode 100644 index 0000000..c906a2a --- /dev/null +++ b/try-coding-fe/rb-number-guesser/index.md @@ -0,0 +1,63 @@ +--- +layout: lesson +--- + +### Go Back + +- [Welcome and Introductions](../) +- [Control Flow](../control-flow) + +# JavaScript Number Guesser + +Your Ruby number guesser code probably looks something like this: + +```ruby +secret_number = 6 + +puts "Guess the secret number!" + +guess = gets.chomp.to_i + +if guess > secret_number + puts "Too high!" +elsif guess < secret_number + puts "Too low!" +else + puts "Great job! You got it!" +end +``` + +This is something you might build if you were in the Back End program at Turing. + +Now let's take a look at what this same code would look like if you were implementing JavaScript in our Front End program. + +
+

Explore: Front End Number Guesser

+

Take a few minutes to explore the code linked below.

+

Consider: What are the similarities and differences you see between the Ruby code and the JavaScript code?

+ View the code here! +
+ +## Front End versus Back End + +Whether we're working on the Front End or the Back End of an application, there is a lot of logic and data manipulation involved as illustrated by the number guessing code. The difference in Front End and Back End comes in what you'd work on next. + +If you're in the Front End program your next steps in this number guesser program might be to build the user interface, what the user sees and interacts with. Think about the webpage for this number guessing application. + +- What would the styling of this page be? (colors, fonts, shading) +- How would the user input their guess and what would that *element* look like? +- Would there be any animations on the page to engage the user? + + +If you're in the Back End program, your next steps might be in dealing with how to store this data and what to do with the data. + +- How should we store the information in the database? +- Do we need to manipulate the data before storing it? +- Is there any additional information we can get from the data such as averages, sums, or counts? + +## Questions + +What questions do you have about any of the content we've covered so far? + +## Up Next: +- [Wrap Up](../wrap-up) diff --git a/try-coding-fe/what-is-fe-be/index.md b/try-coding-fe/what-is-fe-be/index.md new file mode 100644 index 0000000..d9fc735 --- /dev/null +++ b/try-coding-fe/what-is-fe-be/index.md @@ -0,0 +1,78 @@ +--- +layout: lesson +--- + +### Go Back + +- [Welcome and Introductions](../) + +# What is Front End and Back End Engineering? + +## How Does the Internet Even Work? + +When you visit a URL like https://www.vcahospitals.com/, what happens? + +Here is a simplified diagram of the client-server model: + +!["Simple client server model, client/computer is on left side , with an arrow labeled 'request' pointing to a server on the right right. The server has an arrow labeled 'response' pointing back to the client. The set of arrows is labeled with 'HTTP(S)'."](https://developer.mozilla.org/en-US/docs/Learn/Forms/Sending_and_retrieving_form_data/client-server.png) +
+Source: Mozilla.org +
+ +When a User enters in a website name (web address), a request is made to the Server for that company. That server stores all the data for that company and will return the data which was requested. The Client (browser), will then display that data and allow the user to view and interact with the requested data. + +## What is the Front End? + +The **Front End** is the part of the application that users see, touch, and interact with. + +When we're talking about web development, the Front End is the part of the code base that takes care of rendering the user interface in the web browser. + +The Front End will prompt users in various ways to collect information which can be used to customize the user's experience within an application. + +## What technologies are used on the Front End? + +The three main technologies used on the Front End are: +- CSS (styling of the webpage) +- HTML +- JavaScript + +Other frameworks are build on top of JavaScript such as React, Vue, or Angular. + + +## What is the Back End? + +Back End engineering is concerned with managing and manipulating ​data​ (aka information). + +When we talk about Back End engineering, we're often thinking of the programming tasks involved in making this possible: + +- Storing data and accessing it later +- Verifying that data is accurate +- Manipulating, analyzing, and/or calculating data +- Making sure data can be retrieved quickly and easily + + +## What technologies are used on the Back End? + +There are numerous technologies that can be used for Back End programming. Here are a few of them: + +- **Languages and frameworks**: Ruby/Rails, Python/Django, Elixir/Phoenix, Java/Spring, and more. +- **Databases**: PostgreSQL, MySQL, Oracle Database, MongoDB, etc. + +## Both Front End and Back End work with a lot of data and logic. + +Most of the work you will do as a developer is data manipulation. + +- How will you get the data? +- What parts of it will you use? +- Do you need to reformat any of the data? +- How will you display the data to the user? +- What does this data mean? + +Both Front End and Back End deal with taking in data (input), and then giving back or *returning* new data based on that input. Today we're going to look at how we might work with some of this data in both Ruby, our Back End language, and JavaScript, our Front End language. + +### Interested in learning more about FE vs BE? + +:arrow_right: Come to a **What is Front End, Back End, and Full Stack Development? workshop**! You can see a list of upcoming events here! + +## Up Next +- [Ruby Introduction](../ruby-intro) diff --git a/try-coding-fe/wrap-up/index.md b/try-coding-fe/wrap-up/index.md new file mode 100644 index 0000000..59206ea --- /dev/null +++ b/try-coding-fe/wrap-up/index.md @@ -0,0 +1,28 @@ +--- +layout: lesson +--- + +### Go Back + +- [Welcome and Introductions](../) +- [JavaScript Number Guesser](../js-number-guesser) + +# Next Steps + +## Feedback + +At Turing, we rely on constant feedback from our students to improve the Turing experience. Please take two minutes at this time to fill out this survey to give us feedback on this Try Coding session today. + +## Attend Other Events + +We are always creating new, exciting events for prospective students. Check out our upcoming events here! + +## Talk to Us + +We know everyone has different barriers or concerns as they start this process. Our team is here to help you find solutions to each barrier and ease your concerns from how to pay for Turing to what is the job support like. + +Reach out if you have any questions at all - from *Can I afford this?* to *Should I do frontend or backend?* to *What is a typical day like as a Turing student?* - we're here for you! Email **admissions@turing.edu** with your questions and we'll schedule a one on one call with you! + +## Apply! + +Let's do it! Start your application today at apply.turing.edu. From 32d122b8ff8ee362510cbdaa907fae3e663e52ef Mon Sep 17 00:00:00 2001 From: Laura Guerra Date: Wed, 31 Jan 2024 15:18:08 -0500 Subject: [PATCH 2/9] Change names for links in fe lesson --- try-coding-fe/control-flow/index.md | 7 +++---- try-coding-fe/js-intro/index.md | 6 +++--- try-coding-fe/js-methods/index.md | 6 ++---- try-coding-fe/what-is-fe-be/index.md | 20 ++++++++++---------- try-coding-fe/wrap-up/index.md | 6 +++--- 5 files changed, 21 insertions(+), 24 deletions(-) diff --git a/try-coding-fe/control-flow/index.md b/try-coding-fe/control-flow/index.md index 93f529a..7499b8b 100644 --- a/try-coding-fe/control-flow/index.md +++ b/try-coding-fe/control-flow/index.md @@ -5,13 +5,12 @@ layout: lesson ### Go Back - [Welcome and Introductions](../) -- [Ruby Methods](../ruby-methods) +- [JavaScript Methods](../js-methods) # Control Flow The control flow is the order in which the computer executes the statements in our text editor. Code normally runs from the first line in the file to the last line, top to bottom, unless something changes that. Enter Control Flow. - ## What is Control Flow? You probably noticed the program we wrote before isn’t very flexible. We can ask the user a question and store their input, but we pretty much always say the same thing in response. What if we wanted the flexibility to change the behavior in reaction to the data? @@ -87,6 +86,6 @@ end - ### Up Next -- [JavaScript Number Guesser](../js-number-guesser) \ No newline at end of file + +- [Ruby Number Guesser](../rb-number-guesser) diff --git a/try-coding-fe/js-intro/index.md b/try-coding-fe/js-intro/index.md index 6e7f0bf..7f44dc8 100644 --- a/try-coding-fe/js-intro/index.md +++ b/try-coding-fe/js-intro/index.md @@ -11,7 +11,6 @@ layout: lesson Ruby is a dynamic, open-source programming language widely known for its simplicity. It has an intuitive syntax that is natural to read and comparatively easy to write. It is used primarily for Back End Engineering. - ## Forking Your First Replit Replit is a web-based interactive development environment or IDE. It allows us to write code and see the output in the console at the same time. To get started today, we will be working in this Ruby sandbox replit. When you open this replit, click the blue "Fork Repl" button to make your own copy on your account. From here, you can add code or delete code as much as you like. It's yours! @@ -93,7 +92,7 @@ Our programs haven’t been very exciting so far because we already know what wi **Explore** -1. Read the code in this replit and *guess* what it will do. It is also available below, if you prefer to preview it here. +1. Read the code in this replit and _guess_ what it will do. It is also available below, if you prefer to preview it here. 2. Run the program. It's interactive! Be ready to type in your answers in the console area. @@ -128,4 +127,5 @@ Our programs haven’t been very exciting so far because we already know what wi ### Up Next -- [Ruby Methods](../ruby-methods) + +- [JavaScript Methods](../js-methods) diff --git a/try-coding-fe/js-methods/index.md b/try-coding-fe/js-methods/index.md index 9f9902b..7149b56 100644 --- a/try-coding-fe/js-methods/index.md +++ b/try-coding-fe/js-methods/index.md @@ -5,7 +5,7 @@ layout: lesson ### Go Back - [Welcome and Introductions](../) -- [Ruby Introduction](../ruby-intro) +- [JavaScript Introduction](../js-intro) # Ruby Methods @@ -73,7 +73,6 @@ puts random_value # => 20 ``` -

Try It: Using the rand() Method

Back in your sandbox replit, solve each of the challenges below.

@@ -83,7 +82,6 @@ puts random_value
- ### Up Next -- [Control Flow](../control-flow) \ No newline at end of file +- [Control Flow](../control-flow) diff --git a/try-coding-fe/what-is-fe-be/index.md b/try-coding-fe/what-is-fe-be/index.md index d9fc735..6e941c8 100644 --- a/try-coding-fe/what-is-fe-be/index.md +++ b/try-coding-fe/what-is-fe-be/index.md @@ -6,7 +6,7 @@ layout: lesson - [Welcome and Introductions](../) -# What is Front End and Back End Engineering? +# What is Front End and Back End Engineering? ## How Does the Internet Even Work? @@ -19,7 +19,7 @@ Here is a simplified diagram of the client-server model: Source: Mozilla.org
-When a User enters in a website name (web address), a request is made to the Server for that company. That server stores all the data for that company and will return the data which was requested. The Client (browser), will then display that data and allow the user to view and interact with the requested data. +When a User enters in a website name (web address), a request is made to the Server for that company. That server stores all the data for that company and will return the data which was requested. The Client (browser), will then display that data and allow the user to view and interact with the requested data. ## What is the Front End? @@ -27,18 +27,18 @@ The **Front End** is the part of the application that users see, touch, and inte When we're talking about web development, the Front End is the part of the code base that takes care of rendering the user interface in the web browser. -The Front End will prompt users in various ways to collect information which can be used to customize the user's experience within an application. +The Front End will prompt users in various ways to collect information which can be used to customize the user's experience within an application. ## What technologies are used on the Front End? The three main technologies used on the Front End are: + - CSS (styling of the webpage) - HTML - JavaScript Other frameworks are build on top of JavaScript such as React, Vue, or Angular. - ## What is the Back End? Back End engineering is concerned with managing and manipulating ​data​ (aka information). @@ -50,7 +50,6 @@ When we talk about Back End engineering, we're often thinking of the programming - Manipulating, analyzing, and/or calculating data - Making sure data can be retrieved quickly and easily - ## What technologies are used on the Back End? There are numerous technologies that can be used for Back End programming. Here are a few of them: @@ -60,19 +59,20 @@ There are numerous technologies that can be used for Back End programming. Here ## Both Front End and Back End work with a lot of data and logic. -Most of the work you will do as a developer is data manipulation. +Most of the work you will do as a developer is data manipulation. - How will you get the data? -- What parts of it will you use? +- What parts of it will you use? - Do you need to reformat any of the data? - How will you display the data to the user? - What does this data mean? -Both Front End and Back End deal with taking in data (input), and then giving back or *returning* new data based on that input. Today we're going to look at how we might work with some of this data in both Ruby, our Back End language, and JavaScript, our Front End language. +Both Front End and Back End deal with taking in data (input), and then giving back or _returning_ new data based on that input. Today we're going to look at how we might work with some of this data in both Ruby, our Back End language, and JavaScript, our Front End language. ### Interested in learning more about FE vs BE? -:arrow_right: Come to a **What is Front End, Back End, and Full Stack Development? workshop**! You can see a list of upcoming events here! +:arrow_right: Come to a **What is Front End, Back End, and Full Stack Development? workshop**! You can see a list of upcoming events here! ## Up Next -- [Ruby Introduction](../ruby-intro) + +- [JavaScript Introduction](../js-intro) diff --git a/try-coding-fe/wrap-up/index.md b/try-coding-fe/wrap-up/index.md index 59206ea..581d374 100644 --- a/try-coding-fe/wrap-up/index.md +++ b/try-coding-fe/wrap-up/index.md @@ -5,7 +5,7 @@ layout: lesson ### Go Back - [Welcome and Introductions](../) -- [JavaScript Number Guesser](../js-number-guesser) +- [Ruby Number Guesser](../rb-number-guesser) # Next Steps @@ -21,8 +21,8 @@ We are always creating new, exciting events for prospective students. Check out We know everyone has different barriers or concerns as they start this process. Our team is here to help you find solutions to each barrier and ease your concerns from how to pay for Turing to what is the job support like. -Reach out if you have any questions at all - from *Can I afford this?* to *Should I do frontend or backend?* to *What is a typical day like as a Turing student?* - we're here for you! Email **admissions@turing.edu** with your questions and we'll schedule a one on one call with you! +Reach out if you have any questions at all - from _Can I afford this?_ to _Should I do frontend or backend?_ to _What is a typical day like as a Turing student?_ - we're here for you! Email **admissions@turing.edu** with your questions and we'll schedule a one on one call with you! ## Apply! -Let's do it! Start your application today at apply.turing.edu. +Let's do it! Start your application today at apply.turing.edu. From 4bd3dfa4904eccd733098028d8cf130b7878065c Mon Sep 17 00:00:00 2001 From: Laura Guerra Date: Wed, 31 Jan 2024 20:23:48 -0500 Subject: [PATCH 3/9] Change references to ruby to js --- try-coding-fe/js-intro/index.md | 43 ++++++++++++++++++--------------- 1 file changed, 24 insertions(+), 19 deletions(-) diff --git a/try-coding-fe/js-intro/index.md b/try-coding-fe/js-intro/index.md index 7f44dc8..35e7225 100644 --- a/try-coding-fe/js-intro/index.md +++ b/try-coding-fe/js-intro/index.md @@ -7,24 +7,29 @@ layout: lesson - [Welcome and Introductions](../) - [What is Front End and Back End Engineering?](../what-is-fe-be) -# Ruby Introduction +# JavaScript Introduction -Ruby is a dynamic, open-source programming language widely known for its simplicity. It has an intuitive syntax that is natural to read and comparatively easy to write. It is used primarily for Back End Engineering. +JavaScript is a language that allows us to _interact_ with a webpage. We can write JavaScript that can access HTML elements and change their appearance or content based on the way a user interacts with the page. ## Forking Your First Replit -Replit is a web-based interactive development environment or IDE. It allows us to write code and see the output in the console at the same time. To get started today, we will be working in this Ruby sandbox replit. When you open this replit, click the blue "Fork Repl" button to make your own copy on your account. From here, you can add code or delete code as much as you like. It's yours! +Replit is a web-based interactive development environment or IDE. It allows us to write code and see the output in the console at the same time. To get started today, we will be working in this JavaScript sandbox replit. When you open this replit, click the blue "Fork Repl" button to make your own copy on your account. From here, you can add code or delete code as much as you like. It's yours! A sandbox is a place where we can play around with code! Use this space to take notes or try things throughout the workshop today. -## puts +
+

Important Note:

+

In order to run the code, click on "Dev Tools" to see the console where the code will print out, then click the green "Run" button.

+
+ +## console.log() In your sandbox replit, complete the activity that follows.
-

Try It: Exploring puts

-

Read the Ruby code and then run it.

-

What does the output tell you about the job of the puts command?

+

Try It: Exploring console.log()

+

Read the JavaScript code and then run it.

+

What does the output tell you about the job of the console.log() command?

@@ -40,8 +45,8 @@ In your sandbox replit, complete the activity that follows.
    -
  • puts is a command that is built into the Ruby language
  • -
  • puts will print the value it is instructed to print and creates a line break after printing the data
  • +
  • console.log() is a command that is built into the JavaScript language
  • +
  • console.log() will print the value it is instructed to print and creates a line break after printing the data
@@ -49,24 +54,24 @@ In your sandbox replit, complete the activity that follows. ## Variables -In order to store a piece of data and reference it later, possibly many times throughout our code, we need to use variables. You can think of a variable like a storage container with a label on it where we can hold items we care about. In Ruby we define variables by typing the name of the variable we wish to create, followed by the assignment operator, and then the value we want to store in that variable. +In order to store a piece of data and reference it later, possibly many times throughout our code, we need to use variables. You can think of a variable like a storage container with a label on it where we can hold items we care about. In JavaScript we define variables by typing the keyword var followed by the name of the variable we wish to create, the assignment operator (=), and then the value we want to store in that variable. We end each statement in our code with a semi-colon. -When working with Ruby, we use snake_case for any variable names, meaning all characters should be lowercase with multiple words separated by underscores. +When working with JavaScript, we use camelCase for variable names, which means that words are joined without spaces, and each new word begins with a capital letter. -```ruby -email = "helloworld@gmail.com" -first_name = "Brandi" -location = "Tampa, FL 🌴" +```javascript +var email = 'helloworld@gmail.com'; +var firstName = 'Brandi'; +var location = 'Tampa, FL 🌴'; ```
-

Try It: Variables in Ruby

-

Back in your sandbox replit, declare three variables that describe yourself. Use puts followed by each variable name to confirm that you’ve done this correctly!

+

Try It: Variables in JavaScript

+

Back in your sandbox replit, declare three variables that describe yourself. Use console.log() with each variable name to confirm that you’ve done this correctly!

## Data Types -In Ruby, your data (information) can be different types. There are two data types we will be working with today: Integer (any whole number), and String (words or phrases like "Ruby is fun!"). We use the Integer data type if we are storing data that may be manipulated in some way. We use the String data type if our data needs to remain consistent. With String data, anything inside of the quotation marks is preserved. +In JavaScript, your data (information) can be different types. There are two data types we will be working with today: Number (any numeric value), and String (words or phrases like "JavaScript is fun!"). We use the Number data type if we are storing data that may be manipulated in some way. We use the String data type if our data needs to remain consistent. With String data, anything inside of the quotation marks is preserved.

Deciding on a Data Type

@@ -83,7 +88,7 @@ In Ruby, your data (information) can be different types. There are two data type

Try It: Data Types

-

Back in your replit, add two more variables assigned to Integer values. Use puts or print to verify that the data was stored in the variable as expected!

+

Back in your replit, add two more variables assigned to Number values. Use console.log() to verify that the data was stored in the variable as expected!

## User Input From 6293589c029e913bc0a1d966a6aa0cebe46e9991 Mon Sep 17 00:00:00 2001 From: Laura Guerra Date: Fri, 2 Feb 2024 10:41:26 -0500 Subject: [PATCH 4/9] Replace methods lesson with user input --- try-coding-fe/assets/solution.png | Bin 0 -> 45220 bytes try-coding-fe/control-flow/index.md | 74 +++++-------- try-coding-fe/index.md | 2 +- try-coding-fe/js-intro/index.md | 78 +++++++------- try-coding-fe/js-methods/index.md | 87 --------------- try-coding-fe/rb-number-guesser/index.md | 20 ++-- try-coding-fe/user-input/index.md | 129 +++++++++++++++++++++++ 7 files changed, 208 insertions(+), 182 deletions(-) create mode 100644 try-coding-fe/assets/solution.png delete mode 100644 try-coding-fe/js-methods/index.md create mode 100644 try-coding-fe/user-input/index.md diff --git a/try-coding-fe/assets/solution.png b/try-coding-fe/assets/solution.png new file mode 100644 index 0000000000000000000000000000000000000000..61c247810dabcde95022c8e1caa2dfc2643f3c64 GIT binary patch literal 45220 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 literal 0 HcmV?d00001 diff --git a/try-coding-fe/control-flow/index.md b/try-coding-fe/control-flow/index.md index 7499b8b..fa7faa4 100644 --- a/try-coding-fe/control-flow/index.md +++ b/try-coding-fe/control-flow/index.md @@ -5,7 +5,7 @@ layout: lesson ### Go Back - [Welcome and Introductions](../) -- [JavaScript Methods](../js-methods) +- [JavaScript Intro](../js-intro) # Control Flow @@ -17,47 +17,46 @@ You probably noticed the program we wrote before isn’t very flexible. We can a Control flow gives us the flexibility we’re looking for. We can change the response depending on the information the user types. Take a look at the code below and see if you can guess what the output might look like. Be prepared to share. -```ruby -puts "How old are you?" -age = gets.chomp.to_i +```js +var age = 35; -if age >= 21 - puts "Welcome to Sierra Nevada Brewing Company!" -else - puts "Sorry, you’re not old enough to access our site. Come back later!" -end +if (age >= 21) { + console.log("Welcome to Sierra Nevada Brewing Company!"); +} else { + console.log("Sorry, you’re not old enough to access our site. Come back later!"); +} ``` ## if Statements -Ruby’s if statement is always followed by an expression, which is a fancy way of saying something that evaluates to true or false. If the expression evaluates to true, anything inside that code block is executed. However, if the expression is false, Ruby skips over that block of code. Here’s an example of what that might look like: +JavaScript's if statement is always followed by an expression, which is a fancy way of saying something that evaluates to true or false. If the expression evaluates to true, anything inside that code block is executed. However, if the expression is false, JavaScript skips over that block of code. Here’s an example of what that might look like: -```ruby -if 5 > 4 - puts "You will see this statement in the console, because five is greater than four!" -end +```js +if (5 > 4) { + console.log("You will see this statement in the console, because five is greater than four!"); +} ``` The way our code is written now, if the expression evaluates to false, we don’t see any output in the console. In order to have another statement that runs if the expression is false, we need an else statement. Here’s an example: -```ruby -if 5 < 4 - puts "This statement won’t print, because five is NOT less than 4." -else - puts "This statement will print instead!" -end +```js +if (5 < 4) { + console.log("This statement won’t print, because five is NOT less than 4."); +} else { + console.log("This statement will print instead!"); +} ``` -We can also check a second condition if we want using an elsif statement. +We can also check a second condition if we want using an else if statement. -```ruby -if 5 < 4 - puts "This statement won’t print, because five is NOT less than 4." -elsif 5 > 4 - puts "This statement will print, because five is greater than 4." -else - puts "This statement won’t print, because a true expression was already found!" -end +```js +if (5 < 4) { + console.log("This statement won’t print, because five is NOT less than 4."); +} else if (5 > 4) { + console.log("This statement will print, because five is greater than 4."); +} else { + console.log("This statement won’t print, because a true expression was already found!"); +} ```
@@ -69,23 +68,8 @@ end
  • If the driver is over the age of 25, they can rent the car.
  • -

    Ready for another challenge? Write a program that asks the user for the product of 5 and 10 and collects their response. Give the user some feedback based on their response. You decide what feedback makes sense!

    - -
    - -
    -

    Building a "Guess the Number" Game

    -

    Use this replit as a starting point. We are going to build a “Guess the Number” game for a user in the console. In the starter kit, you already have a secret_number variable assigned to 6 and a puts statement that shows the user the title of game. Follow the steps below to keep going!

    -
      -
    1. Next, prompt the user to enter a number from 1 to 10.
    2. -
    3. If the guess is less than the secret number, tell the user, "Not quite. Too low."
    4. -
    5. If the guess is greater than the secret number, tell the user, "Oops. Too high."
    6. -
    7. Otherwise, tell the user they guessed the number with the statement, "You did it!"
    8. -
    9. Test your code a few times to make sure you can generate all 3 responses.
    10. -
    11. Finally, update the value assigned to secret_number to a random number from 1 to 10.
    12. -
    ### Up Next -- [Ruby Number Guesser](../rb-number-guesser) +- [User Input](../user-input) diff --git a/try-coding-fe/index.md b/try-coding-fe/index.md index b73db19..6884c14 100644 --- a/try-coding-fe/index.md +++ b/try-coding-fe/index.md @@ -46,7 +46,7 @@ There are several ways to get my attention throughout the workshop today. Let’ - [What is Front End and Back End Engineering?](./what-is-fe-be) - [JavaScript Introduction](./js-intro) -- [JavaScript Methods](./js-methods) - [Control Flow](./control-flow) +- [User Input](./user-input) - [Ruby Number Guesser](./rb-number-guesser) - [Wrap-Up](./wrap-up) diff --git a/try-coding-fe/js-intro/index.md b/try-coding-fe/js-intro/index.md index 35e7225..d8e2908 100644 --- a/try-coding-fe/js-intro/index.md +++ b/try-coding-fe/js-intro/index.md @@ -28,7 +28,8 @@ In your sandbox replit, complete the activity that follows.

    Try It: Exploring console.log()

    -

    Read the JavaScript code and then run it.

    +

    Read the following JavaScript code, copy & paste it into the script.js file in your sandbox, then run it!

    +
    console.log("Hello, World!");
    console.log("Let's start coding.");

    What does the output tell you about the job of the console.log() command?

    @@ -58,15 +59,16 @@ In order to store a piece of data and reference it later, possibly many times th When working with JavaScript, we use camelCase for variable names, which means that words are joined without spaces, and each new word begins with a capital letter. -```javascript -var email = 'helloworld@gmail.com'; -var firstName = 'Brandi'; -var location = 'Tampa, FL 🌴'; +```js +var email = "helloworld@gmail.com"; +var firstName = "Brandi"; +var location = "Tampa, FL 🌴"; ```

    Try It: Variables in JavaScript

    -

    Back in your sandbox replit, declare three variables that describe yourself. Use console.log() with each variable name to confirm that you’ve done this correctly!

    +

    Back in your sandbox replit, declare three variables that describe yourself, using the names name, email, and location.

    +

    Make sure to console.log each variable to verify you've stored it correctly!

    ## Data Types @@ -88,49 +90,47 @@ In JavaScript, your data (information) can be different types. There are two dat

    Try It: Data Types

    -

    Back in your replit, add two more variables assigned to Number values. Use console.log() to verify that the data was stored in the variable as expected!

    +

    Back in your replit, add two more variables about yourself assigned to Number values. Write a variable called numberOfPets and another variable of your choosing. Use console.log() to verify that the data was stored in the variable as expected!

    +
    +

    + 🌶Click here for a Spicy Challenge🌶 +

    +
    +

    What happens if you add your two number variables together and console.log() the result?

    +
    +
    -## User Input +## Interpolation -Our programs haven’t been very exciting so far because we already know what will happen just by looking at the code. What if your program incorporated dynamic input from the user? +We can use string interpolation to combine static data with dynamic (or variable) data. Here's an example of the syntax: -**Explore** +```js +var firstName = "Amy"; +console.log(`Hello, ${firstName}!`); +``` -1. Read the code in this replit and _guess_ what it will do. It is also available below, if you prefer to preview it here. -2. Run the program. It's interactive! Be ready to type in your answers in the console area. +The code above will make "Hello, Amy!" appear in the console. - +Note that _back ticks_ are the characters that surround this combination of the string an `${}` syntax. You can find the back-tick key at the top-left of your keyboard, next to the `1`. -
    -
    -

    Takeaways

    -
    - -
    -
    -
    -
      -
    • Instead of manually typing in every value, we can collect values from our user to provide a dynamic experience.
    • -
    • When the code is run, it will stop at gets.chomp and wait for the user to type input into the console.
    • -
    • gets collects a string from the console and chomp removes the final character which is the enter/return.
    • -
    -
    -
    -
    +Anything inside the back ticks will be read as a string. But, when the interpreter sees the `${`, it will stop and wait for JavaScript code to read. Typically, we provide a variable name here. When the interpreter read the matching closing bracket - `}` - it goes back to treating characters as part of the string.
    -

    Try It: Getting User Input

    -
      -
    1. In your sandbox replit, write a small program that asks the user for their name and responds with a sentence of your choice!
    2. -
    3. Now, add on to your program and ask your user two more questions. If you’re not feeling creative, ask them how they are feeling today or their best friend’s name! Try running your program a few times with different values stored in the variables each time.
    4. -
    +

    Try It: Interpolation

    +

    Using interpolation and at least two of the variables you declared in the previous section, write a sentence about yourself! Make sure to print that sentence out to the console.

    +

    Change the value of one of the Strings you interpolated and re-run your code. Is the difference reflected in the output?

    + +
    +

    + 🌶Click here for a Spicy Challenge🌶 +

    +
    +

    What happens if you interpolate numberOfPets * 4? What does that tell you about how interpolation works?

    +
    +
    ### Up Next -- [JavaScript Methods](../js-methods) +- [Control Flow](../control-flow) diff --git a/try-coding-fe/js-methods/index.md b/try-coding-fe/js-methods/index.md deleted file mode 100644 index 7149b56..0000000 --- a/try-coding-fe/js-methods/index.md +++ /dev/null @@ -1,87 +0,0 @@ ---- -layout: lesson ---- - -### Go Back - -- [Welcome and Introductions](../) -- [JavaScript Introduction](../js-intro) - -# Ruby Methods - -Depending on the data type, we can use some built-in Ruby methods to manipulate the data! - -## String Methods - -In the spirit of _exploring to learn_, take a look at the code below. What do you think will happen when you run it? - -```ruby -first_name = "osCAr" -puts "Hello, #{first_name}!" -puts "Hello, #{first_name.capitalize}!" -``` - -
    -

    Try It: Exploring String Methods

    -

    Read the code above and predict what will happen when you run it. Try to explain why.

    -

    Now, type or copy and paste the code into your replit and run it. Was your prediction correct?

    -

    Then, change capitalize to upcase, then downcase, then reverse. Re-run the code each time to change it, and observe the output.

    -
    - -
    -
    -

    Takeaways

    -
    - -
    -
    -
    -
      -
    • Ruby provides a variety of methods that can be used specifically on Strings - we can think of them as actions.
    • -
    • A Ruby developer doesn't need to memorize every method that is available; some will be used regularly but others won't. For this reason, developers rely heavily on resources like ruby-doc.org!
    • -
    -
    -
    - -### The rand() Method - -There are some methods that can be used for a specific purpose without having data to manipulate. The rand() method returns a random integer. When the rand() method is called with no arguments, it returns a decimal value greater than or equal to 0 and less than 1. - -```ruby -random_value = rand() -puts random_value -# => 0.7893798326241 -``` - -To get a random integer, you can pass in an integer as an argument, between the parenthesis. The rand() method returns an integer value that is greater than or equal to 0 and less than the integer passed in. - -```ruby -random_value = rand(6) -puts random_value -# => 5 -``` - -You can also pass in a range for the rand() method. To use an inclusive range, use two dots. For a non-inclusive range, use three dots. The following example shows how to use an inclusive range as the argument with a lower limit of 1 up to (and including) the upper limit of 20. - -```ruby -random_value = rand(1..20) -puts random_value -# => 20 -``` - -
    -

    Try It: Using the rand() Method

    -

    Back in your sandbox replit, solve each of the challenges below.

    -
      -
    1. Store a random number between 1 and 99, inclusive of 99, in a variable called random_num. Use puts or print and run your code a few times to verify the result.
    2. -
    3. Create a variable named lottery_number assigned to a random six-digit number.
    4. -
    -
    - -### Up Next - -- [Control Flow](../control-flow) diff --git a/try-coding-fe/rb-number-guesser/index.md b/try-coding-fe/rb-number-guesser/index.md index c906a2a..acdaf3e 100644 --- a/try-coding-fe/rb-number-guesser/index.md +++ b/try-coding-fe/rb-number-guesser/index.md @@ -5,7 +5,7 @@ layout: lesson ### Go Back - [Welcome and Introductions](../) -- [Control Flow](../control-flow) +- [User Input](../user-input) # JavaScript Number Guesser @@ -29,7 +29,7 @@ end This is something you might build if you were in the Back End program at Turing. -Now let's take a look at what this same code would look like if you were implementing JavaScript in our Front End program. +Now let's take a look at what this same code would look like if you were implementing JavaScript in our Front End program.

    Explore: Front End Number Guesser

    @@ -40,24 +40,24 @@ Now let's take a look at what this same code would look like if you were impleme ## Front End versus Back End -Whether we're working on the Front End or the Back End of an application, there is a lot of logic and data manipulation involved as illustrated by the number guessing code. The difference in Front End and Back End comes in what you'd work on next. +Whether we're working on the Front End or the Back End of an application, there is a lot of logic and data manipulation involved as illustrated by the number guessing code. The difference in Front End and Back End comes in what you'd work on next. -If you're in the Front End program your next steps in this number guesser program might be to build the user interface, what the user sees and interacts with. Think about the webpage for this number guessing application. +If you're in the Front End program your next steps in this number guesser program might be to build the user interface, what the user sees and interacts with. Think about the webpage for this number guessing application. - What would the styling of this page be? (colors, fonts, shading) -- How would the user input their guess and what would that *element* look like? -- Would there be any animations on the page to engage the user? - +- How would the user input their guess and what would that _element_ look like? +- Would there be any animations on the page to engage the user? If you're in the Back End program, your next steps might be in dealing with how to store this data and what to do with the data. -- How should we store the information in the database? -- Do we need to manipulate the data before storing it? +- How should we store the information in the database? +- Do we need to manipulate the data before storing it? - Is there any additional information we can get from the data such as averages, sums, or counts? ## Questions -What questions do you have about any of the content we've covered so far? +What questions do you have about any of the content we've covered so far? ## Up Next: + - [Wrap Up](../wrap-up) diff --git a/try-coding-fe/user-input/index.md b/try-coding-fe/user-input/index.md new file mode 100644 index 0000000..54d164f --- /dev/null +++ b/try-coding-fe/user-input/index.md @@ -0,0 +1,129 @@ +--- +layout: lesson +--- + +### Go Back + +- [Welcome and Introductions](../) +- [Control Flow](../control-flow) + +# User Input + +Our programs haven’t been very exciting so far because we already know what will happen just by looking at the code. What if your program incorporated dynamic input from the user? For Front-End development, that's where HTML comes into play! + +## What is HTML? + +Of all of the major technologies used on the web, on either the Front-End or the Back-End, HTML, or Hyper Text Markup Language, is the oldest. [In the beginning](http://info.cern.ch/), the web was just a bunch of HTML documents that you wrote by hand. They had these _cool_ things called hyperlinks that would allow a user to click on a word on one page and be taken to another page. + +HTML is still an essential part of modern web applications. It holds the content and creates the structure of a webpage. + +
    +

    Explore

    +

    To begin, let's look at the code in this Replit.

    +

    After forking the replit, be sure to open the dev tools, then take a few minutes to look through the code in all the different files.

    +

    Here are some things to consider as you explore:

    +
      +
    • Does anything happen when you hit the green Run button?
    • +
    • What about if we type something in the input and click on the button - do we see anything print out in the console?
    • +
    +
    + +After exploring, let's take a look at some specific parts of the code below: + +### HTML + +```html +

    Hello World!

    + + +``` + +HTML is made up of a series of **elements**. Each of the lines above represents a different element. In order, we have one for putting text on the page, another for grabbing input from the user, and lastly a button that can be clicked on! + +### JavaScript + +```js +var paragraph = document.querySelector("p"); // a variable forthe paragraph element +var input = document.querySelector("input"); // a variable for the input element + +var userInput = input.value; // a variable that stores the input from the user +console.log(paragraph.innerText); // printing the text of the paragraph to the console +console.log(userInput); // printing any text the user writes to the console +``` + +## Changing HTML from JavaScript + +Displaying the information that's already on the page, in the console, is not all that helpful. It was just a stepping stone. + +The next stepping stone is learning how to _change_ the text inside an HTML element from our JavaScript code. + +
    +

    Apply & Explore

    +

    Using the Replit you just forked:

    +
      +
    1. On line 6 in your script.js file, type something like: paragraph.innerText = "new text";
    2. +
    3. Hit Run and look in the mini browser - it should display the text you typed in that last line of code!
    4. +
    +
    + +### Listening for Button Clicks + +You may have noticed that the code you wrote changed the title of the page whenever we hit the Run button, and there were some other lines of code that only printed to the console when we clicked on the Click Me! button from the user interface. + +What if we want to run some code that only happens when the button is clicked? + +For now, we just need to know that the following code is responsible for running the code that happens when the button is cliked: + +```js +var button = document.querySelector("button"); + +button.addEventListener("click", doSomething); + +function doSomething() { + // code you want to be run ONLY when button + // is clicked, goes here. +} +``` + +
    +

    Next Level

    +

    For this challenge, you'll use the same Replit you used for the previous one! In the previous challenge, you changed the title, but it happened on page load, so it wasn't very exciting.

    +

    Your Challenge: Combine the two new pieces of knowledge/skill you have to change the title only when the button is clicked.

    + +

    Hint: You will need to use the paragraph.innerText and set it equal to the input.value

    +
    + +
    +
    +

    Solution:

    +
    + +
    +
    + +
    +

    Here is our revised script.js file:

    + The code for the script.js file. The first 3 lines declare varaibles for the paragraph element, input element, and button element. The fourth line adds an event listener to the button element. Lines 7 - 10 are the code to run when the button is clicked. The code changes the text of the parapgrah to match what the user wrote in the input field. +

    Inside of the doSomething() function, we set the text of the paragraph equal to the value that the user typed into the input field!

    +
    +
    + +
    +

    Building a "Guess the Number" Game

    +

    Use this replit as a starting point. We are going to build a “Guess the Number” game for a user in the console. In the starter kit, you already have a secretNumber variable assigned to 6 and a some other JavaScript that connects the HTML to the game. Follow the steps below to keep going!

    +

    Inside of the checkGuess function, write some code that will do the following:

    +
      +
    1. If the guess is less than the secret number, tell the user, "Not quite. Too low."
    2. +
    3. If the guess is greater than the secret number, tell the user, "Oops. Too high."
    4. +
    5. Otherwise, tell the user they guessed the number with the statement, "You did it!"
    6. +
    7. Test your code a few times to make sure you can generate all 3 responses.
    8. +
    + +

    Hint: You will need to put together what we learned about Control Flow in the previous lesson, with changing the text on the screen.

    +
    + +### Up Next + +- [Ruby Number Guesser](../rb-number-guesser) From 6cdd77bd2d57c84170d108e764189f698f9d7d4e Mon Sep 17 00:00:00 2001 From: Laura Guerra Date: Fri, 2 Feb 2024 10:52:27 -0500 Subject: [PATCH 5/9] Switch code for be number guesser --- try-coding-fe/rb-number-guesser/index.md | 48 +++++++++++++++++------- 1 file changed, 34 insertions(+), 14 deletions(-) diff --git a/try-coding-fe/rb-number-guesser/index.md b/try-coding-fe/rb-number-guesser/index.md index acdaf3e..b5b49e7 100644 --- a/try-coding-fe/rb-number-guesser/index.md +++ b/try-coding-fe/rb-number-guesser/index.md @@ -7,9 +7,40 @@ layout: lesson - [Welcome and Introductions](../) - [User Input](../user-input) -# JavaScript Number Guesser +# Ruby Number Guesser -Your Ruby number guesser code probably looks something like this: +Your JavaScript number guesser code probably looks something like this: + +```js +var input = document.querySelector("input"); +var button = document.querySelector("button"); +var paragraph = document.querySelector("p"); + +var secretNumber = 6; + +button.addEventListener("click", checkGuess); + +function checkGuess() { + var guess = input.value; + + if (guess > secretNumber) { + paragraph.innerText = "Too high!"; + } else if (guess < secretNumber) { + paragraph.innerText = "Too low!"; + } else { + paragraph.innerText = "Great job! You got it!"; + } +} +``` + +This is something you might build if you were in the Front End program at Turing. + +Now let's take a look at what this same code would look like if you were implementing Ruby in our Back End program. + +### Explore: Back End Number Guesser + +Take a few minutes to explore the code below.

    +Consider: What are the similarities and differences you see between the Ruby code and the JavaScript code? ```ruby secret_number = 6 @@ -27,22 +58,11 @@ else end ``` -This is something you might build if you were in the Back End program at Turing. - -Now let's take a look at what this same code would look like if you were implementing JavaScript in our Front End program. - -
    -

    Explore: Front End Number Guesser

    -

    Take a few minutes to explore the code linked below.

    -

    Consider: What are the similarities and differences you see between the Ruby code and the JavaScript code?

    - View the code here! -
    - ## Front End versus Back End Whether we're working on the Front End or the Back End of an application, there is a lot of logic and data manipulation involved as illustrated by the number guessing code. The difference in Front End and Back End comes in what you'd work on next. -If you're in the Front End program your next steps in this number guesser program might be to build the user interface, what the user sees and interacts with. Think about the webpage for this number guessing application. +If you're in the Front End program your next steps in this number guesser program might be to change the user interface, what the user sees and interacts with. Think about the webpage for this number guessing application. - What would the styling of this page be? (colors, fonts, shading) - How would the user input their guess and what would that _element_ look like? From a41e50f9fecce5cc78fd576c7231bc22cf921761 Mon Sep 17 00:00:00 2001 From: Laura Guerra Date: Fri, 2 Feb 2024 10:54:49 -0500 Subject: [PATCH 6/9] Fix url to keep BE link intact --- {try-coding-be => try-coding-general}/control-flow/index.md | 0 {try-coding-be => try-coding-general}/index.md | 0 {try-coding-be => try-coding-general}/js-number-guesser/index.md | 0 {try-coding-be => try-coding-general}/ruby-intro/index.md | 0 {try-coding-be => try-coding-general}/ruby-methods/index.md | 0 {try-coding-be => try-coding-general}/what-is-fe-be/index.md | 0 {try-coding-be => try-coding-general}/wrap-up/index.md | 0 7 files changed, 0 insertions(+), 0 deletions(-) rename {try-coding-be => try-coding-general}/control-flow/index.md (100%) rename {try-coding-be => try-coding-general}/index.md (100%) rename {try-coding-be => try-coding-general}/js-number-guesser/index.md (100%) rename {try-coding-be => try-coding-general}/ruby-intro/index.md (100%) rename {try-coding-be => try-coding-general}/ruby-methods/index.md (100%) rename {try-coding-be => try-coding-general}/what-is-fe-be/index.md (100%) rename {try-coding-be => try-coding-general}/wrap-up/index.md (100%) diff --git a/try-coding-be/control-flow/index.md b/try-coding-general/control-flow/index.md similarity index 100% rename from try-coding-be/control-flow/index.md rename to try-coding-general/control-flow/index.md diff --git a/try-coding-be/index.md b/try-coding-general/index.md similarity index 100% rename from try-coding-be/index.md rename to try-coding-general/index.md diff --git a/try-coding-be/js-number-guesser/index.md b/try-coding-general/js-number-guesser/index.md similarity index 100% rename from try-coding-be/js-number-guesser/index.md rename to try-coding-general/js-number-guesser/index.md diff --git a/try-coding-be/ruby-intro/index.md b/try-coding-general/ruby-intro/index.md similarity index 100% rename from try-coding-be/ruby-intro/index.md rename to try-coding-general/ruby-intro/index.md diff --git a/try-coding-be/ruby-methods/index.md b/try-coding-general/ruby-methods/index.md similarity index 100% rename from try-coding-be/ruby-methods/index.md rename to try-coding-general/ruby-methods/index.md diff --git a/try-coding-be/what-is-fe-be/index.md b/try-coding-general/what-is-fe-be/index.md similarity index 100% rename from try-coding-be/what-is-fe-be/index.md rename to try-coding-general/what-is-fe-be/index.md diff --git a/try-coding-be/wrap-up/index.md b/try-coding-general/wrap-up/index.md similarity index 100% rename from try-coding-be/wrap-up/index.md rename to try-coding-general/wrap-up/index.md From f0bbd691b9884f0ebc1c783544df1491f409d69a Mon Sep 17 00:00:00 2001 From: Kayla Wood Date: Fri, 2 Feb 2024 14:39:28 -0700 Subject: [PATCH 7/9] Add link to FE try coding to /workshop-curriculum page --- workshop-curriculum/index.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/workshop-curriculum/index.html b/workshop-curriculum/index.html index 2d30275..8fce7b6 100644 --- a/workshop-curriculum/index.html +++ b/workshop-curriculum/index.html @@ -16,7 +16,8 @@

    Information Sessions

    Mountain Icon

    Try Coding

    These workshops will get you some hands-on experience with code. You'll get a glimpse at Front End and Back End code!

    - Try Coding + Try Coding (Ruby Focus) + Try Coding (JavaScript Focus)
    From 19497dbe11737bb93b0bdb0485143d28f08c72a1 Mon Sep 17 00:00:00 2001 From: Kayla Wood Date: Fri, 2 Feb 2024 14:40:39 -0700 Subject: [PATCH 8/9] Update titles of try codings to specify ruby or js --- try-coding-fe/index.md | 2 +- try-coding-general/index.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/try-coding-fe/index.md b/try-coding-fe/index.md index 6884c14..02e6f49 100644 --- a/try-coding-fe/index.md +++ b/try-coding-fe/index.md @@ -2,7 +2,7 @@ layout: lesson --- -# Try Coding +# Try Coding - JavaScript Focus Please sign up for a free replit.com account before beginning this workshop. diff --git a/try-coding-general/index.md b/try-coding-general/index.md index f780490..dccedc8 100644 --- a/try-coding-general/index.md +++ b/try-coding-general/index.md @@ -2,7 +2,7 @@ layout: lesson --- -# Try Coding +# Try Coding - Ruby Focus Please sign up for a free replit.com account before beginning this workshop. From 546a0f464497132430a4a0391c335731d790771b Mon Sep 17 00:00:00 2001 From: Laura Guerra Date: Sun, 4 Feb 2024 17:29:54 -0500 Subject: [PATCH 9/9] Change replit links to turing school repls --- try-coding-fe/user-input/index.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/try-coding-fe/user-input/index.md b/try-coding-fe/user-input/index.md index 54d164f..0a1d1b9 100644 --- a/try-coding-fe/user-input/index.md +++ b/try-coding-fe/user-input/index.md @@ -19,7 +19,7 @@ HTML is still an essential part of modern web applications. It holds the content

    Explore

    -

    To begin, let's look at the code in this Replit.

    +

    To begin, let's look at the code in this Replit.

    After forking the replit, be sure to open the dev tools, then take a few minutes to look through the code in all the different files.

    Here are some things to consider as you explore:

      @@ -43,8 +43,8 @@ HTML is made up of a series of **elements**. Each of the lines above represents ### JavaScript ```js -var paragraph = document.querySelector("p"); // a variable forthe paragraph element -var input = document.querySelector("input"); // a variable for the input element +var paragraph = document.querySelector('p'); // a variable forthe paragraph element +var input = document.querySelector('input'); // a variable for the input element var userInput = input.value; // a variable that stores the input from the user console.log(paragraph.innerText); // printing the text of the paragraph to the console @@ -75,9 +75,9 @@ What if we want to run some code that only happens when the button is clicked? For now, we just need to know that the following code is responsible for running the code that happens when the button is cliked: ```js -var button = document.querySelector("button"); +var button = document.querySelector('button'); -button.addEventListener("click", doSomething); +button.addEventListener('click', doSomething); function doSomething() { // code you want to be run ONLY when button @@ -112,7 +112,7 @@ function doSomething() {

      Building a "Guess the Number" Game

      -

      Use this replit as a starting point. We are going to build a “Guess the Number” game for a user in the console. In the starter kit, you already have a secretNumber variable assigned to 6 and a some other JavaScript that connects the HTML to the game. Follow the steps below to keep going!

      +

      Use this replit as a starting point. We are going to build a “Guess the Number” game for a user in the console. In the starter kit, you already have a secretNumber variable assigned to 6 and a some other JavaScript that connects the HTML to the game. Follow the steps below to keep going!

      Inside of the checkGuess function, write some code that will do the following:

      1. If the guess is less than the secret number, tell the user, "Not quite. Too low."