"

Introduction

What is Full Stack Web Development?

Web apps are built on a software stack – a collection of technologies, languages, protocols, and systems working together to produce what appears to the user as a single, seamless app. Full stack web development is about configuring and programming all parts of that software stack to create and maintain a web app.

A full stack web developer is a software developer who possesses skills in all aspects of web app development. Full stack developers need a working knowledge of HTML & CSS in order to develop user interfaces and write code that interacts with those interfaces. They also need a working knowledge of JavaScript, event-driven programming, and the Document Object Model (DOM) in order to add programming logic and real time interaction to the user interface. Finally, they need a working knowledge of a database query language such as SQL and a server-side programming language such as PHP, Ruby, or JavaScript to manage user access to the data stored by a web app.

This book will quickly bring novice programmers up to speed in the basics of full stack web application development using HTML, CSS, JavaScript, PHP, and SQL.

Who is this Book For?

This book is a crash course in the foundational concepts, architectures, protocols, and languages of full stack web development. It is suitable for an introductory web development course in the second semester and beyond of any computer science or software engineering program. The reader is assumed to have already completed an introductory programming course in a procedural or object-oriented programming language such as Python or Java. No further background is needed, and throughout the book, we will leverage the reader’s basic programming knowledge and make comparisons between the new languages they are learning and what they may already know from their first course in programming.

What Technologies will we Use?

This book will get the reader up to speed on the basics using the web browser and code editor of their choice along with a LAMP-like software stack.

LAMP stands for Linux, Apache, MariaDB, and PHP. Apache and MariaDB are a web server and a database management system that you can install on any laptop or desktop computer (don’t worry about the Linux part – there are Mac and Windows versions as well). PHP is one of the oldest and still most-widely-used languages for web development, still in use by over 75% of the world’s websites at the time of writing. The LAMP stack can be a quick and easy solution for small-scale web development projects and prototypes.

The LAMP stack is one of many available software stacks for building web apps, but for beginning students it has several advantages over newer frameworks: it’s easy to install and maintain; it is well established and easy to get help with; it allows a logical step-by-step conceptual progression from static to dynamic web content; and it makes big concepts such as client-server communication and session management easy to understand.

With a basic grounding in web development using a LAMP-like stack, students will be able to quickly create and host web apps on their own machines or on any number of inexpensive hosting platforms. They will also be able to leverage what they have learned to learn frameworks such as node.js, ASP.NET, or Java Enterprise Edition in their future courses or job placements.

Acknowledgements

This book was made possible in part by a grant from the MacPherson Institute at McMaster University.