ossu / computer-science

Universidade da Sociedade Fonte Aberta (OSSU)

Universidade da Sociedade Fonte Aberta

Caminho para uma educação autodidacta livre em Ciência da Computação!

EspantosoUniversidade da Sociedade de Fonte Aberta - OSSU Informática

  • 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)
  • li>Ser de qualidade geralmente elevada em materiais didácticos e princípios pedagógicos

  • Contecer com os padrões curriculares do CS 2013: Orientações Curriculares para Programas de Licenciatura em Informática

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! Discord 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
    • 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)

    • 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

    CS avançada

    • Programação avançada
    • Sistemas avançados
    • Teoria avançada
    • Avançado aplicações
  • Projecto final

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).

    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 programssimple data structures

    >th>Discussion

    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:computationimperative programmingbasic data structures and algorithmsand more

    >cursos>th>Duration>th>Effort>th>Prerequisites>Discussão
    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 programmingdesign for testingprogram requirementscommon design patternsunit testingobject-oriented designstatic typingdynamic typingML-family languages (via Standard ML)Lisp-family languages (via Racket)Rubyand 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.

    Linguagens de Programação, Parte A

    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

    Calculus 1A

    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

    >th>Discussão

    >Essência de Á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

    >th>Duration>th>Effort>th>Prerequisites

    Cursos Discussion
    Introduction to Logic 10 semanas 4-8 horas/semana set theory chat

    Probabilidade

    >cursos

    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 mathematicsmathematical proofsbasic statisticsO-notationdiscrete probabilityand more

    >th>Duração>th>Effort

    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 scriptingvimcommand line environmentsversion controland more

    >th>Duration

    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 programmingmanual memory managementboolean algebragate logicmemorycomputer architectureassemblymachine languagevirtual machineshigh-level languagescompilersoperating systemsnetwork protocolsand more

    >th>Duração>th>Effortth>Texto adicional / Atribuiçõesth>Prerequisitesth>Discussion

    >Introduction to Computer Networking

    Atribuição 1
    Atribuição 2
    Atribuição 3
    Atribuição 4
    Problemas Interactivos >álgebra, probabilidade, CS

    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 conquersorting and searchingrandomized algorithmsgraph searchshortest pathsdata structuresgreedy algorithmsminimum spanning treesdynamic programmingNP-completenessand more

    >th>Duração>th>Effort

    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, AvailabilitySecure DesignDefensive ProgrammingThreats and AttacksNetwork SecurityCryptographyand 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.

    >Princípios de Codificação Segura

    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:

    >th>Duração

    th>Discussão

    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 methodologyRESTsoftware specificationsrefactoringrelational databasestransaction processingdata modelingneural networkssupervised learningunsupervised learningOpenGLraytracingand more

    >th>Duration

    >2 semanas>10 horas/semana> programação principal>chat

    > Aprendizagem da máquina>>11 semanas>>4-6 horas/semana

    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 practicegoal-oriented programmingparallel computingobject-oriented analysis and designUMLlarge-scale software architecture and designand more

    >th>Effort

    Programação de escalas

    >Compilers

    Introdução a Haskell

    ->/td>->/td>

    >Depuração de Software

    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 signalingcombinational logicCMOS technologiessequential logicfinite state machinesprocessor instruction setscachespipeliningvirtualizationparallel processingvirtual memorysynchronization primitivessystem call interfaceand more

    >10 semanas

    >Estruturas de cálculo 1

    >>Estruturas de cálculo 3: Organização informática>10 semanas>6 horas/semana>Estruturas de cálculo 2
    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 languagesTuring machinescomputabilityevent-driven concurrencyautomatadistributed shared memoryconsensus algorithmsstate machine replicationcomputational geometry theorypropositional logicrelational logicHerbrand logicgame treesand more

    Geometria computacional

    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.

    Internet of Things (Specialization)

    programação C++ programação

    Data Science (Specialization)

    Programação funcional em Scala (Especialização)

    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!Open Source Society University - Computer Science

    • 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>

    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>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.
    • 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:

      • 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!
      • 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.

    manter aprendizagem

    Código de conduta

    código de conduta da OSSU.

    Como mostrar o seu progresso

  1. Criar uma conta em Trello.
  2. 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ótulo Section 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

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *