Learn to code at Cumorah Academy. In 12 weeks, you’ll learn to build fully-fledged websites and web apps, including HTML, CSS, Javascript, Node, React and MongoDB. At the conclusion of the course, you’ll learn how to start your own freelancing business.
Top performing students will have the opportunity to build their resume in a paid software engineering internship.
No programming experience is needed to succeed, but this is a demanding course (5 – 6 hours of intensive learning, 5 days a week), so you should only apply if you’re fully committed.
Students enrolled in the Coding Bootcamp will also take the Cumorah Academy Leadership & Personal Development Program simultaneously.
Requirements
B2+ Level of English or better
Your own Laptop (less than 4 years old)
Topics
Introduction
Preview
The 12 Rules to Learn to Code
HTML
Introduction to HTML
Using HTML Tags
The Anatomy of an HTML Tag
What we’re building – HTML Personal Site
What is The HTML Boilerplate?
How to Structure Text in HTML
HTML Lists
HTML Image Elements
HTML Links and Anchor Tags
HTML Tables
Using HTML Tables for Layout
How to Type Emojis
HTML Forms
Publish Your Website!
CSS
Inline CSS
Internal CSS
External CSS
How to Debug CSS Code
The Anatomy of CSS Syntax
CSS Selectors
Classes vs. Ids
What Are Favicons?
HTML Divs
The Box Model of Website Styling
CSS Display Property
More About Web Design
CSS Static and Relative Positioning
Absolute positioning
The Dark Art of Centering Elements with CSS
Font Styling in Our Personal Site
Learn More About Typography
Adding Content to Our Website
CSS Sizing
CSS Float and Clear
Bootstrap
What is Bootstrap?
Installing Bootstrap
Web Design 101 – Wireframing
The Bootstrap Navigation Bar
Setting Up Our New Project
Bootstrap Grid Layout System
Getting Montserrat Black and other Font Weights
Adding Grid Layouts to Our Website
A Note About CSS Link Order
Bootstrap Containers
Bootstrap Buttons & Font Awesome
Styling Our Website Challenges and Solutions
The Bootstrap Carousel Part 1
The Bootstrap Carousel Part 2
Bootstrap Cards
The CSS Z-Index and Stacking Order
Media Query Breakpoints
How to become a Better Programmer – Code Refactoring
Put it into Practice – Refactor our Website Part 1
Advanced CSS – Combining Selectors
Refactoring our Website Part 2
Advanced CSS – Selector Priority
Completing the Website
Download the Completed Website
Tip from Angela – Building a Programming Habit
Web Design – Create a Website People Love
Understanding Colour Theory
Understanding Typography and How to Choose a Font
User Experience (UX) Design
Web Design in Practice – Let’s apply what we’ve learnt!
Javascript
Introduction to Javascript
Javascript Alerts – Adding Behaviour to Websites
Data Types
Javascript Variables
Naming and Naming Conventions for Javascript Variables
String Concatenation
String Lengths and Retrieving the Number of Characters
Basic Arithmetic and the Modulo Operator in Javascript
Increment and Decrement Expressions
Functions Part 1: Creating and Calling Functions
The Karel Chess Board Solution
Functions Part 2: Parameters and Arguments
Functions Part 3: Outputs & Return Values
Random Number Generation in Javascript: Building a Love Calculator
Control Statements: Using If-Else Conditionals & Logic
Comparators and Equality
Combining Comparators
BMI Calculator Advanced (IF/ELSE)
Working with Javascript Arrays
Adding Elements and Intermediate Array Techniques
Control Statements: While Loops
Adding Javascript to Websites
The Document Object Model
Introduction to the Document Object Model (DOM)
Selecting HTML Elements with Javascript
Manipulating and Changing Styles of HTML Elements with Javascript
The Separation of Concerns: Structure vs Style vs Behaviour
Text Manipulation and the Text Content Property
Manipulating HTML Element Attributes
Advanced Javascript and DOM Manipulation
Adding Event Listeners to a Button
Higher Order Functions and Passing Functions as Arguments
How to Play Sounds on a Website
A Deeper Understanding of Javascript Objects
How to Use Switch Statements in Javascript
Objects, their Methods and the Dot Notation
Using Keyboard Event Listeners to Check for Key Presses
Understanding Callbacks and How to Respond to Events
Adding Animation to Websites
jQuery
What is jQuery?
How to Incorporate jQuery into Websites
How Minification Works to Reduce File Size
Selecting Elements with jQuery
Manipulating Styles with jQuery
Manipulating Text with jQuery
Manipulating Attributes with jQuery
Adding Event Listeners with jQuery
Adding and Removing Elements with jQuery
Website Animations with jQuery
The Unix Command Line
Installing the Hyper Terminal
Command Line Hyper Setup
Understanding the Command Line. Long Live the Command Line!
Command Line Techniques and Directory Navigation
Creating, Opening, and Removing Files through the Command Line
Backend Web Development
Backend Web Development Explained
Node.js
Install Node.js on Mac
Install Node.js on Windows
The Power of the Command Line and How to Use Node
The Node REPL (Read Evaluation Print Loops)
How to Use the Native Node Modules
The NPM Package Manager and Installing External Node Modules
Express.js with Node.js
What is Express?
Creating Our First Server with Express
Handling Requests and Responses: the GET Request
Nodemon Installation
Understanding and Working with Routes
Responding to Requests with HTML Files
Processing Post Requests with Body Parser
APIs – Application Programming Interfaces
Why Do We Need APIs?
API Endpoints, Paths and Parameters.
API Authentication and Postman
What is JSON?
Making GET Requests with the Node HTTPS Module
How to Parse JSON
Using Express to Render a Website with Live API Data
Using Body Parser to Parse POST Requests to the Server
Adding Success and Failure Pages
Deploying Your Server with Heroku
Git, Github and Version Control
Introduction to Version Control and Git
Version Control Using Git and the Command Line
GitHub and Remote Repositories
GitHub Private Repos are now Free! ?
Gitignore
Cloning
Branching and Merging
Optional Git Challenge
Forking and Pull Requests
EJS
Linter Errors with EJS
Templates? Why Do We Need Templates?
Creating Your First EJS Templates
Running Code Inside the EJS Template
Passing Data from Your Webpage to Your Server
The Concept of Scope in the Context of Javascript
Adding Pre-Made CSS Stylesheets to Your Website
Understanding Templating vs. Layouts
Understanding Node Module Exports: How to Pass Functions and Data between Files
Databases
Databases Explained SQL vs. NOSQL
SQL
SQL Commands: CREATE Table and INSERT Data
SQL Commands: READ, SELECT, and WHERE
Updating Single Values and Adding Columns in SQL
SQL Commands: DELETE
Understanding SQL Relationships, Foreign Keys and Inner Joins
MongoDB
MongoDB on Mac
Installing MongoDB on Windows
MongoDB CRUD Operations in the Shell: Create
MongoDB CRUD Operations in the Shell: Reading & Queries
MongoDB CRUD Operations in the Shell: Update
MongoDB CRUD Operations in the Shell: Delete
Relationships in MongoDB
Working with The Native MongoDB Driver
If You Have Forgotten to Quit the MongoDB Server
Mongoose
Introduction to Mongoose
Reading from Your Database with Mongoose
Data Validation with Mongoose
Updating and Deleting Data Using Mongoose
Establishing Relationships and Embedding Documents using Mongoose
Deploying Your Web Application
How to Deploy Web Apps with a Database
How to Setup MongoDB Atlas
Deploying an App with a Database to Heroku
Authentication & Security
Introduction to Authentication
Getting Set Up
Level 1 – Register Users with Username and Password
How to Review the Source Code
Level 2 – Database Encryption
Using Environment Variables to Keep Secrets Safe
Level 3 – Hashing Passwords
Hacking 101
Level 4 – Salting and Hashing Passwords with bcrypt
What are Cookies and Sessions?
Using Passport.js to Add Cookies and Sessions
Level 6 – OAuth 2.0 & How to Implement Sign In with Google
Finishing Up the App – Letting Users Submit Secrets
React.js
What is React?
What we will make in this React module
Introduction to Code Sandbox and the Structure of the Module
Introduction to JSX and Babel
JSX Code Practice
Javascript Expressions in JSX & ES6 Template Literals
Javascript Expressions in JSX Practice
JSX Attributes & Styling React Elements
Inline Styling for React Elements
React Styling Practice
React Components
React Components Practice
Javascript ES6 – Import, Export and Modules
Javascript ES6 Import, Export and Modules Practice
[Windows] Local Environment Setup for React Development
[Mac] Local Environment Setup for React Development
Newer Versions of Node Troubleshooting
React Props
React Props Practice
React DevTools
Mapping Data to Components
Javascript ES6 Map/Filter/Reduce
Javascript ES6 Arrow functions
React Conditional Rendering with the Ternary Operator & AND Operator
State in React – Declarative vs. Imperative Programming
React Hooks – useState
useState Hook Practice
Javascript ES6 Object & Array Destructuring
Javascript ES6 Destructuring Challenge Solution
Event Handling in React
React Forms
Class Components vs. Functional Components
Changing Complex State
Changing Complex State Practice
Javascript ES6 Spread Operator
Javascript ES6 Spread Operator Practice
Managing a Component Tree
Managing a Component Tree Practice
Keeper App Project – Part 3
React Dependencies & Styling the Keeper App
Web3 – Decentralized App (DApp) Development with the Internet Computer
What is Web3?
How does the Blockchain actually work?
What is the Internet Computer (ICP)?
[Mac Users] Installation and Setup for Web3 Development
[Windows Users] Installation and Setup for Web3 Development
Introduction to the Motoko Language
Motoko Functions and the Candid User Interface
Motoko Conditionals and Type Annotations
Query vs. Update Methods
Orthogonal Persistance
Tracking Time and Calculating Compound Interest
Connecting the Motoko Backend to our JS Frontend
Where to Get Help and Support for Development on the Internet Computer
Deploying to the ICP Live Blockchain
What are Cycles and the ICP Token?
No Cycles, No Problems!
How to Claim Free Cycles from Dfinity
How to Deploy to the ICP Network
How to Convert ICP into Cycles?
[Optional] How to Deploy a Static Website onto the ICP Blockchain for Hosting
Building DApps on ICP with a Reach Frontend
How to Configure a DFX Created Project to Use React
Storing Data on a Canister
Retrieving Data from a Canister
Deleting and Persistance
Be part of something great
Gather with other young people with high moral standards from all over Europe to have a gospel-centered experience of a lifetime. Make new friends, build lasting relationships, meet one-on-one with great mentors and leaders, gain the practical skills you need to start a successful career, improve your English and even get some work experience, all while living at our campus located in the beautiful Czech countryside.