Preface

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.

What Is Web Development?

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..

What’s New in the Third Edition?

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:

Features of the Book

To help students master the fundamentals of web development, this book has the following features:

Organization of the Book

The chapters in Fundamentals of Web Development can be organized into three large sections.

Pathways through this Book

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.

For the Instructor

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/cs-resources/:

Many of the code listings and examples used in the book are available on GitHub (github.com/funwebdev-3rd-ed).

For the Student

There are a variety of student resources available on GitHub (github.com/funwebdev-3rd-ed), the publisher’s resource site (www.pearsonhighered.com/cs-resources/), and the book’s website (www.funwebdev.com). These include:

Why This Book?

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!