CS193X: Web Programming Fundamentals

Welcome to CS193X! While we prepare the course website, here is some information about the course and how to enroll.

Enrollment

As this is a relatively new course, we have chosen to limit enrollment to ensure we can provide the best support and resources to students. The course will be limited to 100 students.

Please fill out this application form if you would like to enroll. We will review your application and email you a permission number to enroll in Axess if you are selected. Applications must be submitted by Friday, March 13, 2020, 11:59 PM Pacific time. Afterward, we will hand out additional permission numbers as space allows.

NOTE: If you receive an error when clicking the link saying, "This form can only be viewed by users in the owner's organization," first visit webdocs.stanford.edu, which will sign you into your Stanford Google account, then try the link again. If you continue to have issues accessing the application, please contact the course staff using the email address below.

Overview

CS193X covers modern full-stack web development techniques, with a focus on fundamental concepts, best practices, and writing robust and maintainable web applications. We hope to present some of the essential concepts that appear over and over in web dev and equip you with the skills you need to learn about and keep up with new technologies as they emerge through an emphasis on standard JavaScript and tools which will be relevant regardless of the framework or library in use.

Client-side topics include layout and rendering with HTML and CSS, event-driven programming in JavaScript, and single-threaded asynchronous programming techniques including Promises and fetch, with a focus on modern standardized APIs and best practices. Server-side topics include the development of RESTful APIs, JSON services, and basic server-side storage techniques.

Prerequisites

This course assumes no previous experience with web development at all. We do, however, expect you to be comfortable with core programming concepts, algorithms, and data structures at the level of CS106B.

Course Information

Learning Goals

Here is what we hope students will take away from this course, broken down by topic area. (Each topic will be covered with varying depth.)

Coursework and Grading

The work in this course consists of two parts: