Syllabus


CS193V Course Syllabus

Welcome to CS193V! This new course explores how to build software purely using AI-assisted coding tools. It's designed for a broad audience and provides an introduction to basic concepts in software engineering, design, and computer security / privacy.

Who is this Course For?

This course is meant to serve a wide cross-section of the university. You are not expected to be a CS major. The only prerequisite is CS106A, which we've included to ensure everyone has had at least some basic exposure to coding. That said, we do not anticipate requiring any code reading or code writing in the course.

We strongly recommend that CS students take CS146S instead of this course. CS146S explores how to use AI coding tools to augment and enhance your existing abilities. That's a fundamentally different skill than getting the computer to write code for you without your review. And, from experience, you will be able to build much more interesting projects if you work with the AI in tandem rather than relying on it for the basics.

What Will I Be Able to Make?

On exit from this course, you should be able to build small- to medium-sized software projects purely using AI coding tools. Here's a sampler of the sorts of things we anticipate you'll be able to do:

  • Build and verify a data analysis script for a project in your research lab.
  • Create a functioning prototype of a website or app.
  • Make musically or artistically interesting software to dazzle your friends.
  • Create and deploy a website for yourself, an organization you belong to, etc.
  • Make a small indie game and share it with the world.

You might have noticed that I've said "small- to medium-sized projects." That's intentional. Simply put, the AI models and tools we have right now aren't good enough to build large-scale programs autonomously. (Software engineers will still have jobs for the foreseeable future!) Moreover, AI-written code frequently contains critical security or privacy holes that are difficult to detect and problematic if deployed at scale. We'll explore why firsthand over the course of the quarter.

What Will We Cover?

Here's a rough breakdown of the course topics. Since this is a new course, this is subject to change based on how things go.

  • Weeks 1 - 2: Technical Foundations
    • Working from the command-line
    • Version control (git, GitHub)
    • Software testing
  • Week 3: Asking for What You Want
    • Plan mode, iterating on designs
    • Basics of user interviews
  • Week 4: Data Analysis and Visualization
    • Common data formats
    • API keys and how to keep them safe
  • Weeks 5 - 6: Web Applications
    • Basics of networking (ports, IP addresses, DNS, etc.)
    • The client/server model
    • Deploying websites
    • Style, design, and iteration
  • Week 7: Working in a Team
    • Issue tracking and pull requests
    • Continuous integration
  • Week 8: Privacy and security
    • Containers and virtual machines
    • Zero-days and why they matter
    • The "Lethal Trifecta"
  • Week 9: Mobile Development
    • Getting code onto a mobile device
    • Testing and debugging on mobile
  • Week 10: Spillover, extra topics

This Course Is New!

This is a new course on a new topic. We couldn't have offered this course a year ago because the technology wasn't good enough yet. And things in this space are changing all the time. (Ask me in my office hours about all the things that changed since I started putting this course together!) As a result, everything about this course - the lectures, the homeworks, the tutorial sessions, the software infrastructure, etc. - is entirely new.

On the one hand, this is exciting! You'll be the inaugural cohort in a course we hope ends up being a standard offering in the future. Your input and feedback will shape how things go.

On the other hand, expect some rough edges. I've done the best job I can putting this course together in a way that will be fun, engaging, and empowering. But all the course materials are new, so there are going to be some rough edges: some explanations that aren't as sharp as they could be, some assignments that are less specified than what you might be used to, etc. I ask that you stay flexible, understanding, and communicative over the quarter. If you see something that can be done better, reach out to me and let me know! That's how courses get into really polished states.

Teaching Team

Photo of Keith Schwarz
Keith
Photo of Mara Bravo-Santos
Mara
Photo of Kenaj Washington
Kenaj
Photo of Shirley Yu
Shirley

If you have questions on the course content, the easiest way to reach us through our course EdStem forum (details below). If you have any logistical questions or concerns, the best way to reach us is through the staff mailing list, cs193v-aut2627-staff@lists.stanford.edu.

Websites and Technology

The main CS193V website is where you are right now, cs193v.stanford.edu. We have links to a bunch of other tools here. Here's the quick rundown:

  • Our main course website cs193v.stanford.edu is the main hub for course information. It contains links to everything you’ll need.
  • We use Ed as our Q&A forum.
  • You will be primarily submitting your work through GitHub.

We will also provide you a custom environment you will install on your computer so you can vibecode and run the results. We'll talk about that more in the first week of the quarter.

Prerequisites

CS193V has CS106A (first-quarter programming) as a prerequisite. You don't need to specifically have taken CS106A here. If you have at least three months' programming experience, you should be in the right place.

We will be doing little to no actual coding this quarter; the purpose of this course is to learn to let the computer do that for you. Nonetheless, we still want everyone to have at least a basic familiarity with what code does and how it works.

Lectures

Our lectures are Tuesdays and Thursdays from 1:30PM - 2:50PM in Lathrop 018. Lectures are not recorded this quarter and you will need to attend in person.

At the start of each lecture, you'll group up with three other students to show off the cool things you did in the most recent homework assignment. This will be a great way to meet other folks in the course, to learn from others' experiences, and to have smart people say nice things about the cool stuff you're creating.

Homeworks

This is a class about making things, and the only way to learn to make things is to make things! To that end, after each lecture we'll assignment that comes due before the next lecture. These assignments will exercise the technical topics covered in the lecture before which they're assigned so that you'll get additional practice. The assignments are designed to have a lot of open-ended decisionmaking so you can build stuff you're excited about. Except when noted otherwise, homeworks are graded on completion rather than correctness.

All assignments in this class are due at 1PM Pacific time on their due dates. Because you'll be discussing your homework with other students in a small group, no late submissions will be accepted.

Tutorial Sessions

Each week, you'll attend a tutorial session hosted by a member of the course staff. These are small group meetings in which you'll work with your classmates on a fun and interesting task pertaining to the course content, with the TA serving to facilitate the discussion and make sure things run smoothly.

A large portion of your grade in this course is based on how actively you're participating in tutorial sessions. Come prepared to discuss the topics from the week's lecture and the work you did in the previous homework assignments.

We'll announce in lecture when the first tutorial sessions will meet.

Final Project

At the end of Week 7, you'll start working on a final course project in a small team. (Details TBA.) The purpose of this project is to put together the skills you've learned over the quarter and create something that you're personally excited about. We're excited to see what you come up with!

Units

CS193V is offered for three units. Expect to spend around nine total hours each week on this course: three hours in lecture plus tutorials, and six hours on homework.

EdStem

We have an EdStem forum where you can ask questions to other students and to the course staff. This is the best way to get a hold of us if you have questions for us; feel free to post privately if you want to limit your posts just to the staff.

We encourage you to talk to one another and ask questions to one another! Please feel free to post questions publicly on EdStem and to offer advice to other students.

Academic Integrity

Although this course involves building projects with AI, you are still expected to adhere to the Stanford Honor Code. Please read over our Honor Code policy for more details.

OAE Accommodations

We are happy to provide academic accommodations for students with disabilities documented through the Office of Accessible Education. We will gather OAE letters early in the quarter as part of Assignment 0.

Withdraw / Incomplete Policy

If a serious emergency arises and you cannot complete the work in this course, you may contact Keith – not the TAs – to request an incomplete. We reserve incompletes for emergencies, so we do not grant incomplete grades for poor performance on the assignments or exams, nor do we offer incompletes for busy work schedules. Withdrawing is the appropriate option in those circumstances.

In order to be eligible for an Incomplete, University policy says you must have completed a “substantial” part of the course work in “satisfactory” fashion. This means that incompletes are appropriate for serious medical or family emergencies that occur late in the quarter, which prevent you from completing the course despite having done well up to that point.

Grading

Your raw score in CS193V is determined as follows:

Raw Score = 0.2 · Homework Score + 0.4 · Tutorial Score + 0.4 · Project Score

Your homework score is the fraction of assignments you complete to an appropriate standard before the deadline. Your tutorial score is based on your degree of preparation and participation in each tutorial session. Your project score is based on both the degree to which you actively participated in the project and our overall assessment of its quality. (Details later!)

Force Majeure

A note from the Center for Teaching and Learning:

Stanford as an institution is committed to the highest quality education, and as your teaching team, our first priority is to uphold your educational experience. To that end we are committed to following the syllabus as written here, including through short or long-term disruptions, such as public health emergencies, natural disasters, or protests and demonstrations. However, there may be extenuating circumstances that necessitate some changes. Should adjustments be necessary we will communicate clearly and promptly to ensure you understand the expectations and are positioned for successful learning.