Computer Science
>
>

CS142: Web Applications

Winter 2023

Stanford University

This course introduces students to web technologies, enabling them to build sophisticated, interactive applications. It focuses on markup languages, scripting languages, network protocols, interactive graphics, event-driven programming, and databases.

Course Page

Overview

Although the World-Wide Web was initially conceived as a vehicle for delivering documents, it is now being used as a platform for sophisticated interactive applications, displacing the traditional mechanism of installable binaries. Web-based applications offer numerous advantages, such as instant access, automatic upgrades, and opportunities for collaboration on a massive scale. However, creating Web applications requires different approaches than traditional applications and involves the integration of numerous technologies. This class will introduce you to the Web technologies and give you experience creating Web applications. In the process you will learn about markup languages, scripting languages, network protocols, interactive graphics, event-driven programming, and databases, and see how they all work together to deliver exciting applications.

Prerequisites

The official prerequisites for this class on ExploreCourses are CS107 and CS108. These are listed as the prerequisites because we expect a certain level of engineering maturity and experience. You should be comfortable working with the command line, picking up a new language and framework, reading technical documentation, and debugging your code. Students who have taken this class directly after 106B/X have had to work harder and spend more time than their peers, but it's not impossible. If you have any questions about whether you should take this class, please feel free to contact the staff.

Learning objectives

No data.

Textbooks and other notes

Additional Materials

There is no required textbook for this class, and I am not aware of a book that is a perfect match to the lecture material. The content of the course is defined by the lectures. You will need additional reference material to complete the programming projects, but this material is available on the Web. One good online source for reference documentation on HTML, CSS, and the DOM is Mozilla Developer Network. A comprehensive book is Dynamic HTML: The Definitive Reference, Third Edition, by Danny Goodman (O'Reilly Media), but this describes the Web as of a few years ago, so it doesn't include newer features such as HTML5. It is freely available to Stanford students.

The web application we build in the course's projects will use what is known as the MERN stack. The MERN stack uses the JavaScript language in both the browser and the server-side. The lectures will provide an introduction to JavaScript, but more complete information can be found on the web and in some books freely available to Stanford students through O'Reilly.

  • JavaScript: The Good Parts by Douglas Crockford (O'Reilly Media). As the book's title suggests, JavaScript is not a simple language and it is easy to hurt yourself with some of its features. This book recommends a somewhat more safe subset of the language to use.
  • JavaScript Patterns by Stoyan Stefanov (O'Reilly Media). JavaScript programmers have discovered ways around issues in the language by doing things in certain ways (i.e. patterns). These patterns are commonly used in JavaScript programs but some of them use strange features of the language so it is not clear what is going on if you don't recognize them as a common pattern.
  • JavaScript: The Definitive Guide, 6th Edition by David Flanagan (O'Reilly Media). As the title suggests this is a comprehensive description of JavaScript.
  • Eloquent JavaScript: A Modern Introduction to Programming, 3nd Edition by Marijn Haverbeke. A free e-book, it introduces a more modern flavor of JavaScript than the O'Reilly books (which are limited to pre-ES2015 developments).
  • ECMAScript® Language Specification, the comprehensive JavaScript standard document.

The class project assignments, lectures and sections will cover what you need to know about the MERN stack. For additional material recommend starting at the web sites of the different components:

Other courses in Computer Programming

Courseware availability

Lecture slides available at Lectures

No videos available

Projects available at Projects

No other materials available

Covered concepts