Skip to content Skip to navigation

Engineering & Computer Science

Topic Image: 
Engineering and Computer Science
Date: 
Wednesday, October 1, 2014
Go to Course

ABOUT THIS COURSE

[[{"fid":"8636","view_mode":"default","fields":{"format":"default"},"type":"media","attributes":{"height":"390","width":"640","alt":"Haptics Course Introduction","class":"panopoly-image-video media-element file-default"}}]]

Participants in this class will learn how to build, program, and control haptic devices, which are mechatronic devices that allow users to feel virtual or remote environments. In the process, users will gain an appreciation for the capabilities and limitations of human touch, develop an intuitive connection between equations that describe physical interactions and how they feel, and gain practical interdisciplinary engineering skills related to robotics, mechanical engineering, electrical engineering, bioengineering, and computer science. To participate fully, users will need to acquire/build the components of a Hapkit, and assemble and program the device. Laboratory assignments using Hapkit will give users hands-on experience in assembling mechanical systems, making circuits, programming Arduino-based micro-controllers, and testing their haptic creations. (You can still take the online course without the Hapkit, but you will not be able to do most of the laboratories.) After the class, we hope that you will continue to use and modify your Hapkit, and let us know about your haptic creations.

SELF-PACED COURSE

This is a self-paced course, so you can complete the videos, quizzes, and lab assignments on your own schedule. Grading is automated. However, we suggest spending about one week on each of the 5 modules in the course, with each module taking about 10 hours of your time (depending on your background/experience).

PREREQUISITES

The required background for this course is high-school physics (non-calculus is fine) and pre-calculus. Beginning programming is experience is helpful. Haptic device design, robotics, and mechatronics experience are not required -- this is designed as a gateway course for these topics.

COURSE STAFF

Allison Okamura (Instructor)

Allison is an associate professor in the Stanford University mechanical engineering department and (by courtesy) computer science department. She is the director of theCollaborative Haptics and Robotics in Medicine (CHARM) Laboratory. Allison creates robots and human-computer interfaces that use haptics (the sense of touch) in order to improve human health, safety, and quality of life. She and her students study applications of haptic technology in robot-assisted surgery, prosthetics, rehabilitation, simulation and training, space teleoperation, and education. Allison is committed to sharing her passion for research and discovery, using robotics and haptics in outreach programs to groups underrepresented in engineering. Outside academia, she enjoys spending time with her husband and two children, running, and playing ice hockey.

Melisa Orta (Teaching Assistant)

Melisa is a Ph.D. student in the mechanical engineering department at Stanford University. She received her bachelor’s degree from Monterrey Institute of Technology, her Master's degree at Stanford University, and worked for several years at Apple.


View All Courses

Access learning material from upcoming, self-study, and completed courses...

Go to Course

CS101 now self paced!

The active course run for CS101 has ended, but the course is now available in a self paced mode. You are welcome to join the course and work through the material and exercises at your own pace. When you have completed the exercises with a score of 80% or higher, you can generate your Statement of Accomplishment from within the course.

The course will remain available for an extended period of time. We anticipate the content will be available until at least Sept 1, 2015. You will be notified by email of any changes to content availability beforehand.   

About CS101

CS101 teaches the essential ideas of Computer Science for a zero-prior-experience audience. Computers can appear very complicated, but in reality, computers work within just a few, simple patterns. CS101 demystifies and brings those patterns to life, which is useful for anyone using computers today.

In CS101, participants play and experiment with short bits of "computer code" to bring to life to the power and limitations of computers. Everything works within the browser, so there is no extra software to download or install. CS101 also provides a general background on computers today: what is a computer, what is hardware, what is software, what is the internet. No previous experience is required other than the ability to use a web browser.

Topics:

  • The nature of computers and code, what they can and cannot do
  • How computer hardware works: chips, cpu, memory, disk
  • Necessary jargon: bits, bytes, megabytes, gigabytes
  • How software works: what is a program, what is "running"
  • How digital images work
  • Computer code: loops and logic
  • Big ideas: abstraction, logic, bugs
  • How structured data works
  • How the internet works: ip address, routing, ethernet, wi-fi
  • Computer security: viruses, trojans, and passwords, oh my!
  • Analog vs. digital
  • Digital media, images, sounds, video, compression

This July-2014 version is the newest edition of CS101, and it's now running on Stanford's own Stanford Online site. There was an older version we ran on Coursera, so you may see links pointing to the old version scattered around the internet.

Prerequisites

Zero computer experience is assumed beyond a basic ability to use a web browser.

Instructor(s): 
Nick Parlante
Computer Science 101 Self Paced  Course Image

View All Courses

Access learning material from upcoming, self-study, and completed courses...

Go to Course

ABOUT THIS COURSE

Overview of chemical engineering through discussion and engineering analysis of physical and chemical processes. Topics: overall staged separations, material and energy balances, concepts of rate processes, energy and mass transport, and kinetics of chemical reactions. Applications of these concepts to areas of current technological importance: biotechnology, energy, production of chemicals, materials processing, and purification.

COURSE STAFF

Chaitan Khosla

Chaitan Khosla is a Professor in the Departments of Chemical Engineering and Chemistry at Stanford University, and Director of the Stanford Institute for Chemical Biology. He received his PhD in chemical engineering in 1990 at Caltech. After completing postdoctoral studies in genetics at the John Innes Centre in the UK, he joined Stanford University in 1992. His research on polyketide synthases has opened the door to fundamentally new approaches for engineering of antibiotics. More recently, he has also investigated celiac sprue pathogenesis with the goal of developing therapies for this widespread but overlooked disease. He has co-authored over 300 peer-reviewed publications and 75 issued U.S. patents, and is the recipient of several awards and honors including the Eli Lilly Award in Biological Chemistry and the Pure Chemistry Award from the American Chemical Society; the Allan P. Colburn Award and the Professional Progress Award from the American Institute of Chemical Engineers; and the Alan T. Waterman Award from the National Science Foundation. He is an elected member of the American Academy for Arts and Science and the National Academy of Engineering. Over the past two decades, he has co-founded four biotechnology companies (Kosan Biosciences (KOSN), Alvine Pharmaceuticals, Flamentera AG, Sitari Pharmaceuticals), and was the founding President of the non-profit Celiac Sprue Research Foundation.

Lisa Hwang

Lisa Hwang has been a lecturer in the Department of Chemical Engineering since 2006. She has taught a variety of undergraduate and graduate level courses as well as worked on several projects related to curriculum development and other programmatic needs within the department such as training for teaching assistants. She also spends a portion of her time as a Center for Teaching and Learning Consultant focused on supporting faculty and lecturers. She received her PhD in Chemical Engineering in 2006 from Stanford University.

FREQUENTLY ASKED QUESTIONS

Do I need to buy a textbook?

No, the course materials necessary will be available online.

Introduction to Chemical Engineering (Self-Study Resource)

View All Courses

Access learning material from upcoming, self-study, and completed courses...

Date: 
Wednesday, October 1, 2014 to Friday, December 19, 2014
Go to Course

About the Course

Audio signal processing is an engineering field that focuses on the computational methods for intentionally altering sounds, methods that are used in many musical applications.

We have tried to put together a course that can be of interest and accessible to people coming from diverse backgrounds while going deep into several signal processing topics. We focus on the spectral processing techniques of relevance for the description and transformation of sounds, developing the basic theoretical and practical knowledge with which to analyze, synthesize, transform and describe audio signals in the context of music applications.

The course is based on open software and content. The demonstrations and programming exercises are done using Python under Ubuntu, and the references and materials for the course come from open online repositories. We are also distributing with open licenses the software and materials developed for the course.

Recommended Background

The course assumes some basic background in mathematics and signal processing. Also, since the assignments are done with the programming language Python, some software programming background in any language is most helpful. 

Suggested Readings

The main software tools used are in https://github.com/MTG/sms-tools and the sounds to be studied come from https://freesound.org. Most of the external references come from Julius O Smith website, https://ccrma.stanford.edu/~jos, or from https://www.wikipedia.org.

Course Format

Each week is structured around 6 types of activities:

  • Theory: video lectures covering the core signal processing concepts.   
  • Demos: video lectures presenting tools and examples that complement the theory.
  • Programming: video lectures introducing the needed programming skills (using Python) to implement the techniques described in the theory. 
  • Quiz: questionnaire to review the concepts covered. 
  • Assignment: programming exercises to implement and use the methodologies presented. 
  • Advanced topics: videos and written documents that extend the topics covered.
FAQ: 
  • How much programming background is needed for the course?
    All the assignments start from some existing Python code that the student will have to understand and modify. Some programming experience is necessary.

  • Do I need to buy a textbook for the course?
    No, it is self-contained.
  • What resources will I need for this class?
    All the materials and tools for the class are available online under open licences.

  • What is the coolest thing I'll learn if I take this class?
    You will play around with sounds a lot, analysing them, transforming them, and making interesting new sounds.

  • Will I earn a Statement of Accomplishment for completing this course?
    Yes, you will receive a Statement of Accomplishment if you successfully complete the course.

Instructors

Xavier Serra; Universitat Pompeu, Fabra of Barcelona

Julius O Smith; Stanford University


View All Courses

Access learning material from upcoming, self-study, and completed courses...

Date: 
Tuesday, October 14, 2014 to Tuesday, December 9, 2014
Go to Course

About the Course

It’s easy to be cynical about government surveillance. In recent years, a parade of Orwellian disclosures have been making headlines. The FBI, for example, is hacking into computers that run anonymizing software. The NSA is vacuuming up domestic phone records. Even local police departments are getting in on the act, tracking cellphone location history and intercepting signals in realtime.

Perhaps 2014 is not quite 1984, though. This course explores how American law facilitates electronic surveillance—but also substantially constrains it. You will learn the legal procedures that police and intelligence agencies have at their disposal, as well as the security and privacy safeguards built into those procedures. The material also provides brief, not-too-geeky technical explanations of some common surveillance methods.

Suggested Readings

There is no required textbook for the course. All readings will be provided online.

Several tomes discuss electronic surveillance in detail. For further reading, you might consider Dragnet Nation and No Place to Hide. If you'd like a more lawyerly take, we highly recommend the (free and public) Department of Justice manual on electronic evidence. A number of casebooks also touch on government surveillance, including Criminal Procedure: Investigation, Information Privacy Law, and Internet Law. 

Much of the best legal writing on electronic surveillance is posted to blogs. You might also take a look at The Volokh Conspiracy, Lawfare, and Just Security. 

Keep in mind that this area of law is evolving rapidly. If you encounter an explanation that seems outdated, it probably is. When this material was last offered at Stanford, for example, the law changed multiple times during the course.

Course Format

The class will consist primarily of lectures, each about 5-10 minutes long. There will be occasional assigned quizzes; they are intended to make sure you understand the material and should not be too tricky. You will also be expected to participate in forum discussions.

View All Courses

Access learning material from upcoming, self-study, and completed courses...

Date: 
Monday, October 13, 2014 to Monday, November 24, 2014
Go to Course

About the Course

In this course you will learn several fundamental principles of algorithm design. You'll learn the divide-and-conquer design paradigm, with applications to fast sorting, searching, and multiplication. You'll learn several blazingly fast primitives for computing on graphs, such as how to compute connectivity information and shortest paths. Finally, we'll study how allowing the computer to "flip coins" can lead to elegant and practical algorithms and data structures. Learn the answers to questions such as: How do data structures like heaps, hash tables, bloom filters, and balanced search trees actually work, anyway? How come QuickSort runs so fast? What can graph algorithms tell us about the structure of the Web and social networks? Did my 3rd-grade teacher explain only a suboptimal algorithm for multiplying two numbers?

Recommended Background

How to program in at least one programming language (like C, Java, or Python); and familiarity with proofs, including proofs by induction and by contradiction.  At Stanford, a version of this course is taken by sophomore, junior, and senior-level computer science majors. 

Suggested Readings

No specific textbook is required for the course.  Much of the course material is covered by the well-known textbooks on algorithms, and the student is encouraged to consult their favorite for additional information.

Course Format

The class will consist of lecture videos, generally between 10 and 15 minutes in length. These usually integrated quiz questions. There will also be standalone homeworks and programming assignments that are not part of video lectures, and a final exam.
FAQ: 
  • Will I get a statement of accomplishment after completing this class?

    Yes. Students who successfully complete the class will receive a statement of accomplishment signed by the instructor.

  • What is the format of the class?

    The class consists of lecture videos, which are broken into small chunks, usually between eight and twelve minutes each. Some of these may contain integrated quiz questions. There will also be standalone quizzes that are not part of video lectures. There will be approximately two hours worth of video content per week.

  • What should I know to take this class?

    How to program in at least one programming language (like C, Java, or Python); familiarity with proofs, including proofs by induction and by contradiction; and some discrete probability, like how to compute the probability that a poker hand is a full house. At Stanford, a version of this course is taken by sophomore, junior, and senior-level computer science majors.

  • How does Algorithms: Design and Analysis differ from the Princeton University algorithms course?

    The two courses are complementary. That one emphasizes implementation and testing; this one focuses on algorithm design paradigms and relevant mathematical models for analysis. In a typical computer science curriculum, a course like this one is taken by juniors and seniors, and a course like that one is taken by first- and second-year students.

Instructor(s): 
Tim Roughgarden
Algorithms: Design and Analysis, Part I  Course Image

View All Courses

Access learning material from upcoming, self-study, and completed courses...

Date: 
Monday, September 29, 2014 to Monday, December 1, 2014
Go to Course

About the Course

This class teaches algorithms for extracting models and other information from very large amounts of data. The emphasis is on techniques that are efficient and that scale well.

We introduce the student to modern distributed file systems and MapReduce, including what distinguishes good MapReduce algorithms from good algorithms in general.  The rest of the course is devoted to algorithms for extracting models and information from large datasets.  Students will learn how Google's PageRank algorithm models importance of Web pages and some of the many extensions that have been used for a variety of purposes.  We'll cover locality-sensitive hashing, a bit of magic that allows you to find similar items in a set of items so large you cannot possibly compare each pair.  When data is stored as a very large, sparse matrix, dimensionality reduction is often a good way to model the data, but standard approaches do not scale well; we'll talk about efficient approaches.  Many other large-scale algorithms are covered as well, as outlined in the course syllabus.

Recommended Background

A course in database systems programming (e.g., SQL) is recommended, as is a basic course on algorithms and data structures.

Suggested Readings

There is a free book "Mining of Massive Datasets, by Leskovec, Rajaraman, and Ullman (who by coincidence are the instructors for this course :-).  You can download it at http://www.mmds.org/  Hardcopies can be purchased from Cambridge Univ. Press.

Course Format

There will be about 2 hours of video to watch each week, broken into small segments.  There will be automated homeworks to do for each week, and a final exam.

FAQ: 
  • Will I get a Statement of Accomplishment after completing this class?

    Yes. Students who successfully complete the class will receive a Statement of Accomplishment signed by the instructors.  A level designated "distinction" will also be offered.

Instructors

Jure Leskovec Stanford University
Anand Rajaraman Stanford University
Jeff Ullman Stanford University
Mining course feature image

View All Courses

Access learning material from upcoming, self-study, and completed courses...

Date: 
Monday, September 8, 2014 to Tuesday, November 11, 2014
Go to Course

Cryptography is an indispensable tool for protecting information in computer systems. This course explains the inner workings of cryptographic primitives and how to correctly use them. Course participants will learn how to reason about the security of cryptographic constructions and how to apply this knowledge to real-world applications. The course begins with a detailed discussion of how two parties who have a shared secret key can communicate securely when a powerful adversary eavesdrops and tampers with traffic. We will examine many deployed protocols and analyze mistakes in existing systems. The second half of the course discusses public-key techniques that let two or more parties generate a shared secret key. We will cover the relevant number theory and discuss public-key encryption and basic key-exchange. Throughout the course students will be exposed to many exciting open problems in the field.

The course will include written homeworks and programming labs. The course is self-contained, however it will be helpful to have a basic understanding of discrete probability theory.

FAQ: 
  • Will I get a statement of accomplishment after completing this class?

    Yes. Participants who successfully complete the class will receive a statement of accomplishment signed by the instructor.

  • What is the format of the class?

    The class will consist of lecture videos, which are broken into small chunks, usually between eight and twelve minutes each. Some of these may contain integrated quiz questions. There will also be standalone quizzes that are not part of video lectures, and programming assignments. There will be approximately two hours worth of video content per week.

  • How much programming background is needed for the course?

    The course includes programming assignments and some programming background will be helpful. However, we will hand out lots of starter code that will help course particpants complete the assignments. We will also point to online resources that can help students find the necessary background.

  • What math background is needed for the course?

    The course is mostly self contained, however some knowledge of discrete probability will be helpful. The wikibooks article on discrete probability should give sufficient background.

Instructor(s): 
Dan Boneh

View All Courses

Access learning material from upcoming, self-study, and completed courses...

Date: 
Monday, September 1, 2014 to Monday, October 13, 2014
Go to Course

About the Course

I am pleased to be able to offer free over the Internet a course on Automata Theory, based on the material I have taught periodically at Stanford in the course CS154. Course participants have access to screencast lecture videos, are given quiz questions, assignments and exams, receive regular feedback on progress, and can participate in a discussion forum. Those who successfully complete the course will receive a statement of accomplishment. You will need a decent Internet connection for accessing course materials, but should be able to watch the videos on your smartphone.

The course covers four broad areas: (1) Finite automata and regular expressions, (2) context-free grammars, (3) Turing machines and decidability, and (4) the theory of intractability, or NP-complete problems.

FAQ: 
  • Will I get a statement of accomplishment after completing this class?

    Yes. Participants who successfully complete the class will receive a statement of accomplishment signed by the instructor.

  • What is the format of the class?

    The course will consist of lecture videos, which are between 15 and 45 minutes in length. These contain integrated quiz questions. There will also be standalone homework in addition to video lectures, optional programming assignments, and a (not optional) final exam.

  • How much work will I be expected to do in this class?

    You need to work about 5-10 hours per week to complete the course. About 2 hours of video segments each week, containing inline ungraded quiz questions. A weekly, graded multiple choice homework.

Instructor(s): 
Jeff Ullman

View All Courses

Access learning material from upcoming, self-study, and completed courses...

Date: 
Tuesday, September 2, 2014 to Friday, December 19, 2014
Go to Course

[[{"fid":"5536","view_mode":"default","fields":{"format":"default"},"type":"media","link_text":null,"attributes":{"height":"390","width":"640","class":"panopoly-image-video media-element file-default"}}]]

About This Course

The ability to reason is fundamental to human beings. Whatever the discipline or discourse it is important to be able to distinguish correct reasoning from incorrect reasoning. The consequences of incorrect reasoning can be minor, like getting lost on the way to a birthday party, or more significant, for example launching nuclear missiles at a flock of ducks, or permanently losing contact with a space craft.

The fundamental question that we will address in this course is "when does one statement necessarily follow from another" --- or in the terminology of the course, "when is one statement a logical consequence of another". This is an issue of some importance, since an answer to the question would allow us to examine an argument presented in a blog, for example, and to decide whether it really demonstrates the truth of the conclusion of the argument. Our own reasoning might also improve, since we would also be able to analyze our own arguments to see whether they really do demonstrate their conclusions.

In this course you will be introduced to the concepts and techniques used in logic. We will start right from the beginning, assuming no prior exposure to this or similar material, and progress through discussions of the proof and model theories of propositional and first-order logic.

We will proceed by giving a theory of truth, and of logical consequence, based on a formal language called FOL (the language of First-Order Logic). We adopt a formal language for making statements, since natural languages (like English, for example) are far too vague and ambiguous for us to analyze sufficiently. Armed with the formal language, we will be able to model the notions of truth, proof and consequence, among others.

While logic is technical in nature, the key concepts in the course will be developed by considering natural English statements, and we will focus the relationships between such statements and their FOL counterparts. The goal of the course is to show how natural English statements and arguments can be formalized and analyzed.

Prerequisites

This course has no prerequisites except an interest in the way in which we use language to construct arguments and justify conclusions. If that interests you, then you're all set! Go sign up.

Textbook

You will need to purchase the MOOC edition of the Language, Proof and Logic courseware package. The package contains software applications that you will use to complete exercises during the course. You will also get access to the Grade Grinder, an Internet-based assessment service for these exercises.

The MOOC edition of the courseware is offered at $10, a significantly reduced cost from the regular edition, but can only be used in conjunction with this course. You can obtain it from the Language, Proof and Logic online store. We guarantee to refund the cost of the MOOC edition of the textbook up until the end of the fourth week of the course (Oct 1 2014), so you can try the course out with no risk.

If purchasing the textbook would cause financial hardship, please write a note to the Language, Proof and Logic team, to request a free copy of the courseware.

Instructors

John Etchemendy
Professor of Philosophy and Symbolic Systems

John Etchemendy has been on the faculty of Princeton University and Stanford University where he was chairman of the Department of Philosophy and is currently Provost. He has has also served as the director of the Center for the Study of Language and Information.

Dave Barker-Plummer
Senior Research Scientist

I'm Dave Barker-Plummer. Since 1995 I have managed the Openproof project's work on educational software for teaching logic at Stanford University. I have a background in Artificial Intelligence, and have taught computer science and logic at Stanford, Swarthmore College and Duke University. In my spare time I indulge my rock-star fantasies with PAN!C, a San Franciso based reggae/pop/jazz band.


View All Courses

Access learning material from upcoming, self-study, and completed courses...

Pages

Subscribe to RSS - Engineering & Computer Science