Skip to content

🎓 Um caminho para a educação autodidata em Ciência da Computação!

License

Notifications You must be signed in to change notification settings

wcarestini/ciencia-da-computacao

 
 

Repository files navigation

Universidade Brasileira Livre

Um caminho para a educação autodidata em Ciência da Computação!

Awesome Open Source Society University - Computer Science

Twitter LinkedIn LinkedIn

Conteúdos

Sumário

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.

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!

Como contribuir

Conseguindo ajuda (Detalhes sobre o FAQ e servidor)

Comunidade

  • Temos um servidor no Discord! 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!

Antes de começar

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.

Técnicas de estudo, organização e aprendizagem

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.

Git e GitHub

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.

Currículo

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.

Dependências entre assuntos

(Clique na imagem para ampliar.)

Obrigatórias

A grade curricular abaixo está dividida em etapas para melhor visualização

1ª Etapa

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

2ª Etapa

Etapa Aulas em Vídeo Pré-requisitos Leitura Recomendada
2 Cálculo I Geometria Analítica Livros de Cálculo I
2 Álgebra Linear I Geometria Analítica Livros de Álgebra Linear
2 Estruturas de Dados Matemática Discreta

Introdução à Ciência da Computação com Python I
Livros de Estruturas de Dados
2 Introdução à Ciência da Computação com Python II Introdução à Ciência da Computação com Python I Livros de Introdução a Programação
2 Laboratório de Programação Orientada a Objetos I Introdução à Ciência da Computação com Python I Livros sobre Orientação a Objetos

3ª Etapa

Etapa Aulas em Vídeo Pré-requisitos Leitura Recomendada
3 Algoritmos em Grafos Estruturas de Dados Livros sobre Algoritmos em Grafos
3 Arquitetura de Computadores I Circuitos Digitais Livros sobre Arquitetura de Computadores I
3 Probabilidade e Estatística Cálculo I Livros sobre Probabilidade e Estatística
3 Cálculo II Cálculo I Livros sobre Cálculo II
3 Programação Funcional em Haskell - Livros sobre Programação Funcional

4ª Etapa

Etapa Aulas em Vídeo Pré-requisitos Leitura Recomendada
4 Análise de Algoritmos Algoritmos em Grafos Livros sobre Análise de Algoritmos
4 Métodos Numéricos I Introdução à Ciência da Computação com Python I

Cálculo I
Livros sobre Métodos Numéricos
4 Banco de Dados - Livros sobre Bancos de Dados
4 Arquitetura de Computadores II Introdução à Ciência da Computação com Python II

Arquitetura de Computadores I
Livros sobre Arquitetura de Computadores
4 Programação Lógica - Livros sobre Programação Lógica

5ª Etapa

Etapa Aulas em Vídeo Pré-requisitos Leitura Recomendada
5 Redes de Computadores - Livros sobre Rede de Computadores
5 Introdução à Engenharia de Software Introdução à Ciência da Computação com Python II Livros sobre Engenharia de Software
5 Sistemas Operacionais Arquitetura de Computadores II Livros sobre Sistemas Operacionais
5 Programação Matemática Álgebra Linear I Livros sobre Programação Matemática/Pesquisa Operacional
5 Fundamentos de Computação Gráfica Geometria Analítica Livros sobre Computação Gráfica

6ª Etapa

Etapa Aulas em Vídeo Pré-requisitos Leitura Recomendada
6 Linguagens Formais e Autômatos Matemática Discreta Livros sobre Linguagens Formais e Autômatos
6 Inteligência Artificial Estruturas de Dados

Probabilidade e Estatística
Livros sobre Inteligência Artificial
6 Sistemas Distribuídos Redes de Computadores Livros sobre Sistemas Distríbuidos
6 Teoria dos Grafos Matemática Discreta Livros sobre Teoria dos Grafos
6 Cálculo III Cálculo II Livros sobre Cálculo III

7ª Etapa

Etapa Aulas em Vídeo Pré-requisitos Leitura Recomendada
7 Teoria da Computação Linguagens Formais e Autômatos Livros sobre Teoria da Computação
7 Deep Learning Inteligência Artificial Livros sobre Deep Learning
7 Compiladores Estruturas de Dados

Teoria dos Grafos
Livros sobre Compiladores
7 Computação Quantica Cálculo III

Arquitetura de Computadores II
Livros sobre Computação Quântica
7 Metodologia da Pesquisa - Livros sobre Metodologia de Pesquisa

Especializações

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

Como demonstrar o meu progresso?

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.

Parabéns!

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!

Time

Contribuidores

Nosso muito obrigado a todas essas pessoas!


Fabio Kon

📹

professordouglasmaioli

📹

Gabriel Guimaraes

📹

Pedro Thiago Valério de Souza

📹

Rodolfo Azevedo

📹

Eduardo Guerra

📹

Fábio dos Reis

📹

Matheus Felipe

👀

João Paulo Carvalho

🤔

Wellington Silva

🤔

Hallison Paz

📹 🤔

Fernando Mercês

📹 🚧

Fernando Masanori

📹

Emilio Francesquini

📹

Fabricio Olivetti de Franca

📹

Professor Isidro

📹

Fabio Levy Siqueira

📹

Luiz Velho

📹

Geofisicando

📹

WR Kits

📹

Bruno Miranda

📹

Gustavo Guanabara

📹

Victor Lima

📹

Lucas Nhimi

📹

oliveira-michel

📹

Willian Justen

📹

Kizzy Terra

📹

Andrew Rosário

📹

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!

About

🎓 Um caminho para a educação autodidata em Ciência da Computação!

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published