Universidade da Sociedade Fonte Aberta
Caminho para uma educação autodidacta livre em Ciência da Computação!
- Sumário
- Comunidade
- Curriculum
- Código de conduta
- Equipe
Resumo
O currículo da OSSU é uma educação completa em informática utilizando materiais em linha.Não é apenas para formação profissional ou desenvolvimento profissional.É para aqueles que querem uma formação adequada e bem fundamentada em conceitos fundamentais para todas as disciplinas informáticas, e para aqueles que têm a disciplina, vontade, e (mais importante!) bons hábitos para obter esta formação em grande parte por conta própria, mas com o apoio de uma comunidade mundial de colegas aprendizes.
É concebido de acordo com os requisitos de graduação das licenciaturas em ciências informáticas, menos os requisitos de educação geral (não-CS), uma vez que se assume que a maioria das pessoas que seguem este currículo já são educadas fora do campo da CS.Os cursos em si estão entre os melhores do mundo, frequentemente vindos de Harvard, Princeton, MIT, etc,mas especificamente escolhidos para satisfazer os seguintes critérios.
Cursos devem:
- Estar abertos à matrícula
- Executar regularmente (idealmente no formato auto-pacote, caso contrário correndo várias vezes por ano)
- Contecer com os padrões curriculares do CS 2013: Orientações Curriculares para Programas de Licenciatura em Informática
li>Ser de qualidade geralmente elevada em materiais didácticos e princípios pedagógicos
Quando nenhum curso cumpre os critérios acima mencionados, o trabalho do curso é complementado com um livro. Quando existem cursos ou livros que não se enquadram no currículo mas são de alta qualidade, eles pertencem em extras/cursos ou extras/leituras.
Organização. O currículo é concebido da seguinte forma:
- Introdução ao CS: para os alunos experimentarem o CS e verem se é adequado para eles
- Core CS: corresponde aproximadamente aos primeiros três anos de um currículo de informática, tendo aulas que todas as disciplinas seriam obrigadas a fazer
- CS avançado: corresponde aproximadamente ao último ano de um currículo informático, tendo aulas eletivas de acordo com os interesses do aluno
- Projecto Final: um projecto para os alunos validarem, consolidarem e exibirem os seus conhecimentos, a serem avaliados pelos seus pares em todo o mundo
Duração. É possível terminar dentro de cerca de 2 anos se planear cuidadosamente e dedicar cerca de 20 horas/semana aos seus estudos. Os alunos podem utilizar esta folha de cálculo para estimar a sua data final. Se fizer uma cópia pessoal pode introduzir as datas reais de conclusão do seu curso na folha Curriculum Data
e obter estimativas de conclusão actualizadas.
Custo. Todo ou quase todo o material do curso está disponível gratuitamente. No entanto, alguns cursos podem cobrar dinheiro por trabalhos/testes/projectos a serem classificados. Note que tanto o Coursera como o edX oferecem ajuda financeira.
Decidir quanto ou pouco gastar com base no seu próprio tempo e orçamento; basta lembrar que não pode comprar sucesso!
Processo. Os alunos podem trabalhar através do currículo sozinho ou em grupos, em ordem ou fora de ordem.
- Recomendamos a realização de todos os cursos do Core CS, só saltando um curso quando tiver a certeza de já ter aprendido o material anteriormente.
- Para simplificar, recomendamos trabalhar através de cursos (especialmente do Core CS) em ordem de cima para baixo, uma vez que já foram classificados topologicamente pelos seus pré-requisitos.
- Cursos em CS Avançado são eletivos. Escolha um tema (por exemplo, Programação Avançada) em que pretende tornar-se especialista e frequentar todos os cursos sob esse título. Também pode criar o seu próprio tema personalizado, mas recomendamos que obtenha validação da comunidade sobre o tema que escolher.
P>Política de conteúdos. Se planeia exibir publicamente alguns dos seus cursos, deve partilhar apenas ficheiros que lhe são permitidos.NÃO desrespeite o código de conduta que assinou no início de cada curso!
Como contribuir
Obter ajuda (Detalhes sobre as nossas FAQ e sala de chat)
Comunidade
- Temos um servidor de discórdia! Esta deve ser a sua primeira paragem para falar com outros estudantes da OSSU. Porque não te apresentas agora mesmo? Junte-se ao OSSU Discord
- Prerequisites
- Intro CS
- Introdução à Programação
- Introdução ao Computador Ciência
- Core CS
- Programação do núcleo
- Core matemático
- Ferramentas CS
- Sistemas de núcleo
- Teoria do núcleo
- Core aplicações
- Segurança central
- Programação avançada
- Sistemas avançados
- Teoria avançada
- Avançado aplicações
- Projecto final
li> Também pode interagir através de questões do GitHub. Se houver um problema com um curso, ou se for necessário alterar o currículo, este é o local para iniciar a conversa. Leia mais aqui.li>Subscreva a nossa newsletter.li>Adicionar a Open Source Society University ao seu perfil Linkedin!li>Nota: Existe uma aplicação não mantida e depreciada da firebase que poderá encontrar ao pesquisar no OSSU. Pode ignorá-la em segurança. Leia mais nas FAQ.
Curriculum
Versão curricular: 8.0.0
(ver CHANGELOG)
CS avançada
Pré-requisitos
- Core CS assume que o aluno já fez matemática do ensino secundário, incluindo álgebra, geometria, e pré-cálculo.
- CS Avançado assume que o aluno já tirou a totalidade do CS Básico e tem agora conhecimentos suficientes para decidir quais as opções a tomar.
- Nota que os sistemas Avançados assumem que o aluno tirou um curso básico de física (e.g. AP Physics in high school).
- Markdown:
(https://img.shields.io/badge/OSSU-computer--science-blue.svg)](https://github.com/ossu/computer-science)
- HTML:
<a href="https://github.com/ossu/computer-science"><img alt="Open Source Society University - Computer Science" src="https://img.shields.io/badge/OSSU-computer--science-blue.svg"></a>
- Lo>Procure um trabalho como programador!
- Verifica as leituras de livros clássicos que pode ler e que irão aguçar as suas competências e expandir os seus conhecimentos.
- Explorar o modelo de actor através de Elixir, uma nova linguagem de programação funcional para a web baseada na máquina virtual Erlang testada em batalha!
Intro CS
Introdução à Programação
Se nunca escreveu um for-loop, ou não sabe o que é uma string na programação, comece aqui. Este curso é auto-paced, permitindo-lhe ajustar o número de horas que passa por semana para satisfazer as suas necessidades.
Tópicos abrangidos:simple programs
simple data structures
Cursos | Duration | Effort | Prerequisites | |
---|---|---|---|---|
Python for Everybody | 10 weeks | 10 hours/week | none | chat |
Introdução à Informática
Este curso irá apresentar-lhe o mundo da Informática. Os alunos que tenham sido introduzidos à programação, quer a partir dos cursos acima, quer através do estudo noutro local, deverão frequentar este curso para obterem um sabor do material a vir. Se terminar o curso querendo mais, é provável que a Informática seja para si!
Tópicos abrangidos:computation
imperative programming
basic data structures and algorithms
and more
Introdução à Informática e Programação usando Python (alt) | 9 semanas | 15 horas/semana | alta álgebra escolar | chat |
Core CS
Todos os trabalhos de curso sob Core CS são necessários, salvo indicação em contrário.
Programação do núcleo
Tópicos abrangidos:functional programming
design for testing
program requirements
common design patterns
unit testing
object-oriented design
static typing
dynamic typing
ML-family languages (via Standard ML)
Lisp-family languages (via Racket)
Ruby
and more
Os cursos de Como Codificar são baseados no livro de texto Como Conceber Programas. A Primeira Edição está disponível gratuitamente online e inclui conjuntos de problemas e soluções. Os estudantes são encorajados a fazer estes trabalhos.
Cursos | Duração | Effort | Prerequisites | Discussão |
---|---|---|---|---|
Como codificar – Dados Simples | 7 semanas | 8-10 horas/semana | none | chat |
Como Codificar – Dados Complexos | 6 semanas | 8-10 horas/semana | Como Codificar: Dados Simples | chat |
5 semanas | 4-8 horas/semana | Como codificar (instrutor de audição) | chat | |
Linguagens de Programação, Parte B | 3 semanas | 4-8 horas/semana | Línguas de Programação, Parte A | chat |
Línguas de Programação, Parte C | 3 semanas | 4-8 horas/semana | Línguas de Programação, Parte B | chat |
Math Electives
Os alunos devem escolher um dos seguintes tópicos: cálculo, álgebra linear, lógica, ou probabilidade.
Cálculo
Cursos | Duração | Effort | Prerequisites | Discussion |
---|---|---|---|---|
Calculus 1A: Diferenciação | 13 semanas | 6-10 horas/semana | matemática da alta escola | chat |
Calculus 1B: Integração | 13 semanas | 5-10 horas/semana | chat | |
Calculus 1C: Sistemas de coordenadas & Série Infinita | 6 semanas | 5-10 horas/semana | Calculus 1B | chat |
Álgebra Linear
Cursos | Duração | Effort | Prerequisites | |
---|---|---|---|---|
– | – | matemática da alta escola | chat | |
Álgebra Linear | 14 semanas | 12 horas/semana | Essence of Linear Algebra | chat |
Logic
Cursos | Discussion | |||
---|---|---|---|---|
Introduction to Logic | 10 semanas | 4-8 horas/semana | set theory | chat |
Probabilidade
Duração | Effort | Prerequisites | Discussão | |
---|---|---|---|---|
Probabilidade | 24 semanas | 12 horas/semana | Diferenciação e Integração | chat |
Core Math
Para além da sua matemática eletiva, Os alunos devem completar o seguinte curso de matemática discreta.
Tópicos abrangidos:discrete mathematics
mathematical proofs
basic statistics
O-notation
discrete probability
and more
Cursos | Notes | Prerequisites | Discussão | ||
---|---|---|---|---|---|
Matemática para Informática (alt) | 13 semanas | 5 horas/semana | Uma versão alternativa com soluções para os conjuntos de problemas está aqui. Os alunos em dificuldades podem considerar primeiro a Especialização em Matemática Discreta. É mais interactiva mas menos abrangente, e custa dinheiro para desbloquear interactividade total. | Calculus 1C | chat |
CS Tools
A teoria de compreensão é importante, mas também se espera que crie programas. Existem várias ferramentas que são amplamente utilizadas para tornar esse processo mais fácil. Aprenda-as agora para facilitar o seu trabalho futuro a escrever programas.
Tópicos abrangidos:terminals and shell scripting
vim
command line environments
version control
and more
Courses | Effort | Prerequisites | Discussão | |
---|---|---|---|---|
O Semestre Faltante da Sua Formação CS | 2 semanas | 12 horas/semana | – | chat |
Sistemas centrais
Tópicos abrangidos:procedural programming
manual memory management
boolean algebra
gate logic
memory
computer architecture
assembly
machine language
virtual machines
high-level languages
compilers
operating systems
network protocols
and more
Cursos | |||||
---|---|---|---|---|---|
Build a Modern Computer from First Principles: De Nand a Tetris (alt) | 6 semanas | 7-13 horas/semana | ->/td> | linguagem de programação semelhante a C | chat |
Build a Modern Computer from First Principles: Nand to Tetris Parte II | 6 semanas | 12-18 horas/semana | ->/td> | uma destas linguagens de programação, De Nand to Tetris Parte I | chat |
Sistemas Operativos: Três Peças Fáceis | 10-12 semanas | 6 horas/semana | ->/td> | algoritmos, familiaridade com C é útil | chat |
8 semanas | 4-12 horas/semana | chat |
Teoria do núcleo
Tópicos abrangidos:divide and conquer
sorting and searching
randomized algorithms
graph search
shortest paths
data structures
greedy algorithms
minimum spanning trees
dynamic programming
NP-completeness
and more
Cursos | Prerequisites | Discussion | ||
---|---|---|---|---|
Divide and Conquer, Ordenação e Pesquisa, e Algoritmos Aleatórios | 4 semanas | 4-8 horas/semana | qualquer linguagem de programação, Matemática para Informática | chat |
Procura gráfica, caminhos mais curtos, e estruturas de dados | 4 semanas | 4-8 horas/semana | Divide and Conquer, Ordenação e Pesquisa, e Algoritmos Aleatórios | chat |
Greedy Algorithms, Árvores de espaçamento mínimo, and Dynamic Programming | 4 weeks | 4-8 hours/week | Graph Search, Caminhos mais curtos, e Estruturas de Dados | chat |
Caminhos mais curtos Revisitados, Problemas NP-Completos e o que fazer com eles | 4 semanas | 4-8 horas/semana | Greedy Algorithms, Minimum Spanning Trees, e Programação Dinâmica | chat |
Segurança do núcleo
Tópicos abrangidosConfidentiality, Integrity, Availability
Secure Design
Defensive Programming
Threats and Attacks
Network Security
Cryptography
and more
Nota: Estes cursos são provisoriamente recomendados. Há um Pedido de Comentário aberto sobre a selecção de cursos de segurança. Os contribuidores são encorajados a comparar os vários cursos no RFC e a oferecer comentários.
Cursos | Duração | Effort | Prerequisites | Discussion |
---|---|---|---|---|
Segurança da Informação: Contexto e Introdução | 5 semanas | 3 horas/semana | ->/td> | chat |
4 semanas | 4 horas/semana | – | chat | |
Identificando Vulnerabilidades de Segurança | 4 semanas | 4 horas/semana | – | chat |
Escolha uma das seguintes opções:
Cursos | Effort | Prerequisites | ||
---|---|---|---|---|
Identificação de Vulnerabilidades de Segurança em C/C++Programação | 4 semanas | 5 horas/semana | – | chat |
Explorar e Garantir Vulnerabilidades em Aplicações Java | 4 semanas | 5 horas/semana | – | chat |
Aplicações principais
Tópicos abrangidos:Agile methodology
REST
software specifications
refactoring
relational databases
transaction processing
data modeling
neural networks
supervised learning
unsupervised learning
OpenGL
raytracing
and more
Courses | Effort | Prerequisites | Discussion | |
---|---|---|---|---|
Bases de dados: Modelação e Teoria | 2 semanas | 10 horas/semana | programação principal | chat |
Bases de dados: Bases de dados relacionais e SQL | 2 semanas | 10 horas/semana | programação principal | chat |
Bases de dados: Dados semi-estruturados | ||||
álgebra linear | chat | |||
Gráficos de computador | 6 semanas | 12 horas/semana | C++ ou Java, álgebra linear | chat |
Software Engineering: Introdução | 6 semanas | 8-10 horas/semana | Programação de núcleo, e um projecto de grande dimensão | chat |
Projecto de Desenvolvimento de Software Capstone | 6-7 semanas | 8-10 horas/semana | Engenharia de Software: Introdução | chat |
CS Avançado
Após completarem todos os cursos requeridos em CS Avançado, os estudantes devem escolher um subconjunto de cursos de CS Avançado com base no interesse.Nem todos os cursos de uma subcategoria precisam de ser feitos, mas os estudantes devem fazer todos os cursos que sejam relevantes para o campo em que pretendem entrar.
O estudo de CS Avançado deve então terminar com uma das Especializações sob Aplicações Avançadas. O Capstone de uma Especialização, se tomado, pode actuar como o projecto Final, se permitido pelo Código de Honra do curso.Se não, ou se um estudante optar por não tomar o Capstone, então um projecto Final separado terá de ser feito para completar este currículo.
Programação avançada
Tópicos abrangidos:debugging theory and practice
goal-oriented programming
parallel computing
object-oriented analysis and design
UML
large-scale software architecture and design
and more
Cursos | Duração | Prerequisites | |
---|---|---|---|
Programação paralela | 4 semanas | 6-8 horas/semana | |
9 semanas | 6-8 horas/semana | none | |
14 semanas | ->/td> | ->/td>>>->/td> | |
Aprender Prolog Agora! (alt)* | 12 semanas | – | |
8 semanas | 6 horas/semana | Python, programação orientada a objectos | |
Testes de software | 4 semanas | 6 horas/semana | Python, experiência em programação |
Arquitectura de software & Design | 8 semanas | 6 hours/week | software engineering in Java |
(*) book by Blackburn, Bos, Striegnitz (compilado a partir da fonte, redistribuído sob licença CC)
Sistemas avançados
Tópicos abrangidos:digital signaling
combinational logic
CMOS technologies
sequential logic
finite state machines
processor instruction sets
caches
pipelining
virtualization
parallel processing
virtual memory
synchronization primitives
system call interface
and more
Cursos | Duration | Effort | Prerequisites |
---|---|---|---|
Estruturas de Cálculo 1: Circuitos Digitais | 10 semanas | 6 horas/semana | Nand2Tetris II |
Estruturas de Cálculo 2: Arquitectura de computadores | 6 horas/semana | ||
Teoria avançada
Tópicos abrangidos:formal languages
Turing machines
computability
event-driven concurrency
automata
distributed shared memory
consensus algorithms
state machine replication
computational geometry theory
propositional logic
relational logic
Herbrand logic
game trees
and more
Cursos | Duração | Effort | Prerequisites |
---|---|---|---|
Teoria da Computação (Palestras) | 8 semanas | 10 horas/semana | discrete mathematics, lógica, algoritmos |
16 semanas | 8 horas/semana | algoritmos, C++ | |
Teoria do jogo | 8 semanas | 3 horas/semana | pensamento matemático, probability, calculus |
Aplicações avançadas
Estas Especializações Coursera terminam todas com um projecto Capstone.Dependendo do curso, poderá ser capaz de utilizar o Capstone como Projecto Final para este currículo de Informática.Note que fazer uma Especialização com a Capstone no final custa sempre dinheiro. Assim, se não desejar gastar dinheiro ou utilizar a Capstone como sua Final, poderá ser possível fazer os cursos na Especialização gratuitamente através da pesquisa manual dos mesmos, mas nem todos o permitem.
Cursos | Duração | Effort | Prerequisites |
---|---|---|---|
Robótica Moderna (Especialização) | 26 semanas | 2-5 horas/semana | freshman-level physics, álgebra linear, cálculo, equações diferenciais ordinárias lineares |
Data Mining (Specialization) | 30 semanas | 2-5 horas/semana | machine learning |
Big Data (Specialization) | 30 semanas | 3-5 horas/semana | none |
30 semanas | 1-5 horas/semana | programação forte | |
Cloud Computing (Specialization) | 30 semanas | 2-6 horas/semana | |
Pullstack Open | 12 semanas | 6 horas/semana | programação |
43 semanas | 1-6 horas/semana | none | |
29 semanas | 4-5 horas/semana | Um ano de experiência de programação | |
Desenho e Desenvolvimento de Jogos com a Unidade 2020 (Especialização) | 6 meses | 5 horas/semana | programação, design interactivo |
Projecto final
universidade de OSS é centrado no projecto.É encorajado a fazer os trabalhos e exames para cada curso, mas o que realmente importa é se pode usar os seus conhecimentos para resolver um problema do mundo real.
Depois de ter passado por todos os Core CS e as partes de CS Avançado relevantes para si, deve pensar num problema que possa resolver usando os conhecimentos adquiridos.Não só o trabalho real do projecto tem um aspecto excelente num currículo, mas o projecto também validará e consolidará o seu conhecimento. Poderá criar algo inteiramente novo, ou poderá encontrar um projecto já existente que necessita de ajuda através de websites como o CodeTriageorFirst Timers Only.
Outra opção é utilizar o projecto Capstone de tirar uma das Especializações em Aplicações Avançadas; se isto faz sentido ou não depende do curso, do projecto, e se o Código de Honra do curso lhe permite ou não exibir o seu trabalho publicamente.Em alguns casos, pode não ser permitido; não viole o Código de Honra do seu curso!
p>p>Põe o crachá OSSU-CS no README do teu repositório!
Avaliação
Upon completando o seu projecto final, submeta as informações do seu projecto a PROJECTSvia um pedido de puxar e utilize os nossos canais comunitários para o anunciar aos seus colegas estudantes.
Os seus pares e mentores da OSSU avaliarão então informalmente o seu projecto. Não será “classificado” no sentido tradicional – cada um tem as suas próprias medidas para aquilo que considera um sucesso.O objectivo da avaliação é agir como o seu primeiro anúncio ao mundo de que é um estado-unidentificador informático para obter experiência ouvindo o feedback – tanto positivo como negativo – e levando-o a bom termo.
A avaliação final do projecto tem um segundo objectivo: avaliar se a OSSU, através da sua comunidade e currículo, é bem sucedida na sua missão de orientar alunos independentes na obtenção de uma educação informática de classe mundial.
Trabalho cooperativo
Podes criar este projecto sozinho ou com outros estudantes! Adoramos o trabalho cooperativo! Utiliza os nossos canais para comunicar com outros colegas para combinar e criar novos projectos!
Que linguagens de programação devo utilizar?
Meu amigo, aqui está a melhor parte da liberdade! Podes utilizar qualquer linguagem que queiras para completar o projecto final.
O importante é internalizar os conceitos centrais e poder utilizá-los com qualquer ferramenta (linguagem de programação) que deseje.
Parabéns
Após completar os requisitos do currículo acima, terá completado o equivalente a um bacharelato completo em Informática. Parabéns!
O que é a seguir para si? As possibilidades são ilimitadas e sobrepostas:
Lo>Junte-se a um encontro de programadores locais (por exemplo, via meetup.com).Passar atenção às tecnologias emergentes no mundo do desenvolvimento de software:
li>Explorar empréstimos e vidas através de Rust, uma linguagem de sistemas que alcança a memorização e a segurança dos fios sem um colector de lixo!Explorar sistemas do tipo dependente através de Idris, uma nova linguagem inspirada em Haskell- com um apoio sem precedentes para o desenvolvimento orientado para o tipo.
Código de conduta
código de conduta da OSSU.
Como mostrar o seu progresso
- Criar uma conta em Trello.
- Copiar este quadro para a sua conta pessoal.ver como copiar um quadro aqui.
Agora que tem uma cópia do nosso quadro oficial, basta passar os cartões para a coluna Doing
ou Done
à medida que avança no seu estudo.
Também temos rótulos para o ajudar a ter mais controlo ao longo do processo.O significado de cada um destes rótulos é:
-
Main Curriculum
: os cartões com esse rótulo representam cursos que estão listados no nosso currículo. -
Extra Resources
: os cartões com essa etiqueta representam cursos que foram adicionados pelo aluno. -
Doing
: os cartões com essa etiqueta representam cursos que o aluno está a fazer actualmente. -
Done
: cartões com essa etiqueta representam cursos terminados pelo aluno. Esses cartões devem também ter a ligação para pelo menos um projecto/artigo construído com os conhecimentos adquiridos em tal curso. -
Section
: cartões com essa etiqueta representam a secção que temos no nosso currículo.Os cartões com o rótuloSection
são apenas para ajudar a organização da coluna Feito. Deve colocar os cartões do Curso abaixo do cartão da respectiva secção.
A intenção deste quadro é fornecer aos nossos alunos uma forma de acompanhar o seu progresso, e também a capacidade de mostrar o seu progresso através de uma página pública para amigos, família, empregadores, etc.Pode alterar o estatuto do seu quadro para ser público ou privado.
Equipa
- Eric Douglas: fundador do OSSU
- hanjiexi: responsável técnico principal
- waciumawanjohi: responsável académico principal
- Contribuintes