You are on page 1of 3

CS 98SI: Introduction to JavaScript

Description
This class introduces the JavaScript language, with a focus on advanced language features and client-side programming. Topics covered include basic syntax, object-oriented
programming, closures, higher-order functions, the DOM, and AJAX. The class will also introduce recent libraries, including jQuery, Backbone.js, node.js, and d3. The class
will include in-class coding exercises and assignments consisting of implementation of web applications. Prerequisite: CS106B/X.

Units 1 Unit, Satisfactory / No Credit


Instructor Yifan Mai (maiyifan “at” stanford “dot” edu)
Office Hours TBA
Faculty Advisor Associate Professor Stephen Cooper (coopers “at” stanford “dot” edu)
Lectures Monday and Wednesday, 4.15pm - 5.05pm, Gates B12

Objectives
Through taking this course, students should:

Develop familiarity with the JavaScript language.


Learn to use best-practice idioms and patterns.
Understand concepts commonly used in dynamic language programming, such as introspection, higher-order functions, and closures.
Understand advanced language features such as prototypical interhitance.
Become adept at implementing client-side interfaces through the use of the DOM, jQuery and AJAX.
Become familiar with common libraries and tools that are used in web application development.

Format
Class will consist of two weekly 50-minutes lectures. Lectures will take place in a lab format, and will consist primarily of code examples and demos. Students will be
expected to solve in-class exercises. Homework will consist of two programming assignments. Grades will be based on class participation and homework.

Prerequisites
Required: CS106A Strongly recommended: CS106B/X Students should be adept in at least one other programming language, preferably Java or C++. Additionally, students
should be familiar with the following advanced concepts:

Classes and Objects


Inheritence
Pointers and references
Recursion

Assignments
There will be two assignments.

You will have two free late days. Each late day is a class day. If you use one late day, the assignment is due at the beginning of class the following Monday. If you use two
late days, the assignment is due at the beginning of class the following Monday.

Grading Basis
The class must be taken Satisfactory / No Credit. Grading weightage is as follows.

45%: Assignment 1
45%: Assignment 2
10%: Class participation

Syllabus
The syllabus is available from the front page of the http://cs98si.stanford.edu/.

Relationship to other classes


This class is somewhat related to CS142 (Web Applications). This class has about 15%-20% overlap with CS142.

Course Website
The course website is located at http://cs98si.stanford.edu/. It contains course information, syllabus, lecture notes, lecture code, and assignments.
Discussion
Questions should be posted to Piazza.

Software
You need a text editor for editing code. Pick an editor that supports at least indentation and syntax highlighting. These text editors are recommended:

Notepad++ (Windows)
Scite (Windows, OS X, Linux)
Sublime Text (Windows, OS X, Linux)
TextMate (OS X)

These text editors are recommended for advanced users only, as they can be very difficult to learn

Emacs (Windows, OS X, Linux)


Vim (Windows, OS X, Linux)

You will need a web browser.

Readings
This course will primarily use material from the course reader. There are no required textbook readings.

The recommended textbooks for this class are JavaScript: The Definitive Guide by David Flanagan and JavaScript: The Good Parts by Douglas Crockford. Of the two,
Flanagan is the more useful book, and the notes will link to relevant chapters of the book where appropriate. Both of them are available online for free from Safari Books
Online from within the Stanford campus network.

The MDN JavaScript Wiki is the best reference for looking up JavaScript or DOM functions.

This class also draws some advanced material from Dive Into HTML5 by Mark Pilgrim, Learning Advanced Javascript by John Resig, and JavaScript Garden

You might also like