대학 수준에서 입문 프로그래밍을 가르쳤습니다. 그것은 빵과 버터 코스였습니다. 모든 교수진이 그랬습니다. 저는 우리가 아주 잘했다고 생각합니다. 우리는 공통의 텍스트를 따르고 공통 시험을 보았지만 각자의 교실 방법을 사용했습니다. 그 이후로 오랜 시간이 지났지 만 때로는 프로그래밍에서 아이를 가르치는 경우가 많으며 전체 그림은 거의 같습니다.
내가하는 방법은 가능한 한 구체적으로 바닥에서 시작하는 것입니다. 학생들이 아는 것은 구조입니다. 그들은 이미 많은 개념을 가지고 있습니다. 나는 그 위에 더 많은 개념을 만들고 있으며, 비생산적인 개념을 형성하고 있습니다. 동시에 나는을 통해 배우게한다 .
인텔 8008 칩, 일부 EPROM 및 몇 개의 회로가있는 작은 컴퓨터를 만들었습니다. I / O 칩이 커플 스피커에 연결되었을 때 약간의 듀엣을 재생하도록 프로그래밍했습니다. 카운터를 카운트 다운하는 내부 루프와 함께 작은 프로그램이 어떻게 작동했는지 설명하겠습니다. 그것은 지연으로 작용할 것입니다. 그런 다음 출력 비트를 토글하고 다시 수행합니다. 잠시 동안 그런 다음 다른 지연으로 전환하여 다른 피치를주는 등의 작업을 수행합니다. 메모리 칩에는 작은 타이머가 있으며 타이머 입력 중 하나에서 커패시터 리드를 집어 넣으면 프로그램이 veeeeery를 천천히 실행 합니다 . 이 클래스는 내가 컴퓨터 것을 이해하는 클래스를 원 ... 클릭, 클릭, 스피커가 클릭가는들을 수 한 번에 아주 간단한 일을 한 단계 수행. 그런 다음 커패시터 리드를 풀면 "음악"이 터져 나옵니다. (박수 갈채)
그런 다음 1000 자리의 메모리 위치에 각각 부호있는 4 자리 10 진수를 보유한 매우 간단한 10 진수 컴퓨터 용 시뮬레이터를 만들었습니다. "누산기에 추가", "음수이면 점프"등과 같은 매우 간단한 opcode가 있습니다. 나는이 "기계 언어"에서 두 개의 숫자를 추가하거나 숫자 목록을 추가하는 것과 같은 작은 프로그램을 작성하게 할 것입니다. 그런 다음 한 단계 씩 실행하거나 Enter 키를 누르고 있으면 "빠르게"실행되는 것을 볼 수 있습니다.
요점은 컴퓨터가 아주 적은 수의 서로 다른 기본 작업 만 수행 할 수 있다는 개념을 한 번에 하나씩 수행한다는 점입니다. 이것은 컴퓨터가 복잡하고 동시에 모든 작업을 수행하고 마음 속에서 거래를한다는 인상을 상쇄하기위한 것입니다.
거기에서 우리는 "실제"언어 (BASIC :)로 프로그래밍을 시작했는데, 매우 간단하지만 흥미로운 프로그램으로 시작하여 조건부, 루프, 배열, 파일, 병합 등을 통해 작업했습니다. 이 프로그램의 목적은 프로그래밍 기술을 유일하게 사용하는 것이기 때문에 자신이 선택한 프로젝트를 수행 할 수 있도록 충분한 기술을 배치하는 것이 었습니다. 프로젝트에 대한 아이디어를 버리고 거기서 아이디어를 가져옵니다. 나는 마지막 순간까지 그것을 연기하고 당황하게하지 않도록 서면 아이디어를 요청한 다음 진행 보고서를 요구할 것입니다. 나는 그들이 스스로 힘으로 배우기 때문에 프로젝트가 가장 좋은 부분이라고 생각합니다.
컴퓨터가 무엇을하는지에 대한 매우 구체적인 이해의 초기 접지는 나중에 개념을 가르치기가 훨씬 쉬워졌으며, 그렇지 않으면 배열이나 (나중에) 포인터와 같은 실제 속도 범프가 될 것입니다. 우리는이 훌륭한 것으로 "추상화 (abstraction)"라는 개념을 영화 롭게하는 경향이 있지만, 공기가 아닌 콘크리트 기초 위에 세워 져야합니다.