Welcome to the Fundamentals of Web Development. This textbook is intended to cover the broad range of topics required for modern web development and is suitable for intermediate to upper-level computing students. A significant percentage of the material in this book has also been used by the authors to teach web development principles to first-year computing students and to non-computing students as well.
One of the difficulties that we faced when planning this book is that web development is taught in a wide variety of ways and to a diverse student audience. Some instructors teach a single course that focuses on server-side programming to third-year students; other instructors teach the full gamut of web development across two or more courses, while others might only teach web development indirectly in the context of a networking, HCI, or capstone project course. We have tried to create a textbook that supports learning outcomes in all of these teaching scenarios.
Web development is a term that takes on different meanings depending on the audience and context. In practice, web development requires people with complementary but distinct expertise working together toward a single goal. Whereas a graphic designer might regard web development as the application of good graphic design strategies, a database administrator might regard it as a simple interface to an underlying database. Software engineers and programmers might regard web development as a classic software development task with phases and deliverables, where a system administrator sees a system that has to be secured from attackers. With so many different classes of users and meanings for the term, it’s no wonder that web development is often poorly understood. Too often, in an effort to fully cover one aspect of web development, the other principles are ignored altogether, leaving students without a sense of where their skills fit into the big picture.
A true grasp of web development requires an understanding of multiple perspectives. As you will see, the design and layout of a website are closely related to the code and the database. The quality of the graphics is related to the performance and configuration of the server, and the security of the system spans every aspect of development. All of these seemingly independent perspectives are interrelated and, therefore, a web developer (of any type) should have a foundational understanding of all aspects, even if he/she only possesses expertise in a handful of areas..
The first edition of this title was mainly written in the first half of 2013 and then published in early 2014. The second edition was mainly written in the first half of 2016 and then published in early 2017. This edition was mainly written in the first half of 2020.
The focus of the book has always been on the conceptual and practical fundamentals of web development. As such, many of the topics covered in the book are as important today as they were when we wrote the first edition in 2013. Nonetheless, the field of web development is constantly in flux, which has resulted in many changes in the underlying technologies of web development since the first and second editions were written. The third edition reflects both these recent changes as well as those enduring fundamental aspects of web development.
Over the past decade, the key technology stack within real-world web development has migrated away from back-end technologies such as PHP, JSP, and ASP. NET. While these technologies are still important, the front-end technology of JavaScript has become the focal practice of most web developers today. This edition reflects this transformation in real-world practices.
Some of the key changes in this edition include the following:
Existing chapters have been revised based on user feedback. Instructor focus groups from 2018 provided helpful information on what content was missing or needed improvement. Emailed suggestions from other instructors and our own student feedback also informed changes to existing content.
Updated, expanded, or new coverage of a wide-variety of topics that reflect current approaches to web development. Some of these topics include CSS preprocessors, CSS design principles, ES6+ language additions, web and browser APIs, React, Node, TypeScript, SQLite and NoSQL databases, GraphQL, serverless computing, caching, new security vulnerabilities, JWT authentication, DevOps, continuous integration/deployment, and microservice architectures.
Enhanced coverage of contemporary JavaScript. This edition has five chapters on both front-end and back-end JavaScript (almost 300 pages versus the second edition’s three chapters of 170 pages).
Dedicated chapters on React and Node. Both of these have become an essential skill for contemporary web developers.
New pedagogical features within most chapters. These include Test Your Knowledge exercises and Essential Solutions boxes. The former are short exercises for student to apply the knowledge in the section(s) they have just read, while the latter provide quick guidance to the reader on how to accomplish common tasks.
Updated art style throughout most of the book.
Most of the end-of-chapter projects have been revised or replaced.
To help students master the fundamentals of web development, this book has the following features:
Covers both the concepts and the practice of the entire scope of web development. Web development can be a difficult subject to teach because it involves covering a wide range of theoretical material that is technology independent as well as practical material that is very specific to a particular technology. This book comprehensively covers both the conceptual and practical side of the entire gamut of the web development world.
Comprehensive coverage of a modern Internet development platform. In order to create any kind of realistic Internet application, readers require detailed knowledge of and practice with a single specific Internet development platform. This book covers HTML, CSS, JavaScript, and two serverside stacks (PHP and MySQL, as well as Node and MongoDB). The book also covers the key concepts and infrastructures—such as web protocols and architecture, security, hosting provision, and server administration—that are important learning outcomes for any web development course.
Focused on the web development reality of today’s world and in anticipation of future trends. The world of web development has changed remarkably in the past decade. Fewer and fewer sites are being created from scratch; instead, many developers make use of existing sophisticated frameworks and environments. This book includes coverage of essential frameworks such as Bootstrap, React, and WordPress.
Sophisticated, realistic, and engaging case studies. Rather than using simplistic “Hello World” style web projects, this book makes extensive use of three case studies: an art store, a travel photo sharing community, a stock trading site, and a movie review site. For all the case studies, supporting material such as the visual design, images, and databases are included. We have found that students are more enthusiastic and thus work significantly harder with attractive and realistic cases.
Content presentation suitable for visually oriented learners. As long-time instructors, the authors are well aware that today’s students are often extremely reluctant to read long blocks of text. As a result, we have tried to make the content visually pleasing and to explain complicated ideas not only through text but also through diagrams.
Content that is the result of over 25 years of classroom experience (in college, university, and adult continuing education settings) teaching web development. The book’s content also reflects the authors’ deep experience engaging in web development work for a variety of international clients.
Additional instructional content available online. Rather than using long programming listings to teach ideas and techniques, this book uses a combination of illustrations, short color-coded listings, and separate lab exercises. These step-by-step tutorials are not contained within the book, but are available online at www.funwebdev.com. Code listings within book as well as starting files for projects are publicly available on GitHub.
Complete pedagogical features for the student. Each chapter includes learning objectives, margin notes, links to step-by-step online labs, advanced tips, keyword highlights, test your knowledge exercises, essential solution boxes, end-of-chapter review questions, and three different case study exercises.
The chapters in Fundamentals of Web Development can be organized into three large sections.
Foundational client-side knowledge (Chapters 1–10). These first chapters cover the foundational knowledge needed by any front-end web developer. This includes a broad introduction to web development (Chapter 1), how the web works (Chapter 2), HTML (Chapters 3 and 5), CSS (Chapters 4 and 7), web media (Chapter 6), and JavaScript (Chapters 8–11).
Essential server-side development (Chapters 12–16). Despite the increasing importance of JavaScript-based development, learning server-side development is still the essential skill taught in most web development courses. The two most popular server-side environments are covered in Chapter 12 (PHP) and Chapter 13 (Node). Database-driven web development is covered in Chapter 14, while state management is covered in Chapter 15.
Specialized topics (Chapters 16–18). Contemporary web development has become a very complex field, and different instructors will likely have different interest areas beyond the foundational topics. As such, our book provides specialized chapters that cover a variety of different interest areas. Chapter 16 covers the vital topic of web security. Chapter 17 focuses on the web server with topics such as DevOps, hosting options, and server configuration. Finally, Chapter 18 covers search, social media integration, content management, advertising, and support tools and analytics.
There are many approaches to teach web development and our book is intended to work with most of these approaches. It should be noted that this book has more material than can be plausibly covered in a single semester course. This is by design as it allows different instructors to chart their own unique way through the diverse topics that make up contemporary web development.
We do have some suggested pathways through the materials (though you are welcome to chart your own course), which you can see illustrated in the pathway diagrams.
All the web in a single course. Many computing programs only have space for a single course on web development. This is typically an intermediate or upper-level course in which students will be expected to do a certain amount of learning on their own. In this case, we recommend covering Chapters 1–5, 8, 9, 12 or 13, 14, and 16.
Client-focused course for introductory students. Some computing programs have a web course with minimal programming that may be open to non-major students or which acts as an introductory course to web development for major students. For such a course, we recommend covering Chapters 1–7. You can use Chapters 8 and 9 to introduce client-side scripting if desired.
Front end focused course for intermediate students. For courses that wish to focus on front-end development, you could cover Chapters 1–11 as well as Chapter 13 and parts of Chapter 14.
Infrastructure-focused course. In some computing programs the emphasis is less on the particulars of web programming and more on integrating web technologies into the overall computing infrastructure within an organization. Such a course might cover Chapters 1, 2, 3, 4, 8, 13, 16, and 17 with an option to include some topics from Chapters 6, 14, 15, and 18.
Web development courses have been called “unteachable” and indeed teaching web development has many challenges. We believe that using our book will make teaching web development significantly less challenging.
The following instructor resources are available at www.pearsonhighered.com/
Attractive and comprehensive PowerPoint presentations (one for each chapter).
Images and databases for all the case studies.
Solutions to end-of-chapter projects.
Additional questions in exam bank.
Many of the code listings and examples used in the book are available on GitHub (github.com/
There are a variety of student resources available on GitHub (github.com/
All code listings organized by chapter.
Starting files, images, and database scripts for all end-of-chapter projects.
Starting files and solutions to all Test Your Knowledge exercises.
Instructions for lab exercises for each chapter.
Starting files for all labs.
Video lectures for a selection of chapter topics.
The ACM computing curricula for computer science, information systems, information technology, and computing engineering all recommend at least a single course devoted to web development. As a consequence, almost every postsecondary computing program offers at least one course on web development.
Despite this universality, we could not find a suitable textbook for these courses that addressed both the theoretical underpinnings of the web together with modern web development practices. Complaints about this lack of breadth and depth have been well documented in published accounts in the computing education research literature. Although there are a number of introductory textbooks devoted to HTML and CSS, and, of course, an incredibly large number of trade books focused on specific web technologies, many of these are largely unsuitable for computing major students. Rather than illustrating how to create simple pages using HTML and JavaScript with very basic server-side capabilities, we believed that instructors increasingly need a textbook that guides students through the development of realistic, enterprise-quality web applications using contemporary Internet development platforms and frameworks.
This book is intended to fill this need. It covers the required ACM web development topics in a modern manner that is closely aligned with contemporary best practices in the real world of web development. It is based on our experience teaching a variety of different web development courses since 1997, our working professionally in the web development industry, our research in published accounts in the computing education literature, and in our corresponding with colleagues across the world. We hope that you find that this book does indeed satisfy your requirements for a web development textbook!