CS142 Course Information

Lectures

Lectures are Mondays, Wednesdays, and Fridays from 10:30am - 11:20am in Skilling Auditorium. Lecture will be recorded and accessible via Canvas under the Panopto Course Video Tab. Lecture notes are available in advance and provide an outline for much of the material that will be presented in class.

Additional Materials

There is no required textbook for this class, and I am not aware of a book that is a perfect match to the lecture material. The content of the course is defined by the lectures. You will need additional reference material to complete the programming projects, but this material is available on the Web. One good online source for reference documentation on HTML, CSS, and the DOM is Mozilla Developer Network. A comprehensive book is Dynamic HTML: The Definitive Reference, Third Edition, by Danny Goodman (O'Reilly Media), but this describes the Web as of a few years ago, so it doesn't include newer features such as HTML5. It is freely available to Stanford students.

The web application we build in the course's projects will use what is known as the MERN stack. The MERN stack uses the JavaScript language in both the browser and the server-side. The lectures will provide an introduction to JavaScript, but more complete information can be found on the web and in some books freely available to Stanford students through O'Reilly.

  • JavaScript: The Good Parts by Douglas Crockford (O'Reilly Media). As the book's title suggests, JavaScript is not a simple language and it is easy to hurt yourself with some of its features. This book recommends a somewhat more safe subset of the language to use.
  • JavaScript Patterns by Stoyan Stefanov (O'Reilly Media). JavaScript programmers have discovered ways around issues in the language by doing things in certain ways (i.e. patterns). These patterns are commonly used in JavaScript programs but some of them use strange features of the language so it is not clear what is going on if you don't recognize them as a common pattern.
  • JavaScript: The Definitive Guide, 6th Edition by David Flanagan (O'Reilly Media). As the title suggests this is a comprehensive description of JavaScript.
  • Eloquent JavaScript: A Modern Introduction to Programming, 3nd Edition by Marijn Haverbeke. A free e-book, it introduces a more modern flavor of JavaScript than the O'Reilly books (which are limited to pre-ES2015 developments).
  • ECMAScript® Language Specification, the comprehensive JavaScript standard document.

The class project assignments, lectures and sections will cover what you need to know about the MERN stack. For additional material, we recommend starting at the web sites of the different components:

Prerequisites

The official prerequisites for this class on ExploreCourses are CS107 and CS108. These are listed as the prerequisites because we expect a certain level of engineering maturity and experience. You should be comfortable working with the command line, picking up a new language and framework, reading technical documentation, and debugging your code. Students who have taken this class directly after 106B/X have had to work harder and spend more time than their peers, but it's not impossible. If you have any questions about whether you should take this class, please feel free to contact the staff.

Discussion Sections

The class will have weekly discussion sections led by the course assistants. The sections will supplement lecture content with additional examples as well as cover material needed for the projects. Attendance is not mandatory but we highly encourage you to attend. Like the lectures, the discussion sections will be available via Cloud Recording.

Projects

The class will include 8 projects, one due each week except the first and middle week of the quarter. Projects will be due at the same time each week, on Thursdays at 11:59pm.

We encourage you to discuss the projects with other students; both giving and receiving advice will help you to learn. It's fine to discuss overall strategy, share tips about Web technologies (useful CSS styles, library methods, etc.), and give and receive debugging assistance. However, you must write your own code. It's not OK to share code or write code collaboratively. The projects are intended to be simple enough for each person to implement all of every project.

The last three projects build upon the previous project ending with a working photo sharing website. Because of these dependencies between the projects, completing the later projects requires doing the ones that precede it. The course staff will not provide solutions to projects, but we can work with students after a project's deadline to get the student's code working well enough to do the next assignment.

Please do not post your project solutions on the Web, either during or after the class. Students occasionally do this because they are proud of their class work (some of the work in this class is quite good!), but this makes it easy for future students to copy your work rather than figuring things out for themselves. Posting solutions on the Web is a Stanford Honor Code violation, since it it has the effect of giving improper assistance to other students.

Style points: most of the grade for each project is based on the functionality of your project (does it do what the problem asks?). However, for each project there are also a few extra style points, which are awarded based on the way you solve the problem, not how your solution behaves. These reflect the importance of things such as proper HTML validation, clean code structure, and nice-looking interfaces. The style points to be awarded for each project are described near the end of each project description.

Late Days

Each student is allowed a total of 3 late days, which may be spent in units of one day (24 hours) on any projects throughout the quarter. Late days are intended to cover special situations such as illness and family emergencies, so use them wisely. Once your late days have been used up, a penalty of 25% of the project's total score will be assessed for each day a project is late. Projects more than four days late will not receive any credit. Due to the dependencies between projects, students may need to complete the previous projects even if they did not receive credit for them. See the discussion on project dependencies above.

Note that the course projects are not weighed the same, and the later projects will be worth more points than the earlier ones. Since the "free" late days cannot be moved around between projects, please strongly consider saving them for the latter projects so less/no penalties are applied towards the latter projects, which will be more costly.

Browsers

Unfortunately, Web browsers are still not 100% identical in their behavior, so Web pages may behave differently on different browsers. For this class, the reference browser is Chrome: your project solutions must work on Chrome, and the CAs will use Chrome to test them. Your solutions need not work on any browser other than Chrome. You may use a different browser to develop your solutions if you wish (Chrome, Firefox, and Safari all have very similar behavior), but please test on Chrome before submitting. We do not recommend that you use Internet Explorer for development: historically, its behavior has been quite different from the other browsers, so things that work on IE may not work on Chrome, and vice versa.

Exams

The class will have a midterm exam and as well as a final examination during exams week. If you have a legitimate conflict with the scheduled time for either examination, contact the staff to arrange an alternate time. You may bring two double-sided 8.5"x11" pages of notes with you to the midterm and the final exam; other than that, exams are closed-book.

Regrades

We sometimes make mistakes in grading, both on projects and exams, and we are happy to correct these if you point out the error. To request a regrade, use the Regrade interface on the class Gradescope page. Regrade requests must be submitted within 5 days after we send out the grades for a project or exam.

Regrade requests should focus on errors (i.e., something we thought was wrong but actually was right, or you believe we misunderstood your work). There may be situations where you agree you made an error but disagree about the number of points deducted; unfortunately, we cannot change your score in these situations, because it would require a change in the grading rubric and thus require us to regrade all of the projects or exams.

Grading Policy

Grades for the class will be determined as follows:

  • Projects: 55%
  • Midterm Exam: 15%
  • Final Exam: 30%

Students with Disabilities

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