Olá, bem-vindo ao curso de Laboratório de Programação Orientada a Objetos. A ideia desse curso é apresentar para vocês os conceitos mais fundamentais, mais importantes para se tornar excelente programador no contexto de linguagens orientadas a objetos. O curso supõe que você já sabe programar uma linguagem de programação e você já conhece o básico do básico de orientação a objetos, já sabe o que é objeto, uma classe, se bem que a gente vai começar o curso já com uma recapitulação desses conceitos básicos e daí sim a gente vai passar para os conceitos mais avançados. Orientação a objetos é hoje o paradigma de desenvolvimento de software mais comum na indústria de softwares e as melhores empresas de TI e não de TI, que desenvolvem software, utilizam linguagens orientadas a objetos, tem outros paradigmas também, por exemplo, o paradigma funcional, que também é muito bom, mas não é o contexto desse curso. Nesse curso, o nosso escopo é orientação a objetos. Agora, para você ser excelente desenvolvedor de software, você tem que ter os conceitos básicos de orientação a objetos muito bem fundamentados. Não interessa muito qual linguagem você usa, que framework, que biblioteca você usa, porque essas coisas mudam de ano para ano. Não adianta nada a gente fazer curso aqui baseado detalhes de uma determinada tecnologia porque daqui três, quatro, cinco anos isso aí já ficou obsoleto, já mudou as tecnologias. A ideia aqui é conversar sobre os conceitos fundamentais de orientação a objetos, eles já duram décadas e ainda vão durar muitas décadas pela frente, então o que você vai aprender aqui você vai utilizar durante várias décadas e não dá para ser excelente desenvolvedor de software sem conhecer o conteúdo desse curso, não porque é o meu curso, você pode aprender outros lugares, mas porque os conceitos que a gente discute aqui são conceitos fundamentais, então a gente vai ver não só aqueles conceitos de orientação a objetos, como objetos, classe, herança, polimorfismo, interfaces, vários conceitos básicos, como a gente vai falar sobre padrões de projeto orientado a objetos, então os vários "design patterns", padrões de projeto. A gente vai falar o que são padrões arquiteturais, a gente vai dar exemplo de padrão arquitetural que é o MVC, que é muito utilizado e a gente vai discutir pouco sobre a arquitetura de software, como você organiza as várias classes do seu sistema orientado a objetos. A gente vai falar de coleções, de streams, de vários conceitos que são muito importantes para a gente desenvolver sistemas de software de alto nível, particular, a gente vai falar sobre qualidade de código, o que é software de boa qualidade, o que é software de má qualidade e vai discutir esses aspectos. Eu chamo de Laboratório de Programação Orientada a Objetos porque a gente, como eu falei, vai fazer uma abordagem bem prática. A gente apresenta o conceito, mas a gente vai dar vários exemplos, boa parte dos exemplos são na linguagem Java, a linguagem de programação Java, então, por acaso, se você não sabe Java, por exemplo, se você veio de curso de Python, vai ter vídeo alí sobre recapitulação de Java, que eu passo bem rapidinho sobre os conceitos de Java, que já é suficiente para acompanhar esse curso. Se você quiser aprender mais, aí você vai procurar curso de Java. Particular, quem já sabe Java, eu acho que é legal aprender uma linguagem dinâmica também, por exemplo, a linguagem Python. Eu tenho aqui no Coursera dois cursos de Python, que têm tido bastante sucesso, se você não sabe Python, você pode fazer aquele curso de Python. Particular, se você está chegando pela primeira vez aqui, sem saber programar, você chegou no lugar errado, tem que primeiro fazer os dois cursos de Python e daí vir para esse curso, aí funciona muito bem. Então, boa parte dos exemplos dos vídeos vão ser Java, mas a gente vai ter também vários exemplos Python, disponíveis aqui no material que vem junto no Coursera, muitos exemplos de código Python e também alguns exemplos outras linguagens de programação. Então eu diria que a maior parte dos exemplos vai ser Java e Python, mas a gente vai ter exemplos também C++, Smalltalk, C Sharp e outras linguagens para você ver como os conceitos básicos se refletem nas diferentes linguagens de programação. Então, eu recomendo que você não só assista o curso, mas como faça todos os quizzes, a gente vai ter esquema de sempre ter vídeo e depois quiz para ter certeza que você entendeu os conceitos daquele vídeo. Se você começa a fazer o quiz e não tá dando muito certo, tá muito difícil, assiste o vídeo de novo ou deixa os dois lado a lado, vai assistindo o vídeo e respondendo o quiz que vai ser mais fácil, tem essa vantagem de ter tudo gravado, então você pode assistir quantas vezes for necessário. A gente vai ter também leituras recomendadas, que é pouquinho de material extra, para vocês irem lendo, se aprofundando pouco ao longo do curso. Tem alguns conteúdos, leituras, que a gente vai dizer que é fundamental e outros que são opcionais, para quem realmente quer se aprofundar pouco mais. Fora isso, a gente vai ter o fórum de discussão, então não deixem de usar o fórum, a gente vai ter sempre gente acompanhando o quórum, fórum, não o quórum. Vai ter quórum no fórum sempre, então qualquer dúvida que você tenha ou se você tem exemplo muito legal que você quer compartilhar com outras pessoas, você está tentando fazer uma coisa, não sabe muito bem como faz, posta sua dúvida lá no fórum, que, com certeza, ou colegas de curso ou pessoas aqui da equipe da USP, que estão ajudando a fazer e ministrar esse curso vão responder as suas perguntas, sem dúvidas. Então é isso, eu espero que vocês curtam bastante e vamos lá.