O problema ocorre, devido a condição de execução do loop ser <= a quantidade de cursos no Array: i <= cursos.size()
O Array contem 3 cursos , o index inicia em 0 e vai até 2, logo o index 3 não existe.
Ao executar gera a exceção IndexOutOfBoundsException.
A solução é retirar o sinal de = da condição, para que execute enquanto o index for menor que 3: i < cursos.size()
package br.com.alura;
import java.util.ArrayList;
public class TestandoListas {
public static void main(String[] args) {
String curso1 = "Java 8: Tire proveito dos novos recursos da linguagem";
String curso2 = "Apache Camel";
String curso3 = "Certificacao Java SE 8 Programmer I";
ArrayList<String> cursos = new ArrayList<>();
cursos.add(curso1);
cursos.add(curso2);
cursos.add(curso3);
for (int i = 0; i < cursos.size(); i++) {
System.out.println("Aula : " + cursos.get(i));
}
}
}