CS50 - Um dos melhores cursos de programação.
Na minha primeira publicação aqui no TabNews, gostaria de fazer uma recomendação de um dos melhores cursos que já fiz e que, surpreendentemente, poucas pessoas conhecem.
Quando alguém fala do CS50 dificilmente é mostrado um resumo do que você vai aprender no curso, acredito que isso ajudaria a alguem a dar uma olhada nesse curso incrivel gratuito de Harvard!
CS50
O CS50, também conhecido como "Introduction to Computer Science", é um curso de ciência da computação gratuito disponibilizado na Universidade de Harvard. Ele é projetado para fornecer uma introdução abrangente e acessível aos conceitos fundamentais da programação e da ciência da computação. Isso tudo ocorre de forma presencial e online.
Este curso é incrível! Ele é dividido em 11 semanas, durante as quais você aprenderá conceitos extremamente importantes. Você pode fazê-lo pelo tempo que desejar, eu mesmo demorei alguns meses para terminar ele, culpa da motivação que eu tinha na época.
(Abaixo está um breve resumo das aulas e os exercícios que mais gostei em cada semana, porém existem outros exercícios para fazer que vão te desafiar)
OBS: Depois de um tempo, percebi que todos os exercícios te ensinam na prática, sem você notar como ler documentação e como funciona um ambiente de teste, já que você precisa fazer os exercícios e passar nos testes desenvolvidos por eles.
Semana 0
Introdução sobre a importância da programação e como ela pode ajudar a transformar o dia a dia das pessoas.
Exercícios: Ao final dessa semana, há um exercício envolvendo a criação de um programa usando o Scratch.
Semana 1
Nesta semana, temos nosso primeiro contato com a linguagem de programação C. Aprendemos sobre tipos de dados, operadores, condições, loops, linha de comando, etc.
Exercícios: Um dos exercícios consiste em criar um programa que verifica a validade de um cartão de crédito e identifica o tipo de sua bandeira.
Semana 2
Nesta semana, aprofundamos nosso conhecimento em C e aprendemos sobre funções, depuração de código, arrays e argumentos de linha de comando.
Exercícios: O programa caesar implementa a cifra de César para criptografar mensagens. Ele recebe um único argumento de linha de comando, um número inteiro não negativo chamado "key", e solicita ao usuário uma string de texto a ser criptografada. A saída é o texto criptografado correspondente, preservando letras maiúsculas e minúsculas. (Por mais que não seja muito usado, foi a única vez que vi alguém ensinando para o que serve os argumentos argc e argv ).
Semana 3
Nesta semana, aprendemos sobre algoritmos de busca, como linear search, binary search, bubble sort, selection sort, merge sort, e também sobre recursão.
Exercícios: O programa Plurality é basicamente a implementação de uma urna eletrônica, onde é necessário escrever o código corretamente para que o candidato com o maior número de votos seja o vencedor.
Semana 4
Nesta semana, aprendemos sobre hexadecimal, ponteiros, alocação dinâmica de memória, filas de ponteiros, etc.
Exercícios: O exercício Filter é incrível! Mesmo estando no início do curso, você implementa um programa que aplica filtros em fotos, como escala de cinza, reflexão, desfoque e adição de bordas. Tudo isso usando vetores. Neste exercício, você percebe que, mesmo com pouco conhecimento, já pode fazer grandes coisas.
Semana 5
Nesta semana, aprofundamos nosso entendimento sobre vetores, utilizando listas encadeadas, hash tables, árvores binárias, pilhas, filas e o Big O.
Exercícios: Aqui escrevemos um código que realiza verificação ortográfica em um arquivo de texto que contém um dicionário de palavras. Nosso objetivo é implementar o verificador ortográfico mais rápido possível. Um bom exercício para aprender sobre tempo de execução e otimização.
Semana 6
Nesta semana, começamos a trilha com Python, onde aprendemos que, uma vez que já temos uma base, apenas precisamos aprender a sintaxe das novas linguagens.
Exercícios: Refazemos todos os exercícios que já fizemos no CS50, porém utilizando Python. Fica evidente a rapidez com que é possível implementar esses códigos. O que levou 6 semanas até agora vai ser feito por você em 1 dia, haha! (Vale ressaltar que ele mostra a lentidão que esse código python roda em comparação com o codigo em C.)
Semana 7
Nesta semana, aprendemos um pouco sobre bancos de dados e sua utilidade.
(Melhor exercício para mim)
Exercícios: Sem dúvida, essa é a melhor forma de aprender sobre bancos de dados que já vi até hoje. Eles transformam você em um detetive e apresentam um roubo que aconteceu com o mascote do CS50. Seu objetivo é encontrar o culpado e o cúmplice, você fará isso acessando logs de câmeras, registros de interrogatórios, lista telefônica pública, lista de voos, etc., dessa forma você treinara as consultas e vai aprender se divertindo.
Semana 8
Depois de mostrarem o quão fácil foi "aprender" Python depois de já ter uma base sólida, eles nos pedem para aplicar isso para aprender o básico de JavaScript e introduzem o básico de HTML e CSS.
Exercício: Implementar uma página simples web usando HTML, CSS e JavaScript.
Semana 9
Nesta semana, aprendemos como os frameworks podem facilitar nossa vida, apresentando o Flask, e também como usar o Ajax.
Exercício: Refazer um site de compra e venda de ações, colocando em prática o desenvolvimento web com Python, JavaScript, HTML, CSS e bancos de dados. Nesse site você vai aprender muito, vai mexer com registro e login de usuários, cache, uso de API, etc.
Semana 10
Uma palestra sobre emojis e a criação de algumas funcionalidades relacionadas.
Exercícios: Este é o projeto final, você precisa criar algo que mude a vida ou o dia a dia de alguém. Alguns fazem sites, outros app andorid, jogos, etc. Você é livre para fazer o que quiser.
Considerações finais
Espero que esta recomendação e esse breve resumo do curso CS50 tenha despertado o interesse de alguém. No final do curso você consegue pegar um certificado gratuito caso tenha feitos os exercícios e tenha passado pelos testes.
O site é https://cs50.harvard.edu/x/2023/. O curso é em inglês, mas é só usar legenda automática do youtube nas aulas. Tem uma versão em PT-BR desse curso que um rapaz que fez o curso desenvolveu, mas eu prefiro pelo site porque tem atualizações constantes nos exercícios.
Entrem no discorda deles, para que quando você tiver travado, você possa pedir ajuda lá, ninguém vai te dar uma resposta pronta, mas vão te direcionar para um caminho certo para você resolver os problemas sozinho e se sentir realmente satisfeito com o progresso, pelo menos eu me senti assim ao completar cada desafio.