컴퓨터를 사용하지 않고 어떻게 컴퓨터 과학을 가르 칠 수 있습니까?


21

세계의 일부 지역에서는 사람들이 일반적으로 컴퓨터에 액세스 할 수 없으며 그에 대한 지식이 거의 없으므로 하드 및 소프트웨어가 오래되어 정전 등으로 인해 사용이 어려움을 겪고 있습니다. (좋은) 책에 대한 접근도 부족한 경향이 있습니다. 그러한 상황에서 컴퓨터 과학을 어떻게 가르 칠 수 있습니까?

나는 실험을하고 그들이 배운 것을 적용 할 수 없다면, 그들은 매우 동기 부여가되고 대부분의 시간을이 취미에 바치더라도 전혀 배우지 못할 것입니다. CS를 이론적으로 만 가르 칠 수 있습니까?


13
사람들은 수천 년 동안 수학에 매료되었습니다. 당시에는 아무도 디지털 컴퓨터에 액세스 할 수 없었습니다. 실제로 이론 과정에서는 일반적으로 컴퓨터가 전혀 필요하지 않습니다.
Juho

3
첫 번째 컴퓨터 프로그램은 첫 번째 컴퓨터가 구축되기 약 100 년 전에 작성된 것임을 지적하고 싶습니다.
Gabe

2
cstheory를 살펴 보십시오 . 아마도 그 사람들은 펜과 종이 만 있으면되며, 컴퓨터 과학이 최고 일 것입니다.
Trylks

1
커버하려는 CompSci 영역을 강조 표시하면 도움이 될 것입니다. 이산 수학, 심지어 데이터 구조 또는 알고리즘과 같은 것들도 펜과 종이로만 다룰 수 있습니다. 반면에 소프트웨어 엔지니어링은 문제가 될 수 있습니다.
NotMe

1
@abhimanyu 좋아요, 답변을 게시하기 전에 질문이 "보호되었습니다"; 나는 지금 여기에 넣어 : pastebin.com/6tbMtVM8 (이것은이다 가능성은 같이 대답 한다 명확하지만 수없는 것 거기에서 많은 아이디어가있다 그리고 나는 당신이 뭔가 유용 ...이되기를 바랍니다.)
아무도를

답변:


24

컴퓨터없이 컴퓨터 과학을 공부할 수있는 방법을 묻는 것은 망원경없이 우주론을 공부할 수있는 방법을 묻는 것과 같습니다. 물론, 공부하고있는 것들을 볼 수있어서 좋으며 종종 물건을 가지고 놀 수있는 것이 도움이됩니다. 그러나 컴퓨터에 액세스하지 않고도 할 수있는 일이 많이 있습니다. 극한의 경우 컴퓨터없이 거의 모든 학부 과정을 수행 할 수 있습니다.

실질적으로 컴퓨터에 액세스하면 컴퓨터 과학 과정에서 배운 내용을 많이 강화할 수 있습니다. 프로그래밍 과정은 컴퓨터에 대한 접근이 훨씬 더 자연 스럽습니다. 반면에 종이에 코드를 작성하도록 강요하면 사람들이 코드를 생각하고 컴파일 될 때까지 컴파일러를 반복해서 실행하고 사소한 테스트 사례를 반복해서 실행하는 대신 실제로 작동하는지 확인하도록 장려합니다. 명백한 버그가 사라질 때까지

컴퓨터없이 가장 자연스런 주제는 더 수학적인 주제입니다. 조합 및 확률과 같은 모든 배경 수학. 계산 성, 형식 언어, 논리, 복잡성 이론, 알고리즘 설계 및 분석, 정보 및 코딩 이론. 양자 계산과 관련이있는 모든 것!


11
+1 CS와 프로그래밍의 차이 가 핵심입니다! 학부 CS 과정은 온라인 읽기 자료에 액세스하는 것 외에 컴퓨터를 사용하는 데 필요한 최소한의 요구 사항을 가지고있었습니다.
우주 Ossifrage

4
@CosmicOssifrage 동의하지만 CS는 프로그래밍이 아니지만 프로그래밍은 컴퓨터 과학자가 처리 할 수있는 매우 유용한 도구입니다. 그것이 우리가 가르치는 이유입니다.
David Richerby

2
@Abhimanyu 그것은 당신의 자신의 자격에 달려 있습니다. 당신이 지식과 ​​기술을 가지고 있다면, 그들은 단지 학생들의 생각에서 칠판 일뿐입니다.
Raphael

2
@vzn 아니요, 프로그래밍 의 많은 부분 이 디버깅 기술을 배우고 있습니다. 매우 중요합니다. 그러나 그것은 컴퓨터 과학 이 아닙니다 .
David Richerby

2
@vzn 당신이 그 사람을 인용한다면, 올바르게하십시오. 그는 디버깅이 아닌 (과학적인) 가설을 검증 / 반환하기위한 런타임 실험에 대해 이야기하고 있습니다. Sedgewick은 실험 구현을 테스트 / 디버깅하는 것이 과학 이라고 주장하지 않습니다 .
Raphael

10

종이와 연필이 분명히 사용됩니다. 신호 처리를 가르쳤을 때 특수 신호 처리기를 직접 사용할 수 없었고 종이 보고서 만 나왔습니다.

위대한 컴퓨터 과학자 Dijkstra는 컴퓨터를 많이 사용하지 않았다는 점에 유의하십시오.

이 시리즈의 거의 모든 기사는 1972 년 이후에 손으로 작성되었습니다. Dijkstra는 소프트웨어 기술의 많은 부분을 발명하여 수십 년 동안 자신의 작업에서 컴퓨터 사용을 피했습니다. 그는 UT 동료들의 격려에 매료되어 Macintosh 컴퓨터를 구입 한 후에도 전자 메일과 월드 와이드 웹 탐색에만 사용했습니다.

Disjkstra 's Memorial 에서 인용

이것은 컴퓨터 없이도 훌륭한 컴퓨터 과학을 할 수 있음을 보여줍니다!

종이와 연필 이외에도 컴퓨터 과학 문제는 '현실에서'해결 될 수 있습니다. 예를 들어 Sapientia University에서 수행 한 것처럼 카드 또는 더 특이한 춤을 사용하여 알고리즘을 정렬하는 데모를 보여줍니다 .


이를 효과적으로 수행하는 방법에 대한 조언이 있습니까? 교사는 큰 대학에서 분필 칠판 강의의 혜택을받지 못했을 수도 있습니다.
Raphael

3
많은 수학은 분필 칠판으로 진행됩니다. 나는 당신이 컴퓨터 과학과 비슷하다고 생각합니다.
Finn Årup Nielsen

예를 들어 여기 스플레이 트리에 대한 멋진 칠판 강의가 있습니다. youtube.com/watch?v=So8szqIvIFs
Finn Årup Nielsen

2
개인적으로 데이터 구조와 알고리즘 지식을 하계 작업의 사무에 적용했습니다. 나는 체크 스터브 박스에 기수 정렬을 사용했고 그 일을 한 다른 사람보다 불신의 지점까지 1-2 배 더 빠르다. 제출해야하는 인쇄 된 카드에 자연스러운 병합 정렬을 사용했습니다. 데이터 구조와 계산은 실제 세계에 존재합니다 .
JDługosz

8

많은 컴퓨터 과학 이론은 순전히 이론적이며 펜과 종이를 사용하여 해결할 수 있습니다. 그들에 관한 정보를 얻고 외부 세계와 의사 소통하려면 컴퓨터가 필요합니다.


5
이것은 나에게 더 많은 의견이된다.
Raphael

7

훌륭한 아이디어는 http://csunplugged.org/ 를 참조 하십시오 . Google은 스폰서 중 하나입니다.

사이트에서 :

CS Unplugged는 카드, 문자열, 크레용 및 수많은 게임을 사용하는 매력적인 게임과 퍼즐을 통해 컴퓨터 과학을 가르치는 무료 학습 활동 모음입니다.

이 활동은 학생들이 일반적으로 컴퓨터에서 볼 수있는 방해 요소 및 기술적 세부 사항과 분리 된 이진수, 알고리즘 및 데이터 압축과 같은 기본 개념을 소개합니다.

CS Unplugged는 초등학교에서 노인, 그리고 많은 국가와 배경에서 모든 연령의 사람들에게 적합합니다. Unplugged는 전 세계에서 20 년 이상, 교실, 과학 센터, 가정 및 공원의 휴가 행사에 사용되었습니다!


조건은 복잡하지만 리소스가 허용되면 시도해 볼 가치가 있습니다.
Abhimanyu

나는 이것이 좋아 보인다는 것에 동의하지만, 이것을 올바르게 대답하기 위해서는 질문에 제시된 특정 문제를 해결해야합니다 : 어떤 리소스가 필요합니까? 예를 들어 (농촌?) 아프리카에서 사용할 수 있습니까?
Raphael

3

당신이 할 수있는 방법은 분명합니다. 사람들에게 얼마나 유용한 지 잘 모르겠지만 가능합니다.

그러나 나는 컴퓨터 과학 교사가 어떻게 될지조차 모른다. 컴퓨터없이 컴퓨터 과학을 어떻게 가르 칠 수 있는지 물어볼 수있다.

컴퓨터 과학을 가르 칠 수 있다면 방법을 알게 될 것입니다.

알고 있다면

-Algorithms can be written on pen and paper, and traced on pen and paper.
-Flow charts are written on paper.

데이터베이스의 데이터 테이블 구조 인 정규화 학습은 펜과 종이에서 수행 할 수 있습니다. (관계형 데이터베이스를 연구 할 때 펜과 종이에만 그랬습니다)

컴퓨터 과학 교과서에는 컴퓨터가 필요하지 않습니다.

컴퓨터 과학 교과서를 집어 라이브러리에서 연구했다면, 그것을 이해하기 위해 컴퓨터가 필요하지 않다는 것을 알게 될 것입니다.

그러나 컴퓨터 과학 수업에 참여한 모든 사람은 대부분의 사람들이 프로그래밍 할 수 없다는 것을 알 수 있습니다. 사람들에게 너무 추상적입니다. 대학 수준에서도 마찬가지입니다.

http://www.eis.mdx.ac.uk/research/PhDArea/saeed/paper1.pdf

모든 소수의 학생들이 모든 영국 대학의 모든 초급 프로그래밍 과정에서 실패합니다. 영웅적인 학문적 노력에도 불구하고 그 비율은 몇 년 동안 감소하기보다는 증가했습니다. 교수법과 학생의 반응에 대한 많은 연구에도 불구하고, 우리는 그 원인에 대해 전혀 모른다.

나는 그것을 소수라고 부를 수 있다고 덧붙이고 싶습니다. 프로그램 할 수있는 것은 소수입니다.

그러나 그가 쇠퇴의 원인을 목격 한 것에 주목할 것입니다. 2000 년에서 2010 년 사이에 컴퓨터가 더 대중화되면서 (그는 10 년 중반에 저술했습니다), 더 많은 사람들이 '컴퓨터 과학'연구에 관심을 보였습니다. 그 전에는 더 광적인 사람들 만이 관심을 보였습니다. 그리고 이전에는 컴퓨터를 사용하는 것이보다 기술적 인 것이었지만 컴퓨터를 사용하는 사람이 사용하기 쉽고 응용 프로그램을 더 강력하게 사용할수록 더 많은 사람들이 컴퓨터를 사용하고 더 많은 사람들이 자신이 할 수있는 일에만 관심이있었습니다 그들이 어떻게하고 어떻게 하는가보다는


2
도대체 "늑대"는 무엇입니까?
Nate Eldredge

1
@NateEldredge 도시 사전 :«사람에게 명령 한 용어라고 나 바보 무언가를 / 2 추가하고 2 "무엇 wolly"5 얻을 사람»
폴 A. 클레이튼

@NateEldredge 일반적으로 철자 "월리".
David Richerby

2
OP를 방해하는 것은 답이 아닙니다.
Raphael

2

컴퓨터없이 컴퓨터 과학의 개념을 가르 칠 수 있어야합니다. 물론 컴퓨터에 접근 할 수 없다면 컴퓨터 과학을 배우는 것이 실제로 어떤 유익을 줍니까?

고등학교에서 컴퓨터 과학을 배우고있을 때, 처음 몇 개의 수업에는 컴퓨터가 전혀 포함되지 않았습니다. 대신, 우리는 Karel ++ 이라는 책에서 작업했는데 , 그것은 객체 지향 개념을 가르쳤습니다. 작성된 코드는 모든 코드가 그래프에 대해 조치를 취하므로 화이트 보드 또는 칠판에서 매우 쉽게 "실행"될 수 있습니다. 우리의 첫 몇 과제는 모두 손으로 작성되었으며 교수는 다음 수업 시작시 보드에서 올바른 해결책을 보여줄 것입니다.

알고리즘에 대해 논의하기 시작했을 때, 교수님은 우리를 모두 회의실 앞쪽으로 불러서 줄을 서라고했습니다. 그는 몇 가지 다른 정렬 알고리즘을 보여주었습니다. 어리석은 "원숭이 정렬"이라고 불리는 것으로 시작하여 무작위로 우리 둘을 교환 한 다음 반복 할 때마다 정렬되었는지 확인한 다음 버블 정렬쉘 정렬 을 수행 합니다. 우리에게 "달리기".

그는 컴퓨터 메모리와 스택의 작동 원리를 설명하는 다이어그램을 칠판에 그렸습니다. 그는 변수와 포인터 (C ++ 클래스였습니다)를 보여 주었고 거기에서 연결된 목록과 트리까지 ...

내가 그 수업에서 지운 메모를 넘어 간다면 아마 이것에 덧붙일 수있을 것입니다. 그러나 그것은 지금 내가 기억하는 전부입니다. 이러한 제안이 흥미 롭다면이 답변을 확장 할 수 있습니다.


1
프로그래밍 (공예)과 컴퓨터 과학 을 혼동하는 것 같습니다 .
Raphael

@Raphael 나는 특정 언어로 프로그래밍하는 메커니즘이 과학에 중요하지 않다는 것을 이해 하지만, 컴퓨터 과학이 프로그래밍과 이혼 할 수있는 정도는 이론적으로되기 전에 프로그래밍 과학과 얼마나 이혼 할 수 있습니까? 컴퓨터를 작동하는 방법? 두 가지를 분리하기 위해 내 대답을 변경할 수는 있지만 OP의 질문을 바탕으로 내 마음에 떠오르는 이미지는 복잡한 이론의 수학적 기초를 배우려는 성인이 아니지만 CS 학생들의 응용에 대한 소개가 필요한 초등 학생입니다.
Blackhawk

@DavidRicherby 저는 학생들에게 대상 학생 그룹이 누구인지 (컴퓨터 사용 / 경험) 무엇을 가르치려고하는지 명확히하기 위해 OP에 요청했습니다. 이에 따라 답변을 조정하겠습니다. 가능하다면 알파벳과 어휘를 사용하는 방법을 아는 것보다 독창적 인 글쓰기가 더 직접적인 유추라고 제안합니다. 프로그래밍 언어에 대한 연구가 실제로 컴퓨터 과학에 포함되어 있기 때문에 유추조차도 부족합니다.
Blackhawk

@Blackhawk 물론, 비유가 완벽하지는 않습니다 (거의 정의에 의하면). 그러나 프로그래밍 언어 의 디자인 은 CS이지만, 단순히 언어를 사용하는 것은 아닙니다.
David Richerby

1
@DavidRicherby CS에 대한 둘러보기 페이지와 특히 "질문 ..."및 "문의하지 않음 ..."을 읽었으며 너무 많은 사람들이이 사이트에서 질문 / 답변을하는 느낌을 받았습니다. SO보다 훨씬 나을 것입니다 ... 그래서 그것에 기여하면 사과드립니다. 이 답변에 대해 내가 사이트의 목표와 일치하도록 변경할 수있는 구체적인 사항을 알려주시겠습니까? 최소한 "세미콜론"과 "C ++"에 대한 참조를 제거해야한다고 생각하지만, 객체 지향 언어 개념을위한 교육 도구로 Karel ++을 사용하는 것은 어떻습니까? 아니면 컴퓨터 메모리?
Blackhawk

2

나는 컴퓨터 과학 학위를 받았으며 많은 프로그래밍 (다양한 언어)을 배웠다고 생각했으며 많은 수학적 측면 (및 일부 하드웨어)도 배웠습니다.

수학 부분은 첫해에 더 중요했습니다. 3D 그래픽에 필수적인 행렬 수학을 생각해보십시오 ( 정점 조명에 대한 표면 법선을 어떻게 계산합니까? ). 우리는 많은 통계를 수행했습니다-작업 처리량 분석, 시스템이 막히기 전에 어느 정도의 작업을 시스템에 전달할 수 있습니까? 많은 중앙 집중식 시스템 및 네트워킹에서 매우 중요합니다.

많은 알고리즘을 가르 칠 수 있습니다. 여기에서 한 포스터는 학생들에게 각각 숫자를 부여하고 다양한 알고리즘 (활성 및 정보)을 사용하여 스스로 정렬하도록합니다. 실제로 인터넷 에서 애니메이션 이미지 로 설명 할 수있는 모든 알고리즘을 이러한 방식으로 학습 할 수 있습니다. 마찬가지로 컴퓨팅의 기본 사항- 프로그램 카운터, 누산기 및 레지스터같은 방법으로, 또는 종이로 가르 칠 수 있습니다. 학생 기반 멀티 스레딩은 어떻습니까? 클래식 멀티 스레딩 연습 (또는 1 개의 공유 스푼 문제)에서 학생 그룹에게 카드 게임을 쌓습니다. 또는 디자인 패턴, 나는 칠판 아키텍처가 학생들이 다중 프로세스 통신을 구현하는 방법을 배우거나 중국 속삭임 게임이나 유한 상태 기계로 묘사 된 n 계층 아키텍처가 다음과 같은 행동을하는 학생들에게 적합하다고 생각할 수 있다고 생각할 수 있습니다 '생활 컴퓨터'의 모듈. 이진 수학 또는 스택 기반 (즉, 리버스 폴리시) 실행을 가르 칠 수 있습니다.

물론 전자 장치에 액세스 할 수 있으면 연산 증폭기로 아날로그 컴퓨터를 구축 할 수 있습니다. 그들은 멋지다.

불행히도이 모든 것이 컴퓨팅보다 수학처럼 보일 것입니다. 그러나 많은 것들이 고착 될 것이며 언젠가는 그들이 컴퓨팅 업계에 들어간 것으로 가정 한 이유를 이해할 것입니다. 컴퓨터가 할 수있는 일, 사람이 할 수있는 일을 기억하십시오 . 동일한 결과를 달성하려면 시간과 지루함 이 훨씬 더 필요합니다. 당신은 컴퓨터가 무엇을하는지 보여주기 위해 간단한 예를 들어야하고, 컴퓨터 기초를 내가 덜 배운 방식으로 설명하는 상상력을 가져야 만합니다.


1

컴퓨터없이 컴퓨터 과학을 공부할 수있는 방법을 묻는 것은 망원경없이 우주론을 공부할 수있는 방법을 묻는 것과 같습니다.

나는 주로이 진술에 반응하고 다른 답변에 강력하게 동의하지 않기 때문에 대답하고 있습니다. 내 의견으로는 올바른 비교는

컴퓨터없이 컴퓨터 과학을 공부할 수있는 방법을 묻는 것은 우주없는 우주론 공부할 수있는 방법을 묻는 것과 같습니다 .

컴퓨터 과학은 컴퓨터를 사용하는 것이 아니라 컴퓨터에 관한 것입니다. 사실, 많은 컴퓨터 과학은 수학을 기반으로하기 때문에 우주론 대신 컴퓨터없이 수학 부분을 연구 할 수 있습니다 (따라서 수학을 가르치는 경우). 우주가있을 때 유용한 물리학을 공부할 수 있습니다. 망원경에 접근 할 수 있지만) 결국에는 물리학입니다.

모든 사람들이 여기에 답을하고있는 것은 학사 수준의 컴퓨터 과학이 이론적이며 컴퓨터를 필요로하지 않는 방법입니다. 사람들이 IMHO가 잊어 버린 것은 같은 사람들이 그 시점까지 컴퓨터를 광범위하게 사용했다는 것입니다. 이론적 내용을 직접 탐구하는 자연스러운 이해가 없다면 많은 학생들이 컴퓨터 과학에 대한 견해를 완전히 포기하거나 일치시키지 않을 것입니다. 따라서 어떤 컴퓨터가 무엇인지 이해하고 프로그래밍 후에 이론적 인 내용을 이해하는 프로그래밍을 가르치십시오.

아프리카에서 일반 수준의 노하우 외에 컴퓨터에 대한 지식이 없지만 고급 컴퓨터 과학을 배우고이 취미에 대부분의 시간을 할애하는 학생들을 가르치는 것처럼?

예산에 따라 다릅니다.

  • 예산거의 없다 아프리카로 여행 할 돈이 있다면 Arduino 클론을 구입 하십시오 (예 : 기능적인 arduino 클론이 $ 13 인 경우 ) ( 예 :이 목록을 확인하십시오 ), 일부 출력 구성 요소 (예 : LED) 및 하나의 랩톱. 몇 가지 기본 프로그래밍으로 시작하여 종이로 가르치고 랩톱에 입력해야합니다. 가장 효율적인 방법은 아니지만 컴퓨터가 실제로 무엇인지에 대한 기본적인 기본 이해를 가르쳐줍니다.
  • 저예산 $ 50 안드로이드 스마트 폰 및 키보드 (마이크로 USB 키보드 또는 블루투스 키보드, 스마트 폰 및 키보드 모두 ebay.com 또는 aliexpress.com 확인)의 $ 750 달러 가치 구매 . 예, 그들은 백만 가지 방법으로 엉터리입니다. 심지어 그것에 대해 말하지 마십시오. 그럼에도 불구하고 (온 스크린 키보드 사용을 고려하지 않아도) 데이터를 입력 할 수 있으며 안드로이드 용 간단한 코딩 앱이 있습니다. 스마트 폰당 여러 명의 학생을 보유하고 있으며 이는 잘 작동합니다.

컴퓨터 공학은 컴퓨터 없이는 배울 수 없다고 말하는 것이 아닙니다. 단지 컴퓨터에 익숙해 져야하고 그러한 것을 고려하기 전에 컴퓨터를 잘 알고 있어야한다는 것입니다.


내 답변에 대한 귀하의 의견 불일치를 오해했거나 이에 동의하지 않습니다. 우리가 우주가 없다는 것을 알았다면 우주론은 완전한 조작이 될 것입니다. 우리가 우주의 존재를 진정으로 믿는다면 우주론은 최악의 의도의 자원 낭비 일 것입니다. 그러나 실제로 우리는 그것이 존재한다는 것을 알고 있습니다. 망원경이없는 우주론은 "이봐, 나는 이번 주에 우주를 볼 수는 없지만 분명히 거기에있다. 나는 지금 그것에 대해 배우고 다음 주에 그것을 볼 수있다"고 말한다. 컴퓨터가없는 CS는 "이봐, 컴퓨터는 확실히 존재하기 때문에 지금 공부하고 나중에 물리적으로 경험할 수있다"고 말합니다.
David Richerby

그리고 컴퓨터가 무엇인지 실제로 이해하지 못하고 컴퓨터 과학을 가르치는 것은 그러한 제작만큼이나 중요합니다. 당신은 망원경을 통해 우주와 직접 상호 작용하지 않으며, 그것을 관찰하는 많은 방법 중 하나 일뿐입니다. 밤에는 여전히 볼 수 있으며 기본 수준에서 쉽게 이해할 수 있습니다. 컴퓨터에는 동일하게 적용되지 않습니다.
David Mulder

나는 실제로 존재하지만 경험하지 못한 것에 대해 누군가에게 가르치는 것은 완전히 동의하지 않습니다.
David Richerby

2
@DavidRicherby : 당신과 다른 사람들은 컴퓨터에 익숙해 져있어서 컴퓨터를 기본으로하지 않고 누군가에게 컴퓨터 과학을 가르치고 가르치는 것이 실제로 무엇을 의미하는지 이해하기 어렵습니다. 실제 컴퓨터에서 컴퓨터를 사용하지 않은 젊은이들에게 ... 그는 프로그래밍이나 컴퓨터 과학을 가르치려고 시도하지 않았으며 컴퓨터가 무엇인지에 대한 기본 수준의 이해력을 얻는 것은 자라지 않은 경우 자체의 과제입니다. 컴퓨터로. (계속)
David Mulder

2
요즘에는 더 많은 청소년이 경험이 많을수록 상대적으로 쉬워 지지만, 경험이 전혀없는 경우에 대한 문제였습니다. 같은 사람이 자신이 가르치고있는 나라에서 중고등 학교 학생들이 컴퓨터를 건드리지 않고 대학의 정보학 과정에 도착하는 기간이 어떻게 있었는지 말해주었습니다. 열악하게 끝나는 대부분의 (전부는 아님) 사례. 문제 / 아이디어는 컴퓨터 일자리가 잘 지불된다는 것입니다. 그래서 그들은 무엇이든 상관없이 그 일을 원합니다.
David Mulder

1

컴퓨터 과학은 알고리즘에 관한 것이며 컴퓨터 (및 전자)에 관한 것이 아닙니다.

따라서 알고리즘 연구 (초등 산술조차도)는 컴퓨터 과학과 프로그래밍에 대한 이해를 가져올 수 있습니다. "알고리즘"이라는 용어조차도 arithmetica 저서 ( 알 -Khwārizmī , 9 세기 경) 의 저자의 구절이라는 것을 기억하십시오 .

알고리즘 연구는 기본 수단을 사용하여 수행 할 수 있지만 알고리즘이 작동하는 이유, 발생 방식 및 알고리즘이 올바르게 작동 함을 실제로 입증 할 수있는 방법을 제공해야합니다.

컴퓨터 과학과 알고리즘 및 프로그래밍의 발전에 대한 역사는 과소 평가되어서는 안됩니다. 예를 들어 Babbage / Ada의 계산기, Enigma 기계, Konrad Zuse의 plankalkul , ENIAC 등

그러면 알고리즘을 공식화하는 방법으로 프로그래밍 (및 프로그래밍 언어)을 도입 할 수 있습니다. 이것은 또한 기본 수단을 사용하여 (대부분 확장) 수행 될 수 있습니다.

참고 일부 연구는 프로그래밍을 학습 peole (예 : 평등 시험 대 asignment와 RAM 기계의 작동을위한 상징의 오버로드 관련) 이해하는 두 가지 어려움이있는 것으로 나타났습니다.

  1. 루프 구문 (예 : for 등)이 어려워 보입니다.
  2. 할당 대 평등 테스트도 어렵다.

따라서 사람들이이를 명확하게 파악하고 이해할 수 있습니다.

또한 컴퓨터에 액세스 할 수있는 경우 (프로그래밍 할 수있는 계산기도 포함) 응용 사례와 실무 경험을 제공하는 데 사용할 수 있습니다. 다른 사람은 시뮬레이션 컴퓨터를 사용할 수 있습니다. 예를 들어 한 그룹의 사람들이 컴퓨터의 일부를 시뮬레이션 할 수 있고 클래스는이 시뮬레이션 된 컴퓨터의 다양한 문제를 해결하고 어떻게 진행되는지 알 수있는 알고리즘을 설계 할 수 있습니다. 이것은 게임으로도 볼 수 있으며 창의적이고 독창적입니다.

그런 다음 일부 (추상적 인) 계산 모델 (예 : Turing Machines )을 알고리즘에 대한 이전 자료와 형식화 (프로그래밍) 언어로 공식화 할 수 있습니다.

실제 컴퓨터의 전자 장치를 소개하려면 두 부분으로도 할 수 있습니다.

대학에서도 일부 전자 공학 및 컴퓨터 아키텍처 과정은 이론적입니다 (하나는 실제로 CPU와 접촉하거나 설계하지 않습니다).

따라서 컴퓨터 아키텍처와 관련된 전자 장치 (및 기본 물리학)의 일부 작동 원리 ( 반도체 , 반도체 에너지 구역, p-np 게이트 등) 가 도입 될 수 있습니다 .

그런 다음 프로그래밍 및 알고리즘에 대한 이전 자료를 활용하고 업계에서 사용되는 CPU 설계 (및 설명) ( 로직 게이트 , 플립 플롭 , FPGA , VHDL , CMOS 회로 등) 기술 (현대)을 도입 할 수 있습니다 .

이것은 병렬 처리, 파이프 라이닝, 캐시 메모리, 벡터 어드레싱, 마이크로 프로그래밍, DMA 등과 같은 CPU 설계 아키텍처 문제로 더 진행될 수 있습니다.

글쎄, 아마 이것은 너무 많을 수도 있지만 대답을 독립적으로 만들기 위해 추가되었습니다.


-1

프로그래밍을 가르치고 있습니까?

내가 어렸을 때, 우리는 캠핑 휴가를 갔고 컴퓨터 설명서를 가져 왔습니다. 펜과 종이를 사용하여 간단한 게임을 만들 수있었습니다.

이것은 내가 생각하는 첫 번째 실제 프로그램이므로 많은 학습이 필요했습니다. 나는 내가하고 싶은 일을 알고 있었지만, 그것을 알아내는 동안 많은 잘못된 시작이있었습니다. 그러나 결국 전체 코드를 작성할 수있었습니다.

내가 말하는 것은 의사 코드 및 / 또는 플로우 차트로 시작하여 프로젝트를 계획 한 다음 코드로 변환하는 것입니다. 나는 그것을 읽는 것만으로 많은 코드를 디버깅 할 수있었습니다. 여기에서 동료 리뷰를 사용할 수도 있습니다.


순서도 대신 의사 코드를 사용합니다.
David Richerby

이 질문에는 답변 당 하나 이상의 경험치 데이터 포인트가 필요합니다.
Raphael

-2

이전 답변에 반향 : 펜과 종이 연습을 읽고 수행하는 것만으로도 많은 것을 배울 수 있습니다. 용지에서 문제를 해결할 수 있다면 어려운 부분이 있습니다. 그러나 학생들을 CS에 노출시키는 상당히 저렴한 방법의 존재에 대해서도 언급하고 싶습니다. Raspberry Pi Project에 대해 잘 알고 있습니까? 여러 사람이 공유해야하거나 1 개 또는 2 개의 유닛 만 구입할 수있는 경우에도 학생들을 기술에 노출시키는 방법으로 고려해 볼 가치가 있습니다.


이것은 기존 답변 위에 아무것도 추가하지 않습니다.
Raphael

1
@Raphael True, 저렴한 컴퓨팅 장치를 언급하는 다른 답변 이이 게시물 뒤에 게시되었습니다.
David Richerby

-3

이것에 약간의 흔들림을 시도하고 "상자 밖에서 생각하십시오". 완전히 풀려 난 컴퓨터는 실제로 비용이 많이 들고 때로는 자원이 필요하며 유지 관리가 까다 롭습니다. 그러나 LCD 화면 등의 본격적인 컴퓨터를 모방 한 많은 저렴한 전자 시스템이 있으며, 많은 기본 프로그래밍 원칙을 적용 할 수 있으며 많은 배터리 전원을 사용합니다. 이진 논리 회로 구축 등과 같은 컴퓨팅과 EE 원칙의 밀접한 관련이있다. 또한 오늘날 일부 장난감에는 프로그래밍 기능이 있습니다.

  • 프로그래머블 계산기 . 일부는 전체 프로그래밍 언어 (고수준이 아니라 어셈블리 언어와 유사)가 내장되어 있습니다. 일부는 고급 프로그램을 지원합니다.

  • 라즈베리 파이 미니 컴퓨터 / 마이크로 컨트롤러는 이러한 목적으로 개발되었으며 리눅스를 실행합니다. 많은 경우에 $ 40 미만.

  • 시차 STAMP 키트 마이크로 컨트롤러에는 USB 연결이 필요하지만 Raspberry pi로 충분할 수 있습니다. PIC 마이크로 컨트롤러 참조

  • 로봇 시스템. 프로그래밍 가능한 로직을 가진 많은 저렴한 것들이 있습니다. 레고 로봇 공학 마인드 스톰 / nxt 는 최고 중 하나이며 저렴한 모델이 있습니다.

  • 일부 콘솔 게임에는 프로그래밍 원칙이 내장되어 있습니다. 예를 들어 Little Big Planet 에는 놀라운 프로그래밍 기능이 내장되어 있습니다. 프로그래밍 가능한 게임에는 핸드 헬드 버전이 있습니다. 영감을 얻기 위해 복잡한 구성의 YouTube 동영상이 많이 있습니다.

  • 스마트 폰 은 새로운 프로그래밍 세계입니다. 그들은 자바 스크립트를 실행하는 브라우저를 가지고 있으며 프로그래밍 관련 응용 프로그램이 많이 있으며 인터넷 연결 (WiFi 포함)으로 프로그래밍 사이트를 서핑 할 수도 있습니다.

또한 주석 등에서 TM 프로그램을 작성하고 추가하는 등의 작업을 수동으로 시도 할 것을 제안합니다.


2
컴퓨터에 액세스 할 수없는 사람들도 레고 마인드 스톰, 콘솔 게임 시스템, 스마트 폰 또는 Wi-Fi에 액세스 할 수없는 것 같습니다.
David Richerby

공정한 / 명확한 / 예상 된 지점이지만 언급 된 내용은 질문 기준에서 명시 적으로 배제되지 않았습니다. 예를 들어 비싸기 때문에 학생들이 물건을 가지고 있지 않은지 여부는 질문에서 알 수 없으며 위에 나열된 모든 것은 벤치 마크로 데스크톱 컴퓨터보다 저렴합니다. 교과서를 구입할 수있는 학생이나 학교는 위의 책을 감당할 수 있습니다 (공유 가능). 교과서가 합리적이지 않다면 다른 것은 무엇입니까?
vzn

(fyi 질문 범위는이 답변이 작성된 이후 mod에 의해 크게 결정되었습니다. 나에게 질문 편집은 원래 작가가 의도하지 않은 주요 가정을 만들고 버그가 아닌 기능으로 원래 모호성을 선호합니다)
vzn
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.