코딩을 배우는 방법(및 CS50x에서).
코딩을 배우는 가장 좋은 방법은 무엇입니까? 수강하는 과정을 최대한 활용하려면 어떻게 해야 합니까? 이 기사에는 이러한 질문 등에 대한 자세한 설명이 있습니다!
코딩을 배울 때 막 시작했다면 몇 가지 오해가 있을 수 있습니다. 이 기사의 요점이 이러한 오해를 해소하고 저와 같은 실수를 하지 않도록 하는 데 도움이 되기를 바랍니다.
I. 코딩 학습에 접근하는 방법(및 CS50x 과정에서 학습):
1. 서두르지 마세요:
이것이 제가 학습자에게 줄 수 있는 가장 간단하면서도 중요한 조언일 것입니다.
C를 배울 때 대부분의 학생들처럼 경쟁심이 강했습니다. 나는 동료들과 동료 학생들 중에서 C를 "완수"하는 첫 번째 사람이 되고 싶었습니다. 나는 강의를 빠르게 진행하고 가능한 한 빨리 문제 세트를 완성하려고 노력했습니다.
강의 3주가 끝날 무렵(CS50x에서) 한 시간 안에 문제 세트를 원활하게 해결할 수 없다는 점(비현실적인 목표)에 좌절했습니다. 가능한 한 빨리 C를 "완성"한다는 목표에 얽매이지 않고 마음을 비우기 위해 휴식을 취해야 했습니다.
나중에 돌아와서 문제 세트 4(CS50x에서)를 참을성 있게 수행했을 때 내가 잘못된 방향으로 가고 있다는 것을 깨달았습니다.
학교 과목의 주제처럼 C나 다른 프로그래밍 언어를 "완성"하지 않습니다. C 학습을 통해 얻은 지식은 꽤 오랫동안 도움이 될 것이며 이를 염두에 두고 접근해야 합니다.
또한 코딩 연습이나 문제 세트에 뛰어들어 문제에 비유하지 마십시오. 문제 세트를 완료하는 속도가 주제에 대한 이해도를 나타내는 것도 아닙니다.
CS50x의 문제 세트는 문제가 아닙니다. 각 문제 세트는 논리 구축에서 이미지의 비트맵 표현 이해(및 조작 방법)에 이르기까지 무언가를 가르쳐줍니다.
문제 세트는 학습자가 강의 자체에서 배울 수 있도록 학습자에게 제공되는 프로그램 또는 프로젝트여야 합니다. 수행하는 각 코딩 연습에서 새로운 것을 배우도록 노력하십시오. 이 작은 문제 세트가 얼마나 많은 것을 가르쳐 줄 수 있는지 놀라게 될 것입니다.
코딩은 더 열심히 더 빨리 훈련한다고 더 빨리 배우는 것이 아닙니다. 꾸준한 연습, 인내, 집중이 필요합니다. 개념을 잘 이해하고 있다고 해서 문제 세트에 대한 솔루션 코드를 매우 빠르게 고안할 수는 없습니다.
그러니 인내심을 가지고 배우고 코딩하세요. 무언가를 이해하는 데 필요한 경우 CS50x에서 제공된 콘텐츠(또는 참조하는 다른 자료)를 여러 번 검토하십시오.
코딩 연습을 할 때 답이 생각나지 않거나 프로그램이 몇 번 실패했다고 해서 해결책을 찾지 마십시오. 프로그램을 몇 번 시도하십시오. 몇 번 시도한 후에도 여전히 얻지 못하면(그리고 답답해지기 시작하면) 해당 문제에서 잠시 쉬는 것이 좋습니다. 다음 항목 또는 연습으로 이동합니다.
나중에 같은 문제로 다시 돌아갑니다. 여전히 답을 찾을 수 없다면 해결책을 찾을 수 있습니다. 그러나 솔루션 코드를 읽고 이해해야 하며 일단 이해한 후에 솔루션을 보지 않고 돌아가서 스스로 프로그램을 코딩해 보십시오.
서두르면 주제를 더 빨리 완료할 수 있습니다. 그러나, 당신은 항상 엉뚱한 의심을 품고 당신이 배운 주제에 대해 완전한 확신을 갖지 못할 수도 있습니다. 나에게 이것은 비참한 것처럼 보이며 CS50x 또는 다른 과정에서 그러한 방식으로 배우는 사람을 권장하지 않습니다.
2. 광고 무한:
많은 문제 세트는 이해를 돕기 위해 약간의 배경 지식이 필요합니다. 이에 대한 연구를 많이 해야 합니다.
컴퓨터가 수행할 수 있는 복잡한 작업은 우리가 상상하기 어려워 보입니다. 인간이 어떻게 그렇게 엄청난 처리 능력을 가진 컴퓨터를 만들 수 있었을까요? 이러한 것들을 구축하기 위해 투입된 노력과 지식은 믿을 수 없을 정도로 복잡하고 복잡해 보입니다. 우리는 우리가 가진 짧은 시간 안에 그것을 이해할 수 있을 것이라고 감히 생각하지 않습니다.
그러나 오늘날 컴퓨터가 수행할 수 있는 이 모든 복잡한 기능은 인간이 개발하고 적용한 논리의 결과입니다. 이 논리와 그 이면에 있는 지식은 우리의 손이 닿는 범위 내에 있으며, 우리는 이 지식을 배우고 결국 이해할 수 있습니다. 이러한 정신적 변화를 달성하면 더 많이 배우고 이해하려는 욕구가 생깁니다.
이 단계는 내가 어떻게 이러한 변화를 얻을 수 있었고 내가 했던 방식으로 코딩을 보게 된 방법을 설명하는 데 어느 정도 도움이 될 것입니다.
더 많은 독립적인 연구와 교육을 수행함에 따라 지식이 손에 닿는다고 느끼기 시작합니다. 우리는 사실 이전에는 결코 헤아릴 수 없었던 것들을 배우고 결국에는 이해할 수 있다는 것을 깨닫습니다. 이는 코딩에 대한 더 넓은 관점, 코딩이 어떻게 개발되었는지(인간이 만든 것처럼 생성하는 동안 고유한 오류 포함), 학습한 각 개념이 미칠 수 있는 실제 영향에 대해 더 넓은 관점을 얻게 되기 때문입니다.
귀하의 브라우저에서 "Y2K 문제"를 검색하고 읽어보십시오. 아마도 이것이 독립적인 연구를 시작하는 첫 단계가 될 것입니다. 일단 읽어보시면 어떤가요? 컴퓨터는 궁극적으로 우리와 같은 인간, 즉 Y2K 문제에서 알 수 있듯이 실수할 수 있는 인간, 배우고 성장하는 인간에 의해 개발됩니다. 이제 배우고 있는 코드에 더 강한 연결을 느끼십니까? 그것이 당신의 삶과 다른 사람들의 삶 모두에 미칠 수 있는 잠재적인 즉각적인 영향에 대해 느낍니까?
나는 문제 세트 4를 할 때 이 교훈을 배웠다. 이것은 이미지에서 물체를 구별할 수 있는 프로그램을 코딩할 수 있게 해준다. 나는 이 프로그램을 시작하기 전에는 그런 도전적인 일이 의심할 여지 없이 내 능력 밖의 일이라고 항상 믿었다. 나는 그것을 이해하려고 시도하기만 해도 내 뇌를 태울 수 있는 정교한 인공 지능 "물건"이 필요하다고 생각했습니다. 그러나 나는 프로그램을 했고, 그 이면의 논리를 이해했고, 코딩에 훨씬 더 가까워졌다고 느꼈다.
자신이 얼마나 더 배우고 이해할 수 있는지 알게 되면 새로운 지식을 배우고 습득하려는 열의를 느끼게 될 것입니다.
3. 지루한 작업을 수행하고 도구 상자를 확장하십시오.
일단 문제 세트를 완료하면 항상 인터넷에서 더 효율적인 솔루션을 찾으십시오. 이것은 지루해 보일 수 있지만 동일한 프로그램에 대한 새로운 관점과 논리를 가르쳐 줄 것입니다. 이렇게 하면 프로그램을 코딩할 때 갖게 되는 "도구 상자"가 커집니다.
"도구 상자"가 커짐에 따라 결과 또는 솔루션 코드에 대한 여러 경로를 시각화할 수 있습니다. 수학과 마찬가지로 더 많이 연습하면 더 빠르고 효과적으로 문제를 풀 수 있습니다.
특정 접근 방식을 통해서만 해결할 수 있는 특히 어려운 문제를 처리할 때 여러 솔루션을 아는 것이 유용할 수 있습니다.
따라서 "지루한 작업"을 수행하면 나중에 확실히 감사하게 될 것입니다!
4. 메모하기:
강의를 들으면서 메모하는 것은 완전히 선택 사항이며 개인 취향의 문제이지만 학습이 더 생산적이고 진행 중인 것처럼 보이게 합니다. 더욱 집중해서 강의를 시청하게 될 것입니다.
간결한 메모를 작성할 수 있습니다. 당신이 가지고 있는 질문이나 특히 새롭고 흥미로운 것을 발견한 정보의 목록을 만드십시오. 그런 다음 몇 가지 조사를 수행하고 적어 둔 질문이나 의심을 해결하려고 노력하십시오.
학습할 때 메모를 하면 생산성이 높아지고 즐겁게 일할 수 있습니다.
모든 문제 세트를 부지런히 풀고 각 문제에 상당한 시간을 할애하십시오.
II. CS50x에서 배울 때 따라야 할 단계:
- 서두르지 말고 참을성 있게 각 강의에서 배우십시오. 선택적으로 강의를 들을 때 메모를 합니다.
- 주제를 살펴보기 전에 비디오 단편을 건너뛰지 마십시오. 반바지를 훑어보고 시간을 할애할 가치가 있다고 생각되면 시청하세요. 반바지에는 종종 더 자세한 설명이 포함되어 있습니다. 때때로 단편은 메인 강의에서 다루지 않는 주제를 다루기도 합니다.
- 각 문제 세트에 상당한 시간을 할애하여 부지런히 모든 문제 세트를 풀고 스스로 해결하도록 노력하십시오. 당신이 그것을 얻지 못하면 그들이 준 힌트를 살펴보십시오. 이것이 충분하지 않은 경우 연습을 시청하십시오(이렇게 하면 문제를 훨씬 쉽게 이해할 수 있습니다). 문제를 이해하지 못해도 괜찮습니다. 기분 나빠할 필요는 없습니다. 첫 번째 시도에서도 모든 문제를 이해하지 못했습니다. 모든 것이 작동하지 않으면 솔루션을 찾은 다음 솔루션을 이해하면 솔루션을 보지 않고 답을 코딩하십시오.
- 프로그램에서 오류가 발생하고 오류를 식별할 수 없는 경우 'check50' 또는 '제출'을 사용하십시오. 이 두 명령은 프로그램이 실행되면 링크를 제공하며 링크가 열리는 사이트의 정보는 오류 해결에 매우 유용합니다.
- 그래도 문제 세트를 풀지 못했다면 잠시 쉬세요. 다음 강의나 문제 세트로 이동하고 나중에 동일한 문제 세트로 돌아오십시오.

![연결된 목록이란 무엇입니까? [1 부]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































