Course Information

CS193X: Web Programming Fundamentals

Spring 2023

Announcements and materials will be posted on the course website. Please refer to it for the latest information.

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

Learning Goals

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

Lectures

Lectures will be in 420-040. Due to the room and setup, lectures will not be recorded.

Materials from lecture will be posted on the lectures page. A significant portion of lectures will consist of live coding. We will post the code we start with before each lecture, and you are encouraged to follow along on your laptop. We will post the code we end with after lecture.

Getting Help

There are multiple ways to engage with the course staff and other students, to get your questions answered, and to get help with concepts and assignments.

Coursework and Grading

The work in this class consists of two components:

All assignments and projects must be completed individually.

Grading: Coursework will be graded on functionality and style, weighted equally. The course staff will provide specific feedback and suggestions through inline and overall comments. Functionality and style are graded on a bucket scale, in order to focus on the qualitative feedback over a quantitative metric. The buckets are as follows:

+Meets all of the requirements, is well-designed and clean, and follows best practices. Nice work!
okSatisfies nearly all of the requirements, with minor issues or opportunities for stylistic improvement.
-Has a more significant problem or multiple smaller problems.
--Has multiple significant problems or is incomplete. Does not represent passing work.
0No submission, or little to no modification of the starter code.

We expect the majority of bucket grades to be ok and +, leaning lower toward the beginning and higher toward the end.

While these buckets roughly map to letter grades (+ maps to A, ok to high B/low A, and - to low B), this mapping is not exact and may differ per submission based on the specific details of that submission. You can use the feedback you receive to understand where in the range your submission falls.

Course grades: Final course grades are calculated as 70% assignments and 30% final project. In order to pass the course, students must satisfactorily complete both components of the course.

Poor performance (e.g. a --) on a single assignment may be cause to discuss your situation with the course staff, but will not immediately doom your final grade. Multiple poor performances would necessitate having a conversation with staff to develop a plan for the remainder of the quarter.

Late Policy:

We understand that unexpected situations arise that may prevent you from completing coursework by the due date. The goal of our due dates and grace periods is to build in flexibility while ensuring that you receive timely feedback and do not fall behind amid a fast-paced quarter.

Honor Code: All coursework is subject to the Stanford Honor Code, meaning it must represent your original, individual work completed without the use of unpermitted aid. The course website has a detailed collaboration policy with specific examples of permitted and unpermitted collaboration. You are responsible for reading and understanding this document in full. Violations of the Honor Code are taken very seriously. We may use software tools to compare your submissions against those of all other current and past students, and we will refer all suspected violations to the Office of Community Standards.

Technology and Materials

If you anticipate or are experiencing technical difficulties accessing materials or working on coursework, please get in touch with the course staff to discuss what options are available.

Access and Accommodations:

Stanford is committed to providing equal educational opportunities for disabled students. Disabled students are a valued and essential part of the Stanford community. We welcome you to our class.

If you experience disability, please register with the Office of Accessible Education (OAE). Professional staff will evaluate your needs, support appropriate and reasonable accommodations, and prepare an Academic Accommodation Letter for faculty. To get started, or to re-initiate services, please visit https://oae.stanford.edu.

If you have an Academic Accommodation Letter, we invite you to share your letter with us. Academic Accommodation Letters should be shared at the earliest possible opportunity so we may partner with you and OAE to identify any barriers to access and inclusion that might be encountered in your experience of this course.