Description
If you've never coded before... if you're a self-taught coder who wants to fill in the gaps in your foundation... or if you want to learn JavaScript from the ground up... then this track is for you. We start with the very basics -- what is a computer? what is a terminal? what is a variable? -- and work up to command-line input/output, basic data structures like stacks and hashes, and intermediate computer science concepts like closures and recursion. On the first day we make a small (but functional) web application and send it forth into the world.
Goals
The student will learn...
- how to edit and execute code on their own computer using a text editor and a terminal (command line)
- fundamental coding concepts, including variables, types, functions, loops, I/O, logic, recursion
- how to recognize and use certain abstract data structures (arrays, stacks, hashes)
- Creating and modifying source code using a text editor
- Using the Chrome Developer Tools console to write and debug Javascript code
- Combining HTML and JavaScript in a single file
- Importing a JavaScript (.js) file into an HTML file using the SCRIPT SRC tag
- Using JavaScript to access and manipulate values inside an HTML web page
- Declaring variables and assigning primitive values (strings, numbers, booleans)
- Declaring, passing parameters to, and returning values from functions
- Basic mathematical operations (addition, subtraction, multiplication, etc.)
- String manipulation (literal declarations, concatenation, length, substring extraction)
- Usage of simple data structures (arrays, dictionaries (aka “JavaScript Objects”), stacks
- Boolean logic and comparisons (equality, less than / greater than, and / or / not)
- Conditional control flow (if / then / else)
- Loops and iterators (while loops, for loops, map and each)
Topics
ArgumentsArraysAssignmentAsync-AwaitBooleansBreakCallbacksCharactersClosure-ScopeCommand-LineComparisonsConditionalsConjunctionsData-StructuresDebuggingDirectoriesEachEncapsulationErrorsEs6ExpressFalsyFilterFunctional-ProgrammingFunctionsGitGlobal-VariablesHashesHerokuIf-ElseIf-ThenImmediately-Invoked-Function-ExpressionsIndexInput-OutputKey-Value-PairsLocal-VariablesLoopsMapMethodsNodeNullNumbersObject-Oriented-ProgrammingObjectsOperatorsParametersPrivate-VariableProcedural-ProgrammingPromisesRecursionReduceRefactoringReturn-ValuesReverse-Polish-NotationScopeServersSettimeoutSetting-GettingStack-TraceStacksString-MethodsStringsTerminalText-EditorTruthy-FalsyType-CoercionUndefinedValuesVariables
Lessons
Labs
Projects
Links
- VS Code - Installation instructions for the VS Code text editor
- CodeCademy Intro to JavaScript course
- MDN: JavaScript First Steps
- Elevator Saga
- Exercism [online]
- Exercism [local]
- JavaScript Glossary
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide
- https://learnpythonthehardway.org/book/advice.html
- http://jsforcats.com
- https://www.destroyallsoftware.com/talks/wat
- https://www.codecademy.com/tracks/javascript
- https://www.theodinproject.com/courses/javascript
- http://news.codecademy.com/your-guide-to-semicolons-in-javascript/
- How to Design Programs (preface)
- Terminal 101 - intro to unix command-line by a former Turing School student
- https://www.learnenough.com/command-line-tutorial
- 30 Terminal tips, tricks and projects for Mac
- https://hackernoon.com/what-every-programmer-should-know-about-string-a6611537f84e
- https://floating-point-gui.de/
- Null Reference
- Eloquent JavaScript: Functions
- Mozilla Developer Network: Functions
- Mozilla Developer Network: Closures and Scope
- Mozilla Developer Network: Arrow Functions
- Mozilla Developer Network: Callbacks
- Wikipedia: Callbacks
- Mozilla Developer Network: Async Functions
- Mozilla Developer Network: Await async functions
- Kyle Simpson: Input & Output
- You Don't Know JS: Input & Output
- https://code-maven.com/argv-raw-command-line-arguments-in-nodejs
- Eloquent JavaScript Chapter 4: Data Structures: Objects and Arrays
- Eloquent JavaScript Chapter 4: Data Structures: Objects and Arrays
- The Secret Life of Objects
- Higher-order Functions
- Array Iteration Methods
- Stack Visualization
- Understanding the JavaScript Call Stack
- https://toddmotto.com/everything-you-wanted-to-know-about-javascript-scope/
- https://scotch.io/tutorials/understanding-scope-in-javascript
- https://javascript.info/recursion
- https://www.youtube.com/watch?v=k7-N8R0-KY4
- http://2ality.com/2015/06/tail-call-optimization.html
- Bugs and Errors
- Bugs and Errors
- https://javascript.info/settimeout-setinterval - a nice tutorial on setTimeout and setInterval, including in-browser exercises
- https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout
- https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setInterval
- Exploring ES6
- https://javascript.info/async-await
- Async/Await Fun Fun Function
- https://dmitripavlutin.com/how-three-dots-changed-javascript/
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/rest_parameters
- named_parameters
- https://www.youtube.com/watch?v=HcW5-P2SNec
- https://hackernoon.com/two-years-of-functional-programming-in-javascript-lessons-learned-1851667c726
- What do programmers mean by 'elegant' code?
- Refactoring - Martin Fowler literally wrote the book on refactoring
- Refactoring Lesson - on this site
- The Wrong Abstraction - by Sandi Metz