To prepare for Module 4 we'd like for you to complete the following before 9 AM Monday (the first day of M4).
Complete this exercise to reflect on your learning experience thus far here at Turing.
Read the following lessons to gain a deeper understanding of JavaScript syntax and how JavaScript works. Depending on your level of knowledge with JavaScript, some of this may be a review and some of this may be new. Even if you feel confident with the fundamentals of JavaScript, we encourage you to read through the content as a refresher. This content is taken from the Front End program - we think it's a great overview of the JS basics.
- Data Types, Variables, Conditionals, Function Basics
- Function Fundamentals, Variable Scope, Loops, Arrays
- Objects, This, Data Structures
- Array Prototype Methods
Create a free account on JavaScript 30 and complete:
- Array Cardio Days 1
- Array Cardio Day 2
- Objects and Arrays
- Tally String Times with Reduce
- Feel free to choose a few more that look interesting to you! They are all great resources, we just think the 4 above are most relevant to what you need to start Mod 4.
- Code along as you follow the videos and copy and paste the code into a gist (one gist is fine; separate each video with a comment)
While JavaScript was originally intended to be a client-side scripting language, it has since made its way server-side thanks to Node.js. We're now able to use the same language for browser-based interactions as well as server-side scripts.
Let's get introduced to JavaScript without a browser. Work through this lesson. It will introduce you to Node.js and basic unit-testing using Mocha.
- ES5 v ES6 Lesson
- ES5 v ES6 Slides
- Convert the ES5 functions in the repl into ES6 functions.
Complete Sorting Suite in Javascript here. Choose one out of the three fundamental sorting algorithms to complete. Use Node.js to run your code, and Mocha/Chai to write your tests. FE2 gets this as a project, so we'll use their project requirements, but you can ignore the rubric. You won't be graded. We just want you to get some practice testing and writing JavaScript.
Clone down both of the repos and complete steps laid out in the README. You will need to create a repo for each and push your work to it to submit.
Find the submission document located here, update the links next to your name, and create a PR titled FirstLast-Intermission Work
. The deadline for submissions is Monday, Week 1 at 9 AM. If you anticipate that you won't meet this deadline for any circumstances, you need to DM your instructors as soon as possible.
Some biggies if you're coming from Ruby:
- Methods are called Functions
nil
is calledundefined
require
ing a file you've written does nothing if you didn't export from that file- All
return
s are explicit in Javascript. If you don't use the wordreturn
, your return value will beundefined
Google is your friend. It's totally reasonable to type things like ".each in javascript" or "what is const in javascript"
All of these things were at one time part of the intermission week work. We've retooled the module, and are focused on getting you coding during intermission week. However, there's some good resources below if you want to pick and choose the things that seem interesting to you.
Read the following selections from Speaking JavaScript & Eloquent JavaScript:
- Chapter 3 (Speaking): The Nature of JavaScript
- Chapter 3 (Eloquent): Functions
- Chapter 5 (Eloquent): Higher Order Functions
- Chapter 6: (Eloquent) The Secret Life of Objects
- Chapter 17: Objects and Inheritance (Speaking JavaScript)
Then finish it all with JavaScript Garden.
- Complete 5 of your own completed exercism.io exercises in JavaScript
- Review solutions by 5 other people for the same exercises, and compare your solution to theirs
If you have trouble with the exercism UI, you can find other versions of exercisms you submitted at this link:http://exercism.io/tracks/javascript/exercises
Then select and complete one of the sections below.
Work through at least two of the following courses:
Work through Bocoup's jQuery Fundamentals.
- Work Through This Introductory Static Site
- Work Through These CSS Layout Challenges
As we move into the final module of Turing, we're getting fairly competent at producing useful software. But rather than being the end of the journey, this really just opens the door to even deeper rabbit holes—now that I can get something done, what other ways might there be to accomplish the same thing? The same observable effects could be accomplished via numerous different combinations of code. What are the underlying opinions and ideas embodied by each choice?
Read: Sandi Metz' Rules For Developers (10 minutes)
- Which of Sandi's rules do you feel like might be the hardest to follow—why?
Listen: Shop Talk: Tom Dale (1.5 hours)
- Do you agree with Tom? What parts of his argument are compelling? What parts do you disagree with?
Here are are a few more "philosophical" materials to hopefully help us contemplate this side of the issue:
- Execution in the Kingdom of Nouns by Steve Yegge - You've been doing object-oriented programming for almost 6 months now. What are some of the limitations imposed by this approach? How do Ruby and/or Javascript capture the benefits of OO while avoiding some of the pitfalls?
- Simplicity Matters by Rich Hickey - As we move into working on larger and more sophisticated systems, some of the approaches that have worked on smaller projects may no longer be so effective. What does Rich Hickey say about the common pitfalls of Ruby and Rails applications?
- The Birth and Death of Javascript by Gary Bernhardt - This talk takes a tongue-in-cheek tone, but the concepts discussed are very topical. What does Bernhardt suggest about the role of Javascript in shaping the modern web?
- Real Software Engineering by Glenn Vanderburg - What does Glenn have to say about Software Engineering as a discipline? How does Software Engineering differ fundamentally from other Engineering disciplines? What can we as Software Engineers take away from other disciplines?