Skip to content Skip to navigation

Engineering & Computer Science

Topic Image: 
Engineering and Computer Science
Monday, June 26, 2017
Go to Course


This introduction to the engineering of computer applications emphasizes modern software engineering principles with a focus on the first three of the four “D’s” of development: Design, Develop, Debug, and Deploy . Using these key topics, particular focus will be on good programming style and the built-in facilities of the Java language. Learn why programming requires a much higher level of artistry than simply the science of syntax.

Students will be required to develop software applications, primarily using the Java programming language.


  • Nick Troccoli InstructorComputer Science

Topics Include

  • Object-oriented design
  • Decomposition
  • Encapsulation
  • Abstraction
  • Testing


3.0 - 5.0

Students enrolling under the non degree option are required to take the course for 5.0 units.

Software Requirements

Students will use a special version of the Eclipse development environment, written specifially for use in this class. There are PC, Macintosh and Linux versions of the software. Installation instructions are available in the Downloading Eclipse handout. Additionally, you will need the Java Runtime Environment (JRE) installed on your computer. Further details of the software are below:

Windows Users:
  • Stanford Eclipse for Windows
  • Java 1.6 JRE installer for the PC
Mac Users:
  • Stanford Eclipse for Macintosh OSX
  • Your Mac should come with Java. However, run the "Software Update" utility (in the Apple menu) to make sure you have the most recent version.
Linux Users:
  • Stanford Eclipse for Linux
  • Download Java 1.6 from Sun's website


This is an introduction to software development. No prior programming experience required.

View All Courses

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

Go to Course

About the Course

This course introduces the basics of Digital Signal Processing and computational acoustics, motivated by the vibrational physics of real-world objects and systems. We will build from a simple mass-spring and pendulum to demonstrate oscillation, learn how to simulate those systems in the computer, and also prove that these simple oscillations behave as a sine wave. From that we move to plucked strings and struck bars, showing both solutions as combined traveling waves and combined sine wave harmonics. We continue to build and simulate more complex systems containing many vibrating objects and resonators (stringed instruments, drum, plate), and also learn how to simulate echos and room reverberation. Through this process, we will learn about digital signals, filters, oscillators, harmonics, spectral analysis, linear and non-linear systems, particle models, and all the necessary building blocks to synthesize essentially any sound. The free open-source software provided will make it possible for anyone to use physical models in their art-making, game or movie sound, or any other application.

Price: Free and Subscription Option

What you need to take this course:

    • Materials:
    • Equipment:
    • Software: ChucK (also optionally STK, PeRColate for Max/MSP, Processing, GL/Glut)
    • Recommended (highly) Textbook:

    Real Sound Synthesis for Interactive Applications (Kadenze discount available in Course Resources when course begins: Free Users=20%, Premium=50%).

    • Familiarity with ChucK programming language

    Introduction to Programming for Musicians and Digital Artists (Kadenze ChucK course)

    Programming for Musicians and Digital Artists (ChucK book, Kadenze Discount available in Course Resources when course begins)

    • Operating system: Mac OS X, Windows, or Linux (Planet CCRMA recommended)
    • Desired: familiarity with algebra. no calculus required.
    • Helpful to have: some personal sound-making things: a guitar or other stringed instrument, a drum, a kitchen pan, a prayer bowl, glasses, bowls, voice...


Perry Cook

    Perry R. Cook is Emeritus Professor of Computer Science (also Music) at Princeton University, founding advisor/consultant to social music company SMule, and consulting professor at CalArts, Stanford CCRMA. With Dan Trueman, he co-founded the Princeton Laptop Orchestra, which received a MacArthur Digital Learning Initiative Grant in 2005. With Ge Wang, Cook is co-author of the ChucK Programming Language. His newest book is “Programming for Digital Musicians and Artists,” with Ajay Kapur, Spencer Salazar, and Ge Wang. The recipient of a 2003 Guggenheim Fellowship, Cook is (still) working on a new book, "La Bella Voce e La Macchina (the Beautiful Voice and the Machine), A History of Technology and the Expressive Voice." Perry is also co-founder of Kadenze.


    Julius Smith

      Julius O. Smith normally teaches a music signal-processing course sequence and supervises related research at the Center for Computer Research in Music and Acoustics (CCRMA). He is formally a professor of music and (by courtesy) electrical engineering. In 1975, he received his BS/EE degree from Rice University, where he got started in the field of digital signal processing and modeling for control. In 1983, he received the PhD/EE degree from Stanford University, specializing in techniques for digital filter design and system identification, with application to violin modeling. His work history includes the Signal Processing Department at Electromagnetic Systems Laboratories, Inc., working on systems for digital communications, the Adaptive Systems Department at Systems Control Technology, Inc., working on research problems in adaptive filtering and spectral estimation, and NeXT Computer, Inc., where he was responsible for sound, music, and signal processing software for the NeXT computer workstation. Prof. Smith is a Fellow of the Audio Engineering Society and the Acoustical Society of America. He is the author of four online books and numerous research publications in his field.




      Sound Synthesis

      View All Courses

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

      Tuesday, April 4, 2017
      Go to Course


      Computer systems security is arguably one of the most critical computer science issues today. Learn how to defend against various attack techniques and build reliable and secure code. Become an authority on privacy and digital rights management; and learn how to protect networks from harmful viruses and threats. Course projects will focus on building reliable code.


      Topics Include

      • Network attacks and defenses
      • Operating system security
      • Application security (web, apps, databases)
      • Malware, privacy, and security for mobile devices




      • Understanding of operating systems, networking protocols, and a basic understanding of programming languages. Programming projects will be done in C, JavaScript, and PHP, but other languages may be needed.
      • Principles of Computer Systems (Stanford Course: CS110)


      Working knowledge of basic Unix


      View All Courses

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

      Saturday, April 15, 2017
      Go to Course

      Course Description

      Today's vast amount of streaming and video conferencing on the Internet lacks one aspect of musical fun and that's what this course is about: high-quality, near-synchronous musical collaboration. Under the right conditions, the Internet can be used for ultra-low-latency, uncompressed sound transmission. The course teaches open-source (free) techniques for setting up city-to-city studio-to-studio audio links. Distributed rehearsing, production and split ensemble concerts are the goal. Setting up such links and debugging them requires knowledge of network protocols, network audio issues and some ear training.


      Session 1: Overview
      Overview of Online Jamming and Concert Technology

      Session 2: Basics And Setup
      Basics: Network protocols, audio signals + soundcards and network audio.

      Session 3: Jacktrip Application + Connection
      Things that go wrong with Jacktrip: Network & Audio. P2P Sessions and Multi-site setups.

      Session 4: Debugging
      Debug examples of typical problems.

      Session 5: Polish And Practice
      Polish techniques and spawn more practice sessions.

      Session 6: Future
      Future of the art and practice of network audio, alternative platforms for network audio.


      Chris Chafe, Professor of Music and Director of CCRMA

        Chris Chafe is a composer, improviser, and cellist, developing much of his music alongside computer-based research. He is Director of Stanford University's Center for Computer Research in Music and Acoustics (CCRMA). At IRCAM (Paris) and The Banff Centre (Alberta), he pursued methods for digital synthesis, music performance, and real-time internet collaboration. CCRMA's SoundWIRE project involves live concertizing with musicians the world over. Online collaboration software including jacktrip and research into latency factors continue to evolve. An active performer either on the net or physically present, his music reaches audiences in dozens of countries and sometimes at novel venues. A simultaneous five-country concert was hosted at the United Nations in 2009. Chafe's works are available from Centaur Records and various online media. Gallery and museum music installations are into their second decade with "musifications" resulting from collaborations with artists, scientists and MD's. Recent work includes the Brain Stethoscope project, PolarTide for the 2013 Venice Biennale, Tomato Quintet for the transLife:media Festival at the National Art Museum of China and Sun Shot played by the horns of large ships in the port of St. Johns, Newfoundland.


        Equipment: Computer (running Linux, OS X, or Windows) with installation privileges
        Software: JackTrip (plus Jack) and Audacity
        Wired Internet: at least 5Mbps download and upload


        View All Courses

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

        Go to Course

        About the Course

        Explore how leading audio, music, and video technology companies bring products from idea to market, and discover your career options in the industry. In five 30- to 60-minute sessions, you’ll gain insight into daily life at companies such as Adobe, Universal Audio, iZotope, and more. Learn from professionals who design, engineer, manage, and market leading creative technologies. Examine best practices and responsibilities of various industry roles. Hiring managers will share secrets in navigating the hiring process. And, get your questions answered by our mentor network of creative tech experts and entrepreneurs, who will be online to offer advice in AMA’s and one-on-one office hours.

        Continue learning about the creative technology industry in our companion course, Inside the Music and Video Technology Industry.


        This course is intended for anyone considering full-time positions or internships in the media technology industry. No prior engineering background required. Topics include: Introduction to the music and media technology industry, Product Management, Program Management, User Experience, and Software Engineering.

        SCHEDULE *

        * This course is running in Adaptive Scheduling mode. You can learn more about how Adaptive Scheduling works in this help article

        Session 1: Overview 
        This session takes you behind-the-scenes into how the media technology industry really works. We’ll provide a high-level overview of the media technology industry - focusing on the music technology space! We introduce a variety of roles in industry and explore the types of companies available for your future careers.
        Session 2: Product Management 
        We'll look at how media technology companies develop products that consumers love. How do they determine what new products to develop? Or what the new features are? Who makes those decisions? And how do I get to be that person!
        Session 3: Program Management 
        Program management is the secret to helping you deliver on time, on budget, in a scalable, repeatable manner! We'll introduce the Agile methodologies used to help companies like Adobe coordinate a product release with over 1,000 team members and millions of lines of code. Students will learn the key traits of a program manager or scrum master.
        Session 4: User Experience 
        With computing everywhere we go - smart phones, tablets, browser and cloud, desktop, and hardware - product design is everywhere we look. We explore how designers approach the layout, look and feel, and implementation of some of your favorite mobile apps and software. Our mentors provide advice on getting jobs in this competitive space!
        Session 5: Software Engineering 
        Applications like Pro Tools and iZotope RX are used by professionals all around the world - and they need to be easy to use and almost crash-proof. How do software engineers manage millions of lines of code, written over 10 years, with dozens of engineers continuously modifying, updating, and creating new functionality across Windows, OS X, about 10 plug-in formats? We conclude by offering advice for aspiring software engineers.


        Jay LeBoeuf, Stanford University

        Jay LeBoeuf is technology executive, educator, and entrepreneur in the media technology industry. Jay is the President/Executive Director of Real Industry - a nonprofit transforming how students learn about the tech industry and how products go from idea through commercialization. LeBoeuf lectures on music technology and music business at Stanford University’s Center for Computer Research in Music and Acoustics (CCRMA) and is on the Board of Advisors for music startups Chromatik and Humtap. LeBoeuf led research & development, intellectual property, and technology strategy as Strategic Technology Director at iZotope. Jay founded and was CEO of intelligent audio technology company Imagine Research, which was acquired by iZotope in March 2012. While creating a "Google for Sound", Jay was recognized as a Bloomberg Businessweek Innovator, awarded $1.1M in Small Business Innovation Research grants by the U.S. National Science Foundation, and interviewed on BBC World, Science 360, and other major media outlets. Prior to founding Imagine Research, LeBoeuf was an engineer and researcher in the Advanced Technology Group at Digidesign (Avid Technology) in charge of innovations for the industry-standard Pro Tools platform.



        careers in media technology

        View All Courses

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

        Tuesday, April 4, 2017
        Go to Course


        Computer Vision is a dynamic and rapidly growing field with countless high-profile applications that have been developed in recent years. The potential uses are diverse, and its integration with cutting edge research has already been validated with self-driving cars, facial recognition, 3D reconstructions, photo search and augmented reality. Artificial Intelligence has become a fundamental component of everyday technology, and visual recognition is a key aspect of that.  It is a valuable tool for interpreting the wealth of visual data that surrounds us and on a scale impossible with natural vision.

        This course covers the tasks and systems at the core of visual recognition with a detailed exploration of deep learning architectures. While there will be a brief introduction to computer vision and frameworks, such as Caffe, Torch, Theano and TensorFlow, the focus will be learning end-to-end models, particularly for image classification. Students will learn to implement, train and debug their own neural networks as well as gain a detailed understanding of cutting-edge research in computer vision.

        The final assignment will include training a multi-million parameter convolutional neural network and applying it on the largest image classification dataset (ImageNet).


        • Justin Johnson Instructor, Computer Science

        Topics Include

        • End-to-end models
        • Image classification, localization and detection
        • Implementation, training and debugging
        • Learning algorithms, such as backpropagation
        • Long Short Term Memory (LSTM)
        • Recurrent Neural Networks (RNN)
        • Supervised and unsupervised learning


        3.0 - 4.0

        Students enrolling under the non degree option are required to take the course for 4.0 units.


        Proficiency in Python; familiarity with C/C++; CS131 and CS229 or equivalents; Math21 or equivalent, linear algebra.
        Convolutional Neural Networks

        View All Courses

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

        Monday, April 3, 2017 to Tuesday, June 13, 2017
        Go to Course

        About This Course

        This interdisciplinary course encompasses the fields of rock mechanics, structural geology, earthquake seismology and petroleum engineering to address a wide range of geomechanical problems that arise during the exploitation of oil and gas reservoirs.

        The course considers key practical issues such as prediction of pore pressure, estimation of hydrocarbon column heights and fault seal potential, determination of optimally stable well trajectories, casing set points and mud weights, changes in reservoir performance during depletion, and production-induced faulting and subsidence. The first part of the course establishes the basic principles involved in a way that allows readers from different disciplinary backgrounds to understand the key concepts.

        The course is intended for geoscientists and engineers in the petroleum and geothermal industries, and for research scientists interested in stress measurements and their application to problems of faulting and fluid flow in the crust.

        Recommended Background:

        Introductory Geology and Geophysics
        Familiarity with principles of drilling and petroleum production

        Course Format:

        • 20, 90 minute lectures (in ~20 minute segments). 2 lectures will be made available each week.
        • Lecture 1 is a course overview to introduce students to the topics covered in the course. Lectures 2-17 follow 12 chapters of Dr. Zoback’s textbook, Reservoir Geomechanics (Cambridge University Press, 2007) with updated examples and applications. Lectures 18 and 19 are on topics related to geomechanical issues affecting shale gas and tight oil recovery. Lecture 20 is on the topic of managing the risk of triggered and induced seismicity.
        • 8 Homework assignments (and associated video modules) are intended to give students hands-on experience with a number of the topics addressed in the course.
        • The course grade will be based solely on homework assignments. There will be no quizzes or exams.
        • Homework assignments will be graded electronically and will consist of multiple choice and numerical entry responses.
        • There will be an online discussion forum where students can discuss the content of the course and ask questions of each other and the instructors.

        Course Staff

        Dr. Mark D. Zoback

        Dr. Mark D. Zoback is the Benjamin M. Page Professor of Geophysics at Stanford University. Dr. Zoback conducts research on in situ stress, fault mechanics, and reservoir geomechanics with an emphasis on shale gas, tight gas and tight oil production. He is the Director of the Stanford Natural Gas Initiative and co-Director of the Stanford Center for Induced and Triggered Seismicity. He was one of the principal investigators of the SAFOD project, in which a scientific research well was successfully drilled through the San Andreas Fault at seismogenic depth. He is the author of a textbook entitled Reservoir Geomechanics, published in 2007 by Cambridge University Press. He is the author/co-author of over 300 technical papers and holds five patents. He was the co-founder of GeoMechanics International in 1996, where he was Chairman of the Board until 2008. Dr. Zoback has received a number of awards and honors, including the 2006 Emil Wiechert Medal of the German Geophysical Society and the 2008 Walter H. Bucher Medal of the American Geophysical Union. In 2011, he was elected to the U.S. National Academy of Engineering and in 2012 elected to Honorary Membership in the Society of Exploration Geophysicists. He is the 2013 recipient of the Louis Néel Medal, European Geosciences Union and named an Einstein Chair Professor of the Chinese Academy of Sciences. In 2015, he received the Robert R. Berg Outstanding Research Award of the AAPG and in 2016 he received the Outstanding Contribution to the Public Understanding of the Geosciences Award from AGI. He served on the National Academy of Engineering committee investigating the Deepwater Horizon accident and the Secretary of Energy’s committee on shale gas development and environmental protection.

        Gader Alalli, Graduate Teaching Assistant

        Gader is a 4th year Ph.D. candidate in the Department of Geophysics at Stanford University. Gader works with Professor Mark Zoback to investigate the relationship between pore size distribution and permeability in unconventional gas shale reservoirs. His research can shed some insight into why certain ultra-low porosity gas shales with varying mineralogical compositions can have significant permeability variations, which can therefore impact recovery factors. Gader has a Master of Science in Geophysics from Stanford, where he worked on enhancing post-stack crosswell seismic profile (XSP) reflection imaging using AVO-Analysis of separated Up/Down wavefields, with Professor Jerry Harris. Gader previously worked for Saudi Aramco as a Geophysicist for 5 years working on special projects for both exploration and development wells in Saudi Arabia. He has a Bachelor of Science degree from Texas A&M University, where he majored in Geophysics and minored in Geology.

        Jens-Erik Lund Snee, Graduate Teaching Assistant

        Jens-Erik Lund Snee is a 3rd year Ph.D. candidate at the Stanford University Department of Geophysics. Jens works with Professor Mark Zoback to study tectonic stress in Texas. His research has implications for enhancing oil and gas production, mitigating human-triggered earthquakes, and understanding the factors that control the stress field. Jens has a Master of Science in Geological and Environmental Sciences from Stanford, where he studied the tectonic history of the Basin and Range Province, western USA, with Professor Elizabeth Miller. Jens previously worked for Statoil as a deepwater Exploration Geologist, and he studied fault zone geology with Professor Virginia Toy at the University of Otago in New Zealand as part of a Fulbright Fellowship. He has a Bachelor of Arts degree from Whitman College, where he majored in Geology and Politics.

        Frequently Asked Questions

        Can I at least access the course materials, even if I can't take the course?

        Yes. All course material is archived and available for download for non-commercial purposes. To do so, register for the course.

        Will I receive a Statement of Accomplishment in this course?

        Yes. A Statement of Accomplishment will be given to those students who obtain more than 70% of the maximum points on the 8 homework assignments.

        When will my Statement of Accomplishment arrive?

        The Statement of Accomplishment will arrive a few weeks after successful completion of the course.

        Do I need to purchase a textbook for the course?

        While it is not required to purchase the Reservoir Geomechanics textbook for this course, it is recommended. Lectures 2-17 follow the 12 chapters of the book. The book provides significant additional detail and explanation of the course concepts. It is available through:
        Cambridge University Press:
        Amazon and Kindle:

        Res Geomechanics Course Image

        View All Courses

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

        Go to Course


        Web applications are vulnerable to many types of attacks to which traditional client-server applications are not as susceptible. These vulnerabilities, over the past several years, have resulted in attacks that have exposed companies to monetary losses and reputational damage.

        This course covers these vulnerabilities, how attacks are constructed based on them, and techniques that can be used to mitigate such vulnerabilities.

        Example web vulnerabilities covered in this course include client-state manipulation, cookie-based attacks, SQL injection, cross domain attacks (XSS, XSRF, XSSI), DNS rebinding, timing attacks, user tracking, and HTTP header injection. In addition, this course covers security issues that can arise in Web 2.0 and HTML5 applications that take advantage of heavy use of JavaScript, AJAX, mash-ups, and HTML5 extensions.

        You Will Learn

        • Overview of Web Technologies (HTTP, cookies, JavaScript, caching, session management)
        • Browser Security Model (document object model, same-origin-policy andviolations of it), and SSL
        • Coverage of HTML5 vulnerabilities due to frame communication, localstorage, cross-origin resource sharing, and other HTML5 features
        • SQL Injection (and other forms of command injection including LDAP andXPath Injection)
        • Cross-site scripting (XSS), cross-site request forgery (XSRF), andcross-site script inclusion (XSSI), Clickjacking
        • Prevention techniques including input validation, output escaping, signatures, message authentication codes, and frame busting



        We recommend you have the equivalent of a BS in Computer Science and a background in security.

        We highly recommend that you take this course, Software Security Foundations (XACS101) as the 1st course within the Stanford ACS certificate program. It provides the fundamentals necessary for the subsequent courses in the program.


        • $495 per online course
        • $75 one-time document fee

        On Demand Webinars

        View our free on-demand webinars to get a preview of the courses we have to offer.


        Please contact


        Exploiting and Protecting Web Applicaitons

        View All Courses

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

        Monday, June 12, 2017
        Go to Course


        Starts online June 12, 2017

        At Stanford July 25-28, 2017

        How is big data transforming our world and changing business, government, and civil society? Discover, through an interdisciplinary lens, how big data is creating new knowledge and value, as well as new privacy and security challenges. Start learning online and then come to Stanford for a three-day, immersive experience. On campus, you’ll interact with Stanford and Silicon Valley experts, explore a range of applications, and collaborate on case studies. (Application and fee apply.)


        What's driving big data? We increasingly live our social, economic, and intellectual lives in the digital realm, enabled by new tools and technologies. These activities generate massive data sets, which in turn refine the tools. How will this co-evolution of technology and data reshape society more broadly?

        Creating new knowledge and value: Big data changes what can be known about the world, transforming science, industries, and culture in the process. It reveals solutions to social problems and allows products and services to be even more targeted. Where will big data create the greatest sources of new understanding and new value?

        Shifting power, security, and privacy: The promise of big data is accompanied by perils—in terms of control, privacy, security, reputation, and social and economic disruption. How will we manage these tradeoffs individually and in business, government, and civil society?


        Lucy Bernholz, philanthropy, technology, and policy scholar at the Center on Philanthropy and Civil Society

        Sharad Goel, computational scientist studying politics, media, and social networks

        Jennifer Granick, attorney and director of Civil Liberties at the Stanford Center for Internet and Society

        Michal Kosinski, psychologist and computational scientist studying online and organizational behavior at Stanford Graduate School of Business

        Margaret Levi, political scientist specializing in governance, trust, and legitimacy

        John Mitchell, computer scientist, cybersecurity expert, and Vice Provost of Teaching and Learning


        Applications open: NOW

        Start online: June 12, 2017

        Come to Stanford: July 25-28, 2017

        Online content closes: September 4, 2017

        Early Registration
        Discount, 10%
        (ends May 15, 2017)

        Early Registration, 10%
        Alum/Non-Profit/Gov, 15% 
        (ends May 15, 2017)

        Team Discount, 10%(each)
        For 3 or more people attending together.

        Standard Fee

        Standard Alum/Non-Profit/Gov Discount, 15%

        All discounts will be applied during registration.




        This course is offered through Worldview Stanford, which creates interdisciplinary media and learning experiences to engage and inform the public.

        Big Data

        View All Courses

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

        Go to Course

        About This Course

        Welcome to the self paced course, Algorithms: Design and Analysis! Algorithms are the heart of computer science, and the subject has countless practical applications as well as intellectual depth. This specialization is an introduction to algorithms for learners with at least a little programming experience. The specialization is rigorous but emphasizes the big picture and conceptual understanding over low-level implementation and mathematical details. After completing this specialization, you will be well-positioned to ace your technical interviews and speak fluently about algorithms with other programmers and computer scientists. Specific topics in the course include: "Big-oh" notation, sorting and searching, divide and conquer (master method, integer and matrix multiplication, closest pair), randomized algorithms (QuickSort, contraction algorithm for min cuts), data structures (heaps, balanced search trees, hash tables, bloom filters), graph primitives (applications of BFS and DFS, connectivity, shortest paths).

        Learners will practice and master the fundamentals of algorithms through several types of assessments. There are 6 multiple choice quizzes to test your understanding of the most important concepts. There are also 6 programming assignments, where you implement one of the algorithms covered in lecture in a programming language of your choosing. The course concludes with a multiple-choice final. There are no assignment due dates and you can work through the course materials and assignments at your own pace.

        Frequently Asked Questions

        Can I earn a Statement of Accomplishment

        Yes. If you successfully complete at least 70% of the graded assignments in the course, you can receive a Statement of Accomplishment.

        Tim Roughgarden

        View All Courses

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


        Subscribe to RSS - Engineering & Computer Science