It's important for attendants to have sufficient knowledge on programming, knowledge on programming, as this course is hands-on.
Acceptable languages are Smalltalk, Java, C#, Python, Ruby, JavaScript and PHP.
The software requirements for taking the course (this is for students' own computers) is simply to have the programming language installed (with a suitable IDE), and a corresponding xUnit framework.
CourseThe aim of this course is to convey the main concepts of the software development technique known as Test Driven Development (TDD), through practical and everyday programming examples. This course starts with a brief theoretical introduction, and then concentrates in practical programming exercises, especially designed so that students can master the technique, as we believe that 'the best way to learn is by doing'
While it is recommended that attendants are already familiar with basic concepts from probability theory and programming languages, this course will go through all the necessary concepts. It is a self-content course that should be accessible to any Computer Science student.
CourseIn the last few years, probabilistic programming languages (PPLs) have received increasing attenting, both from academia and industry. To a great extent, this is due to the way in which these languages have revolutionized artificial intelligence. For instance, modern PPLs can do in 50 lines of code what previously required over 1000.
The main objective of this course is to introduce students to the "world" of PPLs, in a broad manner, covering both practical aspects and foundations. We will start by discussing the benefits and potential of probabilistic computational models, going through their main applications, putting special emphasis on the cause of this revolution: artificial intelligence and bayesian reasoning. The second part of the course will cover the main challenges in the design and implementation of PPLs. Finally, we will discuss the formal semantics and different verification techniques for probabilistic programs.
Basic knowledge on discrete mathematics and propositional (boolean) logic.
Propositional logic: definitions and limitations.
Predicate logic: definitions and limitations.
Relational logic.
Program specification: weakest precondition, partial and total program correctness.
The Java Modeling Language: a language for program specification.
Automated fault localization.
Automated program repair.