Print Settings
 

CS 107: Computer Organization and Systems

Introduction to the fundamental concepts of computer systems. Explores how computer systems execute programs and manipulate data, working from the C programming language down to the microprocessor. Topics covered include: the C programming language, data representation, machine-level code, computer arithmetic, elements of code compilation, memory organization and management, and performance evaluation and optimization. Prerequisites: 106B or X, or consent of instructor.
Terms: Aut, Win, Spr | Units: 3-5 | UG Reqs: GER:DB-EngrAppSci, WAY-FR

CS 107E: Computer Systems from the Ground Up

Introduction to the fundamental concepts of computer systems through bare metal programming on the Raspberry Pi. Explores how five concepts come together in computer systems: hardware, architecture, assembly code, the C language, and software development tools. Students do all programming with a Raspberry Pi kit and several add-ons (LEDs, buttons). Topics covered include: the C programming language, data representation, machine-level code, computer arithmetic, compilation, memory organization and management, debugging, hardware, and I/O. Prerequisite: 106B or X, and consent of instructor.
Terms: Win, Spr | Units: 3-5

CS 124: From Languages to Information (LINGUIST 180, LINGUIST 280)

Extracting meaning, information, and structure from human language text, speech, web pages, genome sequences, social networks. Methods include: string algorithms, edit distance, language modeling, the noisy channel, naive Bayes, inverted indices, collaborative filtering, PageRank. Applications such as question answering, sentiment analysis, information retrieval, text classification, social network models, machine translation, genomic sequence alignment, spell checking, speech processing, recommender systems. Prerequisite: CS103, CS107, CS109.
Terms: Win | Units: 3-4

CS 166: Data Structures

Techniques in the design, analysis, and implementation of data structures. Isometries between data structures (including red/black trees and 2-3-4 trees), amortized analysis (including Fibonacci heaps and splay trees), and randomization (including count-min sketches and dynamic perfect hash tables). Data structures for integers and strings (including van Emde Boas trees and suffix trees). Possible additional topics include functional data structures, concurrent data structures, and spatial data structures. Prerequisites: CS107 and CS161.
Terms: Spr | Units: 3-4

CS 168: The Modern Algorithmic Toolbox

This course will provide a rigorous and hands-on introduction to the central ideas and algorithms that constitute the core of the modern algorithms toolkit. Emphasis will be on understanding the high-level theoretical intuitions and principles underlying the algorithms we discuss, as well as developing a concrete understanding of when and how to implement and apply the algorithms. The course will be structured as a sequence of one-week investigations; each week will introduce one algorithmic idea, and discuss the motivation, theoretical underpinning, and practical applications of that algorithmic idea. Each topic will be accompanied by a mini-project in which students will be guided through a practical application of the ideas of the week. Topics include hashing, dimension reduction and LSH, boosting, linear programming, gradient descent, sampling and estimation, and an introduction to spectral techniques. Prerequisites: CS107 and CS161, or permission from the instructor.
Terms: Spr | Units: 3-4

CS 173: A Computational Tour of the Human Genome

(Only one of 173 or 273A counts toward any CS degree program.) Introduction to computational biology through an informatic exploration of the human genome. Topics include: genome sequencing; functional landscape of the human genome (genes, gene regulation, repeats, RNA genes, epigenetics); genome evolution (comparative genomics, ultraconservation, co-option). Additional topics may include population genetics, personalized genomics, and ancient DNA. Course includes primers on molecular biology, the UCSC Genome Browser, and text processing languages. Guest lectures on current genomic research topics. Class will be similar in spirit to CS273A, which will not be offered this year. Prerequisites: CS107 or equivalent background in programming.
Last offered: Winter 2013 | Units: 3

CS 241: Embedded Systems Workshop

Project-centric building hardware and software for embedded computing systems. Students work on an existing project of their own or join one of these projects. Syllabus topics will be determined by the needs of the enrolled students and projects. Examples of topics include: interrupts and concurrent programming, deterministic timing and synchronization, state-based programming models, filters, frequency response, and high-frequency signals, low power operation, system and PCB design, security, and networked communication. Prerequisite: CS107 (or equivalent).
Terms: Aut | Units: 3 | Repeatable 3 times (up to 9 units total)

CS 246: Mining Massive Data Sets

The course will discuss data mining and machine learning algorithms for analyzing very large amounts of data. The emphasis will be on Map Reduce as a tool for creating parallel algorithms that can process very large amounts of data. Topics include: Frequent itemsets and Association rules, Near Neighbor Search in High Dimensional Data, Locality Sensitive Hashing (LSH), Dimensionality reduction, Recommender Systems, Clustering, Link Analysis, Large-scale machine learning, Data streams, Analysis of Social-network Graphs, and Web Advertising. Prerequisites: At lease one of CS107 or CS145; At least one of CS109 or STAT116, or equivalent.
Terms: Win | Units: 3-4

CS 251P: Bitcoin & Crypto Currencies Lab

Bitcoin has the potential to change how payments are done on the Internet and beyond. In this class, you will build Bitcoin-powered versions of many of the most popular internet services. For example, you will build a search engine that takes in a small amount of bitcoin for each query, a social network that allows individuals to buy internet celebrity endorsements for bitcoin, and a content site that charges a small amount of bitcoin for each page view. In each case, we will show how Bitcoin micropayments can supplant or complement the traditional ad-supported model. The course is based on a weekly hackathon; each Monday you will receive some stub code illustrating the basic mechanics of a Bitcoin-powered internet service, and you will improve this as best you can as an individual or in a small group by the end of Sunday on that week. Winners of each week's hackathon will be recognized. Prerequisites: No previous Bitcoin knowledge is required. Students who have taken CS251 or CS251P will have more context, but this course is all new material. Recommended: Intensive programming experience at the level of CS107 or above.
Terms: Aut, Win | Units: 1 | Repeatable 5 times (up to 5 units total)

EE 180: Digital Systems Architecture

The design of processor-based digital systems. Instruction sets, addressing modes, data types. Assembly language programming, low-level data structures, introduction to operating systems and compilers. Processor microarchitecture, microprogramming, pipelining. Memory systems and caches. Input/output, interrupts, buses and DMA. System design implementation alternatives, software/hardware tradeoffs. Labs involve the design of processor subsystems and processor-based embedded systems. Formerly EE 108B. Prerequisite: CS107 (required) and EE108 (recommended but not required).
Terms: Win | Units: 4 | UG Reqs: GER:DB-EngrAppSci, WAY-SMA

LINGUIST 180: From Languages to Information (CS 124, LINGUIST 280)

Extracting meaning, information, and structure from human language text, speech, web pages, genome sequences, social networks. Methods include: string algorithms, edit distance, language modeling, the noisy channel, naive Bayes, inverted indices, collaborative filtering, PageRank. Applications such as question answering, sentiment analysis, information retrieval, text classification, social network models, machine translation, genomic sequence alignment, spell checking, speech processing, recommender systems. Prerequisite: CS103, CS107, CS109.
Terms: Win | Units: 3-4

LINGUIST 280: From Languages to Information (CS 124, LINGUIST 180)

Extracting meaning, information, and structure from human language text, speech, web pages, genome sequences, social networks. Methods include: string algorithms, edit distance, language modeling, the noisy channel, naive Bayes, inverted indices, collaborative filtering, PageRank. Applications such as question answering, sentiment analysis, information retrieval, text classification, social network models, machine translation, genomic sequence alignment, spell checking, speech processing, recommender systems. Prerequisite: CS103, CS107, CS109.
Terms: Win | Units: 3-4
© Stanford University | Terms of Use | Copyright Complaints