Course Information

Instructor: Kevin Shin

Contact: hgkshin "at" stanford "dot" edu

Office Hours: By appointment (email)

Class Description:

CS109L introduces the R programming language for statistical computation and provides exposure to the functional programming paradigm. The goal of the course is to give both an appreciation of the uses of R as a tool as well as a fundamental understanding of the language itself to be able to elegantly and effectively apply R to future projects. During the quarter, we will delve deeper into concepts discussed in CS109 (with an emphasis on application rather than theory) as well as a number of additional topics and explore the uses of R in the real world.


Tuesday and Thursday from 2:15 PM - 3:30 PM in Hewlett 201
We will meet on both Tuesday and Thursday for the first two weeks then for the remainder of the quarter, we will only meet on Tuesday .

Criteria for Receiving Credit:

There are a total of 3 assignments throughout the quarter.
To receive credit in the course you must do the following:
  1. Satisfactorily complete Assignment 0: R Training Bootcamp by the "redo" deadline stated in the section below
  2. Satisfactorily complete at least one of the following by the "redo" deadline stated in the section below
    • Assignment 1a: Liar's Dice
    • Assignment 1b: Shiny Development

Assignment Submission:

Instructions for how to submit each assignment will be described in each assignment handout.

Assignment Grading and Due Dates:

Assignments are designed to be interesting and as stress-free as possible and thus will be graded on a binary basis of "0" or "1". While the criteria for receiving a "1" will vary from assignment to assignment, it will be pretty relaxed in general (based on effort and not full functionality)! After all, the goal of this course is to provide an interesting introduction into R and not to stress anybody's quarter out.

To add even more flexibility, each assignment will have two deadlines associated with it. The first deadline is an optional soft "turn in" deadline. Within a few days after the "turn in deadline", you will receive a grade on your submitted assignment. If you receive a "1", you are done with the assignment! If you receive a "0", you will have the option to re-submit a final version of the assignment until the hard "redo" deadline. Assignments will not be accepted after the hard "redo" deadline without advanced requests (at least 1 week) so please plan accordingly!
Assignment 0: Assignment 1a: Assignment 1b:


A (sub)set of: R language fundamentals, functional programming, symbolic programming, combinatorics, probability distributions, the R graphics subsystem, Bayesian update, simulation, Markov chains, Poisson processes, Monte Carlo simulation and integration, the Central Limit Theorem, parameter estimation, maximum likelihood estimation, expectation maximization, hypothesis testing, data analysis and modeling, machine learning, random variable simulation.

Pre/Co-requisites Explanation:

Pre-requisite: CS106B/X. We'll be writing code in lecture as well as in assignments at this level.
Pre/Co-requisite: CS109. While having a CS109 background along with CS109L will give you a better appreciation for the course, anybody should be able to benefit from the material that we will cover in CS109L, especially towards the end of the quarter.