Um caminho para a educação autodidata em Ciência da Computação!
O Curso de Ciência da Computação oferecido pela Universidade Livre Brasileira é uma educação completa em Ciência da Computação usando materiais on-line e em Português do Brasil. Este Curso não é pensado para treinamento em tecnologias específicas ou focado em habilidades profissionais direcionadas ao mercado, e sim para aqueles que desejam uma educação própria, com qualidade, fundada nos conceitos fundamentais da computação e é planejada para alunos com disciplina, comprometimento e (o mais importante) bons hábitos de estudo majoritariamente independentes, mas que buscam o suporte de uma comunidade de outros estudantes no Brasil todo.
Este curso contém conteúdos que seriam vistos em um curso de Ciência da Computação organizados de forma estruturada. Os cursos em si são selecionados primariamente do conteúdo aberto de diversas Universidades e Institutos de Educação do Brasil. Entretanto, os cursos presentes na grade seguem os seguintes critérios:
Bases para a criação do Currículo (Guidelines):
Levamos em consideração - apesar de não termos implementado completamente conforme sugerido - os seguintes documentos sobre a formação de um currículo em Ciência da Computação. Continuaremos constantemente trabalhando e aceitando sugestões de melhorias para cada vez mais oferecer uma experiência melhor para todos os estudantes que seguem nosso guia aberto de conteúdos. Além das referências abaixo, também utilizamos como referência as grades curriculares de outras instituições de ensino superior brasileiras.
- Referenciais de Formação para os Cursos de Graduação em Computação 2017 (SBC)
- Diretrizes Curriculares de Cursos da Área de Computação e Informática (UFRGS)
Os Cursos devem:
- Ser gratuitos ou de conteúdo que possa ser assistido de forma aberta
- Possuir método pedagógico
- Ter reconhecimento de qualidade da Comunidade sobre o tema
- Estar de acordo com o que se espera do Currículo de Ciências da Computação
Todas as disciplinas possuem uma lista de leituras recomendadas. É de sua responsabilidade escolher a metodologia mais adequada. Note que os livros, em sua maioria, não são gratuitos.
Cursos de qualidade recomendados que não se encaixam na grade serão adicionados em cursos extras. O mesmo ocorrerá quanto aos livros em livros extras.
Todos os cursos podem ser completados de forma gratuita. Porém, alguns cursos têm diplomas, certificados, atividades, ou extras opcionais que são pagos. Observe que o Coursera oferece ajuda financeira.
Os estudantes podem fazer as disciplinas individualmente ou em grupo, seguindo a ordem que estabelecemos ou não, sempre respeitando os pré-requisitos curriculares.
Apenas publique em seu GitHub e espaços públicos os materiais que seu Curso permite que sejam publicados. Nunca desrespeite nenhuma regra do curso em que se matriculou e nunca faça plágios!
Conseguindo ajuda (Detalhes sobre o FAQ e servidor)
- Temos um servidor no Discord! Nele, você poderá encontrar e interagir com outros estudantes. Por que não se apresenta lá agora mesmo? Vem para o Discord.
- Você também pode interagir sobre questões a respeito dos problemas do Curso, propor mudanças de Currículo e outras coisas relacionadas por meio das nossas issues. Sinta-se à vontade para abrir discussões lá.
- Adicione a Universidade Brasileira Livre no seu perfil do LinkedIn!
Há tópicos que, apesar de não serem essenciais na formação de Ciência da Computação, podem ser muito úteis na sua jornada de aprendizado. Se desejar, você pode optar por ignorá-los momentaneamente e revisá-los posteriormente.
Antes de começar a estudar é importante que você aprenda algumas coisas importantes. Ser autodidata não é sobre aprender sozinho, nem sobre não estar vinculado à uma Instituição de Ensino Superior (IES), mas sobre ser responsável pelo seu próprio ensino e isso é algo que exige saber como estudar, o quanto estudar, e como organizar seus estudos. Para isso, recomendamos os seguintes conteúdos abaixo.
Curso | Conteúdos |
---|---|
Aprendendo a aprender ¹ | Memória; Técnicas de estudo; Recursos de estudo. |
Como estudar do jeito certo | Tempo; Técnica; Discussão. |
¹ Disponível com legendas em Português.
Conhecer ferramentas como o Git o ajudará a organizar seus projetos de estudo. O GitHub - ou outras plataformas como BitBucket ou GitLab - pode ser muito útil para trabalhar remotamente e compartilhar os seus projetos com colegas, além de poder usá-lo como portfólio em futuras oportunidades de trabalho.
Curso | Conteúdos |
---|---|
Git e Github para Iniciantes | Git; GitHub; Controle de versão. |
Git e GitHub | Git; GitHub; Controle de versão. |
Você pode fazer os cursos na ordem, onde, e como preferir. Este é o maior benefício da liberdade. Entretanto, por fins didáticos e de organização, recomendamos que tente respeitar os pré-requisitos. Você perceberá que não cumprir com estes poderá criar obstáculos em sua jornada.
(Clique na imagem para ampliar.)
A grade curricular abaixo está dividida em etapas para melhor visualização
Etapa | Aulas em Vídeo | Pré-requisitos | Leitura Recomendada |
---|---|---|---|
1 | Circuitos Digitais | - | Livros sobre Circuitos Digitais |
1 | Matemática Discreta | - | Livros sobre Matemática Discreta |
1 | Linguagens de Programação | - | Livros sobre Linguagens de Programação |
1 | Introdução à Ciência da Computação com Python I | - | Livros sobre Introdução a CC |
1 | Geometria Analítica | - | Livros sobre Geometria Analítica |
Após ter concluído a formação geral, você já deve ter uma ampla visão sobre Ciência da Computação, seus fundamentos e aplicações e estará mais que preparado para escolher uma área de especialidade dentro de suas aplicações para se tornar especialista. A partir daqui não vamos mais elencar pré-requisitos, pois entendemos que com a bagagem da formação geral o aluno já consegue ter pleno conhecimento sobre como estudar temas complexos e decidir como e quando fazer cada curso sem necessitar de recomendação.
Especialização | Áreas de Atuação |
---|---|
Computação Gráfica | softwares gráficos , aplicações 3D , games , fotorrealismo , sistemas gráficos , simuladores , e mais |
Embarcados | internet das coisas , controles industriais , coisas inteligentes , wearables , cidades inteligentes , automobilismo , e mais |
Desenvolvimento Web | aplicações em servidor , layout de páginas web , sistemas on-line , APIs , computação em nuvem , streaming , e mais |
Ciência de Dados | análise de dados , visualização de dados , machine learning , deep learning , sistemas especialistas , estatística , e mais |
CyberSecurity | segurança , pentest , criptografia , autenticação , análise , estatística , e mais |
DevOps | devops , infraestrutura , container , docker , kubernetes , CI/CD , e mais |
Design de Algoritmos | em breve |
A melhor forma de demonstrar sua evolução e maturidade ao longo do currículo é por meio de exercícios. Estes exercícios podem ser os encontrados nas leituras recomendadas ou, em caso de disciplinas mais aplicadas, projetos práticos. Compartilhar sobre os projetos que tem feito ao longo do Curso, seja por meio de redes sociais, blogues, tutoriais, streaming... vai demonstrar para as pessoas do meio técnico e de outros meios o quanto você aprendeu e evoluiu ao longo dessa jornada.
Não deixe de hospedar todos os seus códigos em seu perfil do GitHub, mesmo que sejam pequenos projetos ou apenas exercícios eles podem demonstrar muito sobre o que você tem estudado, como você resolve problemas e o quanto você melhorou ao longo do tempo.
Após completar todos os requisitos do currículo acima e aprender ao menos uma especialização você já viu todo o conteúdo equivalente a um Bacharelado completo em Ciência da Computação. Parabéns!
O que fazer após isso? Bem, na verdade as possibilidades são sem limites e interconectadas:
- Procurar um trabalho como Desenvolvedor em sua especialidade.
- Aprender mais lendo livros clássicos de Ciência da Computação em um Clube do Livro para melhorar suas habilidades e expandir seu conhecimento (além de fazer muitos amigos)!
- Participar ou organizar meetups de tecnologia.
- Encontrar novas tecnologias que estão crescendo:
- Explorar o modelo de atores (actor model) com Elixir ou Scala, que são linguagens modernas com ferramental e bibliotecas muito interessantes para Desenvolvimento Web e que utilizam VM's muito poderosas!
- Explorar empréstimo (borrowing) e tempo de vida (lifetimes) em Rust, uma linguagem que tem segurança de memória e de fio de execução sem um coletor de lixo!
- Aprender mais sobre tipos e inferência de tipos com OCaml, uma linguagem multiparadigma com inferência estática de tipos!
- Camilo Cunha de Azevedo: Fundador da ULivre
- Mateus Roveda: Líder de Comunidade
- Leonardo Fiedler: Mantenedor da Especialização em Ciência de Dados
- Jefferson Quesado: Mantenedor da Especialização em Desenvolvimento Web
- Marcus Rodrigues: Mantenedor do Site do Projeto
- Rotfuchs von Vulpes: Moderador da Comunidade
- Emanuel Castelo: Moderador da Comunidade
- Gustavo Schneider: Moderador da Comunidade
Nosso muito obrigado a todas essas pessoas!
E a todos os outros educadores, produtores de conteúdo e pessoas que contribuíram com esse projeto, mas não possuem perfil ou ainda não os encontramos!