Skip to content

Repositório dedicado para documentar minha experiência durante o curso de Ciência da computação de Harvard.

Notifications You must be signed in to change notification settings

fernandacostads/cc50-harvard

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 

Repository files navigation

 

CC50 - Harvard e Fundação Estudar

Repositório dedicado para documentar minha experiência durante o curso de Ciência da computação de Harvard.

Módulos

Introdução ✨

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.

Fundação Estudar

O curso em português pode ser feito através da plataforma ead da Fundação Estudar.

Os professores

David J. Malan
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
Doug Llyod

Professor em Ciência da Computação na Divisão de Educação Contínua em Harvard University.

Brian Yu
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.

A metodologia

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.

Módulo 0: Scratch ✨

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.

(Voltar ao topo)

Módulo 1: C ✨

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.

(Voltar ao topo)

Módulo 2: Arrays ✨

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.

(Voltar ao topo)

Módulo 3: Algoritmos ✨

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.

(Voltar ao topo)

Módulo 4: Memória ✨

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.

(Voltar ao topo)

Módulo 5: Estrutura de Dados ✨

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.

(Voltar ao topo)

Módulo 6: Python ✨

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.

(Voltar ao topo)

Módulo 7: SQL ✨

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.

(Voltar ao topo)

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:

Aqui você encontra as anotações dessa aula, exercícios e laboratório.

(Voltar ao topo)

Módulo 9: Flask ✨

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.

(Voltar ao topo)

Módulo 10: Ética ✨

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.

(Voltar ao topo)

Encerramento ✨

Finalização e Agradecimentos

A persistência é o caminho do êxito.

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💬

(Voltar ao topo)

About

Repositório dedicado para documentar minha experiência durante o curso de Ciência da computação de Harvard.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published