Este é um repositório dedicado ao curso CS50 de Harvard. Aqui você encontrará os códigos construídos em aula, junto com o professor, formando o conhecimento desde o conteúdo mais simples ao mais avançado. Alguns exercícios resolvidos com a ajuda de outros alunos do curso. Alguns desses exercícios são bem avançados para mim que ainda sou iniciante. Consulte o código que quiser, mas saiba que só se aprende a programar programando! Então...Vá programar. Os exercícios do módulo 4 em diante ainda não consegui fazer, tamanha complexidade para mim e se quiser fazer junto, será um prazer.
Esse curso é incrível, todas as aulas são densas e de muito conteúdo. A maioria das vídeo aulas tem mais de 1h 40min de duração e muitas com mais de 2h. O inglês, de início, parece uma barreira e o David, o professor, fala muito rápido que muitas das vezes, dá trabalho até para acompanhar com a legenda. Mas, conforme os minutos das aulas vão passando, tem momentos que você se vê só ouvindo, sem nem ler mais a legenda tamanho é o treino da audição.
Cada módulo tem:
- A vídeo aula que pode ser assistida também no youtube, fora da plataforma
- Alguns exercícios, todos eles com:
- Explicações escritas e em vídeo
- Os testes para serem realizados no workspace com o resultado esperado pela plataforma
- A avaliação do código através de um teste automatizado chamado check50, onde seu código deve rodar perfeito para ser validado como feito na plataforma. Como se fosse a Moulinette da École 42
- Uma avaliação de estilo para analisar o estilo do seu código chamado style50: como você escreve, se tem comentários, se é um código limpo, sinalizando o que pode melhorar. Como se fosse a Norminette da École 42 , com a diferença que ela não trava a correção do seu código pelo check50
- Um laboratório que é um projeto mais avançado usando os conhecimentos do módulo e dos exercícios desse módulo
Foi nesse curso que eu, finalmente, visualizei, entendi e aprendi alguns conceitos que eram muito abstratos para mim na faculdade e cito alguns abaixo:
- Linguagem de Computador
- Base Decimal
- Base 2 (Binária)
- Como representar em Binário (em forma de Bitwise):
- Números na base decimal
- Letras
- Caracteres
- Emojis
- Vídeos
- Músicas
- Tabela ASC II - American Standard Code Information Interchange
- Bytes
- Bits
- Funções - Ação
- Condicionais - if, else if, else
- Loop - while
- Processo de compilação e suas flags
- Arquivo executável a.out (Assembly.out)
- Flag -o de output
- Tipos de variáveis, principalmente a booleana que nunca entendia
- argc - argument count
- argv - argument vector
- Struct - typedef
- Algoritmo de ordenação - Bubble Sort, Recursão, Merge Sort
- Sistema Hexadecimal
- Ponteiro e suas sintaxes (Aula incrível do Módulo 4, recomendo!)
- & - Descubra o endereço
- '*' - Vá até o endereço
- char * - representa o endereço de um caractere
- Aritimética de ponteiros
- Malloc - memory allocation (Que aula! Módulo 4 também)
- Free
- Valgrind - ferramenta usada para detectar se você está fazendo algo errado com a memória
- Sizeof - operador que informa o tamanho de um tipo de dado
- Head overflow
- Stack overflow
- Buffer overflow
- Lista linkada
- Leak de memória
Abaixo, segue o conteúdo separado por: Módulos, linguagem e nome de cada projeto:
Aula0 - Arquivos criados em aula junto com o professor Exercício - Projeto Scratch
- Aula1 - Arquivos criados em aula junto com o professor
- cash
- credit
- hello
- mario-less
- mario-hard
- population
- Aula2 - Arquivos criados em aula junto com o professor
- caesar
- readability
- scrabble
- substitution
- Aula3 - Arquivos criados em aula junto com o professor
- plurality
- runoff
- Aula4 - Arquivos criados em aula junto com o professor
- Aula5 - Arquivos criados em aula junto com o professor (um dos mais difíceis para mim até o momento)
- Aula6 - Arquivos criados em aula junto com o professor