Repositório dedicado para documentar minha experiência durante o curso de Ciência da computação de Harvard.
- Introdução
- Módulo 0: Scratch
- Módulo 1: C
- Módulo 2: Arrays
- Módulo 3: Algoritmos
- Módulo 4: Memória
- Módulo 5: Estrutura de Dados
- Módulo 6: Python
- Módulo 7: SQL
- Módulo 8: HTML, CSS, JavaScript
- Módulo 9: Flask
- Módulo 10: Ética
- Encerramento
Esse é o curso introdutório de Ciência da Computação de Harvard. Os alunos aprendem sobre como computadores e como a Internet funciona, e sobre programação, então após terminar o curso, você terá uma ótima base para inciar seus projetos em Web Design, Bancos de Dados, Sistemas Eletrônicos, Programação de Software, entre outros.
O curso é desafiador e exigente mas é plenamente possível de ser feito. Todos os materiais das aulas e dos Sets de Problemas foram traduzido diretamente do material original. Isso significa que você vai aprender tudo que todos os alunos de Harvard aprendem.
E o mais importante: o que importa neste curso não é tanto onde você termina em relação aos seus colegas, mas onde você termina em relação a si mesmo quando você começou a jornada.
O curso em português pode ser feito através da plataforma ead da Fundação Estudar.
David J. Malan Professor de Práticas de Ciência da Computação com a cátedra Gordon McKay, e Membro da Faculdade de Educação em Harvard University. |
Doug Llyod Professor em Ciência da Computação na Divisão de Educação Contínua em Harvard University. |
Brian Yu Professor em Ciência da Computação na Divisão de Educação Contínua em Harvard University. Ele recebeu seu bacharelado em Ciência da Computação e Linguística em Harvard em 2019. |
Vale ressaltar que o curso pode ter evoluído e aqui vai a minha opnião que pode não representar o curso atual. Portanto, é importante verificar as informações mais recentes no site oficial do curso ou em outras fontes atualizadas. Dito isso, aqui estão algumas das características da metodologia do CS50 que eram conhecidas até 2022:
1. Acessibilidade: O CS50 é projetado para ser acessível a estudantes de diferentes níveis de experiência em ciência da computação. Não é necessário ter conhecimento prévio em programação, tornando-o acessível a iniciantes, mas também desafiador o suficiente para alunos mais experientes.
2. Aprendizado Ativo: Os alunos são incentivados a aprender ativamente por meio de tarefas práticas e projetos práticos. O curso é conhecido por seus problem sets (conjuntos de problemas) desafiadores que os alunos devem resolver em C, uma linguagem de programação de baixo nível.
3. Material Diversificado: Os tópicos abordados no CS50 são amplos e variados, abrangendo desde noções básicas de programação até estruturas de dados, algoritmos, desenvolvimento web, segurança da informação e muito mais.
4. Apoio Online: O curso oferece uma variedade de recursos online, incluindo videoaulas, tutoriais, notas de aula e fóruns de discussão para ajudar os alunos a aprender e esclarecer dúvidas.
5. Mentoria: Os alunos têm acesso a uma equipe de instrutores e mentores que estão disponíveis para auxiliar nas dúvidas e orientar os alunos durante o curso.
6. Avaliação Justa: A avaliação no CS50 é baseada em desempenho em problem sets e projetos, bem como em um exame final. A ênfase está no entendimento dos conceitos e na aplicação prática do conhecimento, em vez de focar exclusivamente em notas.
7. Comunidade Ativa: O CS50 tem uma comunidade ativa de alunos e ex-alunos que interagem e colaboram em projetos, fóruns e grupos de estudo.
8. Inovação: O curso busca incorporar novas tecnologias e tendências da indústria de tecnologia da informação, mantendo o currículo atualizado.
Esse módulo é projetado para ser uma introdução amigável e acessível, adequada para estudantes sem experiência anterior. Ele prepara os alunos para os desafios posteriores do curso CS50, que se aprofundam em tópicos mais avançados de ciência da computação e programação.
Conteúdo:
- Bem vindos(as)!
- O que é ciência da computação?
- Representando números
- Texto
- Imagens, videos e sons
- Algoritmos
- Pseudocodigo
- Scratch
Aqui você encontra as anotações dessa aula.
O módulo de C no curso CS50 de Harvard é uma parte fundamental e desafiadora do currículo, onde os alunos aprendem a programar em C, uma linguagem de programação de baixo nível amplamente utilizada em sistemas operacionais, desenvolvimento de software, programação de dispositivos embarcados e muito mais. Este módulo é conhecido por sua rigorosa abordagem ao ensino de programação e pela ênfase na compreensão dos conceitos de programação e na resolução de problemas.
Conteúdo:
- C
- CS50 IDE
- Compilação
- Funções e argumentos
- Função principal(main) e arquivos de cabeçalho
- Ferramentas
- Comandos
- Tipos e Códigos de Formato
- Operadores, limitações, truncamento
- Variáveis e Açúcar Sintático(boas práticas)
- Condicionais
- Expressões booleanas, loops
- Abstração
- Mario
- Memória, imprecisão e overflow
Esse módulo é conhecido por ser um dos pontos mais desafiadores do curso, mas também é altamente gratificante, pois os alunos adquirem habilidades sólidas em programação e resolução de problemas. É importante estar preparado para dedicar tempo e esforço significativos a este módulo, pois ele forma uma base fundamental para os tópicos mais avançados do curso.
Eu recomendo o livro C. A Linguagem de Programação Padrão ANSI, foi o que usei enquanto aprendia na faculdade. Também gosto do canal no youtube Linguagem C descomplicada
Aqui você encontra as anotações dessa aula, exercícios e laboratório.
Arrays são uma estrutura de dados fundamental na linguagem de programação C e em muitas outras linguagens de programação. Este módulo se concentra em ensinar aos alunos os conceitos relacionados a arrays e como usá-los efetivamente em programas C.
Conteúdo:
- Compilação (compilando o código)
- Dupuração (depurando o código)
- Memória
- Matrizes
- Personagens
- Cordas
- Argumentos de linha de comando
- Formulários
Este módulo é essencial, pois os arrays são uma estrutura de dados fundamental. Aqui pode-se aprender como declarar, manipular e trabalhar com arrays de maneira eficiente, o que é fundamental para resolver problemas e criar programas C eficazes. Além disso, esse conhecimento sobre arrays é útil em muitos outros contextos de programação, não apenas em C.
Aqui você encontra as anotações dessa aula, exercícios e laboratório.
De maneira geral, esse módulo ensina como projetar, analisar e implementar algoritmos mais complexos e sofisticados. Além de aprofundar o conhecimento em algoritmos e estruturas de dados, permitindo enfrentar problemas mais complexos e desenvolver soluções eficientes, fornecendo uma visão geral de alguns algoritmos.
Conteúdo:
- Revisão ao Módulo Anterior
- Busca
- Big O
- Pesquisa linear, pesquisa binária
- Realizando a busca em código
- Structs
- Ordenação
- Selection sort
- Bubble sort
- Recursão
- Merge sort
Estudando algoritmos conseguimos adquirir habilidades avançadas de resolução de problemas e nos tornar mais proficientes em compreender a complexidade dos algoritmos e escolher as melhores abordagens para problemas específicos.
Aqui você encontra as anotações dessa aula, exercícios e laboratório.
Esse módulo ainda está relacionado ao estudo de programação em C e ao funcionamento da memória em sistemas de computadores. Eles são importantes para qualquer programador que deseje ter um entendimento sólido de programação de baixo nível e desenvolvimento de software em C.
Conteúdo:
- Hexadecimal
- Endereços de Memória
- Ponteiros
- Strings
- Aritmética de ponteiros
- Compare e copie
- Valgrind
- Valores de lixo
- Swap/Troca
- Layout de memória
- scanf
- Arquivos
- Gráficos
Aqui você encontra as anotações dessa aula, exercícios e laboratório.
Esse módulo é uma parte crucial do currículo que se aprofunda no estudo de estruturas de dados e algoritmos. Este módulo é projetado para ajudar os alunos a compreender como armazenar e manipular dados de maneira eficiente, o que é essencial para desenvolver programas eficazes e otimizados.
Conteúdo:
- Redimensionamento de matrizes
- Estrutura de Dados
- Listas Encadeadas
- Implementação de arrays
- Implementação de Listas Encadeadas
- Árvores
- Mais Estruturas de Dados
Esse é um dos meus assuntos preferidos na computação então foi muito gratificante estudar e fazer os exercício desse módulo.
Aqui você encontra as anotações dessa aula, exercícios e laboratório.
o Módulo 6 do curso CS50 de Harvard, aborda a linguagem de programação Python, que é amplamente utilizada em uma variedade de aplicações, desde desenvolvimento web até aprendizado de máquina e automação. Este módulo é projetado para ajudar os alunos a se familiarizarem com a linguagem Python e suas aplicações.
Conteúdo:
- Conceitos Básicos de Python
- Exemplos
- Entrada, condições
- Miau
- get_positive_int
- Mario
- Transbordamento(Overflow), imprecisão
- Listas, strings
- Argumentos de linha de comando, códigos de saída
- Algoritmos
- Arquivos
- Mais bibliotecas
Aqui você encontra as anotações dessa aula, exercícios e laboratório.
o Módulo 7 aborda SQL -Structured Query Language, que é uma linguagem de programação utilizada para gerenciar e consultar bancos de dados relacionais. Este módulo ensina aos alunos os princípios fundamentais do SQL e como usar bancos de dados em suas aplicações.
Conteúdo:
- Processamento de dados
- Limpeza
- Contagem
- Busca
- Bancos de dados relacionais
- SQL
- Tabelas
- IMDb
- Problemas
SQL é valioso para qualquer pessoa interessada em desenvolvimento de software, pois o conhecimento de bancos de dados relacionais e SQL é fundamental para a maioria das aplicações de software. Foi extremamente divertido fazer os exercícios deste módulo. Sem dúvidas é akgo que recomendo a todos tentar.
Aqui você encontra as anotações dessa aula, exercícios e laboratório.
Módulo 8: HTML, CSS, JavaScript ✨
Este módulo é projetado para ensinar as habilidades fundamentais necessárias para desenvolver páginas web interativas e dinâmicas. Se concentra em tecnologias web essenciais e é uma parte importante do currículo, especialmente para quem deseja adquirir habilidades em desenvolvimento web.
Conteúdo:
- A Internet
- Desenvolvimento WEB
- HTML
- CSS
- JavaScript
Aqui você encontra as anotações dessa aula, exercícios e laboratório.
Este módulo se concentra no desenvolvimento web backend com Python e Flask. Flask é um framework web leve e flexível que permite criar aplicativos web dinâmicos de maneira eficaz.
Conteúdo:
- Desenvolvimento WEB
- Flask
- Formulários
- POST
- Layouts
- Frosh IMs
- Armazenamento de dados
- Sessões
- Aplicação Loja(shows)
Aqui você aprende a criar aplicativos web dinâmicos usando Flask, uma habilidade valiosa para desenvolvedores web que desejam criar aplicativos web backend python.
Aqui você encontra as anotações dessa aula, exercícios e laboratório.
Este módulo é dedicado à ética da ciência da computação e da tecnologia. Tem como objetivo sensibilizar os alunos para questões éticas e morais relacionadas à computação e tecnologia,explora os desafios e dilemas que os profissionais de TI podem enfrentar em suas carreiras.
Conteúdo:
- O Fim
- Ética
- Próximos passos
- Quiz
Este módulo de ética é uma parte importante do CS50, pois ajuda a nos preparar para enfrentar dilemas éticos que podem surgir em nossas carreiras na ciência da computação e na tecnologia. Além disso, enfatiza a importância de considerações éticas e morais ao tomar decisões.
Aqui você encontra as anotações dessa aula, exercícios e laboratório.
Charles Chaplin
Agradeço ao CS50 - Harvard e a Fundação Estudar por oferecer toda esta trilha de conhecimento na área da computação.
A Fundação Estudar está sempre publicando quais empresas estão com vagas abertas, vem conferir!
🤔 Ficou com alguma dúvida? Vem conversar comigo!
💬Contato💬