Program Analysis and Optimizations

This course is for anyone who is interested in programming and computer architecture. It also teaches program analysis techniques used in compilers and software development tools to improve productivity, reliability, and security. Emphasis on the methodology of applying mathematical abstractions such as graphs, fixpoint computations, binary decision diagrams in writing complex software, using compilers as an example.

The course answers the following questions:

  • Machine learning and scientific computing need a lot of cycles; machines such as GPUs are complex to code. How do we automatically generate efficient code for these machines effectively? (Parallelism and Locality).
  • The highest programming language is obviously natural language. Can we program our virtual assistant to perform compound tasks in natural language? We use machine learning techniques to map natural language into formal languages. Note: no prior knowledge in machine learning is needed. (Neural networks, Satisfiability Modulo Theories)
  • Can we use program analysis to automatically detect security bugs in programs? (Pointer analysis)
  • How do we automatically manage memory efficiently so users do not have to manage it themselves? (Garbage collection)
  • How do we make high-level programming languages efficient by optimizing the code? (Data-flow analysis)

Course Page
Price
$5,824.00 Subject to change
Delivery
Online, instructor-led
Level
Introductory
Commitment
10 weeks, 10-20 hrs/week
Credit
Advanced Software Systems Graduate Certificate Software Systems Graduate Certificate Electrical Engineering Graduate Certificate
School
Stanford School of Engineering
Language
English