Learn JavaScript the Hard Way
This is a large course that will eventually be a complete course in web development from nothing to your own commercial website. Learning to create a professional commercial website is a valuable educational experience, even if your goal is to never make money online.
NOTE: This course is in early access. It's not complete but does teach all of JavaScript that's relevant to the rest of the course.
Course Contents
This course contains the following modules and lessons. Every course offers free samples of the first 10 lessons so you can decide if you want to take the course, and excerpts from all lessons after that.
Module First Steps
Installing required software and advice for beginners.
- 01: Welcome to The CourseA quick introduction and welcome to the course with some key information to get started.
- 02: Course Motivation and OverviewThe grand vision of the course as of March 2021.
- 03: Common Misconceptions About ProgrammingLearning a programming language is different from other things you've learned. In this exercise I give you helpful tips on how to better succeed.
- 04: Setup for WindowsGetting your Windows 10 computer ready to code.
- 05: Setup for OSXSetting up your OSX/Mac computer for code.
- 06: Setup for Linux or WSLGetting a Linux system ready, or using Windows Subsystem for Linux.
- 07: PowerShell BasicsLearning to use enough PowerShell to complete the course.
- 08: Bash BasicsA quick introduction to bash if you run Linux, WSL, or OSX.
- 09: Available Help ResourcesThe general technical help resources available for you as a customer of the course.
- 10: Next StepsWhat you should be doing next.
Module HTML Basics
Learn how browsers structure the content you see using HTML tags.
- 01: ElementsIntroducing basic terminology for HTML.
- 02: Tags in DetailA quick reference of the major HTML tags you'll use the most.
- 03: AttributesLearn about how attributes modify tags, and aren't used much anymore.
- 04: LinksLearn how to link to another HTML document.
- 05: Important AttributesA list of the major attributes on tags you'll most likely use.
- 06: The DOMExplain the Document Object Model and how nested tags work.
- 07: TablesFocus on tables for tabular data.
- 08: FormsFocus on forms for collecting information from the user and submitting it.
- 09: Custom TagsAn explanation of using your own tags, why that's the easiest way to work, followed by a challenge.
- 10: Simple Layouts with BlockstartBridging from HTML to CSS using blockstart.css
Module CSS Basics
Learn a simple way to use CSS to style HTML.
- 01: CSS and HTMLThe relationship between CSS and HTML.
- 02: The SetupSetting up the JavaScript gear you need to use.
- 03: Rule SetsThe initial format for a CSS rule, and how selectors work.
- 04: Simple StylingAn initial set of useful properties for CSS that should cover 90% of your uses.
- 05: Value (Not Color) CodesUsing monochrome values instead of color codes to simplify your process.
- 06: VariablesUsing variables to simplify CSS and making changes easier.
- 07: Flexbox BasicsIntroducing Flexbox for consistent modern layout.
- 08: Grid BasicsIntroduction to using CSS grids for uniform layout.
- 09: A Frontend Development ProcessI explain a process for taking your front end ideas (or copy subjects) from nothing to working user interface using blockstart.css.
- 10: Frontend Development Process Stages 3 and 4Breaking away from blockstart.css to create the final look of the subject website from Exercise 9.
Module JavaScript Level 1
Introduction to all of the basic elements of JavaScript.
- 00: Gearing UpGetting the software you need to finish this module.
- 01: A First ProgramYour very first JavaScript program.
- 02: CommentsHow to comment out parts of your code and write help for your future self.
- 03: Simple Math and StringsDoing simple math and creating displayable text in strings.
- 04: VariablesVariables for storing and referencing information.
- 05: ConstantsConstants are variables that you claim will not change.
- 06: Escape SequencesWhen you write a string how do you put a string in it?
- 07: Prompting InputAsking a person for input from the terminal.
- 08: Command Line ArgumentsAccepting input from the user as command line options on your script.
- 09: FilesReading files with the fs (filesystem) module.
- 10: Files, Args, and VariablesCombining reading files with accepting command line arguments.
- 11: FunctionsCreating small pieces of code and jumping to them with functions.
- 12: Functions, Files, VariablesCombining everything learned so far with functions, files, and variables in one.
- 13: ModulesPacking a group of related files into a single component called a module.
- 14: True and False TestsThe start of logic comparison operations.
- 15: If and ElseThe introduction of branching with if and else.
- 16: While LoopsThe concept of repeating a block of code with a while-loop.
- 17: Sequences and For LoopsLists of data and enumerating them with a for-loop.
- 18: More ArraysStudying Arrays even more and becoming proficient at nesting them.
- 19: Data ObjectsFirst step with objects just for key/value data.
- 20: First GameCreating a little game to combine everything learned thus far.
- 21: Simple OOPGoing from Data Objects and Functions to Object Oriented Programming.
- 22: More Complex OOPUsing the new ES6 style of classes is much better than the last exercise's classes.
- 23: InheritanceLearning about the concept of inheritance in OOP.
- 24: OOP GameCreating an OOP version of our little game.
- 25: Functions and RecursionStudying a complex use of functions calling their self to do a loop.
- 26: Transforming DataProcessing Arrays with handy functions and callbacks like map and reduce.
- 27: Applying FunctionsYou can chain sequences of functions together to perform more complex sequences of operations.
- 28: Scope and ClosuresThe concept of scope in ES6 vs. older JavaScript and why you should use let and const instead of var.
- 29: Partial ApplicationA more complicated technique to push your understanding of callbacks and filters.
- 30: Callbacks, Events, Promises and AsyncThis exercise covers the many, many, many ways that JavaScript handles asynchronous events.
- 31: Modules and `import`The final exercise covers the use of import and modern ES6 modules.
Module JavaScript Level 2
A set of 10 small projects that refine and practice your JavaScript skills.
- 00: IntroductionThe basics of Web Development.
- 01: Processing Directories of FilesProcessing Directories of Files
- 02: Dynamically Loading ModulesDynamically Loading Modules
- 03: A Static Blog GeneratorA Static Blog Generator
- 04: A Blog ServerA Blog Server
- 05: Creating a Comment FormCreating a Comment Form
- 06: Alpine.js Crash CourseAlpine.js Crash Course
- 07: Better Comments with Alpine.jsBetter Comments with Alpine.js
- 08: The SQL Crash CourseThe SQL Crash Course
- 09: SQL NormalizationSQL Normalization
- 10: SQL RelationshipsSQL Relationships
- 11: Basic SQL with Knex.jsBasic SQL with Knex.js
- 12: Storing Comments in SQLStoring Comments in SQL
- 13: Form ValidationForm Validation
- 14: Better Password StorageBetter Password Storage
- 15: Dynamically Loaded ServerDynamically Loaded Server
- 16: Going FurtherGoing Further