Open Source Society University – Roadmap gratuito de autoaprendizado em Ciência da Computação
(github.com/ossu)- O currículo da OSSU oferece uma formação completa em Ciência da Computação gratuitamente por meio de materiais online das melhores universidades do mundo
- Reproduz a estrutura de um currículo universitário de bacharelado em Ciência da Computação com introdução, núcleo, avançado e projeto final
- Todas as aulas e tarefas são gratuitas ou majoritariamente gratuitas, embora algumas avaliações possam ter custo
- Uma ativa rede global de apoio a estudantes, incluindo a comunidade no Discord, continua em operação com atualizações constantes dos materiais
- Quem estuda pode ajustar o ritmo e fazer escolhas de forma flexível, individualmente ou em grupo, conforme sua própria situação
O que é a OSSU e por que ela é importante
A OSSU (Open Source Society University) é um currículo open source projetado para que qualquer pessoa possa obter, por conta própria e sem custos, uma formação em Ciência da Computação no nível de um curso superior regular. Ela utiliza aulas abertas e materiais de universidades de ponta como Harvard, MIT e Princeton, e seu objetivo não é apenas transmitir conhecimento pontual, mas oferecer uma experiência de aprendizado equilibrada entre teoria, prática e aplicação.
- Todos os materiais de estudo são selecionados entre recursos gratuitos e de alta qualidade disponíveis online
- Reflete rigorosamente padrões internacionais de graduação básica em computação, como o padrão CS2013
- O público principal são pessoas capazes de manter motivação própria e hábitos consistentes de estudo, além de buscar ajuda em uma comunidade global de aprendizagem
Estrutura e características do currículo
- Introdução (Introduction to CS): permite experimentar os conceitos básicos e o interesse pela Ciência da Computação e pela programação. Inclui programação em Python, teoria da computação, estruturas de dados básicas e algoritmos
- Núcleo (Core CS): corresponde a um currículo universitário até o terceiro ano, cobrindo programação (funcional, orientada a objetos, design de software), matemática (matemática discreta, estatística, probabilidade, cálculo), sistemas (arquitetura de computadores, SO, redes), teoria (algoritmos, problemas NP etc.), segurança, aplicações e ética
- Avançado (Advanced CS): corresponde ao último ano do curso. É possível escolher áreas de interesse entre programação avançada, sistemas, teoria, segurança da informação e matemática avançada
- Projeto final: usa o conhecimento adquirido para realizar um projeto real, compartilhando e validando o resultado com colegas do mundo todo. Pode ser usado como comprovação de habilidades práticas e como portfólio para emprego
Forma de estudo e custos
- É possível estudar o currículo individualmente ou em grupo
- Recomenda-se concluir os cursos em ordem, mas também é possível pular conteúdos que você já domina
- Todas as aulas são oferecidas gratuitamente online. Em algumas plataformas (Coursera, edX etc.), pode haver custo para avaliação de tarefas/provas/projetos, mas na maioria dos casos o aprendizado em si é gratuito. Também há orientação sobre apoio financeiro (bolsas/Financial Aid) para reduzir a carga econômica
- Há um modelo de Google Sheets para ajudar a gerenciar o progresso dos estudos e a previsão de conclusão
Comunidade e suporte
- Há um servidor no Discord para participantes, com discussões de aula, perguntas e conexão entre colegas acontecendo ativamente
- Existem canais ativos de feedback, como GitHub Issues e sugestões de melhoria do currículo
- É possível adicionar a conclusão da OSSU ao perfil no LinkedIn
Recomenda-se verificar o currículo mais recente pelo site oficial e pelo repositório no GitHub
Lista detalhada do currículo
Pré-requisitos
- O núcleo de CS exige matemática de nível de ensino médio (álgebra, geometria, pré-cálculo)
- O CS avançado só pode ser escolhido após concluir todo o núcleo
- A disciplina Advanced systems exige conhecimentos básicos de física em nível de ensino médio
Introdução à CS (Introduction to CS)
- Primeiro passo em Ciência da Computação. Introduz operações básicas, programação imperativa, estruturas de dados, algoritmos etc.
- Aula obrigatória: 'Introduction to Computer Science and Programming using Python' (14 semanas)
Núcleo de CS (Core CS)
Programação
- Prática ampla em funcional/orientada a objetos/testes/padrões/tipagem/diversidade de linguagens etc.
- Systematic Program Design, Programming Languages (A–C), Object-Oriented Design, Software Architecture etc.
Matemática
- Inclui matemática discreta, provas matemáticas, estatística básica, notação O, probabilidade e cálculo
Ferramentas e ambiente de desenvolvimento
- Ferramentas essenciais para o trabalho, como terminal, shell scripting, vim, linha de comando e controle de versão (
git)
Sistemas
- Compreensão geral de como o computador funciona, do hardware ao sistema operacional e às redes
- Exemplos: projeto Nand to Tetris, OS Three Easy Pieces, Networking etc.
Teoria
- Inclui análise de algoritmos, divisão e conquista, grafos, programação dinâmica, problemas NP etc.
Segurança
- Inclui fundamentos de segurança da informação, programação segura, análise de vulnerabilidades, redes/criptografia e matérias optativas relacionadas
Aplicações
- Cobre amplamente áreas práticas como bancos de dados, machine learning, computação gráfica e engenharia de software
Ética
- Enfatiza a ética essencial para profissionais de tecnologia, como contexto social da tecnologia, profissionalismo, propriedade intelectual e privacidade de dados
CS Avançada (Advanced CS)
- Disciplinas eletivas conforme carreira/área de interesse: programação paralela, compiladores, linguagens como Haskell/Prolog, debugging/testing de software
- Ampla variedade de opções, incluindo arquitetura de computadores, análise numérica/lógica/probabilidade, teoria da computação, segurança da informação e construção de sistemas
Projeto Final (Final Project)
- Escolha, desenho, implementação e compartilhamento de um projeto prático
- Exemplos de opções: serviço full-stack, robótica, data mining, big data, IoT, cloud computing, data science, desenvolvimento de jogos etc.
- Pode ser feito por conta própria ou com uso de cursos recomendados
Depois de concluir os estudos
- Certificação de aquisição de conhecimento equivalente ao de um bacharelado na área de CS
- Recomendações de continuidade, como preparação para emprego, leitura aprofundada (lista fornecida) e encontros presenciais de desenvolvedores
- Incentivo à exploração de novas tecnologias (linguagens como Elixir/Rust/Idris etc.)
Regras de operação e equipe
- Cumprimento do Código de Conduta da OSSU
- Orientações para marcar e gerenciar seu próprio progresso no GitHub (com uso de kanban)
Principais mantenedores da OSSU
- Eric Douglas (fundador da OSSU), Josh Hanson (mantenedor técnico), Waciuma Wanjohi (mantenedora acadêmica) e outros colaboradores do mundo todo
Encerramento
A OSSU abre caminho para que qualquer pessoa no mundo desenvolva, gratuitamente, capacidades em Ciência da Computação no nível de uma graduação formal e possa entrar de forma ampla na prática profissional e nas carreiras da indústria moderna de TI.
A combinação de progresso flexível, critérios rigorosos, comunidade global e materiais gratuitos de alta qualidade é seu grande diferencial em relação a outros currículos abertos.
4 comentários
> Acho que matérias no estilo “não estude CC” estão perdendo o verdadeiro sentido.
A tradução ficou muito boa, que curioso kkk
OSSU Open Source Society University - Estudando Computer Science por conta própria
Acho que isso foi apresentado no início do GeekNews. Desde então, bastante coisa foi adicionada.
Comentários do Hacker News
Como engenheiro experiente, acho que o OSSU é um lugar realmente excelente para quem quer ajudar aprendizes
Eu administro um programa educacional para ajudar estudantes a estudar ciência da computação de forma autodirigida. Às vezes também usamos o currículo do OSSU como material de referência
O self-learning tem muitas vantagens, mas os estudantes precisam saber que também há pontos de atenção
Você precisa se esforçar mais por conta própria em “sinalização” e networking, e os benefícios sociais de estar vinculado a uma universidade tendem a faltar no self-learning
Não ter diploma significa, de certa forma, estar em estado de “marked”; veja a explicação aqui
Quando algo dá errado ou surge uma dificuldade, é fácil atribuir a causa ao fato de não ter diploma
Alguns recrutadores acham que contratar alguém sem diploma é um risco político, então pode ser difícil até conseguir entrar
Não é algo impossível de superar, mas por isso nós já nos preparamos para isso desde o começo e lidamos com essa questão juntos
As vantagens do self-learning são a velocidade de aprendizado e a possibilidade de aprender tudo com contexto, sem repetir etapas inúteis
Se você perceber que está com falhas na base, pode voltar e aprender aquilo depois
Acho que esse é um jeito inevitável de aprender em cargos técnicos, mas não funciona para todos os estudantes
Na prática, é uma pena que muitas vezes as pessoas sejam “forçadas” ao self-learning porque não conseguem ir para a universidade por questões financeiras
Se você não conhece bem os trade-offs, isso pode tornar tudo ainda mais difícil
Referência: Divepod
Já mentorei o processo de self-learning de várias pessoas
Eu, ainda jovem, logo depois de terminar o ensino médio, desperdicei boas oportunidades por não conseguir concluir direito uma graduação em CS
Pessoalmente, acho que Teach Yourself CS é uma alternativa melhor
Sou um exemplo de que dá para construir uma carreira apenas com self-learning
Já trabalho na indústria há mais de 20 anos
Mas, se você escolhe esse caminho, com certeza existem empresas e cargos aos quais você “nunca” terá acesso
Em geral, são justamente as melhores empresas, as mais bem pagas e os empregos com melhores condições
Mais importante do que o diploma em si é a rede de ex-alunos. Existe um “grande clube” em que quem estudou na mesma instituição contrata uns aos outros
Se você fizer self-learning, nunca vai ter acesso a essa rede
E a realidade? Sobram os empregos que todo mundo rejeita. Lugares absurdos, golpes, startups sem dinheiro, empresas já em crise
Mesmo quando você consegue uma vaga boa, é difícil permanecer nela por muito tempo
O salário é menor, e o risco de ser explorado é bem maior
Também é difícil receber múltiplas ofertas, então sua posição no mercado fica mais fraca
Isso pode fazer a carreira inteira parecer seguir uma trilha financeira completamente diferente
Buscar emprego é muito mais difícil; você precisa se esforçar o dobro
Você frequentemente sofre uma espécie de suspeita, tanto de si mesmo quanto dos colegas, sobre sua “legitimidade”
O impacto de um único erro pode ser enorme
Ainda assim, é melhor do que não fazer nada, mas se você tiver a oportunidade, acho melhor ir para a faculdade
Não quero diminuir sua experiência, mas eu tive uma trajetória 100% autodidata e trabalhei em empresas de vários tipos, incluindo big techs, unicórnios e startups
Trabalhei alguns anos como desenvolvedor de software e depois voltei para a faculdade para cursar CS
Essa história é verdadeira até certo ponto, mas em geral só vale no começo da carreira e quando suas habilidades ainda estão na faixa inferior do seu grupo de pares
Eu sou meio ADHD e também estou em algum ponto do espectro autista
Algo que muita gente esquece nessa conversa é que o principal motivo para estudar ciência da computação não precisa ser emprego ou melhoria de habilidades para o trabalho
Fico em dúvida se o currículo não acaba tendo limitações justamente por ser composto apenas de cursos “gratuitos e open source”
Acho que, para estudar direito, a pessoa não deveria hesitar em investir dinheiro em materiais de qualidade
Concordo com isso
Acho que o diploma compensa a maior parte das desvantagens sociais
Em muitos comentários, as pessoas misturam a ideia de que a faculdade cria networking com a de que certas empresas só contratam gente de determinadas universidades
É verdade que oportunidades de emprego por conexões na universidade ou na carreira aumentam
Mas, à medida que a carreira avança, as conexões construídas depois da faculdade passam a ter muito mais força
Em cargos que exigem um diploma de uma universidade específica ou um PhD, o valor é menos de networking e mais de “sinal”
Ou seja, um sinal confiável para o recrutador, sem necessidade de perguntar mais nada
O autodidata precisa contornar isso ou fazer esforço extra
A direção costuma ser ganhar visibilidade por contatos ou pelo próprio trabalho, ou conseguir recomendações e escapar do processo seletivo normal
Quando ouço “as oportunidades em si desaparecem completamente”, isso me faz pensar naquela ideia de que “sorte não é estratégia, mas aumentar o número de tentativas aumenta a chance de sorte”
Fico me perguntando qual é exatamente o objetivo
Acho um pouco frustrante que, nesse tipo de discussão, os dois lados acabem adotando posturas excessivamente defensivas
Muito legal mesmo.