This talk will present the SYCL programming model. It will cover how to find an appropriate heterogeneous device to execute work on, how to defined data dependencies and construct task graphs using accessors and how to write C++ code which will execute on the device. It will cover other features of the interface including the host device, the fallback and templating device code. It will then present various ecosystem projects which are built on top of SYCL including Eigen / TensorFlow, Parallel STL and SYCBLAS.