This course is fully compatible with the latest versions of Ubuntu (20.04 LTS, 18.04 LTS). You can also continue using 14.04 LTS or 16.04 LTS if you prefer, as the content is compatible with all versions.
This course offers a comprehensive look into the entire web development process – from local server configuration using WAMP and MAMP (Apache, MySQL, PHP) to production deployment using the latest web technologies including: LAMP Stack (Linux, Apache, PHP and MySQL) for Ubuntu, HTML5, CSS, Bootstrap, JavaScript, jQuery, XML, and AJAX.
The content is ideal for those interested in working as a web developer, launching a web application, or devoted enthusiasts. The concepts explored in this course are suitable for individuals of all skill levels. Each module starts with the fundamental concepts and gradually transitions into more advanced material.
What makes this course unique?
This course is specifically intended to teach students to develop web applications using the most efficient methods and the latest web technologies. Through live demonstrations we teach the importance of using scalable cloud hosting infrastructures during the development process. This includes small informational websites of only a few pages to advanced ‘big data’ style, dynamic web applications. We go through several live examples of web development and Linux based server configurations on popular Cloud hosting providers such as Linode.
Section 1 & 2 (Introduction, How the Internet Works)
The course begins with with an overview of learning objectives. We then explore how the internet works, including the composition and transmission of data packets over both local and wide-area Networks. Next we take a look at the HTTP and HTTPS protocols as applicable to client and server side communications – including DNS Lookups. This section will also teach students how email exchange works over SMTP and IMAP. The role of Network Ports and Firewalls are also introduced.
Section 3, 4: (The Web Development Process, Planning a Website)
Students will gain an understanding of all the steps involved in the web development process.
Section 5: Web Hosting and System Requirements
We conduct an in-depth case analysis of web hosting solutions including: Shared, Virtual Private, Dedicated and Cloud Hosting.
We provide an overview of various packages offered by different web hosting companies and weigh the pros and cons of each one.
Students are also introduced to the importance of web server scalability and the advantages of cloud hosting over traditional hosting services. We also examine the infrastructure requirements of popular, resource intensive applications such as Netflix and Facebook to emphasize the importance of avoiding costly mistakes in the initial stages of development.
Section 6: Domain Names
We provide an overview of the domain name registration process. This includes the role of registrars and TLD (Top Level Domain) administration by ICANN. ccTLD’s (Country Code Top Level Domains) are also explored.
Students gain hands-on experience with the registration process using popular domain registrars. We provide a comparison of different registrars and register a sample domain name using GoDaddy. Other topics of discussion include: domain name privacy and administration, auto-renewal, domain forwarding, and name server assignment.
Section 7: Testing Environment
Students are introduced to configuring a local testing server on a PC or MAC system using WAMP (Windows) or MAMP (MAC). The lessons provide a detailed guide on installation of the packages and an overview of the interface.
Section 8: Production Environment
Students acquire the skills needed to optimally configure a live production environment for securely hosting web applications on a cloud server (Linode). The section starts with an overview of different cloud hosting providers such as Amazon Web Services, Microsoft Azure, Linode and Digital Ocean.
We then provide a live demonstration of server setup using Linode. This includes deployment of Ubuntu and installation of LAMP Stack (Linux) on the Linode Server using remote access consoles such as Terminal (MAC) and PuTTY for Windows.
Students gain an in-depth knowledge of server maintenance, file and directory commands. We also explore SSH Authentication for multiple users and file permissions to reduce security vulnerabilities. Remote Desktop connections for server administration are taught, using Tight VNC (Windows) and RealVNC (MAC).
A thorough overview of the Linode server management console is conducted, to show students how to scale servers, change root passwords, manage the DNS Zone file and create back-ups.
Section 9: FTP Setup
Students learn the role of an FTP (File Transfer Protocol) client to connect to a remote server, through a local machine. We provide a live demonstration on file upload using FileZilla and explore the FileZilla Interface for connection management.
Section 10: HTML Development
This section explores HTML. HTML is a key fundamental building block when learning to develop websites. Students initially learn the basics of HTML page structure and gradually transition into working with spacing, text formatting, lists, images, videos, links, anchors, tables, forms and much more. We include several projects, where students are shown first-hand, how to develop and code html web pages from scratch.
Section 11: CSS Development
Students learn to use CSS to create stylish, responsive web page layouts. We start by discussing the parts and types of CSS rules, followed by CSS classes, DIVS, and ID’s. Students gain significant exposure to various formatting options, including margins, padding, font properties, backgrounds, transparency, positioning, link styling and CSS tables. This section includes a hands-on web development project where students utilize the concepts explored in the lesson.
Section 12: Document Object Model (DOM)
As a precursor to JavaScript, we explore the DOM (Document Object Model). We explain its usage and application in manipulating HTML and CSS elements.
Section 13: JavaScript Development
We introduce students to JavaScript coding to add interactivity to static HTML and CSS pages. The section starts with discussing JavaScript placement, using both internal and external scripts. We then take a look at JavaScript output, variable declarations, arithmetic operators, objects, strings, math functions, arrays, conditional statements, loops, functions and events. Students also go through two hands-on projects that will further solidify their knowledge of the concepts explored in the lessons.
Section 14: JQuery Library
We explore the jQuery library and many of its unique features, used to create stunning, animated web pages. We start with the basics, from embedding jQuery into web pages to working with Selectors. Students then explore working with events, toggling, fading, sliding, and other forms of animation. The lessons also teach students how to work with callbacks, chaining, dragables, accordion menus and many other functions.
Section 15: Bootstrap Framework
Students are taught to use the Bootstrap framework for responsive, mobile-first – front-end development. As one of the leading open-source development libraries, Bootstrap is an essential part of the developers coding arsenal. The section begins with teaching students how to include essential Bootstrap files into web pages. It then explores the Bootstrap Grid system and popular layout strategies for optimal cross-device and cross-browser compatibility.
Students gain exposure to just about every Bootstrap component, from typography, tables and images, to jumbotrons, wells, alerts, buttons, glyphicons and progress bars. The section includes several hands-on exercises that will walk students through the process of creating stunning layouts, complete with modals, carousels, popovers, drop-down menus, forms and much more.
Section 16: PHP Development
Students gain exposure to creating dynamic web applications and functionality using PHP. We start with the basics, including variable declaration and data output. The lessons then transition into working with objects, conditional statements, loops, functions, arrays and form validation.
Section 17: MySQL Database Integration
Students learn to unleash the true power of web application development with MySQL database integration. We start with the basics from database and table creation, to user management. Next we explore the execution of commonly used SQL statements for database modification and administration. Students are also taught how to create database connections and execute SQL statements from PHP scripts.
Section 18, 19 (XML, AJAX, & Development)
We explore XML and AJAX integration to create dynamic content, without page refresh. The lessons cover several hands-on training exercises that will encompass many of the exciting functions AJAX offers. Students will build a website complete with database integration, registration forms with server-side validation, user authentication, and a SMTP-based contact submit form.
Section 20: Google Apps for Work
Students learn to create a customized business email address using Google Apps for Work. Email administration is also explored, along with alias creation.
Introduction
This lecture discusses the objectives of the course and provides an overview of how the material will be presented.
How the Internet Works
Students will learn key terms that are instrumental in web development, including:
- Data Packet Transmission
- Data Packet header, payload and trailer
- Internet bandwidth, bit-rate and latency
- Protocols, IP & TCP
Students learn how web page data is delivered using HTTP (Hyper Text Transfer Protocol) and GET Requests. DNS (Domain Name Servers) are also introduced.
Students are introduced to HTTPS (Hyper Text Transfer Protocol Secure). We explore several components of this protocol including:
- SSL (Secure Socket Layer)
- TLS (Transport Layer Security)
- SSL Handshake
- EV (Extended Validation Certificate)
Students learn the flow of email exchange using SMTP (Simple Mail Transfer Protocol).
We also explore POP3 & IMAP for Local Mail Delivery.
This lecture expands on our discussion on email exchange, with a focus on outbound mail delivery.
Students are introduced to the basics of an internet and local network. We discuss both Local and Wide Area Networks (LAN, WAN).
Students are introduced to key terms relevant to data packet exchange over local and wide area networks, including:
- Routers
- Network Ports
- Hardware and Software Firewalls
- Data Pipelines
- Internet Service Provider (ISP)
The Web Development Process
This lecture provides an overview of the web development process. Students will follow this process in the development of several website projects.
Planning a Website
This lecture discusses the importance of planning the layout and flow of a web application of website prior to development.
This Quiz covers materials from section 1-4 inclusive.
Web Hosting and System Requirements
This lecture provides an introduction on the different types of web hosting solutions that the course will explore, including:
- Shared Hosting
- Virtual Private Servers (VPS)
- Dedicated Servers
- Virtual Cloud Servers
This lecture focuses on shared hosting solutions and offers a comparison of several packages available through popular hosting providers.
Several Key terms are explored including:
- Bandwidth
- Cloaking
- Disk Space
- Linux vs. Windows Operating Systems
- Scripting language compatibility
This lecture discusses dedicated hosting solutions and provides a detailed comparison of different packages.
This lecture discusses Virtual Private Servers (VPS) and provides a detailed comparison of different packages.
This lecture provides a detailed overview of Cloud hosting and defines the "computing cloud".
We present a case study comparing cloud hosting to traditional hosting solutions in creating basic and "big data" style websites and applications.
Students will learn the concepts of flexibility, scalability, cost efficiency and reliability as applicable to virtual cloud servers.
We also explore various cloud hosting packages offered by popular providers such as Linode.
Domain Names
Students learn key terminology as applicable to domain names and registration, including:
- Registries
- Registrars
- Top Level Domains
- ICANN (Internet Corporation for Assigned Names and Numbers)
- ccTLD (Country Code Top Level Domain).
- IP to Domain Name Resolution.
This lecture discusses the importance of selecting the right domain registrar for registration.
We explore essential terms such as: Domain Brand Protection, Domain Monitoring, Enforcement, Security and Trademarking.
In this lecture we register a sample domain using registrar GoDaddy.com.
This lecture is a continuation of domain name registration. We demonstrate how to enable domain privacy to protect against the publication of personal information on public WHOIS records.
This lecture demonstrates how to log in to the GoDaddy domain management console.
Students will learn to administer the Domain DNS settings and configure Auto Renewal.
This lecture further explores the GoDaddy domain management system, including the domain lock and domain transfer authorization.
Students learn the difference between permanent and temporary domain redirection. We also explore domain and sub-domain forwarding.
In this lecture we define the role of Name-servers (NS Records).
Students are also introduced to A-Records and MX-Records.
Students learn to amend Domain Registrant, Administrative, Technical and Billing information on their GoDaddy account.
This Quiz includes materials from Section 5-6 Inclusive.
Testing Environment
This lecture provides an introduction into testing servers to host web applications on a local system.
Students learn the difference between client and server-side scripting languages.
We also introduce WAMP and MAMP (Apache, MySQL, PHP) for Windows and MAC respectively.
Students learn to download and configure WAMP Server for Windows.
Students learn to download and configure MAMP Server for MAC.
This lesson explores the WAMP menu including:
- Starting and Stopping the WAMP Service
- Storing files into the Web Root (www) Folder.
- Exploring important configuration files for PHP, MySQL and APACHE.
Students learn to test their WAMP configuration to make sure all services are working properly.
Production Environment
This lecture provides an introduction into setting up a live production web server on a cloud hosting platform.
This lecture explores the pricing structure of typical cloud hosting providers such as Linode.
Students will also register for Linode in order to create virtual machines in the following lessons.
Students will create a virtual server using the Linode Dashboard.
We discuss the importance of selecting the right data center based on the amount of expected traffic from different geographic locations.
This lecture provides an overview of basic configuration settings in the Linode control panel.
Students learn to deploy a pre-configured Ubuntu Disk Image on a Linode Virtual machine.
We explore:
- Hard Disk configuration
- Swap Disk creation
- Root Password configuration
Students learn to edit, create and remove existing hard disks and configuration profiles.
We also explore server status messages, system usage and performance monitoring.
Students learn to connect to their virtual server using remote access, SSH Clients.
We introduce key concepts including:
- Public IPv4 & IPv6 Addresses
- DNS Resolvers
- Glish Console
This lecture introduces students to PuTTY and PuTTYgen for Windows users.
Students will download and install the software onto their local system.
Students will learn to launch Terminal on a MAC System to execute command lines on a virtual server.
This lecture explains the importance of understanding Ubuntu command lines for remote server administration.
Students learn to establish a remote connection to the Virtual Linode server using PuTTY for Windows.
Students learn to establish a remote connection to the Virtual Linode server using Terminal for MAC.
This lecture explores Ubuntu maintenance commands to ensure the server's service packages are up-to-date.
We explore the "apt-get update" and "apt-get upgrade" commands.
This lecture explores basic file and directory commands on a Ubuntu Virtual Server.
We discuss the following commands:
- cd (Current Directory)
- ls (List Files)
- pwd command (Present Working Directory)
- reset command
Students learn to install LAMP Stack (Apache, MySQL, PHP, PhpMyAdmin) on their Linode Virtual Server.
Students will configure the host-name and date settings on their Ubuntu virtual server using Nano text editor.
Students learn the importance of creating user profiles for their Ubuntu server for increased security.
We explore the difference between root and non-root users.
Students learn to configure SSH Authentication on their virtual Ubuntu Server, using PuTTY Key Generator for Windows.
We explore important key terms including:
RSA Encryption
Public vs. Private Keys
Passphrases & Authorized Keys
Students learn to configure SSH Authentication on their virtual Ubuntu Server, using Terminal for MAC.
We explore important key terms including:
RSA Encryption
Public vs. Private Keys
Passphrases
Authorized Keys
Students learn to modify file and directory permissions (read, write, and execute) using Ubuntu command lines.
Students learn to install and configure a graphical desktop environment on their remote server.
We explore the XFCE desktop package and vncserver for ubuntu.
Students learn to install Tight VNC Viewer for Windows, in order to establish a remote connection with their Ubuntu server.
We explore server management using Ubuntu GUI and Tight VNC.
Students learn to install Real VNC Viewer for MAC, in order to establish a remote connection with their Ubuntu server.
We explore server management using Ubuntu GUI and Real VNC.
This lecture explores the Ubuntu Graphical Desktop Interface.
We conduct an overview of the important features as applicable to server management.
This lecture demonstrates how to disable root user access on an Ubuntu Virtual server for increased security and data integrity.
Students learn to scale the system resources of a virtual server using the Linode Dashboard.
This lecture demonstrates how to create disk back-ups using the Linode Dashboard.
We also explore the importance of cloning disk configurations.
Students learn to modify their root user password for their Ubuntu server using the Linode Dashboard.
Students learn to administer a DNS Zone file for domain and email management using the Linode Dashboard.
The following concepts are explored:
- "A" and "AAAA" Records
- MX Records
- Domain Zone
- SOA (Start of Authority)
- TTL (Time to Live)
- CNAME Record
- TXT Record
- SRV Record
Students learn to mange DNS Settings using the GoDaddy domain control panel.
FTP Setup
We provide a demonstration on downloading and installing FileZilla FTP Client used to transfer files from the local testing server to the live production web server.
We explore the FileZilla interface and administration of the site manager.
Students also learn to establish SSH connections with their remote server for secure data file transfer.
Students learn to upload and download files from their remote virtual server using FileZilla FTP.
This lecture continues exploring the FileZilla FTP agent.
Students learn to check file transfer status and disconnect from the remote server.
This Quiz includes materials from sections 7-9 inclusive.
HTML Development
This lecture provides an introduction into HTML and it's primary role in web development.
We explore various examples to demonstrate the application of HTML and its usage.
This lecture explores the basic structure of an HTML document, including:
- <!DOCTYPE html> Tag
- Document Title Placement
- Document Script Placement
- Document Body Content
Students learn the difference between HTML 5, and previous versions.
We also define XHTML and it's application in development.
Students learn the importance and application of the HTML <head></head> tags.
Here we introduce:
- Meta tags and meta data
- <title></title> Tags
- Character sets
- View-port Considerations
- Cascading Style Sheets (CSS)
- JavaScript Functions
Students learn the application of the HTML <body></body> tags.
Students learn the application of the HTML <p></p> tags.
Students learn the application of the HTML <br></br> tags.
Students learn to create a non-breaking space using HTML.
Students learn to create headings to emphasize important text content.
Students learn to format text content with different formatting attributes.
Students learn how to apply element formatting attributes within HTML tags, known as inline-text formatting.
Students learn to create unordered lists and list items using the <ul></ul> and <li></li> tags.
Students learn to create ordered lists and list items using the <ol></ol> and <li></li> tags.
Students learn to insert images into html documents and apply various image attributes.
Students learn to insert responsive videos using the HTML 5 <video></video> tags.
We also explore video controls and format options.
Students learn the difference between absolute (long-form) file references and relative file references (short-form).
We explore different examples using image file paths in a web document.
Students learn to create links and apply various link attributes to text and image content.
Students learn to create links to specific content areas of a single page using anchor tags.
Students learn to work with tables and custom table formatting.
We explore:
- Cell Spacing
- Cell Padding
- Table borders
- Fixed table width vs. Percentage
Students learn to nest tables into one another using nested and parent table structures.
Students learn to merge multiple table cells into one using the "collspan" attribute.
This lecture explores the HTML "no wrap" attribute when working with content in table cells.
Students learn to apply background images to tables using the "background" attribute.
Students learn to work with the align attribute to align content in a table cell.
Students are introduced to HTML forms for the collection of user input data.
We explain key concepts such as data validation and other important elements that are essential in processing form data while maintaining data integrity.