Como aprender a codificar (e do CS50x).
Qual é a melhor maneira de aprender a programar? Como faço para aproveitar ao máximo os cursos que faço? Este artigo tem uma explicação detalhada que responderá a essas perguntas e muito mais!
Ao aprender a codificar, se você está apenas começando, provavelmente terá alguns equívocos. Espero que os pontos desses artigos ajudem a esclarecer esses equívocos e evitem que você cometa os mesmos erros que eu.
I. Como abordar o aprendizado de código (e aprender com o curso CS50x):
1. Não se apresse:
Este pode ser o conselho mais simples e crucial que eu poderia dar aos alunos.
Quando eu estava aprendendo C, como a maioria dos alunos, eu era competitivo. Eu queria ser o primeiro entre meus colegas e colegas a “concluir” C. Tentei acelerar as aulas e concluir os conjuntos de problemas o mais rápido possível.
No final da 3ª semana de palestras (em CS50x), fiquei frustrado com minha incapacidade de resolver suavemente os conjuntos de problemas em uma hora (uma meta irreal). Tive que fazer uma pausa para clarear minha mente e não ser perseguido pelo objetivo de “completar” C o mais rápido possível.
Foi mais tarde, quando voltei a ele e fiz o Conjunto de Problemas 4 (em CS50x) pacientemente, que percebi que estava fazendo isso da maneira errada.
Você não "completa" C ou qualquer outra linguagem de programação como faria com um tópico em uma matéria escolar. O conhecimento que você ganha ao aprender C o ajudará por muito tempo, e você deve abordá-lo com isso em mente.
Além disso, não mergulhe em nenhum exercício de codificação ou conjunto de problemas, comparando-o a um problema. A velocidade com que você conclui um conjunto de problemas também não indica uma maior compreensão do tópico.
Os conjuntos de problemas no CS50x não são problemas. Cada conjunto de problemas ensina algo, desde a construção lógica até a compreensão das representações de bitmap de imagens (e como manipulá-las).
Os conjuntos de problemas devem ser programas ou projetos dados aos alunos para que aprendam - uma palestra em si. Tente aprender algo novo com cada exercício de codificação que fizer. Você ficará surpreso com o quanto esses conjuntos de problemas aparentemente pequenos podem lhe ensinar.
A codificação não é algo que você aprende mais rápido treinando mais e mais rápido. Requer prática consistente, paciência e foco. Você não pode esperar criar códigos de solução para conjuntos de problemas super rápido só porque você entende um conceito muito bem.
Então, aprenda e codifique pacientemente. Percorra o conteúdo que você recebeu no CS50x (ou qualquer outro material ao qual você esteja se referindo) várias vezes, se necessário, para entender algo.
Ao fazer qualquer exercício de codificação, nunca procure soluções apenas porque você não conseguiu pensar em uma resposta ou seu programa falhou algumas vezes. Experimente o programa algumas vezes. Se você ainda não conseguir depois de algumas tentativas (e começar a ficar frustrante), sugiro que dê uma pausa nesse problema. Vá para o próximo tópico ou exercício.
Mais tarde, retorne ao mesmo problema novamente. Se você ainda não conseguir encontrar uma resposta, procure uma solução. No entanto, você deve ler e entender o código da solução e, depois de entendê-lo, voltar e tentar codificar o programa por conta própria, sem olhar para a solução.
Você pode concluir os tópicos mais rapidamente se tiver pressa. No entanto, você sempre terá dúvidas e pode não ter total confiança nos tópicos que aprendeu. Para mim, isso parece desastroso e não recomendo a ninguém aprender com o CS50x ou qualquer outro curso dessa maneira.
2. Ad infinitum:
Vários conjuntos de problemas exigem alguma leitura de fundo para ajudá-lo a entendê-los melhor. Você deve fazer muita pesquisa para estes.
As tarefas complexas que os computadores podem realizar parecem difíceis de imaginar. Como um ser humano poderia criar um computador — uma máquina com um poder de processamento tão grande? Os esforços e o conhecimento investidos para construir essas coisas parecem incrivelmente intrincados e complicados. Não ousamos pensar que algum dia seremos capazes de entendê-lo no pouco tempo de que dispomos.
No entanto, todas essas funções complexas que os computadores são capazes de realizar hoje em dia são resultados da lógica desenvolvida e aplicada por humanos. Essa lógica e o conhecimento por trás dela estão ao nosso alcance, e somos capazes de aprender e eventualmente entender esse conhecimento. Quando você alcança essa mudança mental, o desejo de aprender e compreender mais se desenvolve.
Esta etapa explicará de alguma forma como consegui essa mudança e como passei a ver a codificação da maneira que vi.
O conhecimento começa a ficar ao seu alcance à medida que você conduz pesquisas e educação mais independentes. Percebemos que somos, de fato, capazes de aprender e eventualmente entender coisas que antes nunca poderíamos imaginar. Isso ocorre porque você obtém uma perspectiva mais ampla sobre a codificação, como ela foi desenvolvida (com seus próprios erros durante sua criação, pois foi feita por humanos) e os impactos no mundo real que cada conceito que você aprende pode ter.
Pesquise "Y2K problem" em seu navegador, leia sobre ele e talvez seja o primeiro passo para iniciar uma pesquisa independente. Depois de ler, o que você acha? Os computadores são desenvolvidos por humanos como nós — aqueles capazes de cometer erros (como ilustrado pelo problema do Y2K), aqueles que aprendem e crescem. Agora você sente uma conexão mais forte com o código que está aprendendo? Você tem uma ideia do potencial impacto imediato que isso pode ter na sua vida e na vida de outras pessoas?
Aprendi esta lição quando estava resolvendo o conjunto de problemas 4. Ele permite codificar um programa capaz de diferenciar objetos em uma imagem. Sempre acreditei que uma tarefa desafiadora como essa estava, sem dúvida, além da minha capacidade antes de iniciar este programa. Eu presumi que isso exigia alguma "coisa" sofisticada de inteligência artificial que provavelmente fritaria meu cérebro se eu tentasse entendê-la. No entanto, fiz o programa, entendi a lógica por trás dele e me senti muito mais próximo da codificação.
Uma vez que você esteja ciente de quanto mais você é capaz de aprender e compreender, você sentirá um zelo para estudar e adquirir novos conhecimentos.
3. Seja tedioso e aumente sua caixa de ferramentas:
Depois de terminar um conjunto de problemas, tente sempre procurar soluções mais eficientes para ele na internet. Embora isso possa parecer tedioso, ensinará novas perspectivas e lógica para o mesmo programa. Isso aumenta a “caixa de ferramentas” que você tem ao codificar programas.
À medida que sua “caixa de ferramentas” aumenta, você poderá visualizar vários caminhos para seu resultado ou código de solução. Semelhante à matemática, você pode resolver problemas de forma mais rápida e eficaz se praticar mais.
Conhecer várias soluções pode ser útil ao lidar com problemas particularmente desafiadores que só podem ser resolvidos usando uma abordagem específica.
Portanto, “seja tedioso” e você definitivamente apreciará isso mais tarde!
4. Faça anotações:
Embora fazer anotações enquanto assiste às palestras seja totalmente opcional e uma questão de preferência pessoal, isso fará com que seu aprendizado pareça mais produtivo e como se estivesse progredindo. Isso fará com que você assista à palestra com maior foco.
Você pode fazer anotações compactas. Faça uma lista de quaisquer perguntas que você tenha ou informações que você achou particularmente novas e interessantes. Em seguida, faça uma pesquisa e tente esclarecer as dúvidas ou dúvidas que você anotou.
Quando estou aprendendo, fazer anotações me faz sentir mais produtivo e gosto de fazer isso.
Resolva todos os conjuntos de problemas diligentemente, dando a cada um uma quantidade significativa de tempo
II. Etapas a seguir ao aprender com o CS50x:
- Aprenda com cada palestra pacientemente, não se apresse. Opcionalmente, faça anotações ao ouvir as palestras.
- Nunca pule os vídeos curtos antes de dar uma olhada em seus tópicos. Dê uma olhada nos shorts e, se achar que valem a pena, assista. Os curtas frequentemente contêm explicações mais aprofundadas. Às vezes, os curtas também cobrem tópicos que não são abordados na palestra principal.
- Resolva todos os conjuntos de problemas diligentemente, dando a cada um uma quantidade significativa de tempo - e tente resolvê-los por conta própria. Se você não entender, siga as dicas que eles deram. Se isso não for suficiente, assista ao passo a passo (isso facilita muito a compreensão do problema). Tudo bem não entender o problema, você não precisa se sentir mal. Eu também não tinha entendido todos os problemas na minha primeira tentativa. Quando tudo não funcionar, procure a solução e, em seguida, codifique a resposta sem olhar para a solução depois de entendê-la.
- Se você encontrar erros em seu programa e não conseguir identificá-los, use o 'check50' ou 'enviar'. Esses dois comandos fornecem um link assim que o programa é executado, e as informações no site que o link abre são muito úteis para solucionar erros.
- Se você ainda não conseguiu resolver o conjunto de problemas, faça uma pausa. Vá para a próxima aula ou conjunto de problemas e volte ao mesmo conjunto de problemas mais tarde.





































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)