Programming Languages drive the way we communicate with computers, including how we make them intelligent and reasonable. In this advance topic course, we will look at artificial intelligence broadly construed from the point of view of programming languages. We gain clarity of semantics, algorithms and purpose. Topics include differentiable programming, neuro-symbolic systems, constraint and probabilistic programming, interpretable AI and more. Reading and discussion will be based on a selection of papers, suggested collectively. Grading is based on participation, presentation and final project.