CS는 왜 암기하도록 가르치는가? [닫은]

나는 지난해 고등학교에서 고급 배치 컴퓨터 과학을 복용하고 있습니다. 우리는 단순히 코드와 기능 을 암기하는 것으로 가르치고 문서화 등을 사용하는 데있어서 효율적이고 효율적이되는 방법을 배우지 않는 것처럼 보입니다.

실제로 많은 프로그래밍 작업이 문서를 넘겨보고 과거 코드와 다른 코드를 검토하여 본질적으로 선생님이 “속임수”로 간주하는 것을 수행 할 수 있다고 생각합니다.

핵심 개념이 (모든 주제에서) 암기하는 데 필수적이라는 데 동의하지만, 특히 실제로 컴파일러, 디버거, 참조가있는 경우 CS 클래스에 대한 펜 및 종이 시험을 보는 것은 불필요한 것이며 비현실적입니다. 실제 작업 상황에서 참조 할 수있는 설명서 및 전체 인터넷 .

CS가 문서, 샘플 코드, 디버거 등을 사용하고 해석하는 방법을 포함한 유용한 기술을 가르치는 대신 코드와 기능을 암기 하는 데 중점을 둔 이유는 무엇 입니까?



답변

고등학교 수업에서는 가장 기본적인 수준의 숙달 과정에 있습니다. 수업에서 다루는 것은 전문 프로그래머가 차가운 것을 알아야 할 종류입니다. 많은 방법으로, 이것은 “시간 테이블”을 배우는 것과 유사합니다. 물론 항상 “실제”설정으로 계산기를 잡을 수는 있지만,이 암기 기능을 사용하면보다 복잡한 작업에서 속도를 높일뿐만 아니라 기본 원리에 대한 이해도를 높일 수 있습니다.

예를 들어, 몇 가지 정렬 알고리즘, 구현 방법, 작동 방식, 가장 잘 사용되는시기 및 사용하지 않는시기를 알고 있어야합니다. 이것은 항상 찾아 볼 수는 있지만, 수학자가 6 번부터 8 번을 찾아야하는 것 이상일 필요는 없습니다.


답변

교사들은 일반적으로 이해를 테스트하는 다른 방법을 모르기 때문에 종종 이런 식으로 가르쳐집니다. 당신의 느낌은 이와 같이 가르쳐 질 가치가 없다는 점에서 완전히 정확합니다. 사람들이 일반적으로 교육받는 방식은 필사적으로 개혁이 필요합니다!

적어도 UIUC에서는 인생이 나아졌습니다. CS 수업에 더 많이 갈수록 설명하는 시험의 방향이 적어지고 대부분의 과정에서 모든 쓰레기에 대한 치트 시트가 허용됩니다. 실제로 컴퓨터에 앉아 있다면 구글에있을 것입니다.

즉, 수업 시간에 많이 올라 갈수록 실제로 언어 또는 무언가를 구현하는 방법에 대해 가르치지 않습니다. 실제로 나는 그들이 프로그래밍에 관해 우리에게 실제로 가르쳐 준 클래스가 하나 밖에 없었습니다. 그것은 대부분 추상적 인 수학적 개념이었고 우리는 프로그래밍 부분을 우리 스스로 알아낼 것으로 기대되었습니다. 시험에 아무 것도 없습니다).


답변

학교가 교육에 방해가되지 않도록하십시오.

— 마크 트웨인

멕시코에서는 최소한 공립 교육에서 (어느 수준에서든) 교육을하기에 좋은 곳이 아니기 때문에 멕시코에 있습니다.

글쎄, 내 경력 (CS)의 중간에 나는 당신이 느끼는 것과 똑같은 느낌을 느낍니다. 그래서 나는 스스로 배우기 시작하고 알고리즘, 리눅스, 스크립팅, 컴퓨터 작동 방식, 약간의 관계 학습에 1 년을 보냅니다. 데이터베이스, HTML, CSS 등 (약 모두). 물론, 수업을 건너 뛰고 * 배우고 1 년 후에 학업을 마치고 * 졸업했습니다 *.

그 후, 나는 “정상적인”일상으로 돌아가 정규 수업, 숙제, 시험 및 프로젝트로 돌아갑니다. 수업은 여전히 ​​지루했고 배울 것이 없었습니다. 모두 동일했습니다. 그래서 UVA 온라인 판사 , 코드 셰프프로젝트 오일러 와 같은 프로그래밍 콘테스트 사이트에 입장하기로 결정한 후 MIT Open Course Ware 에서 강의를 보았지만 여전히 혼자서 배우고 있었지만 다른 방식으로 배우고있었습니다.

교훈 : 일이 일어나지 않게하고 일이 일어나게하십시오. 배우는 방식이 마음에 들지 않으면 변경하십시오!

내가 한 가장 현명한 결정은 아닙니다.


답변

그것은 당신이 암기하려는 것에 달려 있습니다 …

예를 들어 수학을 공부하려면 대수학에 익숙해야하고 방정식을 단순화하기 위해 대수 조작을 수행하는 방법에 대해 다소 창의적이어야합니다. 그러나 흥미로운 부분에 집중하려면 특정 구성 요소를 기억해야합니다. 예를 들어 곱셈표를 마음에 알아야하고, 그 항등을 사용하기 위해 방정식을 조작하는 방법을 인식 할 수 있도록 일부 항등을 알아야합니다.

컴퓨터 과학을 연구하려면 기본 빌딩 블록 데이터 구조와 알고리즘에 대해서도 잘 알고 있어야합니다. 상위 레벨 문제에 적용해야하기 때문입니다. 예를 들어 실제 환경에서 자체 링크 목록 구현을 작성했을 가능성은 거의 없으며 라이브러리에서 제공하는 것을 사용하기 만합니다. 그러나 연결 목록이 구현되는 방법과 자신의 구현 방법을 알면 상위 수준의 문제에 대한 작업을 시작할 때 연결 목록을 사용할 위치와 사용 여부를 추론 할 수 있습니다. 마찬가지로 자체 이진 검색 함수를 작성하지는 않지만 데이터베이스가 인덱스를 사용할 수있는 위치와 사용할 수없는 위치에 대해 추론 할 수 있도록 작동 방식을 이해하는 것이 중요합니다.

일단 기본 구성 요소가 기억되면 문서 해석과 같은 작업을 훨씬 쉽게 수행 할 수 있습니다. 문서는 목록이 사용 중임을 나타내며 프로그래머가 삽입이 O (1)이고 검색이 O (n)임을 암시 적으로 알고 있다고 가정합니다. 또한 빌딩 블록은 시간이 지남에 따라 훨씬 더 안정적입니다. 몇 년마다 새로운 디버거를 사용할 가능성이 높으며 전체 경력에서 동일한 이진 검색을 사용할 것입니다.


답변

“유용한 기술을 가르치는 것과는 대조적으로 CS가 왜 암기에 초점을두고 가르치는가?” 디버거를 사용하여 코드 작성, 설명서 해석, 연습을 암기해야합니다.

API 참조로 자주 이동하거나 많은 디버거 명령을 찾을 필요가 없다면 얼마나 효율적일 수 있는지 놀랄 수 있습니다.

내가 고등학교에서 배운 가장 좋은 것 중 하나는 수업 중 메모를 한 적이없는 친구를 관찰하는 것이 었습니다. 그의 주장은 중요한 것을 기억할 수 있다는 것이었다. 나는 똑같은 일을 시작했으며 모든 API 참조를 쉽게 사용할 수 있어도 매일 기억에 남는 암기 기술을 향상 시켰다고 생각합니다.


답변

펜과 종이 시험은 실제로 목표에 대한 완전한 이해를 테스트하는 것이 목표라면 의미가 있습니다. 나는 거의 10 년 전에 Computer Science AB 시험을 보았고 펜과 종이 방법에 동의합니다.

대상 언어로 구현 코드를 작성하는 방법을 추론 할 수 있도록 하위 수준의 컴퓨터 과학에서 학습 한 알고리즘을 충분히 알고 있어야합니다. 학생들은 또한 대부분 올바른 구문으로 직접 코드를 작성할 수 있어야합니다. 우리는 모두 세미콜론이나 괄호가 때때로 누락됩니다 :). 또한 유용한 IDE에서 유추하지 않고 디버깅 및 디자인 기술을 테스트 할 수 있습니다.

만약 학생이 이것을 할 수 없다면, 그 주제에 대한 숙달을 갖지 못하고, 아마도 지나친 친숙 함일 것입니다.


답변

내 경험상 암기에는 간단한 연습이 포함되어 있으며 전혀 가르 칠 필요가 없습니다. 더 중요한 것은,이 접근법은 선생님이 당신이 원하고 항상 원치 않는 임의의 쓰레기가 아니라, 당신이하고있는 모든 일에서 실제로 기억 해야 할 것을 외우는 것만을 의미합니다 . 일부 알고리즘의 구현을 암기하는 데 걸린 시간은 다른 원인에 훨씬 더 잘 맞을 수 있습니다.

결국, 왜 알고리즘 작성을 연습해야합니까? 당신이 한 번 작성하면, 당신도 다른 사람이 이미 당신의 선택의 언어에 대해 무료로 사용할 수 구현을 작성하지 않은 것을 대단히 원격 기회에 모든 시간 – 그것을 다시 사용할 수 있습니다 사용자 환경이 이미 제공하지 않습니다 정렬 알고리즘과 같은 대부분의 간단한 알고리즘에는 해당되지 않는 알고리즘입니다. 처음부터해야 할 가능성이 거의없는 일을하고 심지어 그렇게해도 한 번만해야하는 일이 있습니까? 귀중한 시간 사용이 아닙니다.

Heapsort에 대해 알아야 할 중요한 것은 그것을 구현하는 방법이 아닙니다. 최상의 경우와 최악의 경우 운영상의 복잡성과 유사한 것들입니다. 그러나 Wikipedia에는 ​​편리한 정보를 제공하는 편리한 테이블이 있습니다. 다시 한번, 그 지식을 갖는 데 아무런 가치가 없습니다 . 지금부터 끝까지 효과적으로 비용없이 원하는 때에 즉시 사용할 수 있습니다. 그렇다면 왜 암기하고 싶습니까? 무의미합니다.

내 경험상 학생이 아무것도 외우도록 요구할 이유가 전혀 없다. 참조 소스에서 답변을 얻을 수있는 질문을하는 경우 답변 할 수있는 곳에 가치가없는 질문을합니다.