Course Info

Course Structure

CS 40 is a 3-unit course that meets on Mondays and Wednesdays from 4:30pm to 5:50pm. Students will be assessed based on homework assignments that directly relate to that week’s topic and an open-ended final project. There are no exams.

Course Goals

By the end of the quarter, you should expect to have learned about:

  1. The types of cloud resources made available by cloud providers that help in deploying applications.
  2. Architecting a cloud deployment by selecting resources for optimal scaling (performance) and cost efficiency.
  3. Systematically deploying cloud resources using Infrastructure as Code (IaC).
  4. Ensuring your deployment remains secure, observable, and continuously updated.

Course Staff

Instructors:

TAs:

Office hours will begin during Week 2 after MLK weekend and will be hosted in the Huang basement.

To contact us, please (preferably) make a post on Ed, or email [email protected].

Prerequisites

  • Programming maturity up to CS 107
  • Familiarity with the command line, version control, and basic development tools to the level of CS 45/CS 104, in particular:
    • Basic Unix command line utilities and administration
    • Editing code with a TUI editor such as vim, emacs, or nano
    • Using Git and GitHub for collaborative projects (i.e. branching and pull requests)
    • Basic familiarity with package managers for languages and operating systems (e.g., pip, apt, homebrew)
  • Prior web development or networking experience helpful but not required

Please talk to us if you have any questions about your readiness for this class.

Grading

Final grades for the course will be determined using the following weights:

  • 60%: Assignments
    • Each of the four assignments will count for 15% of your final course grade.
    • To pass the class, you must make a reasonable attempt to complete all assignments.
  • 40%: Final Project
    • More details to come.

Attendance at at course sessions with invited guest speakers is mandatory. For students taking the class for a letter grade, each unexcused absence will reduce your course grade by a full letter grade; absences must be excused at least three days before the guest lecture (except in the event of illness or exceptional circumstances decided on a case by case basis). The instructors reserve the right to not excuse an absence, and in general absences will only be excused for illness, one time professional or urgent personal commitments, or by previously documented OAE accomodation. Students who are taking the class on a CR/NC basis may miss up to two guest speaker sessions without penalty; please try to inform us beforehand if you need to miss a session.

Late Work

Work may be submitted late, but late submissions will incur a penalty of 10% of the final assignment grade for every day the assignment is late. For example, if an assignment is turned in at 12:01AM, two minutes after the due date, and the unmodified grade is 85%, then the final grade for this assignment will be 75%.

Honor Code

Students must adhere to The Stanford Honor Code as it pertains to CS courses.

As in all Stanford classes, you are expected to follow the Stanford Honor Code. Work submitted for grading should not be derived from or influenced by the work of others beyond your assignment partner (for assignments that allow submission with a partner). You (and if applicable, collectively with your partner) must do your own thinking, your own design, your own coding, and your own debugging. Any non-partner assistance you receive must remain within acceptable limits. Truthful citations must be made where required. All submissions are subject to plagiarism detection tools. Suspected violations are referred to the Community Standards office.

The use of large language models (LLMs) such as ChatGPT is allowed as a reference source for assignments, though we encourage you to only use them as a last resort rather than a starting point. We caution you that LLMs are not guaranteed to produce accurate technical output, especially when dealing with rapidly evolving technologies such as cloud infrastructure-as-code. In particular, CS 40 assignments involve using cloud best-practice code constructs as of early 2024, which may not be included in LLM training data.

When using LLMs for assignment reference, you are required to include details in your assignment writeup regarding how you queried the LLM, what output you received, and how you incorporated the output in your work, for each query that informed your submission. Treat LLMs as a fallback, last-resort way to ask specific questions about individual implementation issues you might have. Do not ask for code that directly solves any of the assignments in entirety. If you have any questions about your usage of LLMs, we encourage you to contact us on Ed. LLM usage that deviates from this policy will be considered an honor code violation and referred to the Community Standards office.

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