/ciencia-da-computacao

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

MIT LicenseMIT

Universidade Livre Brasileira

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

Awesome Open Source Society University - Computer Science

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 Esse Curso não é pensado para treinamento em tecnologias especificas ou focado em habilidades profissionais direcionadas ao mercado. Esse Curso é pensado para aqueles que desejam uma educação própria, com qualidade, fundada nos conceitos fundamentais da computação e é planejada para alunos com disciplina, cometimento 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.

Esse curso contêm conteúdos que seriam vistos em um curso de Ciência da Computação organizados de forma estruturada e que contêm disciplinas relacionadas computação e também disciplinas de formação geral (acreditamos que uma formação completa abranja mais do que simplesmente CC). Os cursos em si são selecionados primariamente do conteúdo aberto de diversas Universidades e Institutos de Educação do Brasil, mas no geral os cursos presentes na grade seguem o seguinte critério:

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 espera-se do Currículo de Ciências da Computação

Os cursos tem como suplementação sempre que possível livros. Quando um livro ou curso de qualidade for recomendável a leitura, mas não encaixar-se com o currículo ele deverá ser adicionado nas listas de cursos extra e livros extra respectivamente.

Organização. O Currículo é organizado da seguinte forma:

  • Introdução a Computação: Contêm os conteúdos de introdução, é onde você pode começar e ver se quer fazer CS.
  • Aprofundamento de Conceitos Introdutórios: Contêm os conteúdos que começam a aprofundar os conceitos introdutórios.
  • Desenvolvimento Teórico: Contêm os conteúdos que servem como base para a construção de bases teóricas.
  • Desenvolvimento Técnico: Contêm os conteúdos que começam a desenvolver bases técnicas.
  • Aprofundamento Técnico: Contêm os conteúdos que utilizam as bases teóricas e técnicas para contruir fundamentos práticos.
  • Tópicos Finais: Conteúdos que utilizam-se de todo conhecimento adquirido nos tópicos anteriores para técnicas avançadas de computação.

Duração. É possível terminar o curso em x anos, dedicando x horas por dia. Os estudantes podem utilizar a planilha que ainda vamos disponibilizar para estimar o tempo de curso que ainda falta para a conclusão.

Custo. Todos os cursos podem ser completados de forma gratuita. Porém, alguns cursos tem diplomas/certificados/atividades/extras opcionais que são pagos. Observe que o Coursera oferece ajuda financeira.

Decida quanto tempo de curso e quanto quer gastar em seus estudos nesse curso por sua própria conta, apenas tenha sempre em mente que você não pode comprar o sucesso!

Processo. Os estudantes podem fazer as disciplinas individualmente ou em grupo, seguindo a ordem que estabelecemos ou não.

Política de Conteúdo. 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!

Comunidade

  • Temos um servidor no Discord! Discord Aqui você pode encontrar e interagir com outros estudantes. Porquê não se apresenta lá agora mesmo? Vem pro Discord.
  • Você também pode interagir sobre questões a respeito do problemas com Curso, propor mudanças de Currículo e outras coisas relacionadas atráves das nossas issues, sinta-se a vontade para abrir discussões lá.

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, como organizar seus estudos... e para isso recomendamos os seguintes conteúdos abaixo.

Curso Duração Dedicação Conteúdos
Aprendendo a aprender ¹ 3 Semanas 5 horas/semana Memória; Técnicas de estudo; Recursos de estudo.
Como estudar do jeito certo 3 Semanas 2 horas/semana Tempo; Técnica; Dsicussão.

¹ Disponível com legendas em Português.

Currículo

O currículo deste Curso se divide em duas categorias: a das Disciplinas de Formação Geral e as Disciplinas de Especialização. As disciplinas de formação geral são essenciais na formação de todos os alunos idependente de qual área ou especialização desejam seguir e são a base para o conteúdo técnico-teórico para os cursos de especialização. Você pode fazer os cursos na ordem, onde e como preferir e esse é o maior benefício da liberdade, mas por fins didáticos e de organização recomendamos que tente respeitar os pré-requisitos e que conclua todas as disciplinas de formação geral antes de prosseguir nas de especialização.

organização do currículo por área


Formação Geral

Introdução a Computação

Curso Duração Dedicação Conteúdos Pré-requisitos
Introdução à Ciência da Computação com Python I 9 Semanas 4 horas/semana Algoritmos; Lógica de Programação; Python; Testes. -
Matemática Básica 9 Semanas 4 horas/semana Números Primos; Bases Numéricas; Módulo; Gráficos. -
Introdução à Conceitos de Computação 4 semanas 2 horas/semana Sistemas Operacionais; Redes; Arquivos; História da Computação. -
Leitura e Produção de Textos 4 semanas 2 horas/semana Língua Portuguesa; Escrita; Gramática; Argumentação. -
Circuitos Digitais 9 semanas 4 horas/semana Portas Lógicas; Diagramas; Máquinas de Estado; Projeto de Circuitos. -

Aprofundamento de Conceitos Introdutórios

Curso Duração Dedicação Conteúdos Pré-requisitos
Introdução à Ciência da Computação com Python II 6 Semanas 4 horas/semana Matrizes; POO; Recursão; Complexidade de Algoritmos. Introdução à Ciência da Computação com Python I
Fundamentos Matemáticos para Computação 9 Semanas 4 horas/semana Lógica Formal; PROLOG; Recursão; Matrizes; Booleanos; Grafos. Matemática Básica
Arquitetura de Computadores I 9 Semanas 4 horas/semana Memória; Booleans; Arquitetura; RISC-V. Circuitos Digitais
Noções de Ingês 9 Semanas 4 horas/semana Inglês básico; Técnicas de Leitura; Escrita. -
Noções de Direitos Autorais, parte I 9 Semanas 4 horas/semana Direito Autoral; Direito do Autor; Limitação do Direito do Autor. -
Noções de Direitos Autorais, parte II 9 Semanas 4 horas/semana Patentes Digitais; Registro de Programas de Computador. Noções de Direitos Autorais, parte I

Desenvolvimento Técnico

Curso Duração Dedicação Conteúdos Pré-requisitos
Programação Orientada a Objetos I 6 Semanas 4 horas/semana OOP; Streams; MVC; Design Patterns. Introdução à Ciência da Computação com Python II
Bancos de Dados 4 Semanas 3 horas/semana MER; Projeto de Banco de Dados; Normalização; SQL. -
Arquitetura de Computadores II 9 Semanas 4 horas/semana Cache; Paralelismo; ASM; RISC-V. Arquitetura de Computadores I
Estatística e Probabilidade 9 Semanas 4 horas/semana Espaços Discretos; Bayes; Distribuições; Variância; Regressão. Matemática Básica
Princípios de Desenvolvimento Ágil de Software 9 Semanas 4 horas/semana XP; User Stories; Taks; Sprint; Diagramas. -

Desenvolvimento Teórico

Curso Duração Dedicação Conteúdos Pré-requisitos
Desenvolvimento Ágil com Java Avançado 4 Semanas 3 horas/semana JDBC; Servlets; Web; Lambda Calculus. Princípios de Desenvolvimento Ágil de Software, Programação Orientada a Objetos I
Cálculo I 4 Semanas 3 horas/semana Funçõpes; Limite; Derivada; Trigonometria; Mat. Espacial. Matemática Básica
Teoria dos Grafos 4 Semanas 3 horas/semana Grafos; Representações; Listas; Árvores. Fundamentos Matemáticos para Computação, Programação Orientada a Objetos I
Sistemas Operacionais 4 Semanas 3 horas/semana Processos; Threads; Calls; I/O. Arquitetura de Computadores II
Banco de Dados MySQL 3 Semanas 4 horas/semana CRUD; Consultas; Tabelas. Introdução à Ciência da Computação com Python II, Bancos de Dados

Aprofundamento Técnico

Curso Duração Dedicação Conteúdos Pré-requisitos
Interfaces Humano-Computador 3 Semanas 3 horas/semana Estudos de Usuário; Design; Avaliação de Interfaces. -
Estrutura de Dados 2 Semanas 3 horas/semana Filas; Pilhas; Árvores; Ordenação. Teoria dos Grafos
Redes de Computadores 2 Semanas 3 horas/semana Protocolos; UDP; TCP; Comunicação. -
Criação de Startups 2 Semanas 3 horas/semana Canvas; MVP; Modelo de Negócio; Pitch. -
Introdução ao Desenvolvimento de Aplicativos Android 2 Semanas 3 horas/semana Aplicativos; Android Studio; Views. Desenvolvimento Ágil com Java Avançado

Tópicos Finais

Curso Duração Dedicação Conteúdos Pré-requisitos
Paradigmas de Programação 2 Semanas 3 horas/semana Programação Funcional; Cálculo Lambda; Haskell; Monads. Estrutura de Dados
Compiladores 2 Semanas 3 horas/semana Lexers; Parsers; AST; Generators. Teoria dos Grafos
Gerência da Qualidade de Software 2 Semanas 3 horas/semana Testes; Estimativas; Processos. -
Fundamentos da Inteligência Artificial 2 Semanas 3 horas/semana Regressão Linear; Gradientes; Redes Neurais; Perceptons. Teoria dos Grafos
Metodologia da Pesquisa em Computação 8 Semanas 5 horas/semana Pesquisa; Artigos; Métodos; Publicação. -

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 a partir de ter a bagagem da formação geral o aluno já consegue ter pleno conhecimento sobre como estudar temas complexos e consegue decidir como e quando fazer cada curso sem necessitar de recomendaç

Computação Gráfica

Áreas de aplicação: softwares gráficos aplicações 3D games fotorealismo sistemas gráficos simuladores e mais

Curso Duração Dedicação Conteúdos
Pixar in a Box 2 Semanas 3 horas/semana Renderização; Animação; Curvas; 3D.
Algebra Linear I 4 Semanas 3 horas/semana Sistemas lineares; Vetores; Espaços Vetoriais.
Programação em Julia ¹ ? Semanas ? horas/semana Algoritmos; Julia; Algebra Linear.
Tópicos de Computação Gráfica ? Semanas ? horas/semana Ray Tracing; Reflexos; Imagens; Reconstrução de Imagens.
Conceitos Básicos de Computação Gráfica 4 Semanas 8 horas/semana Objetos gráficos; Modelagem geométrica; Fundamentos de sistemas gráficos.
Processamento de Imagens 4 Semanas 8 horas/semana Imagem digital; Quantização; Operações com imagens; Dithering; warping de imagens; Aplicações
Processamento de Imagens em Python ? Semanas ? horas/semana Redimensionamento; Efeitos; Animação; Detecção.
(Em construção)

¹ Esse curso está dísponível apoiando a partir de R$ 2,99/mês o Canal.

Embarcados

Áreas de aplicação: internet das coisas controles industriais coisas inteligentes wearables cidades inteligentes automobilismo e mais

Curso Duração Dedicação Conteúdos
Curso de C moderno 4 Semanas 3 horas/semana C; GDB; Tooling; Unix.
Curso de Makefile 4 Semanas 3 horas/semana Make; Makefile.
Conceitos de Eletrônica 4 Semanas 3 horas/semana Sinais; Circuitos; Energia; Polaridade.
Eletrônica para Iniciantes 5 Semanas 8 horas/semana Esquemáticos; Portas Lógicas; Circuitos; Carga.
Curso de AVR-C 2 Semanas 4 horas/semana C para Microcontroladores; Operações bit-a-bit; Datasheets.
Curso de AVR Periféricos 2 Semanas 3 horas/semana Displays; Timers; Conversores; Comunicação.
Curso de C++ 3 Semanas 4 horas/semana OOP; Smart Pointers; Biblioteca padrão.
Cuso de FreeRTOS 2 Semanas 2 horas/semana Filas; Tasks; Timers; Async.
Curso de FPGA 4 Semanas 4 horas/semana VHDL; Verilog; ASIC.
(Em construção)

Desenvolvimento Web

Áreas de aplicação: aplicações em servidor layout de páginas web sistemas on-line APIs computação em nuvem streamming e mais

Curso Duração Dedicação Conteúdos
HTML e CSS, Parte I 5 Semanas 8 horas/semana Tags; Hierarquias; Semântica.
HTML e CSS, Parte II 5 Semanas 8 horas/semana Elementos; IDs; Variáveis.
JavaScript Básico 5 Semanas 8 horas/semana Sintaxe; DOM; Funções.
Curso de JavaScript ES6 4 Semanas 2 horas/semana Módulos; Async/Await; Promisses; Estrutura de Dados.
Debuggando JavaScript - 30 minutos Logs; DEV Tools.
Curso de SASS 2 Semanas 2 horas/semana Preprocessamento CSS; Mixin; Output.
Node.js (Express) 4 Semanas 4 horas/semana Handlebars; Middlewares; Sequelize; MVC.
ESLint + Prettier + editorconfig - 30 minutos Formatação de Código; Padronização de Código; Linters.
Curso Básico REST APIs 4 Semanas 4 horas/semana Modelos de Maturidade; Verbos e Status; Recursos; Modelagem.
Curso de React 4 Semanas 4 horas/semana Componentes; Estado; Hooks; API; Navegação.
Mini-curso de TypeScript 2 Semanas 2 horas/semana Tipos; Compilador; Classes; Generics.
Node (Express) com TypeScript 2 Semanas 2 horas/semana Rotas; JWT; Tipos; Optionals.

Desenvolvimento Mobile

Áreas de aplicação: jogos mobile aplicativos para smartphone desenvolvimento para tablets iOS && Android aplicativos comerciais redes sociais e mais

(Em construção)

Database Administrator (DBA)

Áreas de aplicação: administração de banco de dados organização de tabelas de dados optimização de querys segurança de dados criação de rotinas de bd big data e mais

(Em construção)

Data Science

Áreas de aplicação: analise de dados visualização de dados machine learning deep learning sistemas epecialistas estat e mais

(Em construção)