🎯 Goals
- Understand the fundamentals of JavaScript, which is the same as understanding the most basic fundamentals of programming. Understanding the primitives that make up programming languages means understanding computers better. We'll be taking many shortcuts here.
Practically speaking, I want participants to be able to write little programs.
- Understand the concept of runtimes. Node.js, Electron, and Chrome are runtimes. You will know what runtimes are, why we have them, and what we use them for. We will only scratch the surface, but we'll go deep enough that you will all understand what the engine underneath Slack (and similar desktop apps) is and how it turns our code into something that happens.
Practically speaking, I want participants to be able to write the tiniest desktop programs.
2. Understand the fundamentals of automated testing with JavaScript.
Practically speaking, I want participants to write simple JavaScript tests.
💁♂️ Introduction
What is JavaScript?
- What's a programming language? A way for humans to tell computers what to do.
- Initially created to help websites have a little bit of logic. Named
LiveScript
, but in order to market it better, it was positioned as Java
's little brother. Has nothing to do with Java. The packaging is a lie.
- Scripting language: Does not need to be compiled. Does however need an engine to run it. That's opposed to compiled languages, which are usually supposed to run on their own.
- Engines take the script, "parse" it, and turn it into machine language. The engine is the "runner", the thing that turns our scripts from pure text into lighting inside the box.
- Browsers are the most popular engine. As JavaScript became more popular, Node.js entered the scene, allowing people to run JavaScript scripts outside of a browser.
- Not only do engines execute your code, they also provide APIs for you to work with.
👨🏫 JavaScript Basics
Hello World
<aside>
📌 Exercise: Print Hello World
to the console
</aside>
Variables
<aside>
📌 Exercise: Change your Hello World
script to use a variable instead.
</aside>