CS193X: Web Programming Fundamentals
Welcome to CS193X! While we prepare the course website, here is some information about the course and how to enroll.
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.
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.
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.
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.)
- Website rendering and layout
- Build web pages that use semantic HTML elements
- Create page layouts that use the CSS box model and Flexbox
- Create and adapt pages to be mobile- and accessibility-friendly
- Access data and APIs using
- Servers and APIs
- Design a small RESTful API
- Implement an API using NodeJS and Express
- Use a data source such as MongoDB to store and retrieve dynamic content
- General skills
- Read and search technical documentation for web technologies
- Identify information and code as unreliable or outdated (e.g. tutorials, StackOverflow)
- Understand and utilize new web technologies as they become standardized or commonplace
Coursework and Grading
The work in this course consists of two parts:
- Homework assignments (60% of course grade): Each assignment will give you practice with a specific set of topics covered in the course. You will have between one and two weeks to complete each assignment, depending on length and complexity.
- Final project (40% of course grade): The final project is your opportunity to show us all you've learned throughout the course and build something cool in the process. We encourage you to use it as a chance to create something relevant to your interests, such as to support a group or organization you work with. The project will be due during finals week (day/time TBA).