Oie James, tudo bem com você?
Consegui pensar em dois jeitos um pouco mais curtos que esse, segue os códigos abaixo:
Primeira opção:
class Curso {
    private String nome;
    private int alunos;
    public Curso(String nome, int alunos) {
        this.nome = nome;
        this.alunos = alunos;
    }
    public String getNome() {
        return nome;
    }
    public int getAlunos() {
        return alunos;
    }
    @Override
    public String toString() { // necessário sobrescrever o método toString
        // TODO Auto-generated method stub
        return nome;
    }
}
Optional curso = cursos.stream()
           .filter(c -> c.getAlunos() > 50)
           .findFirst();
System.out.println(curso.get());
// irá printar "C"
Segunda opção:
class Curso {
    private String nome;
    private int alunos;
    public Curso(String nome, int alunos) {
        this.nome = nome;
        this.alunos = alunos;
    }
    public String getNome() {
        return nome;
    }
    public int getAlunos() {
        return alunos;
    }
    @Override
    public String toString() { // necessário sobrescrever o método toString
        // TODO Auto-generated method stub
        return nome;
    }
}
System.out.println(cursos.stream()
           .filter(c -> c.getAlunos() > 50)
           .findFirst().get());
// irá printar "C"
Espero que eu tenha ajudado, qualquer dúvida ou problema fico a disposição :)
Bons estudos!