수탁연구 CR 2006-56-4 [ 개정판 ] 정보과학 영재교육 교수학습 자료 중등 발전 단계 단원 1 알고리즘 이해하기
수탁연구 CR 2006-56-4 [ 개정판 ] 정보과학 영재교육 교수학습 자료 중등 발전 단계 단원 1 알고리즘 이해하기 연구진 연구책임자 공동연구자 연구 조원 : 김 미 숙( 한국교육개발원) : 이 재 호( 경인교육대학교) : 김 아 름( 한국교육개발원) 집필진 허 경( 경인교육대학교) 주길홍( 경인교육대학교) 손원성( 경인교육대학교) 검토진 ( 가나다 순) 권성기( 포항 장성고등학교) 김도형( 파주 능안초등학교) 이근백( 천안 계광중학교) 정관용( 서울 과학고등학교) 정행중( 전남 보성여자중학교) 조재완( 한국기술교육대학교) 최종기( 평택 태광고등학교)
- 3 -
머 리 말 지식 정보화 사회로 불리는 21세기의 시작점에 살고 있는 현대인에게 정보를 효율적으로 조직하여 새로운 정보를 창출하는 정보관련 능력은 매우 중요한 생 존 능력이다. 정보과학의 중요성은 전문 과학기술 분야를 넘어서 우리의 일상생 활 깊숙이 들어와 있으며, 논리적 사고, 비판적 사고, 수리적 사고, 언어능력 등 에 바탕을 둔 효율적인 정보처리능력은 인간의 삶의 질을 높이는 창의적 산출물 생산에 핵심적인 능력이 되고 있다. 이에 따라 정보과학 분야에 높은 흥미와 적성을 보이는 영재들을 대상으로 정보과학에 대한 그들의 어린 호기심을 충족시키고, 가진 잠재력의 싹을 꽃피우 게 도와주는 정보과학 영재교육은 국가 영재교육의 맥락 속에서 진행되고 있다. 하지만 그동안 현장에서의 절실한 필요에도 불구하고 정보과학 영재교육은 체계 적인 교육과정은커녕 변변한 교재나 교수학습 자료의 지원 없이 이루어지고 있 던 측면이 컸다. 본 자료는 교육인적자원부 위탁 정보과학 영재교육을 위한 교육과정, 선발도 구, 및 교수학습 자료 개발 연구의 일환으로서, 정보과학 영재교육과정을 수립하 고 그에 따른 교수학습 활동을 자료와 함께 수업 샘플로서 제시하고 있다. 본 교 수학습 자료 시리즈의 구성은 탐색 - 발전 - 심화 의 수준별 삼 단계로 계획되 었으며, 본 자료는 정보과학에 높은 흥미와 적성을 보이는 중학생 영재들을 주 대상으로 한, 한 학기 분량의 발전 단계의 교수학습 자료로 2005년 처음 개발되 었으며, 2006 년에 개정판으로 수정 보완되었다. 교사들이 이 책자를 활용할 때 그대로 실제 수업에 편리하게 적용할 수 있을 뿐 아니라 더 나아가 이 책자 내용에 자신의 반짝이는 독창적 아이디어를 추가 해 자신의 학생과 수업여건에 가장 잘 맞는 내용으로 재창조하여 사용하는 토대 가 된다면 더욱 좋겠다. 따라서 본 책자는 중학생 영재를 대상으로 한 학기 분량 의 교수학습 활동을 제안하고 있지만, 교사 재량으로 초등학생 영재를 위한 수업 에 활용하거나 또는 반 학기로 축소하거나 한 학기 이상의 활동으로 확대 재구 성해 사용할 수도 있겠다. 본 교수학습 자료가 정보과학 영재교육 현장에서 교사 가 즐겁고 도전적인 교수학습 활동을 이끌어내는 시작과 밑거름이 되기를 기대 한다. 끝으로 이 책자가 나오기까지 많은 사람들의 노력이 있었다. 우선 각 책자의 내용을 훌륭하게 집필해 준 집필진과, 밤샘 작업도 마다 않고 3차에 걸친 집중작 업으로 그 내용을 꼼꼼하게 검토하고 때론 구체적 아이디어까지 제공해 준 검토 진 교사들, 과제를 총괄해 준 연구진, 또 이 연구가 애초 가능하게 해준 교육부 과학실업교육정책과의 지원에 감사를 드린다. 2006년 12월 한 국 교 육 개 발 원 원장
차 례 Ⅰ. 총론 1 1. 정보과학 영재교육 프로그램 개발 3 2. 정보과학 영재교육과정 개요 10 3. 정보과학 영재교육 교수학습 자료 개요 27 4. 개발된 중학생용 정보과학 영재교육 교수학습 자료 체제 31 Ⅱ. 교수학습 자료 43 단원 개요 47 단원 목표 48 개념모형도 48 단원 학습내용 49 1 주 주제 오리엔테이션 50 2 주 주제 알고리즘 이야기 64 3 주 주제 순서도를 이용한 알고리즘 표현하기 87 4 주 주제 의사코드를 이용한 알고리즘 표현하기 114 5 주 주제 생활 속 알고리즘 구현하기( 등교 알고리즘) 142 6 주 주제 생활 속 알고리즘 구현하기( 수업 알고리즘) 168 7 주 주제 생활 속 알고리즘 구현하기( 점심시간 알고리즘) 192 8 주 주제 생활 속 알고리즘 구현하기( 하교 알고리즘) 221 9 주 주제 생활 속 알고리즘 구현하기( 소풍 알고리즘) 244 10 주 주제 생활 속 알고리즘 구현하기( 긴급 상황처리 알고리즘) 270 11 주 주제 보고서 작성 300 12 주 주제 단원 결론 및 평가 327 단원 마무리 학생 설문조사 346 부록 347 [ 부록 1] 정보과학 영재교육과정 구성 기본 방향 349 [ 부록 2] 정보과학 영재교육 관련자 네트워크 353 색인 359
Ⅰ. 총론
- 2 -
1. 정보과학 영재교육 프로그램 개발 시 도 교육청의 영재학급 및 영재교육원 등에서 활용하는 영재 교육 프로그 램은 영재교육의 본질을 효과적으로 추구하고 달성할 수 있으며, 사용이 용이하 도록 다음과 같은 방향으로 개발한다. 즉 1) 개별화 맞춤형 영재교육의 취지를 살려 무엇보다도 교육 프로그램이 투입될 교육대상자의 특성을 우선적으로 이해 하고 2) 창의적 문제 해결력과 자기 주도적인 학습 능력을 신장할 수 있도록 하 며 3) 속진ㆍ선행학습보다는 심화학습을 중심으로 하고 4) 각 시 도 교육청에서 자체적으로 응용 개발하는데 활용할 수 있으며 자율적으로 수업에 활용할 수 있도록 구성한다. 5) 교사가 최대한 재량을 가지고 위의 방향은 영재교육 교수학습 자료를 개발하는 일반적인 방향이다. 이에 더 해 특별히 정보과학 분야의 영재 교수학습 자료를 개발하기 위해서는 보다 구체 적으로 어떠한 특성을 가지는 학습자를 대상으로, 무엇을 목표로 하여, 어떠한 내용과 방법으로 학생들을 지도해야 하는지에 대한 청사진이 필요하다. 한국교육 개발원 영재교육센터에서는 2005년에 델파이 조사와 전문가 협의회를 통해 정보 과학과 그 인근 학문분야 전문가들의 정보과학 영재교육에 대한 폭 넓은 의견을 청취하고 수렴하였다. 이러한 연구내용을 토대로 하여 정보과학 영재교육이 목표 로 할 교육 대상자들이 누구인지를 명시하고 정보과학 영재교육과정의 기본 방 향과 교수학습 프로그램 개발의 기본 지침을 수립하였다( 김미숙, 이재호, 2005). 다음에서는 그 교육과정과 프로그램의 핵심 내용인 정보과학 영재교육의 대상자, 교육목표, 교육내용, 교육방법, 교육평가 등을 소개하도록 하겠다. 가. 정보과학 영재교육 대상자 현재 정보과학 영재교육은 흔히들 수학영재, 과학영재에 이어 정보영재라는 말로 그 대상자를 지칭하며 정보반 또는 정보영재반이라는 명칭으로 교육을 실 시하고 있는 곳이 많다. 하지만 과연 초등학생이나 중학생의 어린 시기부터 정보 영재라고 규정하여 지칭하는 것이 과연 적절한지에 대해 심도 깊은 토론이 필요 하다. 아직까지 학계에서는 정보과학 영재의 구분에 대한 논의가 진행 중이고, 정보과학 영재에 대한 개념 정의가 불명확한 상태에 있다. 따라서 정보영재 라는 말 보다는 정보과학 영재교육대상자 라는 말이 더 적절하며 미래사회에서의 정 - 3 -
보과학의 중요성에 비추어 볼 때 정보과학 영재교육은 꼭 정보과학에 특수한 재 능을 보이는 영재가 아니더라도 일반 지적 능력이 우수한 영재에게나 또는 다른 특수 재능을 가지고 있는 영재에게도 보편적으로 교육될 수 있으며 또한 그 필 요성이 강조되고 있는 분야이다. 따라서 정보과학 영재교육을 효과적으로 실시하기 위해서는 그 대상자를 폭 넓게 정의할 필요가 있다. 델파이와 협의회를 통한 전문가 의견조사 결과에 따라 정보과학 영재교육대상자는 다음의 지적 능력과 정의적 특성 중 한 가지 또는 그 이상의 능력과 특성을 보이는 초등학교 4~6 학년, 중학교 1~3학년 학생으로 할 것을 권장하며, 본 교수학습 자료는 이러한 특성을 가진 학생을 염두에 두고 개발되었다. < 표 1> 정보과학 영재교육대상자 특성 지적 능력 ㆍ창의적 사고가 우수한 자 ㆍ수리 및 논리적 사고가 우수한 자 ㆍ문제 발견 및 문제해결력이 우수한 자 ㆍ논리전개( 알고리즘 설계) 능력이 우수한 자 ㆍ관찰력 및 과학적 사고가 우수한 자 ㆍ직관력 및 통찰력이 우수한 자 ㆍ새로운 정보 창출 능력을 가진 자 ㆍ높은 지적 능력을 가진 자 정의적 특성 ㆍ뛰어난 과제집착력 및 집중력을 가진 자 ㆍ강한 도전의식 및 모험심을 가진 자 ㆍ의문이 많고 지적 호기심이 매우 많은 자 ㆍ정보과학 분야에 대한 관심과 흥미가 매우 많은 자 ㆍ풍부한 상상력 및 자유로운 사고를 가진 자 나. 정보과학 영재교육 교육 목표 정보과학 영재교육은 다음 다섯 가지를 그 주요 교육목표로 삼는다. 즉 정보 과학 분야에 필요한 필수적인 사고력을 신장하고, 학생들에게 잠재되어 있는 정 보과학 적성을 강화하며, 정보과학 분야의 특정 지식을 습득하고, 이와 관련된 특수 능력을 습득하며, 정보과학 분야와 관련된 일반적인 능력도 아울러 신장하 도록 한다. - 4 -
< 표 2> 정보과학 영재교육 교육목표 정보과학 영재교육 교육목표 1. 정보과학 분야에 필수적인 사고력을 신장한다. 2. 정보과학 분야의 잠재적 적성을 강화한다. 3. 정보과학 분야를 구성하는 특정 지식을 습득한다. 4. 정보과학 분야와 관련된 특수 능력을 습득하되 기능과는 구분한다. 5. 정보과학 분야와 관련된 일반 능력을 신장한다. 위의 교육 목표를 달성하기 위하여 교육내용, 교육방법, 교육평가를 교육목표 와 일관되게 상호 유기적으로 제시하여 교육과정 전반에 걸쳐 교육목표가 명확 히 반영되도록 하였다. 다. 정보과학 영재교육 교육 내용 정보과학 영재교육의 교육 목표로 설정된 다섯 가지 중 첫 번째 목표인 정보 과학 분야에 필수적인 사고력 신장은 구체적으로 수리적 사고, 논리전개 및 추론 능력, 창의적인 문제발견 및 해결 능력을 핵심적인 사고능력을 말하는 것으로 교 육 내용이 초ㆍ중학생 영재들이 위의 사고력을 신장시킬 수 있는데 도움을 주는 내용이 되게 한다(< 표 3> 참조). 두 번째 교육 목표인 정보과학 분야의 잠재적 적성을 강화하는 것과 관련하 여 교육 내용이 초ㆍ중학생 영재들의 정보과학에 대한 호기심을 강화시켜주고, 정보과학의 미래 비전을 제시해 주며, 정보과학과 실생활과의 연계성을 볼 수 있 도록 설계되도록 한다. 또한 중학생의 경우 정보과학 분야의 진로에 대한 구체적 인 그림을 그릴 수 있도록 도와주는 내용이 되게 한다. 세 번째 목표인 정보과학 분야의 특정 지식 습득을 위해서 이 특정 지식을 다음과 같이 명시하였다. 즉 초등학생 수준에서 알고리즘 설계, 계산 원리, 기초 프로그래밍, 이산구조, 정보보호 및 윤리, 인간과 컴퓨터의 상호작용 등에 대한 지식이 교육 내용에 포함되도록 하고, 중학생 수준에서는 이들 외에 프로그래밍 언어, 자료 구조, 기초 수학이론, 정보과학과 연관된 과학이론, 고급 프로그래밍 등을 추가로 교육 내용에 포함시킨다. - 5 -
네 번째 목표는 정보과학 분야의 특수 능력 습득에 관한 것이다. 이에 따라 초ㆍ중학생의 교육 내용에 과학적 규칙성 발견 및 과학적 탐구 능력 실습과 문 제의 구조화 및 모델링 능력 실습 등을 포함시키는 것이 필요하다. 중학생 영재 를 위해서는 프로그램 제작 능력, 시스템 개발 능력, 객체 지향적 프로그래밍 능 력 등을 추가적으로 포함시킬 수 있겠다. 마지막으로 정보과학 분야에서 필요한 일반적인 능력으로는 자율적 탐구 및 하습 능력, 상호작용과 의사소통능력, 공동 작업 능력, 리더십 등이 있겠다. 이러 한 능력은 초등학생 수준에서부터 관심을 가지고 교육내용에 담고 있어야 한다. - 6 -
< 표 3> 정보과학 영재교육 교육목표와 교육내용 1. 2. 3. 4. 5. 교육목표 교육내용 초등학교 4-6 학년 중학교 1-3 학년 사고력 신장 1-1.수리적 사고 1-1.수리적 사고 1-2.논리전개 및 추론 능력 1-2.논리전개 및 추론 능력 1-3.창의적인 문제발견 및 1-3.창의적인 문제발견 및 해결능력 해결능력 2-1.정보과학에 대한 호기심 2-1.정보과학에 대한 호기심 적성 강화 2-2.정보과학의 미래 비전 제시 2-2.정보과학의 미래 비전 제시 2-3.정보과학과 실생활과의 2-3.정보과학과 실생활과의 연계성 연계성 2-4.정보과학 분야 진로 3-1.알고리즘 설계 3-2.이산구조 3-1.알고리즘 설계 3-3.프로그래밍 언어 3-2.계산 원리 3-4.자료구조 3-3.기초 프로그래밍 3-5.계산 원리 특정 지식 습득 3-4.이산구조 3-6.기초 수학이론 3-5.정보보호 및 윤리 3-6.인간과 컴퓨터의 상호작용 4-1.과학적 규칙성 발견 및 과학적 탐구 능력 특수 능력 습득 4-2.문제의 구조화 및 모델링 능력 5-1.자율적 탐구 및 학습 능력 5-2.상호작용과 의사소통능력 일반 능력 신장 5-3.공동 작업 능력 5-4.리더십 3-7.정보과학과 연관된 과학이론 3-8.고급 프로그래밍 3-9.정보보호 및 윤리 3-10.인간과 컴퓨터의 상호작용 4-1,문제의 구조화 및 모델링 능력 4-2.프로그램 제작 능력 4-3.시스템 개발 능력 4-4.객체 지향적 프로그래밍 능력 5-1.자율적 탐구 및 학습 능력 5-2.상호작용과 의사소통능력 5-3.공동 작업 능력 5-4.리더십 라. 정보과학 영재교육 교육 방법 정보과학 영재교육의 다섯 가지 목표와 그에 따른 교육내용을 가지고 초ㆍ중 학생 영재들을 지도할 때 다음과 같은 교육 방법, 즉 교수학습 활동을 적절히 활 용할 수 있다. 다음에 제시한 다양한 방법은 학교급별로 또는 학생과 교사가 처 한 교육 여건에 따라 융통성 있게 활용하도록 하며 교육과정에 명시적으로 표현 - 7 -
되게 한다(< 표 4> 참조). 사고력 신장 활동을 위해서 권장되는 교육 방법은 초등학교 수준에서 전문가 멘토링, 읽기와 글쓰기, 발표와 토론 등이다. 중학교 수준에서는 전문가 멘토링, 주제별 연구 프로젝트 활동, 문제 풀이, 발표와 토론 등을 들 수 있겠다. 정보과학에 대한 적성을 강화하는 활동들로 초등학생 영재들에게는 그룹 프 로젝트, 현장교육 및 실습, 발표와 토론, 읽기와 글쓰기 등을 권장한다. 중학생 영재들에게는 전문가 특강, 발표와 토론, 주제별 연구 프로제트, 현장교육 및 실 습 등을 통해 그들이 가진 적성과 호기심을 격려하는 것이 바람직하다. 정보과학 분야의 특정 지식 습득에 적절한 교수학습 활동으로는 전문가 멘토 링, 발표와 토론, 강의, 팀티칭, 그룹 프로젝트, 실험, 현장교육 및 실습 등 다양 한 방법이 동원될 수 있겠다. 초ㆍ중학생 영재들이 특수 능력을 습득하도록 도와주는 활동으로 실험, 연구 프로젝트 및 현장교육과 실습 등이 바람직하다. 일반능력 신장을 위해서는 현장교육 및 실습, 프로젝트 활동, 발표와 토론 등 을 권장한다. < 표 4> 정보과학 영재교육 교육목표와 교육방법 교육목표에 따른 활동 1. 사고력 신장 활동 2. 적성 강화 활동 3. 특정 지식 습득 활동 교육방법 ( 교수학습활동 ) 초등학교 4-6 학년 중학교 1-3 학년 ㆍ전문가 멘토링 ㆍ읽기와 글쓰기 ㆍ발표와 토론 ㆍ그룹 프로젝트 ㆍ현장교육 및 실습 ㆍ발표와 토론 ㆍ읽기와 글쓰기 ㆍ전문가 멘토링 ㆍ발표와 토론 ㆍ강의 ㆍ그룹 프로젝트 ㆍ실험 ㆍ현장교육 및 실습 ㆍ전문가 멘토링 ㆍ주제별 연구 프로젝트 ㆍ문제풀이 ㆍ발표와 토론 ㆍ전문가 특강 ㆍ발표와 토론 ㆍ주제별 연구 프로젝트 ㆍ현장교육 및 실습 ㆍ전문가 특강 ㆍ전문가 멘토링 ㆍ발표와 토론 ㆍ강의 ㆍ팀티칭 ㆍ주제별 연구 프로젝트 ㆍ실험 ㆍ현장교육 및 실습 - 8 -
4. 5. 특수 능력 습득 활동 일반 능력 신장 활동 ㆍ실험 ㆍ현장교육 및 실습 ㆍ현장교육 및 실습 ㆍ그룹 프로젝트 ㆍ발표와 토론 ㆍ실험 ㆍ현장교육 및 실습 ㆍ주제별 연구 프로젝트 ㆍ현장교육 및 실습 ㆍ주제별 연구 프로젝트 ㆍ발표와 토론 마. 정보과학 영재교육 평가 정보과학 영재교육의 성과는 역시 다섯 가지 교육 목표를 중심으로 평가하되 목표에 따라 평가 내용과 평가 방법을 다소 달리한다(< 표 5> 참조). 사고력을 평가하기 위해서는 특히 문제발견 및 해결능력에 초점을 맞추는 것 이 좋겠다. 이를 위한 평가방법으로는 전문가 평가, 구술 평가, 발표 및 토론 평 가, 연구보고서 평가, 작문 평가 등의 방법이 적절하다. 정보과학 적성을 평가하기 위해서는 정보과학 시간의 수업태도 및 참여도, 도 전의지 등을 볼 수 있겠다. 이를 평가하는 데에는 관찰, 면담, 그룹 프로젝트 산 출물, 연구보고서 등을 활용하는 것이 권장된다. 정보과학 분야의 특정 지식에 대한 평가는 그 내용이 알고리즘, 이산구조, 프 로그래밍에 관한 지식, 정보보호 및 윤리, 인간과 컴퓨터의 상호작용 등이 관련 된다. 이를 평가하기 위해 전문가, 그룹 프로젝트 산출물, 연구보고서, 발표 및 토론을 통한 평가 방법이 활용될 수 있다. 정보과학 분야의 특수 능력은 과학적 탐구 능력, 설계 및 모델링 능력 및 프 로그래밍 능력으로 평가한다. 평가 방법은 전문가 평가 및 그룹 프로젝트 산출 물, 연구보고서, 실험ㆍ실습의 산출물 등을 통한 평가방법을 사용한다. 마지막으로 일반 능력을 평가할 때는 초ㆍ중학생 영재들의 협동 수준, 발표 능력, 토론 능력 등을 평가할 수 있다. 이는 관찰, 그룹 프로젝트 산출물, 연구보 고서, 발표, 토론 등의 방법을 통해서 평가할 수 있겠다. - 9 -
< 표 5> 정보과학 영재교육 평가 영역, 내용 및 방법 평가영역 평가내용 1. 사고력 평가 ㆍ문제발견 및 해결능력 2. 적성 평가 3. 특정 지식 평가 4. 특수 능력 평가 5. 일반 능력 평가 ㆍ수업태도 및 참여도 ㆍ도전의지 ㆍ알고리즘 ㆍ이산구조 ㆍ프로그래밍에 관한 지식 ㆍ정보보호 및 윤리 ㆍ인간과 컴퓨터의 상호작용 ㆍ과학적 탐구 능력 ㆍ설계 및 모델링 능력 ㆍ프로그래밍 능력 ㆍ협동 수준 ㆍ발표 능력 ㆍ토론 능력 평가방법 ㆍ전문가 평가 ㆍ구술 평가 ㆍ발표 및 토론 평가 ㆍ연구보고서 평가 ㆍ작문 평가 ㆍ관찰 평가 ㆍ면담 평가 ㆍ그룹 프로젝트 산출물 평가 ㆍ연구보고서 평가 ㆍ전문가 평가 ㆍ그룹 프로젝트 산출물 평가 ㆍ연구보고서 평가 ㆍ발표 및 토론 평가 ㆍ전문가 평가 ㆍ그룹 프로젝트 산출물 평가 ㆍ연구보고서 평가 ㆍ실험ㆍ실습 산출물 평가 ㆍ관찰 평가 ㆍ그룹 프로젝트 산출물 평가 ㆍ연구보고서 평가 ㆍ발표 및 토론 평가 2. 정보과학 영재교육과정 개요 2. 1) 가. 교육과정 구성 체제 정보과학 영재교육을 위한 교육과정은 앞에서 구체적으로 기술한 정보과학 영재교육과정 구성 기본 방향 에서 제시한 교육목표, 교육내용, 교육방법, 교육평 1) 김미숙, 이재호 (2005) 의 내용 부분 발췌 - 10 -
가를 반영하여 초등학교 고학년(4~6 학년) 과 중학교 정보과학 영재교육 대상자를 위해 개발하였다. 또한 전문가 의견 조사 결과를 바탕으로 정리되었던 교육내용 을 중심으로 개발 단계를 체계화하고 교육과정에 담길 하위 항목을 수립하여 교 육과정의 내용에 일관성을 부여함과 아울러 개발 과정의 기준이 되게 하였다. 개발된 모든 학년의 교육과정은 1, 2 학기로 구분하여 구성하였으며, 매 학기 는 16주의 교육내용으로 구성하였고 1주의 교육내용은 2시간 수업을 기준으로 구성하였다. 정보과학 영재교육을 위한 교육과정의 구성 체제를 요약하면 다음과 같다. 1) 교육과정 구성 체제의 표준화 정보과학 영재교육을 위한 교육과정은 학년별 교육내용 체계의 일관성을 확 보하기 위하여 교육과정의 구성 체제를 표준화하였다. 결과적으로 모든 학년의 교육내용 체제는 다음과 같이 표준화된 체제를 가지도록 구성하였다. 모든 학기의 교육과정은 오리엔테이션(1 주), 단원 1(2~8 주), 단원 2(9~15 주), 학기 결론 및 평가(16 주) 의 순으로 구성하였음 모든 학기의 시작(1 주) 은 해당 학기의 교육내용에 대한 오리엔테이션으로 구 성하였으며, 각 학기의 마무리(16 주) 는 해당 학기의 교육내용을 정리하고 평 가하는 내용으로 구성하였음 모든 학기는 오리엔테이션 주와 마무리 주를 제외한 단원 성하였으며, 각 단원은 7주의 교육내용으로 구성하였음 1, 2로 구분하여 구 이와 같은 교육과정 구성 체제의 표준화를 통하여 일부 초 중등 교육내용을 공통적으로 구성하였다. 즉, 초등과 중등의 교육내용 중 핵심 내용인 알고리즘 에 대한 교육 시행 시에 주제 는 공유하되 난이도 를 조정하는 방법으로 교육과 정을 구성하였다. - 11 -
2) 교육과정 구성 체제의 모듈화 정보과학 영재교육을 위한 교육과정은 현장 학교에서 교육내용을 탄력적으로 적용할 수 있도록 교육과정의 구성 체제를 모듈화하였다. 결과적으로 모든 학년 의 교육내용 체제는 다음과 같이 모듈화된 체제를 가지도록 구성하였다. 단원 1, 2의 제목은 교육내용을 대표하는 정보과학 측면의 주제를 부여하였음 단원 1 은 해당 학년의 교육 주제에 대한 필수 교육내용으로 구성하였으며, 단 원 2는 단원 1 의 교육내용을 활용하여 창의적인 프로젝트 학습( 보고서 작성) 을 수행하도록 구성하였음 단원 1의 교육 내용은 현장 학교의 교육 여건에 따라 추가 또는 삭제가 가능 하며, 단원 2의 교육 주제는 정보과학 분야의 최신 주제로 변경하여 적용이 가능함 이와 같은 교육과정 구성 체제의 모듈화를 통하여 다음과 같은 교육과정 구 성 및 운영이 가능하다. 첫 번째, 교육과정의 내용 및 분량을 교수학습 환경에 따라 탄력적으로 구성할 수 있다. 예를 들면, 1학기 16주 분량으로 구성된 교육 과정을 12 주 분량으로 축소하여 운영할 수 있으며, 경우에 따라서는 20주 분량으 로 확대하여 운영할 수도 있다. 두 번째, 빠르게 발전하는 정보과학의 특성을 반 영한 교육과정을 구성할 수 있다. 예를 들어, 초등 6학년 1 학기 의 단원 2 의 교 육주제인 휴대전화 기능개선하기 와 같은 경우 새로운 첨단 교육내용( 예, 학습 로봇 기능개선하기) 으로 교체가 가능하다. 즉, 정보과학 분야의 영재교육 과정은 첨단기술을 반영하여 주기적인 개정작업을 필요로 한다. 나. 교육과정 구성 내용 정보과학 영재교육을 위한 교육과정의 내용은 정보과학의 학문적 특성과 영 재교육의 특성을 고려하여 다음과 같은 특징을 갖도록 구성하였다. 1) 정보과학의 핵심 개념을 학습하기 위한 교육과정 - 12 -
계산 원리, 기초 수학이론, 이산구조, 자료구조, 알고리즘 설계, 인간과 컴퓨터 의 상호작용, 프로그래밍 언어, 기초 프로그래밍, 고급 프로그래밍 등 정보과학 분야의 핵심 개념을 학습할 수 있도록 교육과정의 내용을 구성하였다. 2) 정보과학에 대한 호기심을 유발하기 위한 교육과정 컴퓨터의 구성 및 동작원리, 운영체제 이야기, 운영체제 활용 및 동작 원리, 자료구조 이야기, 컴퓨터 구조 이야기, 정보통신 이야기 등 정보과학 분야의 주 요 원리를 재미있는 이야기 형식으로 학습함으로써 정보과학 분야의 호기심을 유발할 수 있도록 교육과정의 내용을 구성하였다. 3) 정보과학에 대한 미래 비전을 제시하기 위한 교육과정 최신의 정보과학 기술 주제( 미래 컴퓨터 기술, 새로운 인터넷 서비스, 텔레매 틱스 등) 를 학습함으로써 정보과학에 대한 미래 비전을 학습자들이 가질 수 있도 록 교육과정의 내용을 구성하였다. 4) 정보통신 윤리 의식 고취를 위한 교육과정 해커의 부작용, 해커로부터 나를 보호하자, 나만의 네티켓 만들기 등 최근의 정보통신 이용 부작용에 대한 사례 학습과 이에 대한 대처 방안 등을 학습함으 로써 미래 정보과학자들이 지녀야할 정보통신 윤리 의식을 학습자들이 가질 수 있도록 교육과정의 내용을 구성하였다. 5) 정보과학과 실생활과의 연계를 위한 교육과정 우리 주변에서 주요 자료구조( 스택, 큐, 리스트, 트리, 그래프 등) 찾아보기, 생활 속 알고리즘( 등교, 수업, 점심시간, 하교, 소풍, 긴급 상황처리 등) 설계하기, 생활 속 응용 프로그램을 찾아 설계하기, 다양한 자료구조를 이용한 응용 프로그 램 구현하기 등 우리 생활 주변에서 정보과학 분야의 주요 원리를 찾아 응용하 는 형식으로 학습함으로써 정보과학과 실생활과의 연계가 가능하도록 교육과정 - 13 -
의 내용을 구성하였다. 6) 창의적인 산출물을 생산하기 교육과정 미래의 정보기기, 최적의 귀성방법, 놀이공원의 다양한 알고리즘, 새로운 코 드, 휴대전화 기능개선하기, 스택과 큐를 이용한 응용 프로그램 만들기, 미래의 컴퓨터 기술, 미래의 가전제품, 놀이공원 알고리즘 구현하기, 최첨단 디지털 카메 라 만들기, 네비게이터 기능 개선하기, 응용 프로그램과 게임 만들기 등 정보고 학의 핵심 개념을 이용하여 학습자들이 창의적인 보고서를 작성할 수 있도록 교 육과정의 내용을 구성하였다. 7) 학습자 활동 중심의 교육과정 매 주별 학습자가 교육내용에 대한 기초 조사를 실시하고 발표하며 이에 대 한 내용을 토론함으로써 학습자의 참여를 최대한 유도할 수 있도록 교육과정의 내용을 구성하였다. 기초 조사 시행 시에 개별 학습자가 하거나 그룹으로 참여할 수 있을 것이다. 또한, 단원 2의 교육 시에는 모든 학습자가 동일한 교육 주제를 가지고 프로젝트를 시행함으로써 학습자의 활동을 극대화할 수 있도록 교육내용 을 구성하였다. 이 경우에도 개별 학습자가 프로젝트를 수행하거나 그룹을 조직 하여 프로젝트를 수행하도록 할 수 있을 것이다. 다. 영재교육과정 내용 체계 정보과학 영재교육과정의 내용 체계는 초등학교 4학년에서 중학교 3학년까지 학기별로 구성되었으며, 초등학교와 중학교 각기 탐색, 발전, 심화의 3 단계로 나 뉜다. 즉 초등학교 4 학년 과정은 초등 탐색 단계, 5 학년 과정은 초등 발전 단 계, 6 학년 과정은 초등 심화 단계 로 구분된다. 이와 동일하게 중학교 1학년 과 정은 중등 탐색 단계, 2 학년 과정은 중등 발전 단계, 3 학년 과정은 중등 심화 단계 로 구분된다. 이러한 구분은 단계의 심화 수준을 지칭해 주는 편의상의 분 류이며, 실제 현장에서는 교사가 융통성 있게 학생의 학년과 심화 수준에 맞추어 서 얼마든지 재구성하여 사용할 수 있다. - 14 -
< 표 6> 정보과학 영재교육과정 내용체계( 초등 4학년 1 학기) 단 계 초등 4학년 1 학기 ( 초등 탐색 단계) 단 원 1. 컴퓨터 구성 이해하기 2. 미래의 정보기기( 보고서작성) 구분 주 주 제 교 육 내 용 2) 단원 1 단원 2 1주 오리엔테이션 2주 컴퓨터 이야기 3주 컴퓨터의 구성 및 동작원리 4주 운영체제 이야기 5주 운영체제 활용 및 동작원리 6주 생활 속 문제 찾아내기 7주 문제해결방법 찾기(1) 8주 문제해결방법 찾기(2) 9주 나는 그래픽 전문가 10주 창의적인 그래픽 자료 만들기(1) 11주 창의적인 그래픽 자료 만들기(2) 12주 미래사회의 정보기기는? 13주 새로운 정보기기 설계하기 14주 새로운 정보기기 동작원리 제안 하기 15주 새로운 정보기기 보고서 작성 16주 학기 결론 및 평가 2-2.정보과학의 미래 비전 제시 3-2.계산 원리 2-1.정보과학에 대한 호기심 3-2.계산원리 2-1.정보과학에 대한 호기심 3-2.계산원리 2-1.정보과학에 대한 호기심 3-2.계산원리 1-3.창의적인 문제발견 및 해결능력 4-2.문제의 구조화 및 모델링 능력 1-3.창의적인 문제발견 및 해결능력 4-2.문제의 구조화 및 모델링 능력 1-3.창의적인 문제발견 및 해결능력 4-2.문제의 구조화 및 모델링 능력 1-3.창의적인 문제발견 및 해결능력 3-6.인간과 컴퓨터의 상호작용 1-3.창의적인 문제발견 및 해결능력 3-6.인간과 컴퓨터의 상호작용 1-3.창의적인 문제발견 및 해결능력 3-6.인간과 컴퓨터의 상호작용 1-3.창의적인 문제발견 및 해결능력 2-2.정보과학의 미래 비전 제시 1-3.창의적인 문제발견 및 해결능력 4-2.문제의 구조화 및 모델링 능력 1-3.창의적인 문제발견 및 해결능력 4-2.문제의 구조화 및 모델링 능력 1-3.창의적인 문제발견 및 해결능력 4-2.문제의 구조화 및 모델링 능력 2) 각 교육내용 앞 부분의 번호는 6 쪽의 < 표 3> 의 번호 체계를 따름. - 15 -
< 표 7> 정보과학 영재교육과정 내용체계( 초등 4학년 2 학기) 단 계 초등 4학년 2 학기( 초등 탐색 단계) 단 원 1. 자료구조 이해하기 2. 최적의 귀성방법( 보고서 작성) 구분 주 주 제 교 육 내 용 3) 1주 오리엔테이션 단원 1 단원 2 2주 자료구조 이야기 3주 우리 주변에서 스택구조 찾아보기 4주 스택 구조 표현하기 5주 우리 주변에서 큐 구조 찾아보기 6주 큐 구조 표현하기 2-1.정보과학에 대한 호기심 3-4.이산구조 2-3.정보과학과 실생활과의 연계성 3-4.이산구조 3-4.이산구조 4-2.문제의 구조화 및 모델링 능력 2-3.정보과학과 실생활과의 연계성 3-4.이산구조 3-4.이산구조 4-2.문제의 구조화 및 모델링 능력 2-3.정보과학과 실생활과의 연계성 7주 우리 주변에서 리스트 구조 찾아보기 3-4.이산구조 8주 리스트 구조 표현하기 9주 우리 주변에서 트리 구조 찾아보기 10주 트리구조 표현하기 3-4.이산구조 4-2.문제의 구조화 및 모델링 능력 2-3.정보과학과 실생활과의 연계성 3-4.이산구조 3-4.이산구조 4-2.문제의 구조화 및 모델링 능력 2-3.정보과학과 실생활과의 연계성 11주 우리 주변에서 그래프 구조 찾아보기 3-4.이산구조 12주 그래프 구조 표현하기 13주 우리나라의 귀성전쟁 14주 귀성문제 해결하기 15주 최적의 귀성 방법 보고서 작성 3-4.이산구조 4-2.문제의 구조화 및 모델링 능력 1-3.창의적인 문제발견 및 해결능력 4-2.문제의 구조화 및 모델링 능력 1-3.창의적인 문제발견 및 해결능력 4-2.문제의 구조화 및 모델링 능력 1-3.창의적인 문제발견 및 해결능력 4-2.문제의 구조화 및 모델링 능력 16주 학기 결론 및 평가 3) 각 교육내용 앞 부분의 번호는 6 쪽의 < 표 3> 의 번호 체계를 따름. - 16 -
< 표 8> 정보과학 영재교육과정 내용체계( 초등 5학년 1 학기) 단 계 초등 5학년 1 학기( 초등 발전 단계) 단 원 1. 알고리즘 이해하기 2. 놀이공원의 다양한 알고리즘( 보고서작성) 구분 주 주 제 교 육 내 용 4) 1주 오리엔테이션 단원 1 단원 2 2주 알고리즘 이야기 3주 생활 속 알고리즘( 취침 알고리즘) 4주 생활 속 알고리즘( 기상 알고리즘) 5주 생활 속 알고리즘( 주차 알고리즘) 6주 생활 속 알고리즘( 화장실 알고리즘) 7주 생활 속 알고리즘( 운동 알고리즘) 8주 9주 10주 11주 생활 속 알고리즘 ( 긴급 상황처리 알고리즘) 집에서 놀이공원까지 그래프로 표현하기 집에서 놀이공원까지 알고리즘으로 표현하기 놀이공원의 구성을 그래프로 표현하기 12주 Big 5권으로 놀이기구 타기 13주 새로운 놀이기구 만들기 14주 새로운 놀이기구를 알고리즘으로 표현하기 15주 놀이기구 알고리즘 보고서 작성 16주 학기 결론 및 평가 1-2.논리전개 및 추론능력 3-1.알고리즘 설계 2-3.정보과학과 실생활과의 연계성 3-1.알고리즘 설계 2-3.정보과학과 실생활과의 연계성 3-1.알고리즘 설계 2-3.정보과학과 실생활과의 연계성 3-1.알고리즘 설계 2-3.정보과학과 실생활과의 연계성 3-1.알고리즘 설계 2-3.정보과학과 실생활과의 연계성 3-1.알고리즘 설계 2-3.정보과학과 실생활과의 연계성 3-1.알고리즘 설계 2-3.정보과학과 실생활과의 연계성 3-1.알고리즘 설계 2-3.정보과학과 실생활과의 연계성 3-1.알고리즘 설계 2-3.정보과학과 실생활과의 연계성 3-1.알고리즘 설계 2-3.정보과학과 실생활과의 연계성 3-1.알고리즘 설계 1-3.창의적인 문제발견 및 해결능력 4-2.문제의 구조화 및 모델링 능력 1-3.창의적인 문제발견 및 해결능력 4-2.문제의 구조화 및 모델링 능력 1-3.창의적인 문제발견 및 해결능력 4-2.문제의 구조화 및 모델링 능력 4) 각 교육내용 앞 부분의 번호는 6 쪽의 < 표 3> 의 번호 체계를 따름. - 17 -
< 표 9> 정보과학 영재교육과정 내용체계( 초등 5학년 2 학기) 단 계 초등 5학년 2 학기( 초등 발전 단계) 단 원 1. 컴퓨터 구조 이해하기 2. 새로운 코드( 보고서 작성) 구분 주 주 제 교 육 내 용 5) 1주 오리엔테이션 단원 1 2주 컴퓨터 구조 이야기 3주 컴퓨터가 이용하는 2진법 4주 2진수의 다양한 변환방법 5주 비트(bit) 의 법칙 찾기 6주 생활 속의 논리회로 7주 나는 논리회로 설계자(1) 8주 나는 논리회로 설계자(2) 9주 나는 애니메이션 전문가 2-1.정보과학에 대한 호기심 3-2.계산 원리 1-1.수리적 사고 3-2.계산 원리 1-1.수리적 사고 3-2.계산 원리 1-1.수리적 사고 3-2.계산 원리 2-3.정보과학과 실생활과의 연계성 3-2.계산 원리 1-3.창의적인 문제발견 및 해결능력 4-2.문제의 구조화 및 모델링 능력 1-3.창의적인 문제발견 및 해결능력 4-2.문제의 구조화 및 모델링 능력 1-3.창의적인 문제발견 및 해결능력 3-6.인간과 컴퓨터의 상호작용 단원 2 1-3.창의적인 문제발견 및 해결능력 10주 창의적인 애니메이션 자료 만들기(1) 3-6.인간과 컴퓨터의 상호작용 1-3.창의적인 문제발견 및 해결능력 11주 창의적인 애니메이션 자료 만들기(2) 3-6.인간과 컴퓨터의 상호작용 12주 코드 이야기 13주 여러 가지 코드 비교하기 14주 새로운 코드 만들기 15주 새로운 코드 보고서 작성 16주 학기 결론 및 평가 3-2.계산 원리 4-1.과학적 규칙성 발견 및 과학적 탐구 능력 3-2.계산 원리 4-1.과학적 규칙성 발견 및 과학적 탐구 능력 1-3.창의적인 문제발견 및 해결능력 4-2.문제의 구조화 및 모델링 능력 1-3.창의적인 문제발견 및 해결능력 4-2.문제의 구조화 및 모델링 능력 5) 각 교육내용 앞 부분의 번호는 6 쪽의 < 표 3> 의 번호 체계를 따름. - 18 -
< 표 10> 정보과학 영재교육과정 내용체계( 초등 6학년 1 학기) 단 계 초등 6학년 1 학기( 초등 심화 단계) 단 원 1. 정보( 컴퓨터) 통신 이해하기 2. 휴대전화 기능 개선하기( 보고서 작성) 구분 주 주 제 교 육 내 용 6) 1주 오리엔테이션 단원 1 2주 정보통신 이야기 3주 전화에서 사용하는 알고리즘 4주 인터넷의 주요 알고리즘(1) 5주 인터넷의 주요 알고리즘(2) 2-1.정보과학에 대한 호기심 3-2.계산 원리 1-2.논리전개 및 추론능력 3-1.알고리즘 설계 1-2.논리전개 및 추론능력 3-1.알고리즘 설계 1-2.논리전개 및 추론능력 3-1.알고리즘 설계 6주 해커의 부작용 3-5. 정보보호 및 윤리 7주 해커로부터 나를 보호하자 3-5. 정보보호 및 윤리 8주 나만의 네티켓 만들기 3-5. 정보보호 및 윤리 단원 2 9주 새로운 인터넷 서비스 10주 새로운 인터넷 서비스 표현하기 11주 휴대전화 기능 찾아보기 12주 휴대전화 기능 알고리즘 표현하기 13주 새로운 휴대전화 기능 제안하기 14주 새로운 휴대전화 기능 표현하기 15주 휴대전화 기능 개선 보고서 작성 16주 학기 결론 및 평가 1-3.창의적인 문제발견 및 해결능력 4-2.문제의 구조화 및 모델링 능력 1-3.창의적인 문제발견 및 해결능력 4-2.문제의 구조화 및 모델링 능력 1-3.창의적인 문제발견 및 해결능력 4-2.문제의 구조화 및 모델링 능력 1-3.창의적인 문제발견 및 해결능력 4-2.문제의 구조화 및 모델링 능력 1-3.창의적인 문제발견 및 해결능력 4-2.문제의 구조화 및 모델링 능력 1-3.창의적인 문제발견 및 해결능력 4-2.문제의 구조화 및 모델링 능력 1-3.창의적인 문제발견 및 해결능력 4-2.문제의 구조화 및 모델링 능력 6) 각 교육내용 앞 부분의 번호는 6 쪽의 < 표 3> 의 번호 체계를 따름. - 19 -
< 표 11> 정보과학 영재교육과정 내용체계( 초등 6학년 2 학기) 단 계 초등 6학년 2 학기( 초등 심화 단계) 단 원 1. 프로그램 이해하기 2. 스택과 큐를 이용한 응용 프로그램 만들기( 보고서 작성) 구분 주 주 제 교 육 내 용 7) 단원 1 단원 2 1주 오리엔테이션 2주 프로그램 이야기 3주 좋은 프로그램과 나쁜 프로그램 4주 생활 속 응용 프로그램 찾아보기 5주 생활 속 응용 프로그램 설계하기 6주 나는 일류 프로그래머 7주 입출력 프로그래밍 8주 핵심 프로그래밍 9주 스택을 이용한 계산기 만들기 10주 11주 12주 13주 14주 생활 속에서 스택을 이용한 응용 프로그램 찾기 생활 속에서 스택을 이용한 응용 프로그램 구현하기 스택과 큐를 이용한 미로 찾기 게임 구현하기 생활 속에서 큐를 이용한 응용 프로그램 찾기 생활 속에서 큐를 이용한 응용 프로그램 구현하기 1-2.논리전개 및 추론능력 3-3.기초 프로그래밍 1-2.논리전개 및 추론능력 3-3.기초 프로그래밍 2-3.정보과학과 실생활과의 연계성 3-3.기초 프로그래밍 2-3.정보과학과 실생활과의 연계성 3-3.기초 프로그래밍 1-2.논리전개 및 추론능력 3-3.기초 프로그래밍 1-2.논리전개 및 추론능력 3-3.기초 프로그래밍 1-2.논리전개 및 추론능력 3-3.기초 프로그래밍 2-3.정보과학과 실생활과의 연계성 3-3.기초 프로그래밍 2-3.정보과학과 실생활과의 연계성 3-3.기초 프로그래밍 2-3.정보과학과 실생활과의 연계성 3-3.기초 프로그래밍 2-3.정보과학과 실생활과의 연계성 3-3.기초 프로그래밍 2-3.정보과학과 실생활과의 연계성 3-3.기초 프로그래밍 2-3.정보과학과 실생활과의 연계성 3-3.기초 프로그래밍 15주 미래의 컴퓨터 이야기 2-2. 정보과학의 미래 비전 제시 16주 학기 결론 및 평가 7) 각 교육내용 앞 부분의 번호는 6 쪽의 < 표 3> 의 번호 체계를 따름. - 20 -
< 표 12> 정보과학 영재교육과정 내용체계( 중등 1학년 1 학기) 단 계 중등 1학년 1 학기( 중등 탐색 단계) 단 원 1. 컴퓨터와 정보와의 관계 찾기 2. 미래의 컴퓨터 기술( 보고서작성) 구분 주 주 제 교 육 내 용 8) 단원 1 단원 2 1주 오리엔테이션 2-4.정보과학 분야 진로 2주 컴퓨터와 정보 분야의 활용분야 찾기 3-5.계산 원리 3주 반도체와 컴퓨터 4주 운영체제의 특징 및 유형 5주 운영체제의 구조와 프로세스 6주 생활 속 문제 찾아내기 7주 문제해결하기 (1) 8주 문제해결하기 (2) 9주 나는 그래픽 전문가 10주 창의적인 그래픽 자료 만들기 (1) 11주 창의적인 그래픽 자료 만들기 (2) 12주 미래의 컴퓨터 기술과 문제점 13주 미래의 컴퓨터 기술 설계하기 14주 미래의 컴퓨터 기술 동작원리 15주 미래의 컴퓨터 기술 보고서 작성 16주 학기 결론 및 평가 3-5.계산 원리 3-7.정보과학과 연관된 과학이론 2-1.정보과학에 대한 호기심 3-5.계산 원리 2-1.정보과학에 대한 호기심 3-5.계산 원리 1-3.창의적인 문제발견 및 해결능력 4-1.문제의 구조화 및 모델링 능력 1-3.창의적인 문제발견 및 해결능력 4-1.문제의 구조화 및 모델링 능력 1-3.창의적인 문제발견 및 해결능력 4-1.문제의 구조화 및 모델링 능력 1-3.창의적인 문제발견 및 해결능력 3-10.인간과 컴퓨터의 상호작용 1-3.창의적인 문제발견 및 해결능력 3-10.인간과 컴퓨터의 상호작용 1-3.창의적인 문제발견 및 해결능력 3-10.인간과 컴퓨터의 상호작용 1-3.창의적인 문제발견 및 해결능력 2-2.정보과학의 미래 비전 제시 1-3.창의적인 문제발견 및 해결능력 4-1.문제의 구조화 및 모델링 능력 1-3.창의적인 문제발견 및 해결능력 4-1.문제의 구조화 및 모델링 능력 1-3.창의적인 문제발견 및 해결능력 4-1.문제의 구조화 및 모델링 능력 8) 각 교육내용 앞 부분의 번호는 6 쪽의 < 표 3> 의 번호 체계를 따름. - 21 -
< 표 13> 정보과학 영재교육과정 내용체계( 중등 1학년 2 학기) 단 계 중등 1학년 2 학기( 중등 탐색 단계) 단 원 1. 자료구조 이해하기 2. 미래의 가전제품( 보고서작성) 구분 주 주 제 교 육 내 용 9) 1주 오리엔테이션 단원 1 단원 2 2주 자료구조 이해하기 3주 우리 주변에서 정렬구조 찾아보기 4주 정렬구조 표현하기 5주 우리 주변에서 해싱구조 찾아보기 6주 해싱구조 표현하기 7주 우리 주변에서 히프구조 찾아보기 8주 히프구조 표현하기 9주 우리 주변에서 탐색구조 찾아보기 10주 탐색구조 표현하기 11주 가전제품의 기능 분석하기 12주 가전제품의 기능 알고리즘 표현하기 13주 가전제품의 새로운 기능 제안하기 14주 가전제품의 새로운 기능 구현하기 2-1.정보과학에 대한 호기심 3-4.자료구조 2-3.정보과학과 실생활과의 연계성 3-4.자료구조 1-2.논리전개 및 추론능력 3-4.자료구조 2-3.정보과학과 실생활과의 연계성 3-4.자료구조 1-2,논리전개 및 추론능력 3-4.자료구조 2-3.정보과학과 실생활과의 연계성 3-4.자료구조 1-2.논리전개 및 추론능력 3-4.자료구조 2-3.정보과학과 실생활과의 연계성 3-4.자료구조 1-2.논리전개 및 추론능력 3-4.자료구조 1-3.창의적인 문제발견 및 해결능력 4-1.문제의 구조화 및 모델링 능력 1-2.논리전개 및 추론능력 1-3.창의적인 문제발견 및 해결능력 1-3.창의적인 문제발견 및 해결능력 4-3.시스템 개발 능력 1-3.창의적인 문제발견 및 해결능력 4-3.시스템 개발 능력 1-3.창의적인 문제발견 및 해결능력 15주 새로운 가전제품에 대한 보고서 작성 4-1.문제의 구조화 및 모델링 능력 16주 학기 결론 및 평가 9) 각 교육내용 앞 부분의 번호는 6 쪽의 < 표 3> 의 번호 체계를 따름. - 22 -
< 표 14> 정보과학 영재교육과정 내용체계( 중등 2학년 1 학기) 단 계 중등 2학년 1 학기( 중등 발전 단계) 단 원 1. 알고리즘 이해하기 2. 놀이공원 알고리즘 구현하기( 보고서작성) 구분 주 주 제 교 육 내 용 10) 1주 오리엔테이션 단원 1 단원 2 2주 알고리즘 이야기 3주 4주 5주 6주 7주 8주 9주 10주 11주 생활 속 알고리즘 구현하기 ( 취침 알고리즘) 생활 속 알고리즘 구현하기 ( 기상 알고리즘) 생활 속 알고리즘 구현하기 ( 주차 알고리즘) 생활 속 알고리즘 구현하기 ( 화장실 알고리즘) 생활 속 알고리즘 구현하기 ( 운동 알고리즘) 생활 속 알고리즘 구현하기 ( 긴급 상황처리 알고리즘) 집에서 놀이공원까지 그래프 형태로 구현하기 집에서 놀이공원까지 최단거리 구현하기 놀이공원의 구성을 그래프로 구현하기 12주 놀이기구 정렬 방법 구현하기 13주 놀이기구 탐색 방법 구현하기 14주 15주 새로운 놀이기구를 구현하여 설치하기 전체 놀이기구 탐색 및 정렬 결과 보고서 작성 16주 학기 결론 및 평가 2-1.정보과학에 대한 호기심 3-1.알고리즘 설계 2-3.정보과학과 실생활과의 연계성 3-1.알고리즘 설계 2-3.정보과학과 실생활과의 연계성 3-1.알고리즘 설계 2-3.정보과학과 실생활과의 연계성 3-1.알고리즘 설계 2-3.정보과학과 실생활과의 연계성 3-1.알고리즘 설계 2-3.정보과학과 실생활과의 연계성 3-1.알고리즘 설계 2-3.정보과학과 실생활과의 연계성 3-1.알고리즘 설계 2-3.정보과학과 실생활과의 연계성 3-2.이산구조 2-3.정보과학과 실생활과의 연계성 3-2.이산구조 2-3.정보과학과 실생활과의 연계성 3-2.이산구조 2-3.정보과학과 실생활과의 연계성 3-4.자료구조 2-3.정보과학과 실생활과의 연계성 3-4.자료구조 2-3.정보과학과 실생활과의 연계성 4-3.시스템 개발 능력 1-3.창의적인 문제발견 및 해결능력 4-1.문제의 구조화 및 모델링 능력 10) 각 교육내용 앞 부분의 번호는 6 쪽의 < 표 3> 의 번호 체계를 따름. - 23 -
< 표 15> 정보과학 영재교육과정 내용체계( 중등 2학년 2 학기) 단 계 중등 2학년 2 학기( 중등 발전 단계) 단 원 1. 컴퓨터 구조 표현하기 2. 최첨단 디지털 카메라 만들기( 보고서작성) 구분 주 주 제 교 육 내 용 11) 1주 오리엔테이션 단원 1 단원 2 2주 컴퓨터의 구조 이해하기 3주 이진수로 구성하는 가상의 세계 4주 이진수 시스템의 설계 및 구현 5주 비트에 나타난 법칙 찾기 6주 생활 속의 논리회로 구현하기 7주 나는 논리회로 설계자 (1) 8주 나는 논리회로 설계자 (2) 9주 나는 애니메이션 전문가 10주 11주 창의적인 애니메이션 자료 만들기 (1) 창의적인 애니메이션 자료 만들기 (2) 12주 디지털 카메라 기능 분석하기 13주 디지털 카메라 활용하기 14주 15주 디지털 카메라 새로운 기능 제안 및 설계하기 최첨단 디지털 카메라 보고서 작성 16주 학기 결론 및 평가 2-1.정보과학에 대한 호기심 3-5.계산 원리 1-1.수리적 사고 3-6.기초 수학이론 1-1.수리적 사고 3-6.기초 수학이론 1-1.수리적 사고 3-5.계산 원리 2-3.정보과학과 실생활과의 연계성 3-5.계산 원리 1-3.창의적인 문제발견 및 해결능력 4-1.문제의 구조화 및 모델링 능력 1-3.창의적인 문제발견 및 해결능력 4-1.문제의 구조화 및 모델링 능력 1-3.창의적인 문제발견 및 해결능력 3-10.인간과 컴퓨터의 상호작용 1-3.창의적인 문제발견 및 해결능력 3-10.인간과 컴퓨터의 상호작용 1-3.창의적인 문제발견 및 해결능력 3-10.인간과 컴퓨터의 상호작용 1-3.창의적인 문제발견 및 해결능력 3-10.인간과 컴퓨터의 상호작용 1-3.창의적인 문제발견 및 해결능력 3-10.인간과 컴퓨터의 상호작용 1-3.창의적인 문제발견 및 해결능력 4-3.시스템 개발 능력 1-3.창의적인 문제발견 및 해결능력 4-1.문제의 구조화 및 모델링 능력 11) 각 교육내용 앞 부분의 번호는 6 쪽의 < 표 3> 의 번호 체계를 따름. - 24 -
< 표 16> 정보과학 영재교육과정 내용체계( 중등 3학년 1 학기) 단 계 중등 3학년 1 학기( 중등 심화 단계) 단 원 1. 정보통신 이야기 2. 네비게이터 기능 개선하기( 보고서작성) 구분 주 주 제 교 육 내 용 12) 1주 오리엔테이션 단원 1 단원 2 2주 정보통신 및 네트워크 이야기 3주 새로운 인터넷 서비스 이야기 4주 새로운 인터넷 서비스 구현하기 5주 통신 알고리즘 분석하기 6주 새로운 통신 알고리즘 제안하기 7주 새로운 통신 알고리즘 구현하기 8주 새로운 통신 알고리즘 적용분야에 대해 조사 9주 텔레매틱스 이야기 10주 11주 12주 네비게이터의 특징 및 기능 이해하기 네비게이터의 길 찾기 서비스 원리 분석하기 텔레매틱스를 이용한 네비게이터의 정보 송수신 방법 구현하기 13주 새로운 네비게이터 기능 제안하기 14주 새로운 네비게이터 기능 구현하기 15주 새로운 네비게이터 기능 개선 보고서 작성 16주 학기 결론 및 평가 2-1.정보과학에 대한 호기심 3-5.계산 원리 1-3.창의적인 문제발견 및 해결능력 2-2.정보과학의 미래 비전 제시 3-1.알고리즘 설계 3-9.정보보호 및 윤리 3-1.알고리즘 설계 4-1.문제의 구조화 및 모델링 능력 1-3.창의적인 문제발견 및 해결능력 4-1.문제의 구조화 및 모델링 능력 1-3.창의적인 문제발견 및 해결능력 4-3.시스템 개발 능력 1-3.창의적인 문제발견 및 해결능력 4-1.문제의 구조화 및 모델링 능력 2-1.정보과학에 대한 호기심 3-5.계산 원리 1-3.창의적인 문제발견 및 해결능력 4-1.문제의 구조화 및 모델링 능력 1-3.창의적인 문제발견 및 해결능력 4-1.문제의 구조화 및 모델링 능력 1-3.창의적인 문제발견 및 해결능력 4-3.시스템 개발 능력 1-3.창의적인 문제발견 및 해결능력 4-3.시스템 개발 능력 1-3.창의적인 문제발견 및 해결능력 4-3.시스템 개발 능력 1-3.창의적인 문제발견 및 해결능력 4-1.문제의 구조화 및 모델링 능력 12) 각 교육내용 앞 부분의 번호는 6 쪽의 < 표 3> 의 번호 체계를 따름. - 25 -
< 표 17> 정보과학 영재교육과정 내용체계( 중등 3학년 2 학기) 단 계 중등 3학년 2 학기( 중등 심화 단계) 단 원 1. 프로그램 활용하기 2. 응용프로그램과 게임 만들기( 보고서작성) 구분 주 주 제 교 육 내 용 13) 1주 오리엔테이션 단원 1 단원 2 2주 프로그램 이야기 3주 프로그램에 대한 행복과 성취감 4주 생활 속 응용 프로그램 분석하기 5주 생활 속 응용 프로그램 구현하기 6주 새로운 응용프로그램 제안하기 7주 교착상태 이야기 8주 교착상태 해결방법 구현하기 9주 10주 11주 12주 생활 속에서 정렬을 이용한 응용 프로그램 찾기 생활 속에서 정렬을 이용한 응용 프로그램 구현 생활 속에서 탐색을 이용한 응용 프로그램 찾기 생활 속에서 탐색을 이용한 응용 프로그램 구현 13주 창의적인 게임 알고리즘 설계하기 14주 재미있는 게임 알고리즘 구현하기 15주 게임에 대한 결과 보고서 작성 16주 학기 결론 및 평가 3-3.프로그래밍 언어 4-4.객체 지향적 프로그래밍 능력 3-3.프로그래밍 언어 4-4.객체 지향적 프로그래밍 능력 2-3.정보과학과 실생활과의 연계성 3-8.고급 프로그래밍 2-3.정보과학과 실생활과의 연계성 3-8.고급 프로그래밍 2-3.정보과학과 실생활과의 연계성 3-8.고급 프로그래밍 2-1.정보과학에 대한 호기심 3-5.계산 원리 1-3.창의적인 문제발견 및 해결능력 4-2.프로그램 제작 능력 2-3.정보과학과 실생활과의 연계성 3-8.고급 프로그래밍 2-3.정보과학과 실생활과의 연계성 3-8.고급 프로그래밍 2-3.정보과학과 실생활과의 연계성 3-8.고급 프로그래밍 2-3.정보과학과 실생활과의 연계성 3-8.고급 프로그래밍 3-8.고급 프로그래밍 4-2.프로그램 제작 능력 3-8.고급 프로그래밍 4-2.프로그램 제작 능력 2-3.정보과학과 실생활과의 연계성 4-1.문제의 구조화 및 모델링 능력 13) 각 교육내용 앞 부분의 번호는 6 쪽의 < 표 3> 의 번호 체계를 따름. - 26 -
3. 정보과학 영재교육 교수학습 자료 개요 본 교수학습 자료는 앞에서 소개한 정보과학 영재교육과정( 김미숙, 이재호, 2005) 의 기본 체제와 내용을 따른다. 교사가 처한 교육상황에 따라 기본 교육과정의 내용을 구체화 및 다소 변형 시킬 수 있는 융통성을 가지고 개발하였다. 중학생 1, 2, 3학년 과정을 염두에 둔 탐색-발전-심화의 3단계의 총 9단원으 로 개발되었으며, 교사의 판단에 따라서는 초등학생에게도 적용할 수 있다. 각 단원은 1주 2차시 90분 수업을 기준으로 단원에 따라 4~12주 분량의 내 용을 담고 있으며, 교사의 재량에 따라 수업 시간과 기간을 줄이거나 늘릴 수 있다. 본 교수학습 자료의 기본 구성 요소들은 다음과 같다. 교수학습 자료 구성 요소 집 필 요 소 참 고 단원제목 단원개요 단원명( 학생의 흥미를 유발하며 전체 활동을 함축하여 나타낼 수 있는 재미있는 표현을 사용하고자 하였다.) 단원 학습의 배경, 필요성 및 목적, 활동 구성의 특징 및 교육 과정과의 관련 등 주제의 기본 방향을 제시하였다. 단원목표 개념모형도 전체 단원의 학습 목표를 7-8 개 정도 기술하였다. 인지적 영역, 정의적 영역( 가치 태도), 기능적 영역의 목표를 고루 포함한다. 안다, 이해한다. 등의 추상적인 용어가 아니라 구체적이고 행 동적인 용어로 진술하였다. : 설명/ 예언/ 추측/ 비교/ 분석/ 적용/ 평가/ 설계할 수 있다, -- 을 만들 수 있다, -- 을 구안할 수 있다, --하는 태도를 지 닌다, --한 통계기법을 활용할 수 있다 등 단원( 대주제) 및 주별 학습내용( 소주제) 에서 다루는 주요한 개 념들을 나타내었다. 본 개념모형도의 주요목적은 본 자료를 사용하는 교사가 사용 된 중요한 개념들의 구조를 한눈에 파악할 수 있도록 하는 것이 다. - 27 -
집 필 요 소 참 고 주별 교육주제 주별 교육주제를 기술하였다. 교육목표 정보과학 영재교육의 취지 및 목적에 맞는 주별 교육주제의 구 성과 지도 방향에 관하여 기술하였다. 교육내용 위에서 언급한 교육목표에 해당하는 교육내용을 맞추어 제시하 였다. 세부 교육 내용 교육 내용을 구체적으로 기술하였으며 학생들의 입장에서 보면 학습목표 에 해당한다. 교육방법 준비물 사용할 교육방법을 모두 기술하였다. 교사용과 학생용 준비물을 제시하였다. 교수학습 활동 주요초점 질문 도입활동-본활동- 정리활동이 한눈에 보이도록 표로 제시하였다. 전체 수업의 진행과정과 지도초점 및 유의점을 쉽게 파악할 수 있도록 기술하였다. 교수학습 활동과 지도초점 및 유의점을 포괄적으로 기술하기보 다 각 활동의 지도초점 및 유의점을 바로 옆에 기술하였다. 본 주제에서 학생들이 오개념을 갖기 쉬운 개념이나 가장 강조 되는 내용을 질문 형태로 제시하였다. 지도활동 도입활동, 본활동, 정리활동으로 나누어 기술하였다. 평가 필수정보 읽기자료 참고자료 활동지 평가도구 단원 마무리 학생 설문조사 색인 제시된 교육정보가 달성여부를 평가하기 위해 평가 내용, 방법, 기준 및 유의점 을 제시하였다. 지도에 도움이 되는 다양한 참고 자료를 제시하였다. 학습 내용에 대한 보충 자료, 대안 자료 및 대안 활동, 기타 관 련 참고 자료 등을 기술하였다. 주제와 관련하여 학생들이 재미있고 유익하게 읽을 수 있는 읽 기 자료를 제시하였다. 필수정보과 읽기자료에 제시된 참고문헌과 인터넷 사이트를 작 성하였다. 수업시간에 사용되는 학생용 활동지를 작성하였다. 본차시의 학습내용을 이해하기 위하여 수행해야 하는 활동 내 용들과 다음 차시에 학습할 내용 중 기본적인 사항들을 학생들 이 미리 조사 분석하여 발표 및 토론 시에 활동할 수 있는 내 용들을 정리한 것 등이 포함된다. 경우에 따라서 평가에 도움이 되는 평가도구를 제시하였다. 평가도구 상단 우측에 교사용, 학생용, 교사용 학생용으로 사용 자를 구분하여 제시하였다. 학생들의 학습내용과 다양한 활동에 대한 만족도 조사를 위해 설문지를 제시하였다. 각 차시에 사용되는 용어를 빨리 쉽게 찾을 수 있도록 각 단원 뒷부분에는 색인을 제시하였다. * 음영 표시된 부분은 주로 교수학습 활동에 관한 내용임. - 28 -
예) 각 주제별 교육목표, 교육내용, 세부교육내용, 교육방법의 관계를 표로 제시함 으로써 전체적으로 일관성 있는 교수학습활동이 되도록 하였다. 교육목표와 교육내용 앞에 제시된 번호는 정보과학 영재교육과정 구성 기본 방향( 다음 절 참조) 에서 제시된 번호 체계를 따랐으며, 서로 동일한 번호로 표기된 교육목표와 교육내용은 이 둘이 서로 유기적으로 연결되어 있음을 의 미한다. 즉 아래 예에서 2. 정보과학에 대한 호기심 은 2. 정보과학 분야 적 성 강화 라는 교육목표를 성취하고자 고안된 교육내용임을 의미한다. 교육목표 교육내용 세부교육내용 단원의 주제인 놀이공원 알고리즘 구현 2. 정보과학 하기에 대한 오리엔테이션을 실시한다. 2-1.정보과학에 분야적성 다음 주 교육주제( 자료구조 이야기) 에 대한 호기심 강화 대한 학습자의 발표 준비 사항에 대해 안내를 한다. 교육방법 강의 활동지의 번호 체계는 본 차시의 활동지와 다음 차시의 활동지를 구분하여 적용하였다. 예를 들어, 본차시의 활동지는 < 활동지 차시-1( 순서)> 로 표시하 였고, 다음 차시의 활동지는 < 활동지 차시-2( 순서)> 로 표시하였다. 이 때 본 차시 또는 다음 차시 활동지의 순서는 몇 번째 활동지인가를 나타내는 것이 다. ( 예) < 활동지 6-1(2)> : 6주차 본 차시 활동을 위한 2번째 활동지 ( 예) < 활동지 6-2(2)> : 6 주차의 다음 차시(7 주차) 준비( 조사 및 분석) 를 위한 2번째 활동지 교사 및 학생들이 최적의 방법으로 활동지를 활용할 수 있는 교육방법 을 제 시하였다. 예를 들어, 활동지에 제시한 과제내용을 해결하기 위하여 그룹별 작업이 필요한 경우에는 [ 팀별 연구과제] 로 명시하였고, 개인적으로 활동지의 과제 내용을 해결할 수 있는 경우에는 구체적인 학습활동 방법인 론], [ 실험실습], [ 기관방문] 등의 형태로 제시하였다. 활동지에서 제시한 [ 발표와 토 교육방법 은 학교 현장의 여건에 따라 교사가 탄력적으로 변환하여 적용이 가능하다. 예를 들어, 개별 참여가 가능하다고 제시한 내용 도 그룹별 참여로 변환하여 적용할 수 있을 것이며, 반대로 적용할 수도 있을 것이다. - 29 -
활동지는 정보과학 영재교육을 받는 학생들의 수준 및 수업 환경( 여건) 에 따 라 교사가 선택적으로 활용이 가능하다. 활동지와 평가도구는 한글파일로도 제공이 되므로, 교사가 출력하거나 여건에 맞게 다소 수정하여 사용할 수 있다. 교수학습 자료의 주제와 교육내용은 정보과학 영재교육과정 에서 제시한 6개 년 교육과정의 기본 틀을 따르고 있기는 하지만, 실제로 개발하는 과정에서 집필 진에 따라 다소 차이를 보일 수 있음. - 30 -
4. 개발된 중학생용 정보과학 영재교육 교수학습 자료 체제 가. 탐색단계 탐색단계 - 단원 1 학습내용 단원 1 : 컴퓨터와 정보와의 관계 찾기 구분 주제 교육내용 14) 1주 오리엔테이션 5-1. 5-2. 자율적 탐구 및 학습 능력 상호작용과 의사소통 능력 2주 정보사회와 정보산업 2-4. 정보과학 분야 진로 3주 부울대수와 논리회로 4주 중앙처리장치의 기능과 동작원리 5주 주기억장치의 기능과 동작원리 6주 컴퓨터의 활용분야 찾기 7주 저작권 침해 방지 및 대응 방안 8주 사생활 침해 방지 및 대응 방안 3-5. 3-7. 1-3. 3-7. 1-3. 3-7. 1-3. 4-1. 1-3. 3-9. 1-3. 3-9. 계산 원리 정보과학과 연관된 과학이론 창의적인문제해결 및 해결능력 정보과학과 연관된 과학이론 창의적인문제해결 및 해결능력 정보과학과 연관된 과학이론 창의적인문제발견 및 해결능력 문제의 구조화 및 모델링 능력 창의적인문제발견 및 해결능력 정보 보호 및 윤리 창의적인문제발견 및 해결능력 정보 보호 및 윤리 9주 문자데이터 표현과 처리방법 10주 수치데이터 표현과 처리방법 11주 소리데이터 표현과 처리방법 1-3. 창의적인문제발견 및 해결능력 3-10. 인간과 컴퓨터의 상호작용 1-3. 창의적인문제발견 및 해결능력 3-10. 인간과 컴퓨터의 상호작용 1-3. 창의적인문제발견 및 해결능력 3-10. 인간과 컴퓨터의 상호작용 12주 단원 결론 및 평가 5-2. 5-3. 상호작용과 의사소통능력 공동작업능력 14) 각 교육내용 앞 부분의 번호는 6 쪽의 < 표 3> 의 번호 체계를 따름. - 31 -
탐색단계 - 단원 2 학습내용 단원 2 : 미래의 컴퓨터 기술 구분 주제 교육내용 15) 1주 오리엔테이션 2주 전자태그의 동작원리 이해하기 3주 개인정보 침해 사례 분석하기 2-1. 5-1. 1-3. 2-1. 2-3. 5-1. 1-3. 2-3. 3-9. 5-1. 정보과학에 대한 호기심 자율적 탐구 및 학습 능력 창의적인 문제발견 및 해결능력 정보과학에 대한 호기심 정보과학과 실생활과의 연계성 자율적 탐구 및 학습 능력 창의적인 문제발견 및 해결능력 정보과학과 실생활과의 연계성 정보보호 및 윤리 자율적 탐구 및 학습 능력 4주 전자태그 활용 사례 탐구하기 5주 유비쿼터스 홈 시스템 체험하기 1-3. 창의적인 문제발견 및 해결능력 3-10. 인간과 컴퓨터의 상호작용 4-1. 문제의 구조화 및 모델링 능력 5-2. 상호작용과 의사소통능력 1-3. 창의적인 문제발견 및 해결능력 2-3. 정보과학과 실생활과의 연계성 3-10. 인간과 컴퓨터의 상호작용 4-1. 문제의 구조화 및 모델링 능력 5-2. 상호작용과 의사소통능력 6주 헬스케어 서비스 탐구하기 1-3. 2-3. 5-1. 창의적인 문제발견 및 해결능력 정보과학과 실생활과의 연계성 자율적 탐구 및 학습 능력 7주 새로운 유비쿼터스 서비스 제안 하기 1-3. 창의적인 문제발견 및 해결능력 2-2. 정보과학의 미래 비전 제시 4-1. 문제의 구조화 및 모델링 능력 5-1. 자율적 탐구 및 학습 능력 5-2. 상호작용과 의사소통능력 - 32 -
8주 휴대목적에 따른 기능 분석하기 9주 휴대방법에 따른 디자인 제안하기 10주 새로운 개인용 휴대장치 설계하기 11주 미래의 일상생활 상상하기 12주 단원 결론 및 평가 1-3. 창의적인 문제발견 및 해결능력 2-3. 정보과학과 실생활과의 연계성 3-10. 인간과 컴퓨터의 상호작용 4-1. 문제의 구조화 및 모델링 능력 1-3. 창의적인 문제발견 및 해결능력 3-10. 인간과 컴퓨터의 상호작용 4-1. 문제의 구조화 및 모델링 능력 5-1. 자율적 탐구 및 학습 능력 5-2. 상호작용과 의사소통능력 1-3. 창의적인 문제발견 및 해결능력 2-2. 정보과학의 미래 비전 제시 5-1. 자율적 탐구 및 학습 능력 5-2. 상호작용과 의사소통능력 1-3. 창의적인 문제발견 및 해결능력 3-7. 정보과학과 연관된 과학이론 5-1. 자율적 탐구 및 학습 능력 1-2. 논리전개 및 추론능력 2-2. 정보과학의 미래 비전 제시 5-2. 상호작용과 의사소통능력 15) 각 교육내용 앞 부분의 번호는 6 쪽의 < 표 3> 의 번호 체계를 따름. - 33 -
탐색단계 - 단원 3 학습내용 단원 3 : 미래의 가전제품 구분 주제 교육내용 16) 1주 오리엔테이션 2주 스스로 이동하는 기능 탐구하기 2-1. 5-1. 1-2. 2-1. 4-3. 5-1. 정보과학에 대한 호기심 자율적 탐구 및 학습 능력 논리전개 및 추론 능력 정보과학에 대한 호기심 시스템 개발 능력 자율적 탐구 및 학습 능력 3주 사람과 대화하는 기능 탐구하기 4주 상황을 판단하는 기능 탐구하기 5주 미래의 가정용 로봇 설계하기 1-3. 창의적인 문제발견 및 해결능력 2-3. 정보과학과 실생활과의 연계성 3-10. 인간과 컴퓨터의 상호작용 4-1. 문제의 구조화 및 모델링 능력 5-2. 상호작용과 의사소통능력 1-3. 창의적인 문제발견 및 해결능력 3-1. 알고리즘 설계 4-1. 문제의 구조화 및 모델링 능력 5-1. 자율적 탐구 및 학습 능력 5-2. 상호작용과 의사소통능력 1-3. 창의적인 문제발견 및 해결능력 2-2. 정보과학의 미래 비전 제시 5-1. 자율적 탐구 및 학습 능력 5-2. 상호작용과 의사소통능력 16) 각 교육내용 앞 부분의 번호는 6 쪽의 < 표 3> 의 번호 체계를 따름. - 34 -
나. 발전단계 발전단계 - 단원 1 학습내용 단원 1 : 알고리즘 이해하기 구분 주제 교육내용 17) 1주 오리엔테이션 2-1. 정보과학에 대한 호기심 2주 알고리즘 이야기 2-3. 3-1. 정보과학과 실생활과의 연계성 알고리즘 설계 3주 순서도를 이용한 알고리즘 표현 하기 2-3. 3-1. 정보과학과 실생활과의 연계성 알고리즘 설계 4주 의사코드를 이용한 알고리즘 표현 하기 2-3. 3-1. 정보과학과 실생활과의 연계성 알고리즘 설계 5주 생활 속 알고리즘 구현하기 ( 등교 알고리즘) 2-3. 3-1. 정보과학과 실생활과의 연계성 알고리즘 설계 6주 생활 속 알고리즘 구현하기 ( 수업 알고리즘) 2-3. 3-1. 정보과학과 실생활과의 연계성 알고리즘 설계 7주 생활 속 알고리즘 구현하기 ( 점심시간 알고리즘) 2-3. 3-1. 정보과학과 실생활과의 연계성 알고리즘 설계 8주 생활 속 알고리즘 구현하기 ( 하교 알고리즘) 2-3. 3-1. 정보과학과 실생활과의 연계성 알고리즘 설계 9주 생활 속 알고리즘 구현하기 ( 소풍 알고리즘) 2-3. 3-1. 정보과학과 실생활과의 연계성 알고리즘 설계 10주 생활 속 알고리즘 구현하기 ( 긴급 상황처리 알고리즘) 2-3. 3-1. 정보과학과 실생활과의 연계성 알고리즘 설계 11주 보고서 작성 2-3. 3-1. 정보과학과 실생활과의 연계성 알고리즘 설계 12주 단원 결론 및 평가 2-3. 정보과학과 실생활과의 연계성 17) 각 교육내용 앞 부분의 번호는 6 쪽의 < 표 3> 의 번호 체계를 따름. - 35 -
발전단계 - 단원 2 학습내용 단원 구분 2 : 놀이공원 알고리즘 구현하기 주제 교육내용 18) 1주 오리엔테이션 2-1. 정보과학에 대한 호기심 2주 자료구조 이야기 3주 배열과 행렬을 이용한 자료구조 표현 4주 트리의 표현 및 순회방법 5주 6주 7주 집에서 놀이공원까지 그래프 형태로 표현하기 집에서 놀이공원까지 최단거리 구현하기 놀이공원의 구성을 그래프로 구현하기 8주 놀이기구 정렬 방법 구현하기 1-2. 논리전개 및 추론능력 2-1. 정보과학에 대한 호기심 3-2. 이산구조 5-1. 자율적 탐구 및 학습능력 5-2. 상호작용과 의사소통능력 1-2. 논리전개 및 추론능력 2-1. 정보과학에 대한 호기심 3-2. 이산구조 5-1. 자율적 탐구 및 학습능력 5-2. 상호작용과 의사소통능력 1-2. 논리전개 및 추론능력 2-1. 정보과학에 대한 호기심 3-2. 이산구조 5-1. 자율적 탐구 및 학습능력 5-2. 상호작용과 의사소통능력 1-2. 논리전개 및 추론능력 2-1. 정보과학에 대한 호기심 3-2. 이산구조 5-1. 자율적 탐구 및 학습능력 5-2. 상호작용과 의사소통능력 1-2. 논리전개 및 추론능력 2-1. 정보과학에 대한 호기심 3-2. 이산구조 5-1. 자율적 탐구 및 학습능력 5-2. 상호작용과 의사소통능력 1-2. 논리전개 및 추론능력 2-1. 정보과학에 대한 호기심 3-2. 이산구조 5-1. 자율적 탐구 및 학습능력 5-2. 상호작용과 의사소통능력 1-2. 논리전개 및 추론능력 2-1. 정보과학에 대한 호기심 3-2. 이산구조 5-1. 자율적 탐구 및 학습능력 5-2. 상호작용과 의사소통능력 - 36 -
9주 놀이기구 탐색 방법 구현하기 1-2. 2-1. 3-2. 5-1. 5-2. 논리전개 및 추론능력 정보과학에 대한 호기심 이산구조 자율적 탐구 및 학습능력 상호작용과 의사소통능력 10주 11주 새로운 놀이기구를 구현하여 설치하기 놀이공원의 알고리즘 구현하기 ( 보고서 작성) 1-2. 2-1. 2-3. 3-2. 5-1. 5-2. 1-2. 2-1. 3-2. 5-1. 5-2. 논리전개 및 추론능력 정보과학에 대한 호기심 정보과학과 실생활과의 연계성 이산구조 자율적 탐구 및 학습능력 상호작용과 의사소통능력 논리전개 및 추론능력 정보과학에 대한 호기심 이산구조 자율적 탐구 및 학습능력 상호작용과 의사소통능력 12주 단원 결론 및 평가 5-2. 상호작용과 의사소통능력 18) 각 교육내용 앞 부분의 번호는 6 쪽의 < 표 3> 의 번호 체계를 따름. - 37 -
발전단계 - 단원 3 학습내용 단원 3 : 논리 회로 이해하기 구분 주제 교육내용 19) 1주 오리엔테이션 2-1. 정보과학에 대한 호기심 2주 논리 회로와 표현 방법 3주 논리 대수학 이해하기 4주 논리 회로 함수 표현하기 1-2. 2-1. 3-2. 5-1. 5-2. 1-2. 2-1. 3-2. 5-1. 5-2. 1-2. 2-1. 3-2. 5-1. 5-2. 논리전개 및 추론 능력 정보과학에 대한 호기심 계산원리 자율적 탐구와 학습 능력 상호작용과 의사소통능력 논리전개 및 추론 능력 정보과학에 대한 호기심 계산원리 자율적 탐구와 학습 능력 상호작용과 의사소통능력 논리전개 및 추론 능력 정보과학에 대한 호기심 계산원리 자율적 탐구와 학습 능력 상호작용과 의사소통능력 5주 논리 회로 설계하기 1-3. 창의적인 문제발견 및 해결능력 2-3. 정보과학과 실생활과의 연계성 3-1. 알고리즘 설계 4-1. 문제의 구조화 및 모델링 능력 19) 각 교육내용 앞 부분의 번호는 6 쪽의 < 표 3> 의 번호 체계를 따름. - 38 -
다. 심화단계 심화단계 - 단원 1 학습내용 단원 1 : 정보통신 이야기 구분 1주 오리엔테이션 주 제 2주 정보통신 및 네트워크 이야기 I 3주 정보통신 및 네트워크 이야기 II 4주 인터넷 서비스 이야기 5주 새로운 정보통신 서비스 이야기 6주 차세대 인터넷 서비스 이야기 7주 통신 알고리즘 분석하기 I 8주 통신 알고리즘 분석하기 II 9주 통신 알고리즘 설계하기 10주 다중 접속 프로토콜 분석하기 11주 이더넷의 접속 프로토콜 설계하기 12주 단원 결론 및 평가 5-1. 5-2. 2-1. 3-7. 2-1. 3-7. 1-3. 2-2. 3-9. 1-3. 2-2. 1-2. 5-1. 3-1. 4-1. 3-1. 4-1. 1-3. 4-1. 4-3. 1-3. 4-1. 4-3. 1-3. 4-1. 4-3. 1-3. 4-1. 교육 내용 20) 자율적 탐구 및 학습 능력 상호작용과 의사소통 능력 정보과학에 대한 호기심 정보과학과 연관된 과학이론 정보과학에 대한 호기심 정보과학과 연관된 과학이론 창의적인문제발견 및 해결능력 정보과학의 미래 비전 제시 정보보호 및 윤리 창의적인문제발견 및 해결능력 정보과학의 미래 비전 제시 논리 전개 및 추론 능력 자율적 탐구 및 학습 능력 알고리즘 설계 문제의 구조화 및 모델링 능력 알고리즘 설계 문제의 구조화 및 모델링 능력 창의적인문제발견 및 해결능력 문제의 구조화 및 모델링 능력 시스템 개발 능력 창의적인문제발견 및 해결능력 문제의 구조화 및 모델링 능력 시스템 개발 능력 창의적인문제발견 및 해결능력 문제의 구조화 및 모델링 능력 시스템 개발 능력 창의적인문제발견 및 해결능력 문제의 구조화 및 모델링 능력 20) 각 교육내용 앞 부분의 번호는 6 쪽의 < 표 3> 의 번호 체계를 따름. - 39 -
심화단계 - 단원 2 학습내용 단원 2 : 새로운 네비게이션 만들기 구분 주제 교육내용 21) 1주 오리엔테이션 2주 텔레매틱스 이야기 3주 4주 5주 6주 7주 8주 9주 네비게이터의 특징 및 기능 이해 하기 네비게이터의 길 찾기 서비스 원리 분석하기 그래프이론 ( 한붓그리기, 오일러길) 그래프이론( 해밀턴길) 및 합리적인 길 찾기 길 찾기 알고리즘을 적용한 여행계획 설계하기 텔레매틱스를 이용한 네비게이터의 인터페이스 특성 알아보기 새로운 네비게이터 기능 제안 하기 2-1. 정보과학에 대한 호기심 2-3. 정보과학과 실생활과의 연계성 1-11-2. 논리전개 및 추론 능력 1-3. 창의적인 문제발견 및 해결능력 2-1. 정보과학에 대한 호기심 2-3. 정보과학과 실생활과의 연계성 3-2. 계산 원리 5-2. 상호작용과 의사소통능력 1-3. 창의적인문제발견 및 해결능력 3-7. 정보과학과 연관된 과학이론 3-10. 인간과 컴퓨터의 상호작용 4-1. 문제의 구조화 및 모델링 능력 11-3. 창의적인 문제발견 및 해결책 2-2. 정보과학의 미래 비전 제시 2-3. 정보과학과 실생활과의 연계성 4-1. 문제의 구조화 및 모델링 능력 5-1. 자율적 탐구 및 학습 능력 5-3. 공동 작업 능력 1-1. 수리적 사고 3-1. 알고리즘 설계 3-2. 이산구조 2-3. 정보과학과 실생활과의 연계성 3-1. 알고리즘 설계 3-5. 계산원리 4-1. 문제의 구조화 및 모델링 능력 5-2. 상호작용과 의사소통능력 1-3. 창의적인 문제발견 및 해결능력 2-3. 정보과학과 실생활과의 연계성 3-1. 알고리즘 설계 5-1. 자율적 탐구 및 학습 능력 1-3. 창의적인 문제발견 및 해결책 2-3. 정보과학과 실생활과의 연계성 3-7. 정보과학과 연관된 과학이론 3-10. 인간과 컴퓨터의 상호작용 4-3. 시스템 개발 능력 5-1. 자율적 탐구 및 학습 능력 1-3. 창의적인문제발견 및 해결능력 2-1. 정보과학에 대한 호기심 2-2. 정보과학에 대한 미래비전제시 4-1. 문제의 구조화 및 모델링 능력 4-3. 시스템 개발 능력 5-2. 상호작용과 의사소통 능력 - 40 -
10주 11주 새로운 네비게이터 기능 구현 하기 새로운 네비게이터 기능 개선 보고서 작성 12주 단원 결론 및 평가 1-3. 창의적인 문제발견 및 해결책 2-1. 정보과학에 대한 호기심 2-3. 정보과학과 실생활과의 연계성 3-7. 정보과학과 연관된 과학이론 3-10. 인간과 컴퓨터의 상호작용 4-1. 문제의 구조화 및 모델링 능력 4-3. 시스템 개발 능력 5-1. 자율적 탐구 및 학습 능력 1-2. 논리전개 및 추론 능력 1-3. 창의적인 문제발견 및 해결능력 2-1. 정보과학에 대한 호기심 2-2. 정보과학의 미래 비전 제시 2-3. 정보과학과 실생활과의 연계성 3-10. 인간과 컴퓨터의 상호작용 4-1. 문제의 구조화 및 모델링 능력 4-3. 시스템 개발 능력 5-1. 자율적 탐구 및 학습 능력 5-2. 상호작용과 의사소통능력 5-3. 공동 작업 능력 1-2. 논리전개 및 추론 능력 1-3. 창의적인 문제발견 및 해결능력 2-1. 정보과학에 대한 호기심 2-2. 정보과학의 미래 비전 제시 2-3. 정보과학과 실생활과의 연계성 2-4. 정보과학 분야 진로 3-5. 계산 원리 3-7. 정보과학과 연관된 과학이론 3-9. 정보보호 및 윤리 3-10. 인간과 컴퓨터의 상호작용 4-1. 문제의 구조화 및 모델링 능력 5-1. 자율적 탐구 및 학습 능력 5-2. 상호작용과 의사소통능력 5-3. 공동 작업 능력 5-4. 리더십 21) 각 교육내용 앞 부분의 번호는 6 쪽의 < 표 3> 의 번호 체계를 따름. - 41 -
심화단계 - 단원 3 학습내용 단원 구분 3 : 교착상태 이해하기 주 제 교육 내용 22) 1주 오리엔테이션 및 운영체제 2-1. 정보과학에 대한 호기심 2주 프로세스와 자원 3주 교착상태 이야기 I 4주 교착상태 이야기 II 2-1. 정보과학에 대한 호기심 3-5. 계산 원리 5-2. 상호작용과 의사소통능력 1-2. 논리 전개 및 추론 능력 5-1. 자율적 탐구 및 학습 능력 1-3. 창의적인 문제발견 및 해결 능력 4-1. 문제의 구조화 및 모델링 능력 5-2. 상호작용과 의사소통능력 22) 각 교육내용 앞 부분의 번호는 6 쪽의 < 표 3> 의 번호 체계를 따름. - 42 -
II. 교수학습 자료
- 44 -
중등 발전 단계 단원 1 : 알고리즘 이해하기
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) - 46 -
알고리즘 이해하기 단원 1 알고리즘 이해하기 단원 개요 우리는 하루에도 여러 번씩 문제를 해결해야 하는 상황을 만나게 된다. 어디 를 갈 때도 버스를 탈것인지 전철을 탈것인지부터 시작하여 어느 방향으로 가는 것이 빠른지에 이르기까지 생활 속에서 다양한 문제를 해결해야 한다. 그때마다 여러 가지 방법 중에서 가장 적합한 방법을 찾아야 한다. 따라서 이 단원에서는 문제를 상황에 적합하게 해결하기 위해서 알고리즘을 사용하고 생성하는 방법에 대해 학습한다. 알고리즘은 대부분의 학생들이 매우 딱딱하게 느낀다. 그러나 이 단원에서는 프로그래밍 언어를 이용하여 코딩하지 않고도 쉽고 재미있게 알고리 즘을 접할 수 있도록 한다. 알고리즘은 프로그램의 꽃이라고 할 수 있으며, 가볍 고 경쾌한 놀이이다. 따라서 다양한 예제를 통해 알고리즘 작성 능력과 창의력 및 추리력을 향상 시키도록 한다. 또한 실생활에서 일어날 수 있는 상황을 바탕 으로 창의적인 알고리즘을 생성하고 이를 통한 문제해결능력도 향상시킨다. - 47 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 단원 목표 알고리즘의 개념과 특징을 이해한다. 다양한 알고리즘의 표현 기법을 통하여 알고리즘의 표현 방법을 습득한다. 알고리즘의 다양한 설계 기법을 학습한다. 알고리즘의 분석방법을 학습한다. 효과적인 알고리즘의 선택방법을 학습한다. 일상생활 속에서 발견할 수 있는 알고리즘을 찾아 분석하고 해결하는 능력을 키운다. 다르게 생각하고, 질문하고 협동하여 끝까지 도전하는 학습태도를 형성한다. 도전과제를 스스로 해결하는 능력을 향상시킨다. 개념 모형도 - 48 -
알고리즘 이해하기 단원 학습내용 단원 1 : 알고리즘 이해하기 구분 주제 교육내용 1주 오리엔테이션 2-1. 정보과학에 대한 호기심 2주 알고리즘 이야기 2-3.정보과학과 실생활과의 연계성 3-1.알고리즘 설계 3주 4주 5주 6주 7주 8주 9주 10주 순서도를 이용한 알고리즘 표현하기 의사코드를 이용한 알고리즘 표현하기 생활 속 알고리즘 구현하기 ( 등교 알고리즘) 생활 속 알고리즘 구현하기 ( 수업 알고리즘) 생활 속 알고리즘 구현하기 ( 점심시간 알고리즘) 생활 속 알고리즘 구현하기 ( 하교 알고리즘) 생활 속 알고리즘 구현하기 ( 소풍 알고리즘) 생활 속 알고리즘 구현하기 ( 긴급 상황처리 알고리즘) 2-3.정보과학과 실생활과의 연계성 3-1.알고리즘 설계 2-3.정보과학과 실생활과의 연계성 3-1.알고리즘 설계 2-3.정보과학과 실생활과의 연계성 3-1.알고리즘 설계 2-3.정보과학과 실생활과의 연계성 3-1.알고리즘 설계 2-3.정보과학과 실생활과의 연계성 3-1.알고리즘 설계 2-3.정보과학과 실생활과의 연계성 3-1.알고리즘 설계 2-3.정보과학과 실생활과의 연계성 3-1.알고리즘 설계 2-3.정보과학과 실생활과의 연계성 3-1.알고리즘 설계 11주 보고서 작성 2-3.정보과학과 실생활과의 연계성 3-1.알고리즘 설계 12주 단원 결론 및 평가 2-3. 정보과학과 실생활과의 연계성 - 49 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 1 주 주제 오리엔테이션 본 활동은 생활 속의 알고리즘이란 수업의 첫 시간으로서 이번 학기에 배우 게 되는 개괄적인 학습 내용과 구성, 단원별 학습 목표를 소개한다. 그리고 수업 진행 방식을 소개하고 마지막으로 다음 징) 에 대한 학습자의 발표 준비 사항에 대해 안내를 한다. 2 주차 교육 주제( 알고리즘의 개념 및 특 교육 목표 2. 정보과학 분야 적성 강화 교육 내용 2-1. 정보과학에 대한 호기심 세부 교육 내용 단원의 주제인 알고리즘 이해하기에 대한 오리엔테이션을 실시한다. 다음 교육주제( 알고리즘의 개념 및 특징) 에 대한 학습자의 발표 준비 사항에 대해 안내를 한다. 교육방법 토론, 강의 - 50 -
알고리즘 이해하기 < 교육목표 - 교육내용 - 세부교육내용 - 교육방법의 유기적 연관성 > 교육목표 교육내용 세부교육내용 교육방법 2. 정 보 과 학 분야 적성 강화 단원의 주제인 알고리즘 이해하기에 대한 오 리엔테이션을 실시한다. 2-1. 정보과학에 다음 주 교육주제( 알고리즘의 개념 및 특징) 에 강의 대한 호기심 대한 학습자의 발표 준비 사항에 대해 안내를 한다. 준비물 교사용 학생용 관련 시청각 자료, 인터넷 검색용 PC 학생용 활동지 필기도구 사진 - 51 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 교수학습 활동 학습 단계 교수학습 활동 시간 ( 총 90 분 ) 지도초점 및 유의점 도입 활동 단원의 주제와 단원 학습 내용 의 구성을 소개한다. 10 단원의 개요와 학습 목표를 설 10 학기 활동의 첫 시간으로 명하고 확인시킨다. 학생들이 앞으로 본 과목 본 활동 주별 교육 주제와 세부 교육 내 용을 간략하게 설명한다. 40 을 통해 어떠한 활동을 하 고, 무엇을 배우게 되는 지를 생각할 수 있도록 지 도한다. 수업 진행 방식을 소개한다. 10 정리 활동 다음 주 교육 내용과 준비 사항 을 안내한다. 20 학생 스스로가 알고리즘 이야기 활동을 진행할 수 있도록 이해를 도우면서, 모든 학생들이 참여할 수 있도록 지도한다. - 52 -
알고리즘 이해하기 지도활동 도입 활동 1. 단원 학습 내용의 구성에 대해 소개합니다. 본 단원에서 학습할 내용은 다음과 같이 어 있음을 설명한다. 12주의 주별 학습 내용으로 구성되 단원 1 : 알고리즘 이해하기 구분 주제 1주 오리엔테이션 2주 알고리즘 이야기 3주 순서도를 이용한 알고리즘 표현하기 4주 의사코드를 이용한 알고리즘 표현하기 5주 6주 7주 8주 9주 10주 11주 생활 속 알고리즘 구현하기 ( 등교 알고리즘) 생활 속 알고리즘 구현하기 ( 수업 알고리즘) 생활 속 알고리즘 구현하기 ( 점심시간 알고리즘) 생활 속 알고리즘 구현하기 ( 하교 알고리즘) 생활 속 알고리즘 구현하기 ( 소풍 알고리즘) 생활 속 알고리즘 구현하기 ( 긴급 상황처리 알고리즘) 생활 속 알고리즘 구현하기 ( 보고서 작성) 12주 학기 정리 및 평가 - 53 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 본 활동 1. 단원의 개요와 학습 목표에 대해 소개합니다. 1) 단원 ( 알고리즘 이해하기 ) 의 개요 우리는 하루에도 여러 번씩 문제를 해결해야 하는 상황을 만나게 된다. 어디 를 갈 때도 버스를 탈것인지 전철을 탈것인지부터 시작하여 어느 방향으로 가는 것이 빠른지에 이르기까지 생활 속에서 다양한 문제를 해결해야 한다. 그때마다 여러 가지 방법 중에서 가장 적합한 방법을 찾아야 한다. 따라서 이 단원에서는 문제를 상황에 적합하게 해결하기 위해서 알고리즘을 사용하고 생성하는 방법에 대해 학습한다. 알고리즘은 대부분의 학생들이 매우 딱딱하게 느낀다. 그러나 이 단원에서는 프로그래밍 언어를 활용하여 프로그래밍을 하지 않고도 쉽고 재미있 게 알고리즘을 접할 수 있도록 한다. 알고리즘은 프로그램의 꽃이라고 할 수 있 으며, 가볍고 경쾌한 놀이이다. 따라서 다양한 예제를 통해 알고리즘 작성 능력 과 창의력 및 추리력을 향상 시키도록 한다. 또한 실생활에서 일어날 수 있는 상 황을 바탕으로 창의적인 알고리즘을 생성하고 이를 통한 문제해결능력도 향상시 킨다. 2) 단원 ( 알고리즘 이해하기 ) 의 학습 목표 알고리즘의 개념과 특징을 이해한다. 다양한 알고리즘의 표현 기법을 통하여 알고리즘의 표현 방법을 습득한 다. 알고리즘의 다양한 설계 기법을 학습한다. 알고리즘의 분석방법을 학습한다. 효과적인 알고리즘의 선택방법을 학습한다. 일상생활 속에서 발견할 수 있는 알고리즘을 찾아 분석하고 해결하는 능 력을 키운다. 다르게 생각하고, 질문하고 협동하여 끝까지 도전하는 학습태도를 형성한 다. 도전과제를 스스로 해결하는 능력을 향상시킨다. 2. 주별 교육 주제와 세부 교육 내용을 소개합니다. 1 주 주제 : 오리엔테이션 2 주 주제 : 알고리즘 이야기 - 54 -
알고리즘 이해하기 학습자가 준비한 알고리즘의 개념 및 특징에 대해 발표를 실시한다. 발표한 내용에 대해 토론한다. 알고리즘의 정의와 개념에 대해 학습한다. 알고리즘의 특징 및 표현방법에 대해 학습한다. 3 주 주제 : 순서도를 이용한 알고리즘 표현하기 학습자가 준비한 순서도 표현의 장단점에 대해 발표를 실시한다. 발표한 내용에 대해 토론한다. 순서도의 정의와 필요성에 대해 학습한다. 순서도 역할에 대해 학습한다. 순서도의 종류 및 자주 쓰이는 기호에 대해 학습한다. 순서도의 기본 유형에 대해 학습한다. 4 주 주제 : 의사코드를 이용한 알고리즘 표현하기 학습자가 준비한 의사코드 표현의 장단점에 대해 발표를 실시한다. 발표한 내용에 대해 토론한다. 의사코드의 정의 및 개요에 대해 학습한다. 의사코드의 특징 및 사용 시 유의사항에 대해 학습한다. 의사코드의 표현 방법에 대해 학습한다. BNF 의 개념 및 배경에 대해 학습한다. BNF 의 표기법에 대해 학습한다. 5 주 주제 : 생활 속 알고리즘 구현하기 ( 등교 알고리즘 ) 알고리즘의 정당성에 대해 학습한다. 알고리즘이 되기 위한 조건에 대해 학습한다. 알고리즘의 정당성 증명방법에 대해 학습한다. 학습자가 준비한 등교 알고리즘에 대해 발표를 실시한다. 발표한 내용에 대한 토론을 통해 문제점을 도출한다. 도출된 문제의 해결을 위한 효율적인 등교 알고리즘의 구현방법을 찾는다. 등교 알고리즘의 구상 및 설계에 대해 학습한다. 등교 알고리즘의 표현 방법에 대해 학습한다. 6 주 주제 : 생활 속 알고리즘 구현하기 ( 수업 알고리즘 ) 학습자가 준비한 수업 알고리즘 표현에 대해 발표를 실시한다. 발표한 내용에 대해 토론한다. 동화속의 예제를 통한 알고리즘의 분석 방법을 학습한다. 알고리즘 공부의 중요한 요소에 대해 학습한다. 수업 알고리즘의 구상 및 설계에 대해 학습한다. - 55 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 수업 알고리즘의 표현방법에 대해 학습한다. 7 주 주제 : 생활 속 알고리즘 구현하기 ( 점심시간 알고리즘 ) 학습자가 준비한 점심시간 알고리즘 표현에 대해 발표를 실시한다. 발표한 내용에 대해 토론한다. 분할 통치법을 이용한 알고리즘의 설계 기법에 대해 학습한다. 동적 계획법을 이용한 알고리즘의 설계 기법에 대해 학습한다. 탐욕법을 이용한 알고리즘의 설계 기법에 대해 학습한다. 점심시간 알고리즘의 구상 및 설계에 대해 학습한다. 점심시간 알고리즘의 표현방법에 대해 학습한다. 8 주 주제 : 생활 속 알고리즘 구현하기 ( 하교 알고리즘 ) 학습자가 준비한 하교 알고리즘 표현에 대해 발표를 실시한다. 발표한 내용에 대해 토론한다. 알고리즘 분석의 중요성에 대해 학습한다. 알고리즘 분석 단계에 대해 학습한다. 알고리즘 분석 기준에 대해 학습한다. 하교 알고리즘의 구상 및 설계에 대해 학습한다. 하교 알고리즘의 표현방법에 대해 학습한다. 9 주 주제 : 생활 속 알고리즘 구현하기 ( 소풍 알고리즘 ) 학습자가 준비한 소풍 알고리즘 표현에 대해 발표를 실시한다. 발표한 내용에 대해 토론한다. 효율적인 알고리즘을 찾는 방법에 대해 학습한다. 환경에 맞는 알고리즘의 선택 방법에 대해 학습한다. 소풍 알고리즘의 구상 및 설계에 대해 학습한다. 소풍 알고리즘의 표현방법에 대해 학습한다. 10 주 주제 : 생활 속 알고리즘 구현하기 ( 긴급 상황처리 알고리즘 ) 학습자가 준비한 긴급 상황처리 알고리즘 표현에 대해 발표를 실시 한다. 발표한 내용에 대해 토론한다. 알고리즘의 효과에 대해 학습한다. 우선순위규칙의 개념 및 특징에 대해 학습한다. 우선순위규칙의 한계에 대해 학습한다. 우선순위규칙의 종류에 대해 학습한다. 긴급 상황 처리 알고리즘의 구상 및 설계에 대해 학습한다. 긴급 상황 처리 알고리즘의 표현방법에 대해 학습한다. 11 주 주제 : 생활 속 알고리즘 구현하기 ( 보고서 작성 ) - 56 -
알고리즘 이해하기 각 차시에 학습한 내용과 관련된 창의적인 문제들을 제시하고 설명 한다. 알고리즘 구현 보고서에 대한 작성 요령을 설명한다. 학습자가 준비한 유클리드 호제법 보고서에 대해 발표를 실시한다. 발표한 내용에 대해 토론한다. 12 주 주제 : 학기 정리 및 평가 이번 학기에 학습한 알고리즘 내용에 대해 간략하게 복습한다. 보고서 전시 및 산출물 발표대회 및 평가를 실시한다. 3. 수업 진행 방식을 소개합니다. 우선 활동지를 설명하고 수업 진행 방식을 소개한다. 수업 진행 방식은 이전 주에 부과한 학습자의 활동지 내용에 대해 학습자의 발표와 토론을 수행하고 선 생님의 강의를 통한 교육 방법으로 수업을 진행한다는 것을 설명한다. 그리고 생 활 속의 다양한 알고리즘을 찾아보고 알고리즘의 표현방법을 생각해보는 활동을 실시한다. 각 주별 교육 내용에 있어서 교사의 재량으로 필요한 활동지를 선택할 수 있다. 정리 활동 1. 학습 내용 정리 1) 일상생활에서 다. 찾아볼 수 있는 다양한 알고리즘의 예를 찾아 정리해봅시 활동지 1-1(1) 사용 2) 여러분이 찾은 일상생활 속의 알고리즘을 어떻게 표현할 수 있는지 정리 해봅시다. 활동지 1-1(1) 사용 2. 다음 주 교육 내용 안내 1) 알고리즘의 개념 및 특징과 표현방법 등을 조사하여 정리해봅시다. 활동지 1-2(1) 사용 - 57 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) [ 알고리즘 ] 읽기자료 알고리즘이라는 용어는 문제를 해결하기 위한 절차나 방법을 말한다. 컴퓨터 프로그램은 정교한 알고리즘들의 집합이라고 간주할 수 있다. 수학이나 컴퓨터 과학에서 말하는 알고리즘은, 보통 반복되는 문제를 풀기 위한 작은 프로시저를 의미한다. ' 알고리즘 (algorithm)' 이라는 단어는 AD 825 년에 'Kitab al jabr w' almuqabala' 라는 영향력 있는 수학 교과서를 저술한 9 세기 페르시아 수학자 알코와리즘 (Abu Ja'far Mohammed ibn Mûsâ al-khowârizm) 의 이름에서 유 래한다. 처음에는 더 정확하게 'algorism' 이라고 표기되었는데 요즈음 'algorithm' 으로 바뀐 것은 산수라는 의미의 'arithmetic' 에서 영향을 받은 것 같다. ( 대수학을 나타내는 'algebra' 도 위의 책 제목에 등장하는 아랍 단어 'al jabr' 에서 유래한다는 사실도 알아 둘 만하다) 그러나 알고리즘의 예는 알코와 리즘의 책보다 훨씬 이전부터 알려져 왔다. 가장 잘 알려진 예로서 고대 그리스 ( 기원전 300 년경) 시대에 만들어진 두 수의 최대 공약수를 구하는 유클리드 (Euclid) 알고리즘을 들 수 있다. 다시 말해서 알고리즘은 유한한 단계를 통해 문제를 해결하기 위한 절차나 방 법을 말하는데 원래는 인도에서 아랍를 거쳐 유럽에 보급된 필산( ) 을 뜻하 며, 알고리즘은 수학용어와 컴퓨터 용어 두 가지로 나누어 설명할 수 있다. 수학용어로서 알고리즘은 잘 정의되고 명백한 규칙들의 집합 또는 유한 번의 단 계 내에서 문제를 풀기 위한 과정이다. 예를 들면, 주어진 정확도에 맞도록 x의 코사인 값을 계산하기 위한 대수적인 과정도 알고리즘에 해당된다. 경험적 지식 (heuristic) 과 반대되는 용어이다. 컴퓨터용어로서 알고리즘은 어떤 문제의 해결을 위해 컴퓨터가 사용 가능한 정확한 방법을 말한다. 알고리즘은 여러 단계의 유한한 집합으로 구성되는데, 여 기서 각 단계는 하나 또는 그 이상의 연산을 필요로 한다. 이 때 컴퓨터가 각 연 산들을 수행하기 위해서는 다음의 조건을 만족해야 한다. 1 명확성: 각 연산들은 명확한 의미를 가져야 한다. 2 효율성: 각 연산은 원칙적으로 일정한 시간 내에 사람이 연필로 할 수 있어야 한다. 3 입력: 외부 입력자료가 있을 수 있다. 4 출 - 58 -
알고리즘 이해하기 력: 하나 이상의 결과가 나온다. 5 종결성: 유한 번의 연산 후에는 끝나야 한다. 300 원짜리 커피를 파는 자동판매기의 내부에도 간단한 알고리즘이 있어서, 적 합한 금액이 들어오면 프림/ 설탕의 선택에 따라 따끈한 커피를 내놓고 거스름 돈 도 정산하여 준다. 높은 아파트에 사는 사람이 출근하려고 엘리베이터 단추를 누르면, 엘리베이터를 작동시키는 알고리즘은 다른 층에 사는 사람이 부르는 지 등을 판정하여 적절한 움직임을 한다. 그러나 알고리즘이 부실하게 짜여있으면, 자동판매기가 이상하게 행동하고, 엘리베이터가 고장이 난다. 수학자들이 사용하 는 좁은 의미의 알고리즘에 대한 정의는 1930 년대에 튜링, 괴델, 처치등에 의하 여 확립되었다. 수학자들은 어떠한 알고리즘이 간단하고, 어떠한 알고리즘이 복 잡한가를 이해하기 시작하였다. 그들은 컴퓨터 과학을 탄생시켰으며, 많은 자료 에서 원하는 자료를 순식간에 찾아주는 프로그램을 개발하여, 방대한 자료의 인 터넷 써치가 가능하도록 하였다. 가장 기본적인 형태의 알고리즘은 체계적 탐색 (systematic search) 으로, 이것은 모든 가능한 해결 대안들을 포함하고 있으며 체계적으로 차례차례 그것들을 검 토해 나간다. 알고리즘은 항상 해법에 도달하도록 해 주지만 불행하게도 어떤 문 제들은 ( 체계적인 탐색처럼) 단지 비효율적인 알고리즘만 있게 되며 커다란 문제 에 있어서 이러한 접근은 컴퓨터조차 가혹한 것이 된다. 예를들면 순회외판원 문 제 (Traveling Salesman Problem), 체스 (Chess) 에서처럼 알고리즘은 극도의 비효율성을 보여주어 사실상 해결이 불가능해진다. 알고리즘과는 달리 휴리스틱 (Heuristic) 은 해결책의 발견을 보장하지 않는다. 그러나 heuristic은 알고리즘보 다 효율적이다. 왜냐하면 많은 쓸모없는 대안책들을 실제 시도하지 않고도 배제 시킬 수 있기 때문이다. 훌륭한 알고리즘 중에는 문제를 해결하는 방법과 고속화의 테크닉에 있어서 공통점을 가진 알고리즘이 많이 있다. 예를들면 퀵 정렬과 합병 정렬은 정렬 대 상이 되는 데이터가 들어 있는 배열을 두 개로 나눠서 두 배열을 각각 정렬한 후, 그들 두 배열을 연결한다는 점에서 공통점을 갖고 있다. 이러한 기본적인 테 크닉을 알고리즘의 설계 기법이라고 부른다. 프로그래머는 해결해야 할 새로운 문제에 접했을 때 기존의 알고리즘 설계 기법을 응용할 수 있는지 어떤지를 생 각하는 것은 새로운 알고리즘 개발에 필요한 시간과 경비를 줄일 수 있다는 점 에서 매우 중요하다. 간단한 계산 혹은 논리 연산을 하는 튜링 기계가 만들어질 수 있다는 것이 완 전히 이해가 된다면 이들을 알고리즘을 수행하는 복잡한 기계를 만드는 데 어떻 - 59 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 게 이용할 수 있는가 하는 것도 쉽게 이해가 될 것이다. 그러한 것을 얼마 동안 실제로 연습해 본 사람이면 이러한 종류의 기계는 어떠한 기계적 작업 (mechanical operation) 이라도 수행할 수 있도록 만들 수 있다는 사실을 쉽게 확인할 수 있을 것이다. 수학적으로 말할 때, ' 기계적 작업' 이라는 것을 이러한 기계가 수행할 수 있는 작업으로 정의하는 것이 타당성을 갖게 되었다. 이러한 형태의 이론적 기계, 즉 튜링 기계에 의해서 수행될 수 있는 기계적 작업을 수학 자들은 ' 알고리즘' 이라는 명사와 ' 계산 가능 (computable),' ' 재귀적 (recursive),' 혹은 ' 효과적 (effective)' 이라는 형용사를 사용하여 표현하고 있다. 어떤 계산 과정이 충분히 명료하고 기계적이라면 이를 수행할 수 있는 튜링 기 계도 꼭 찾아낼 수 있다는 가정이 설득력을 갖게 된 것이다. 이것이 바로 튜링 기계 (Turing Machine) 개념의 동기를 이해하는 데 가장 중요한 포인트이다. < 출처 : 참고문헌 1 > - 60 -
알고리즘 이해하기 1. 참고문헌 1 참고자료 박정호(2005), 알고리즘, 상조사 2. 인터넷 사이트 1 http://www.ygreen.org - 61 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 정보과학-1주 발전 단원 1 활동지 1-1(1) 교육청 영재교육원/ 영재학급 중학교 이름 일상생활에서 우리는 다양한 문제 상황을 접하게 됩니다. 알고리즘은 우리가 어떤 문제를 해결할 때 해결 절차를 알기 쉽도록 기술하는 논리적인 절차 과 정을 의미합니다. 아래에 있는 그림은 일상생활에서 찾아볼 수 있는 소고기 덮밥 요리에 대한 요리방법을 기술한 알고리즘의 예입니다. [ 그림] 생활 속 알고리즘의 예( 요리 방법) < 출처 : 인터넷 사이트 1 > 1. 위 그림과 같이 일상생활에서 찾아볼 수 있는 다양한 알고리즘의 예를 찾아 정리해봅시다. 2. 여러분이 찾은 일상생활 속의 알고리즘을 어떻게 표현할 수 있는지 정리해봅시다. - 62 -
알고리즘 이해하기 정보과학-1주 발전 단원 1 활동지 1-2(1) 교육청 영재교육원/ 영재학급 중학교 이름 알고리즘의 개념 및 특징과 표현방법 등을 조사하여 정리해봅시다. - 63 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 2 주 주제 알고리즘 이야기 본 활동은 알고리즘 이해하기 단원의 첫 시간으로서 알고리즘의 어원 및 개 념과 정의를 예를 들어 학습하게 된다. 또한 알고리즘의 특징 및 표현방법에 대 해 학습한다. 일반적으로 알고리즘의 표현방법은 자연어 기술방법, 순서도 표현 방법, 의사코드 기술 방법, 프로그래밍 언어 표현방법의 네 가지로 구분할 수 있 다. 알고리즘 이해하기 단원은 실생활에서 겪을 수 있는 다양한 알고리즘을 통 하여 알고리즘의 특징과 표현방법에 대해 학습하게 되며, 이를 다양한 방법으로 표현 할 수 있도록 한다. 교육 목표 1. 2. 3. 5. 정보과학 분야 사고력 신장 정보과학 분야 적성 강화 정보과학 분야 특정지식 습득 정보과학 분야 일반능력 신장 교육 내용 1-2. 2-1. 3-1. 5-1. 5-2. 논리전개 및 추론능력 정보과학에 대한 호기심 알고리즘 설계 자율적 탐구 및 학습능력 상호작용과 의사소통능력 세부 교육 내용 학습자가 준비한 알고리즘의 개념 및 특징 에 대해 발표를 실시한다. - 64 -
알고리즘 이해하기 발표한 내용에 대해 토론한다. 알고리즘의 정의와 개념에 대해 학습한다. 알고리즘의 특징에 대해 학습한다. 알고리즘의 표현방법에 대해 학습한다. 알고리즘 표현 방법을 팀별로 연구한다. 교육방법 발표와 토론, 강의, 주제별 연구 프로젝트 < 교육목표 - 교육내용 - 세부교육내용 - 교육방법의 유기적 연관성 > 교육목표 교육내용 세부교육내용 교육방법 1.정보과학 분야 사고력 신장 2.정보과학 분야 적성 강화 3.정보과학 분야 특정지식 습득 5.정보과학 분야 일반능력 신장 1-2. 논리전개 및 추론 능력 알고리즘의 개념 및 특징에 대하 여 발표한다. 발표와 토론 2-1. 정보과학에 발표한 내용에 대해 토론한다. 대한 호기심 알고리즘의 정의와 개념에 대하여 학습한다. 3-2. 알고리즘 알고리즘의 특징에 대하여 학습한 강의 설계 다. 알고리즘의 표현방법에 대하여 학습한다. 5-1. 자율적탐구 발표한 내용에 대해 토론한다. 발표와 토론, 와 학습 능력 알고리즘 표현 방법을 팀별로 주제별 연구 5-2. 상호작용과 연구한다. 프로젝트 의사소통능력 준비물 교사용 학생용 관련 시청각 자료, 인터넷 검색용 PC 학생용 활동지 필기도구 사진 - 65 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 교수학습 활동 학습 단계 교수학습 활동 시간 ( 총 90 분 ) 지도초점 및 유의점 도입 활동 이번 차시의 세부교육내용을 소 개한다. 5 본 활동 정리 활동 학습자가 준비한 발표 내용에 대하여 간단한 질문 과정을 통 해 준비 정도를 파악한다. 시간이 부족할 경우 알고리즘 의 개념 및 특징 과 알고리즘의 표현 방법 에 대하여 발표할 학 습자를 선정한다. 발표자의 내용 중에서 토론이 가능한 내용을 선정하여 토론을 진행한다. 토론 내용을 종합 정리한다. 알고리즘의 개념 및 특성과 표 현방법에 대해 강의를 진행한 다. 본 시간에 배운 내용 정리 다음 주 교육 내용과 준비 사항 을 안내한다. 5 5 20 5 20 학생 스스로가 진행할 수 있도록 도우면서, 모든 학 생들이 참여할 수 있도록 지도한다. 알고리즘의 이해를 도우면 서 일상생활 속에 다양한 알고리즘이 활용되고 있음 을 설명한다. 20 10 학생 스스로가 순서도를 이 용한 알고리즘 작성 을 진행 할 수 있도록 이해를 도우 면서, 모든 학생들이 참여할 수 있도록 지도한다. 주요 초점 질문 1. 알고리즘이란 무엇일까? 2. 알고리즘의 특성은 무엇일까? 3. 알고리즘은 어떻게 표현할 수 있는가? - 66 -
알고리즘 이해하기 지도활동 도입 활동 1. 이번 차시의 세부 교육 내용을 소개합니다. 학습자가 준비한 발표한 내용에 대해 토론한다. 알고리즘의 개념 및 특징 에 대해 발표를 실시한다. 알고리즘의 정의와 개념에 대해 학습한다. 알고리즘의 특징에 대해 학습한다. 알고리즘의 표현방법에 대해 학습한다. 본 활동 1. 알고리즘 개념 및 특징과 표현방법에 대해서 발표하고 토론해봅시다. 활동지 1-2(1) 사용 2. 발표 및 토론 내용을 종합하여 정리하면서 학생 스스로 결과를 정리할 수 있도록 지도합니다. 1) 발표자와 자신의 활동지 내용을 비교하여 장단점을 분석해봅시다. 2) 자신의 활동지를 스스로 평가해봅시다. 3. 강의 내용 1) 알고리즘의 어원에 대해 강의합니다. 필수정보 1. 알고리즘의 어원 참조 2) 알고리즘의 개념에 대해 강의합니다. 필수정보 2. 알고리즘이란 참조 3) 알고리즘의 특성에 대해 강의합니다. 필수정보 3.1 알고리즘의 특성 참조 4) 알고리즘의 표현 방법에 대해 강의합니다. 필수정보 3.2 알고리즘 표현 방법 참조 - 67 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 정리 활동 1. 학습 내용 정리 1) 알고리즘 표현 방법의 장단점을 정리해봅시다. 활동지 2-1(1) 사용 2) 자신이 선호하는 알고리즘 표현 방법을 선정하고 이유를 팀별로 정리해 봅시다. 활동지 2-1(2) 사용 3) 여러분이 찾은 일상생활의 알고리즘을 봅시다. 활동지 2-1(3) 사용 알고리즘의 표현 방법으로 표현해 2. 다음 주 교육 내용 안내 1) 알고리즘 표현 방법 중에서 순서도를 사용하여 알고리즘을 설계하고 표 현했을 때의 장단점을 정리해봅시다. 활동지 2-2(1) 사용 2) 우리 일상생활에서 찾아볼 수 있는 알고리즘의 예를 순서도를 사용하여 표현하는 방법에 대해 정리해봅시다. 활동지 2-2(2) 사용 - 68 -
알고리즘 이해하기 평가 평가 내용 알고리즘의 개념 및 특징을 발표함으로써 논리전개 및 추론능력과 정보과 학에 대한 호기심을 갖게 되었는지 평가한다. 자료구조의 개념, 필요성, 종류와 특징, 선택 기준과 분류법을 통해 알고리 즘 설계 방법을 학습하였는지 평가한다. 학습자가 미리 준비한 활동지와 본차시에 작성한 활동지, 학습자의 발표 내 용, 토론 참여도 등을 종합적으로 평가하여, 논리전개 및 추론능력, 자율적 탐구와 학습능력, 상호작용과 의사소통능력이 신장되었는지를 평가한다. 평가 방법 발표 및 토론 평가 : 도입활동 1 번, 본활동 2번 활동시 평가 그룹 프로젝트 산출물 평가 : 정리활동 1번 2) 활동시 평가 평가도구 1/1 평가 기준 사용 알고리즘의 개념을 정확히 이해하였는가? 알고리즘의 개념과 특징을 체계적으로 정리하였는가? 독창적인 방법으로 알고리즘을 설명하였는가? 평가 유의점 토론 시 학생들이 적극적으로 참여하도록 지도한다. - 69 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 필수정보 1. 알고리즘의 어원 9 세기( 서기 780-850) 페르시아에 Abu Ja'far Mohammed ibn Musa al Khowarizimi ( 아부 자파 모하메드 이븐 무사 알 콰리지미) 라는 긴 이름을 가진 사람이 있었다. 그런데 끝 부분의 al Khowarizimi 는 from the town of Khowarazm 즉, 콰라즘이라는 마을에서 온 이라는 뜻이다. 그렇다면 콰라즘에 서 온 아부 자파 모하메드 이븐 무사 이렇게 생각해야할 것 같다. 이 사람은 인 도, 그리스등의 많은 지식을 집대성하였고 그 중에서 인도의 숫자와 숫자 계산 방법 즉, 산수를 아라비아에 가서 가르쳤다. 그리고 그것이 유럽으로 전해졌다. 따라서 유럽에서는 오늘날 우리가 쓰는 숫자를 아라비아 수 또는 콰라즘에서 온 사람이 가르쳐 준 수( 알 콰라즘, al khowarazm) 라고 부르게 되었다. 여기서 알 콰라즘 이 변하여 알고리듬(algorithm) 이 된 것은 쉽게 짐작할 수 있다. 인 류 문명을 이렇게 발전시킨 놀라운 오늘날의 숫자! 인도는 그것을 발명하고도 어 려운 시( ) 로써 전하다가 소멸되어 다시 배우게 되고, 이름도 인도 수 가 아닌 아라비아 수 로 둔갑하는 수모를 당하고, 숫자를 전했을 따름인 어떤 사람은 알 고리듬 으로 그 이름을 영원히 남기고 있다. 콰라즘(Khowarazm) 이라는 마을은 지금의 우즈베키스탄(Uzbekistan) 에 있는 키바(Khiva) 로 알려져 있다. 2. 알고리즘이란? 일상생활에서 우리는 다양한 문제 상황을 접하게 된다. 알고리즘은 우리가 어 떤 문제를 해결할 때 해결 절차를 알기 쉽도록 기술하는 논리적인 절차 과정을 의미한다. 간단히 말해 알고리즘이란 어떤 일을 하기 위한 방법 및 절차를 말한 다. 효율적인 일처리를 위해서 어떻게 하면 좋을까? 라는 문제에 대한 해답은 여 러 가지가 있을 것이다. 어떤 일은 최상의 방법이 한 가지일 수도 있고, 또 어떤 일은 최상의 방법은 없지만 취향에 따라 여러 좋은 방법 중 하나를 선택할 수도 있을 것이다. 따라서 알고리즘이란 말은 정보과학 분야 중 컴퓨터 프로그램을 작 성할 때 많이 나온다. 예를 들면 1부터 100 까지 더하는 프로그램을 작성하는데 대한 알고리즘, 100 명의 수학 점수가 있을 때 이를 높은 점수부터 정렬하는 알고리즘, 두 자연수에 대한 최대공약수를 찾는 알고리즘 등이 있을 것이다. 다른 모든 조건이 같을 경 우, 알고리즘을 어떻게 작성했는가의 차이에서 오는 결과의 차이는 엄청날 수 있 다. 만약 서울에서 부산까지 자동차로 간다고 가정을 해보자. 출발할 때 운전자 - 70 -
알고리즘 이해하기 가 어떤 길을 선택했느냐에 따라서 도착시간이 달라질 것이다. 길을 잘못 선택하 면 전라도로 갔다가 다시 경상도로 올 수도 있을 것이며 강원도를 통해서 해안 을 따라서 올 수도 있을 것이다. 그러나 효율적으로 길을 선택했다면 가장 빠른 시간에 도착할 수 있을 것이다. 이와 같이 알고리즘이라는 것은 일을 처리할 때 혹은 문제를 해결할 때 어떤 방법으로 또 어떤 순서에 의해 행할 것인가 하는 방법론적인 문제이다. 컴퓨터는 순전히 사람의 지시( 프로그램) 에 의해서만 일을 하기 때문에 어떤 알고리즘을 사용하는가는 매우 중요한 문제이다. 사람은 기계가 아니며, 기계처 럼 살고 싶은 사람은 없을 것이다. 그러나 우리의 수명은 한계가 있기 때문에 남 들이 두 시간에 할 일을 한 시간에 제대로 끝낼 수 있다면 매우 기쁜 일일 것이 다. 행동이나 사고에 있어서 누구나 나름대로의 철학과 생활방식이 있기 마련인 데 도덕적 생활, 수학적 사고방식, 알고리즘적 사고방식이 그러한 예일 것이다. 따라서 생활속에서 발견할 수 있는 알고리즘을 통해 목적에 맞는 알고리즘을 효 율적으로 작성하는 것은 문제해결력을 향상시키고 창의적인 생각을 갖게 한다. 다음의 예를 살펴보도록 하자. 우리가 여러 가지 요리를 맛있게 먹기 위해서는 각 음식에 알맞은 요리방법 이 필요하다. [ 그림 2-1] 은 일상생활에서 찾아볼 수 있는 샌드위치 를 만드는 요 리방법을 기술한 알고리즘의 예이다. 모두 이와 같은 방법으로 만들지는 않을 것 이다. 더 맛있게 만드는 방법이 존재할 것이고 그 방법을 찾아서 표현하는 것이 알고리즘이다. [ 그림 2-1] 생활 속 알고리즘의 예 ( 샌드위치 요리 방법) < 출처 : 인터넷 사이트 3 > - 71 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 3. 알고리즘의 특성 및 표현 3.1 알고리즘 특성 일반적으로 알고리즘은 다음 조건들을 만족해야 한다. (1) 입력(Input) 자료가 외부에서 제공될 수 있다. (2) 출력(Output) 적어도 하나 이상의 결과를 내야 한다. (3) 명확성(Definiteness) 각 명령어들은 명확하고 모호하지 않아야 한다. (4) 유한성(Finiteness) 알고리즘의 명령어대로 수행했을 때 유한번의 수행 후에 마쳐야 한다. (5) 효과성(Effectiveness) 모든 명령어들은 원칙적으로 종이와 연필만으로 수행될 수 있는 기본적인 것이어야 한다. 이것은 각 수행이 명확하기만 한 것이 아니라 실행이 가능 해야 한다는 의미이다. 우리는 일상생활에서도 알고리즘을 많이 사용하고 있다. 두수 a와 b의 곱을 구하는 경우를 생각해 보자. 해답을 구하는 방법은 두 가지 경우가 가능하다. 첫 째는 a와 b 를 곱하기 연산을 통해서 그 해답을 바로 구하는 것이고, 둘째는 a를 b 번 더해서 그 답을 구하는 것이다. 물론 곱하기 연산 자체가 더하기 연산의 반 복적인 것으로 정의가 가능하기 때문에 위와 같은 두 가지 경우를 고려할 수 있 는 것이다. 우리가 여기서 생각해 볼 수 있는 것은 어떤 문제가 주어졌을 때 어 떠한 방법으로 해결하면 더 효율적이냐는 것이다. 이때 좀 더 효율적인 방법을 찾는 것이 알고리즘을 사용하는 이유가 된다. 3.2 알고리즘 표현 방법 이러한 조건을 만족하는 알고리즘을 표현하는 방법은 여러 가지가 있을 수 있다. 즉, 알고리즘은 다음의 방법들( 예, 자연어 기술 방법, 순서도 표현 방법, 의 사 코드 기술 방법, 프로그래밍 언어 표현 방법) 로 기술되거나 표현될 수 있다. 이 방법들을 하나씩 살펴보도록 하자. (1) 자연어 기술 방법 우리가 일상적으로 사용하는 말이나 글을 이용하는 방법이다. 자연어 기술 방 법은 말과 글이 지니는 애매모호한 성질 때문에 알고리즘의 조건 중 명확성을 - 72 -
알고리즘 이해하기 지키지 못할 가능성이 있다. 다음 예는 두 변수의 값을 더해서 그 결과를 출력하 는 알고리즘을 자연어 기술 방법으로 표현한 것이다. 알고리즘 기술 시작 정수값 5를 A 변수에 대입한다. 정수값 4를 B 변수에 대입한다. A 변수의 값과 B 변수의 값을 더해서 C 변수에 대입한다. C 변수의 값을 출력한다. 알고리즘 기술 끝 [ 그림 2-2] 자연어 기술 예 (2) 순서도 표현 방법 순서도(Flowchart) 나 NS(Nassi-Shneiderman) 차트와 같은 그래픽적인 표현 방법이다. 예를 들어, 순서도를 이용한 방법은 각 수행과정을 박스에 넣고, 다음 단계를 화살표로 표시한다. 모양이 다른 박스는 서로 다른 동작을 나타낸다. 순 서도 표현 방법은 복잡하고 대규모의 알고리즘을 표현하기 곤란하다는 문제점이 있으나, 판독과 표현이 용이한 장점이 있다. [ 그림 2-3] 은 자연어로 표현한 내용 을 순서도로 표현한 것이다. 시 작 A 5 B 4 C A + B C 끝 [ 그림 2-3] 순서도 표현 예 - 73 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) (3) 의사코드 기술 방법 [ 그림 2-4] 의사코드 사용 < 출처 : 인터넷 사이트 5 > 자연어 기술 방법과 그래픽적인 표현 방법을 쓰는 것보다 좀더 개선된 방법 으로, 의사코드(pseudo code) 기술 방법이 있다. 의사코드는 특정한 프로그래밍 언어의 특성이나 문법적 제약을 고려하지 않고 쉽게 프로그램의 기능과 순서를 표현한다. 즉, 자유롭고 알기 쉬운 표현이 가능하기 때문에 특정한 프로그램의 지식이 필요하지 않다. 또한 의사 코드는 자연어 기술 방법을 보다 간략화한 것 으로서 프로그래밍 언어의 문법을 적용하여 쉽게 프로그래밍할 수 있다는 장점 이 있으며, 언어 독립적인 특징과 기계 독립적인 특징이 있다. 다음 [ 그림 2-5] 는 위에서 자연어로 표현한 내용을 의사코드로 표현한 예이다. program ADDING A 5 B 4 C A+B print (C) end ADDING [ 그림 2-5] 의사코드 표현 예 - 74 -
알고리즘 이해하기 (4) 프로그래밍 언어 표현 방법 [ 그림 2-6] 프로그래밍 언어 사용 < 출처 : 인터넷 사이트 5 > C와 Pascal과 같은 프로그래밍 언어를 적용하여 알고리즘을 기술하는 방법이 다. 프로그래밍 언어 표현 방법은 알고리즘을 작성하는 동작과 프로그래밍하는 동작이 일치하므로 프로그래밍 작업이 용이하다는 장점이 있지만, 언어 독립적 알고리즘 기술이 곤란하다는 문제점이 있다. 즉, 특정 프로그래밍 언어에 맞게 알고리즘을 기술하면 해당 언어가 지원하지 못하는 자료 구조 형태나 알고리즘 을 적절히 표현하지 못한다는 문제점과 다른 프로그래밍 언어로 변환하기 곤란 하다는 문제점이 발생할 수 있다. 또한 어떤 프로그래밍 언어는 특정 알고리즘 기법을 이미 갖추고 있으므로 프로그램을 작성하고자 할 때 자연적으로 기존 기 법을 사용하고 의존하게 된다. 다음 [ 그림 2-7] 은 앞의 의사코드 예제를 C 프로 그래밍 언어로 작성한 예제이다. main() { int A, B, C; A = 5; B = 4; C = A + B; printf("%d\ n", C); } [ 그림 2-7] C 프로그래밍 언어 표현 예 - 75 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 읽기자료 [ 프로그래머가 느끼는 성취감의 본질 ] 출처 : 행복한 프로그래밍 - 임백준 저 프로그래머들이 느끼는 성취감의 본질은 어려운 문제를 해결하는 순간에 머리끝 에서 가슴으로 흐르는 짜릿한 황홀감에 있다. 의지가 부족한 사람들은 자신의 삶 속에서 찾기 어려운 황홀감을 강제로 맛보기 위해서몸에해로운약을이용하기도하 지만프로그래머들은약이필요없다. 문제가 주어지면 고민하고, 쉽게 해결되지 않 으면 커피라도 한 잔 마시면서 밤늦도록 또 고민하고, 그러다가 마침내 문제를 해결하게 되면 온몸을 휘감는 절정의 쾌감이 찾아오기 때문이다. 따지고 보면 약 과 마찬가지로 이 쾌감에도 중독성이 있다. 하지만 이 쾌감은 몸에 해롭지 않다. 무엇보다도 이러한 쾌감에 중독된 사람을 처벌하는 법은 세상 어디에도 없다. 이 러한 쾌감을 조금이나마 이해할 수 있는 방법으로는 어려운 문제를 직접 풀어보 는 방법이 최선일 것이다. 프로그래밍을 모르는 독자라면 한번쯤 자신이 프로그 래머가 되었다고 생각하고 문제를 풀어 보는 것도 괜찮을 것이다. 그래서 직접 쾌감을 느낄 수만 있다면 더 바랄 나위가 없을 것이다. 이제 용이 지키고 있는 성안에 아름다운 공주가 갇혀있고 여러분은 그 공주를 구하기 위해서 성으로 돌진한 기사라고 가정하자. 성의 입구를 지키고 있는 돌문 을 열려면 문을 지키고 있는 용이 낸 문제를 1 분 안에 맞춰야 한다. 징그러운 쥐 가 공주의 치마 위로 올라가고 있다. 상황은 매우 급하다. 문제는 다음과 같다. 똑같이 생긴 당구공 일곱 개가 있다. 여섯 개는 무게가 같은데, 하나는 무게가 적게 나간다. 당구공을 얼마든지 올릴 수 있는 커다란 접시를 양쪽에 달고 있는 양팔 저울이 있다. 이 저울을 이용해서 무게가 적게 나가는 당구공을 찾아내야 한다. 단, 저울을 가장 적게 사용해야 한다. 저울을 몇 번 이용해야 하는가? 답을 바로 읽지 말고, 1 분 동안 생각해 보기 바란다. 생각을 해봤다면 틀린 답을 하나씩 살펴보도록 하자. 우선 가장 쉽게 떠오르는 방법으로는 양쪽 저울에 당구 공을 하나씩 차례대로 올려서 무게를 비교해 나가는 방법이 있을 것이다. 예를 들어서 당구공에 1번부터 7 번까지의 번호를 매긴다고 했을 때, 1번과 2번을 비교 하고, 3번과 4 번을 비교하고, 5번과 6 번을 비교하고 ( 그러고도 무게가 적게 나가 는 것이 발견되지 않았다면) 다시 1번과 7 번을 비교하는 방법이 그것이다. 이 방 법을 이용하면 운이 좋다면 무게가 적게 나가는 당구공을 단 한 번에 찾을 수도 있지만, 운이 나쁘다면 ( 즉, 무게가 적게 나가는 당구공이 7 번이었다면) 최대 네 - 76 -
알고리즘 이해하기 번 까지 이용해야 한다. 이렇게 생각한 사람은 답을 네 번이라고 말했을 것이다. 물론 틀린 답이다. 생각을 조금 더 깊게한 사람은 1번과 2 번, 3번과 4 번, 그리고 5번과 6번을 비교했는데도 아직 무게가 적게 나가는 것이 발견되지 않았다면 당 연히 남아 있는 7번이 무게가 가장 적게 나가는 것이라는 사실을 깨달았을 것이 다. 그렇다면 이 방법에서는 저울을 최대 세 번까지만 이용하면 답을 구할 수 있 다. 이렇게 생각한 사람은 답을 세 번이라고 말했을 것이다. 이것도 물론 틀린 답이다. 어쩔 줄 몰라하는 공주를 고려해서 답부터 밝히자면, 답은 두 번이다. 즉, 저울을 최소한 두 번만 이용하면 항상 무게가 적게나가는 당구공을 구할 수 있다. 이렇게 하려면 우선 저울의 오른쪽 접시 위에는1, 2, 3번 당구공을 올려 넣 고, 왼쪽 접시 위에는4, 5, 6 번 당구공을 올린다. 만약, 저울이 평형을 이룬다면 무게가 적게 나가는 당구공은 당연히 7 번이므로, 한번에 답을 맞춘 셈이 된다. 그렇지만 무게가 어느 한쪽으로 기운다면, 예를 들어서4, 5, 6번 당구공 쪽이 더 가볍다면, 무게가 적게 나가는 당구공은 4, 5, 6 번 당구공 안에 존재하게 된다. 그렇다면 이제 오른쪽 접시 위에는4 번 당구공을, 왼쪽 접시 위에는5번 당구공을 올려놓고 무게를 비교한다( 저울을 두 번째 이용한 것이다). 만약 어느 한 쪽의 무게가 적게 나간다면 그것이 바로 무게가 적게 나가는 당구공이 되는 것이고, 만약 그렇지 않고 평형을 이룬다면 나머지 당구공인 6번이 무게가 적게 나가는 것이 되는 것이다. 결국, 저울을 최대 두 번만 이용하면 무게가 적게 나가는 당 구공을 항상 찾아낼 수 있는 것이다. 이러한 답을 스스로 찾아낸 사람은 아름다 운 공식을 발견했을 때 프로그래머가 느끼게 되는 쾌감을 맛볼 수 있었을 것이 다. 문제는 바로 이 쾌감이다. 프로그래머들은 종종 이 쾌감에 취한 나머지 성안 에 갇혀 있는 공주의 존재를 까맣게 잊어버리고 용에게 다른 문제를 하나 내보라고 도전장을 던지곤 하는 것이다. 기사가 답을 맞히자 용도 승부근성이 발동했다. 그리하여 이번에는 좀더 어려운 문제를 냈다. 더 갑, 을, 병, 정이라는 사내 네 명이 밤에 다리를 건너려고 한다. 다리는 한번에 두 사람까지만 건널 수 있다. 손전등이 있어야만 다리를 건널 수 있는데, 손전등 은 하나다. 따라서 두 사람이 다리를 건넜으면 반드시 한사람이 손전등을 들고 되돌아와야만 다른 사람이 다리를 건널 수 있다. 갑이 다리를 건너는 데에는 1분 이 걸리고, 을은2 분, 병은5분 그리고 정은 10 분이 걸린다. 두 사람이 다리를 건널 때에는 느린 사람, 즉 시간이 더 많이 걸리는 사람에게 맞춰서 건너가야 한다. 예를 들어서 을과 정이 다리를 건널 때 걸리는 시간은2분이 아니라 10 분이다. 자, 사내 네명이 모두 다리를 건너가는데 걸리는 가장 짧은 시간은 몇 분인가? - 77 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 기사는 움찔했다. 이번 문제는 앞의 당구공 문제보다 어렵게 느껴졌기 때문이다. 쥐는 얼굴이 하얗게 질린 공주의 배 위에 드러누워서 치즈조각을 핥아먹고 있다. 하지만 기사는 공주를 구출해야 한다는 사명감을 잊어버린 지 오래다. 그는 용이 낸 문제를 맞추기 위해서 정신을 최대한 집중시키고 있을 뿐이다. 여러분도 곧바 로 답을 읽지말고 연필과 종이를 이용해서 답을 맞춰 보기 바란다. 이것은 단순 한 수수께끼가 아니라 주어진 문제를 해결하기위한 최적의 알고리즘을 찾는 문 제다. 우선 누구나 쉽게 떠올리는 답부터 생각해보자. 아마 대부분의 사람들이 19분을 답으로 생각했을 것이다(19 분보다 빠른 답을 한번에 찾았다면 당신은 천재다). 그 이유는 가장 빠른 갑이 손전등을 들고 왔다 갔다하는 것이 제일 효율적이라 는 생각이 먼저 떠오르기 때문이다. 이와같은 직감에 의해서 19분을 답으로 생각 한 사람들이 작성한 알고리즘은 다음과 같았을 것이다. 우선 갑과 을이 다리를 건너고 다시 갑이 손전등을 가지고 되돌아오는 데 2+1, 즉 3 분이 걸린다. 그 다 음 갑이 병을 데리고 다리를 건넌 다음 손전등을 가지고 돌아오는데 5+1, 즉 6분 이 걸린다. 그다음 마지막으로 갑이 정을 데리고 다리를 건너는 데 10분이 걸리 므로, 전체 합은3+6+10, 즉19 분이 걸리게 되는 것이다. 정답은 아니지만 좋은시도 다. 여기까지 생각한 사람은 조금만 더생각해 보기 바란다. 답부터 말하자면 가 장 빠른 방법은 17 분이 걸린다. 방법은 이렇다. 우선갑과 을이 다리를 건넌다음, 갑이나 을 둘 중에서 아무나한 사람이 되돌아온다. 누가 돌아오든지 상관은 없지 만, 우리는 을이 되돌아온다고 하자. 이때 걸리는 시간은2+2, 즉 4 분이다. 그다음 에는 을이 손전등을 병과 정에게 넘겨주고, 병과 정이 함께 다리를 건넌다. 그리 고 병과 정은 다리 반대편에 남아 있고 그 쪽에서 기다리고 있던 ( 제일빠른) 갑 이 손전등을 들고 되돌아온다. 이때 걸리는 시간은 10+1, 즉 11 분이다. 그 다음에 는 이 쪽에 남아 있던 을과 갑이 함께 다리를 건넌다. 이때 걸리는 시간은 2분이 다. 따라서 전체 시간은4+11+2, 즉 17 분이 걸리는 것이다. 용이 낸 문제의 공통점은 모두 주어진 문제점을 해결하기 위한 알고리즘을 찾는 것이다. 하지만 프로그래머가 수학적 알고리즘을 발견했을 때 느끼는 성취감은 아직 소프트웨어를 최종적으로 완성했을때 느끼게 되는 성취감의 절정에는 미치 지 못한다. 수학적 알고리즘 이라는 무형 무취의 논리는 이진수로 구성된 비트의 법칙을 통해서 사람들이 보고 만질 수 있는 소프트웨어라는 모습으로 육화( ) 될 때에 비로소 완성되기 때문이다. 프로그래머의 작업은 그래서 추상적인 알고리즘을 찾는 것으로 그치지 않는다. 프로그래머의 작업은 무게도 없고 냄새도 없는 알고리즘이라는 추상적인 논리체 계위에 살을 붙이고 옷을 입혀서 누구나 보고 만질 수 있는 소프트웨어로 만들 어 나가는 과정을 포함한다. 비트라는 진흙 덩어리를 프로그래밍 언어라는 조각 - 78 -
알고리즘 이해하기 칼로 조금씩 떼어 내서 자신이 발견한 알고리즘을 표현하기 위한 작품으로 만들 어 나가는 것이다. 같은 알고리즘을 표현하는 경우라도 조각칼을 다루는 실력에 따라서 작품의 수준이 달라지는 것은 당연하다. 결국 주어진 문제를 해결하려고 절묘한 알고리즘을 찾아내는 과정이 프로그래머가 느끼는 즐거움의 반이라면 찾 아낸 알고리즘을 조각칼로 다듬어서 프로그램으로 만드는 과정이 나머지 반이다. < 출처 : 참고문헌 6 > - 79 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 1. 참고문헌 1 2 3 4 참고자료 정보교육학회 교재개발분과위원회(2004), 컴퓨터과 교수법 및 교재연구, 생능 출판사 정보교육학회 교재개발분과위원회(2004), 컴퓨터 교육론, 삼양미디어 박정호(2003), 컴퓨터 알고리즘, 상조사 Cormen Thomas H(2001), Introduction to Algorithms, 2/E, MIT 5 Horowitz Ellis, Sahni Sartaj, Anderson-Freed S(1992), Fundamentals of 6 Data Structures in C, Computer Science 임백준, 행복한 프로그래밍, 한빛미디어 2. 인터넷사이트 1 http://www.ygreen.org 2 http://www.dgedu.net 3 http://imagebingo.naver.com 4 http://mathman.pe.kr/ 5 http://blog.naver.com/sunofweb?redirect=log&logno=80001255277-80 -
알고리즘 이해하기 정보과학-2주 발전 단원 1 활동지 2-1(1) 교육청 영재교육원/ 영재학급 중학교 이름 알고리즘 표현 방법의 장단점을 정리해봅시다. - 81 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 정보과학-2주 발전 단원 1 활동지 2-1(2) 교육청 영재교육원/ 영재학급 중학교 이름 [ 팀별 연구 프로젝트 ] 자신이 선호하는 알고리즘 표현 방법을 선정하고 이유를 정리해봅시다 - 82 -
알고리즘 이해하기 정보과학-2주 발전 단원 1 활동지 2-1(3) 교육청 영재교육원/ 영재학급 중학교 이름 여러분이 찾은 일상생활의 알고리즘을 알고리즘의 표현 방법으로 표현해봅시 다. - 83 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 정보과학-2주 발전 단원 1 활동지 2-2(1) 교육청 영재교육원/ 영재학급 중학교 이름 알고리즘 표현 방법 중에서 순서도를 사용하여 알고리즘을 설계하고 표현했 을 때의 장단점을 정리해봅시다. - 84 -
알고리즘 이해하기 정보과학-2주 발전 단원 1 활동지 2-2(2) 교육청 영재교육원/ 영재학급 중학교 이름 우리 일상생활에서 찾아볼 수 있는 알고리즘의 예를 순서도를 사용하여 표현 하는 방법에 대해 정리해봅시다. - 85 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 정보과학-2주 발전 단원 1 평가도구(1/1) 교육청 영재교육원 중학교 이름 교사용 번호 측정요소 측정의 근거 1점 2점 3점 4점 5점 창의성 독창성 기존의 알려진 방법과는 확연히 구분 되는 형식, 이론, 주장 등이 존재하는 가? 자신만의 참신하고 독특한 아이디어를 제시하고 있는가? 논리성 전개과정과 문제해결에서 전후가 명확 하며, 원인과 결과 및 사용되는 이론 적 배경이 분명하다. 다양성 복수의 상이한 요소, 부분 또는 수준 들을 포함하고 있다. 가치성 주제나 내용이 명확한 이슈를 포함한 다. 기능적 솜씨 논리적으로 치밀하며, 도입 전개 결론 에 이르는 과정이 치밀하다. 유용성 발전 가능성 내용과 결과를 실제에 적용하여 사용 할만한 가치가 있다. 앞으로 새로운 산출물, 혹은 연구 결 과를 도출할 수 있는 아이디어를 포함 한다. - 86 -
알고리즘 이해하기 3 주 주제 순서도를 이용한 알고리즘 표현하기 본 활동은 알고리즘 이해하기 단원의 두 번째 시간으로서 알고리즘 표현방 법의 기본이 되는 순서도 표현방법에 대해 학습한다. 집을 지을 때 설계도를 먼 저 작성하듯이 알고리즘을 만들고 이를 표현하여 사용하기 위해서는 설계도와 같은 역할을 하는 순서도를 먼저 작성해야 한다. 즉 설계를 얼마나 잘하느냐는 알고리즘을 얼마나 잘 만드느냐 이며, 설계도를 얼마나 잘 그리느냐 하는 것은 순서도를 얼마나 잘 그리느냐는 것과 유사하다고 할 수 있다. 교육 목표 1. 2. 3. 5. 정보과학 분야 사고력 신장 정보과학 분야 적성 강화 정보과학 분야 특정지식 습득 정보과학 분야 일반능력신장 교육 내용 1-2. 2-1. 3-1. 5-2. 논리전개 및 추론능력 정보과학에 대한 호기심 알고리즘 설계 상호작용과 의사소통능력 세부 교육 내용 학습자가 준비한 발표한 내용에 대해 토론한다. 순서도 표현의 장단점 에 대해 발표를 실시한다. 순서도의 정의와 필요성에 대해 학습한다. - 87 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 순서도 역할에 대해 학습한다. 순서도의 종류 및 자주 쓰이는 기호에 대해 학습한다. 순서도의 기본 유형에 대해 학습한다. 교육방법 발표와 토론, 강의 < 교육목표 - 교육내용 - 세부교육내용 - 교육방법의 유기적 연관성 > 교육목표 교육내용 세부교육내용 교육방법 1.정보과학 분야 사고력 신장 2.정보과학 분야 적성 강화 1-2. 논리전개 및 2-1. 추론 능력 학습자가 준비한 순서도 표현의 정보과학에 대한 호기심 장단점 에 대해 발표를 실시한다. 발표한 내용에 대해 토론한다. 발표와 토론 3.정보과학 분야 특정지식 습득 3-1. 알고리즘 설계 순서도의 정의와 필요성에 대해 학습한다. 순서도의 역할에 대해 학습한다. 순서도의 종류 및 자주 쓰이는 강의 기호에 대해 학습한다. 순서도의 기본 유형에 대해 학습 한다. 5.정보과학 분야 일반능력 신장 5-2. 상호작용과 의사소통능력 발표한 내용에 대해 토론한다. 발표와 토론 준비물 교사용 학생용 관련 시청각 자료, 인터넷 검색용 PC 학생용 활동지 필기도구 사진 - 88 -
알고리즘 이해하기 교수학습 활동 학습 단계 교수학습 활동 시간 ( 총 90 분 ) 지도초점 및 유의점 도입 이번 차시의 세부교육내용을 소 5 활동 개한다. 학습자가 준비한 발표 내용에 대하여 간단한 질문 과정을 통 5 학생 스스로가 진행할 수 있도록 도우면서, 모든 학 해 준비 정도를 파악한다. 생들이 참여할 수 있도록 시간이 부족할 경우 순서도 표 현의 장단점 에 대하여 발표할 5 지도한다. 본 활동 학습자를 선정한다. 발표자의 내용 중에서 토론이 가능한 내용을 선정하여 토론을 20 순서도의 이해를 도우면서 진행한다. 토론 내용을 종합 정리한다. 순서도 를 이용한 알고리즘의 5 20 순서도를 이용하여 다양한 알고리즘을 작성할 수 있 음을 설명한다. 작성방법에 대한 강의를 진행한 다. 정리 본 시간에 배운 내용 정리 다음 주 교육 내용과 준비 사항 을 안내한다. 20 10 학생 스스로가 의사코드 를 이용한 알고리즘 표현 하기 를 진행할 수 있도록 활동 이해를 도우면서, 모든 학 생들이 참여할 수 있도록 지도한다. 주요 초점 질문 1. 순서도는 왜 필요할까? 2. 순서도는 어떤 역할을 하는가? 3. 순서도는 어떻게 나타내는가? - 89 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 지도활동 도입 활동 1. 이번 차시의 세부 교육 내용을 소개합니다. 학습자가 준비한 발표한 내용에 대해 토론한다. 순서도 표현의 장단점 에 대해 발표를 실시한다. 순서도의 정의와 필요성에 대해 학습한다. 순서도 역할에 대해 학습한다. 본 활동 1. 순서도를 이용한 알고리즘 표현방법에 대해서 발표하고 토론해봅시다. 활동지 2-2(1) 사용 2. 발표 및 토론 내용을 종합하여 정리하면서 학생 스스로 결과를 정리할 수 있도록 지도합니다. 1) 발표자와 자신의 활동지 내용을 비교하여 장단점을 분석해봅시다. 2) 자신의 활동지를 스스로 평가해봅시다. 3. 강의 내용 1) 순서도의 정의와 필요성에 대해 강의합니다. 필수정보 1. 순서도의 정의와 필요성 참조 2) 순서도의 역할에 대해 강의합니다. 필수정보 2. 순서도의 역할 참조 3) 순서도의 종류에 대해 강의합니다. 필수정보 3. 순서도의 종류 참조 4) 순서도의 기호에 대해 강의합니다. 필수정보 4. 자주 쓰이는 순서도 기호 참조 - 90 -
알고리즘 이해하기 5) 순서도의 기본 유형에 대해 강의합니다. 필수정보 5. 순서도의 기본 유형 참조 정리 활동 1. 학습 내용 정리 1) 순서도를 사용했을 때의 장단점을 정리해봅시다. 활동지 3-1(1) 사용 2) 일상생활의 알고리즘을 순서도의 기본유형에 맞추어 표현해봅시다. 활동지 3-1(2) 사용 3) 서로 다른 두 수 a 와 b 중에서 큰 수를 구하는 알고리즘을 순서도로 표 현해봅시다. 활동지 3-1(3) 사용 4) x 의 일차부등식 ax > b 의 해를 구하는 알고리즘을 순서도로 표현해봅시 다. 활동지 3-1(4) 사용 2. 다음 주 교육 내용 안내 1) 알고리즘 표현 방법 중에서 의사코드를 사용하여 알고리즘을 설계하고 표현했을 때의 장단점을 정리해봅시다. 활동지 3-2(1) 사용 2) 우리 일상생활에서 찾아볼 수 있는 알고리즘의 예를 의사코드를 사용하 여 표현하는 방법에 대해 정리해봅시다. 활동지 3-2(2) 사용 - 91 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 평가 평가 내용 순서도 표현의 장단점을 발표함으로써 논리전개 및 추론능력과 정보과학에 대한 호기심을 갖게 되었는지 평가한다. 순서도의 정의와 필요성, 순서도의 역할, 순서도의 종류 및 자주 쓰이는 기 호, 순서도의 기본 유형을 통해 알고리즘 설계 방법을 학습하였는지 평가한 다. 학습자가 미리 준비한 활동지와 본차시에 작성한 활동지, 학습자의 발표 내 용, 토론 참여도 등을 종합적으로 평가하여, 논리전개 및 추론능력, 자율적 탐구와 학습능력, 상호작용과 의사소통능력이 신장되었는지를 평가한다. 평가 방법 발표 및 토론 평가 : 도입활동 1 번, 본활동 2번 활동시 평가 평가도구 1/1 평가 기준 사용 순서도의 정의와 필요성을 정확히 이해하였는가? 순서도의 역할과 종류를 체계적으로 정리하였는가? 순서도를 잘 기술할 수 있는가? 순서도를 사용하였을 때의 장단점을 설명하였는가? 평가 유의점 토론 시 학생들이 적극적으로 참여하도록 지도한다. - 92 -
알고리즘 이해하기 필수정보 1. 순서도의 정의와 필요성 컴퓨터에 의해 처리하고자 하는 문제를 분석하여 그 처리 순서를 단계화 시 켜 상호간의 관계를 일정한 기호를 사용하여 일목요연하게 나타낸 그림을 순서 도라고 한다. 다시 말해서 순서도는 컴퓨터로 어떠한 업무를 처리하거나 알고리 즘을 표현하고 문제를 해결할 때 처리할 일의 순서를 한 단계씩 구분하여 약속 된 도형으로 한눈에 들어오게 표현한 그림을 말한다. 순서도는 사무 간소화나 작 업 합리화를 위해 우리 사회에 많이 사용되어 오고 있지만 특히 알고리즘의 표 현이나 컴퓨터에 의해 어떤 업무를 처리하기 위해서는 이 도표가 없어서는 안될 만큼 중요시 되고 있다. 그것은 문제해결을 위한 논리적인 순서만 완전히 수립되 면 컴퓨터 언어를 이용하여 프로그램을 작성하는 등의 나머지 작업은 대수롭지 않은 것이기 때문이다. 프로그램의 형태는 컴퓨터 기종이나 컴퓨터 언어에 따라 다르지만 이것을 유 도하는 논리적인 방식에는 차이가 없어 완성된 순서도는 모든 컴퓨터에 적용될 수 있기 때문에 순서도가 업무를 처리하는데 있어서 가장 중요한 자료가 되기도 한다. 이처럼 컴퓨터에 있어서 순서도는 프로그램을 작성하는 경우 무엇보다도 처리의 순서나 흐름이 중요하므로 이 순서도를 얼마나 잘 작성하느냐 하는 것은 곧 얼마나 우수한 프로그램이 되느냐 하는 문제 해결의 열쇠가 되는 것이다. 따 라서 순서도는 누구나 이해할 수 있는 약속된 기호들로 표현되어야 한다. 순서도가 필요한 이유는 크게 다섯 가지로 나누어 볼 수 있다. 첫째는 작업의 흐름을 이해하기 쉽다는 것이다. 순서도의 흐름을 따라가면 쉽게 작업이 어떤 순 서로 이루어졌는지를 쉽게 알 수 있다. 둘째는 일정 시간이 지난 후에도 프로그 램을 이해하기 쉽다는 것이다. 프로그램을 작성해 놓고 오랜 시간이 지난 후에 다시 작성한 코드를 보면 분석이 매우 어려워진다. 그러나 순서도를 잘 작성해 놓을 경우 오랜 시간이 지난 후에도 쉽게 코드를 이해할 수 있다. 셋째는 프로그 램을 각 단계별로 여러 사람이 작성할 때 대화의 수단이 된다는 것이다. 넷째는 프로그램의 언어와 무관하게 공통으로 사용된다는 것이다. 순서도는 프로그램의 기본이 되는 표현 방법이므로 언어와는 무관하게 공통적으로 사용되어진다. 마지 막으로 논리적인 오류를 쉽게 찾을 수 있다는 것이다. 다음의 < 표 3-1> 은 순서 도에서 사용되는 대표적인 기호들이다. - 93 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) < 표 3-1> 순서도 기호 표현 예 < 출처 : 인터넷 사이트 2 > 2. 순서도의 역할 ⑴ 프로그램을 작성하는 기초 자료가 된다. 전산 처리되는 업무는 대개가 복잡하여 하루 이틀에 프로그래밍이 끝나지는 않는다. 이렇게 복잡한 업무를 순서도를 작성하지 않고 직접 컴퓨터 언어를 이용 한다는 것은 무리가 따르며, 정확성이 없고 최대한의 능력을 발휘할 수도 없다. 이것은 초안 없이 원고를 작성하는 것과 같은 불안이 따르기 때문에 반드시 순 서도에 의한 작업이 이루어져야 한다. ⑵ 타인에게 인수, 인계가 용이하다. 이미 개발된 알고리즘이나 업무를 다른 사람에게 인계할 때나 매우 중요한 업무에서 경영자 등의 여러 인원에게 업무의 내용을 이해시킬 경우 도표로 된 순서도를 그 자료로 사용함이 다른 자료보다 이해도가 빠르고 문제 처리의 과정 을 한 눈에 파악할 수 있다. ⑶ 프로그램의 유지보수(maintenance) 가 용이하다. - 94 -
알고리즘 이해하기 디버깅(Debugging) 이란 프로그램이 완전한 것이 될 때까지 프로그램 상에 있 는 오류를 수정하는 작업으로 프로그램 작성에 있어서 가장 중요한 단계이기도 하다. 순서도는 논리적인 체계를 순서에 의해 도표로 나타낸 것이기에 언어의 규 칙에 따라 적성된 프로그램보다 정확성이 높고, 또 이해하기 빠르다는 것은 두 말할 필요가 없다. 이는 프로그램의 갱신 및 유지에도 많은 도움이 된다. 따라서 알고리즘을 설계하고 순서도로 나타내는 작업은 매우 중요한 작업이라고 할 수 있다. ⑷ 프로그램 보관 시 자료가 된다. 이미 개발된 시스템을 잘 보존하기 위해서는 프로그램의 보존이 필수적으로 따라야 하는데, 프로그램만을 보관하는 것은 원본이 없는 서류를 보관하는 것과 흡사하다. 그러므로 기종에 구애받지 않는 순서도를 보관하여 어떠한 경우에도 안전하도록 대처해야 한다. 3. 순서도의 종류 컴퓨터 처리에 있어서 사용되는 순서도는 일반적으로 표시 정도의 세분도에 의하여 구분되며, 크게 시스템 순서도(system flowchart) 와 프로그램 순서도 (program flowchart) 두 종류로 나누어진다. 시스템 순서도는 자료의 흐름을 중 심으로하여 시스템 전체의 작업 내용을 총괄적으로 도시한 것을 말하며 주로 시 스템 분석가가 시스템 설계나 분석을 할 때에 작성된다. 시스템 순서도는 업무 처리 중에 사용되는 각 장치와 프로그램, 입출력되는 파일들 간의 처리 순서를 단계적으로 나타낸 순서도 작업 전체의 흐름을 총괄적으로 나타낸다. 또한 처리 하고자 하는 작업의 전체적인 구조 및 시행계획이나 설계, 분석 등을 간략히 나 타낸다. 프로그램 순서도는 시스템 전체의 작업, 즉 시스템 순서도 중에서 컴퓨터 처 리를 하는 부분을 중심으로 자료 처리에 필요한 모든 조작의 순서를 도시한 것 으로서 주로 프로그래머가 작성하게 된다. 프로그램 순서도는 얼마나 자세하게 작성하느냐에 따라서 개략순서도와 상세순서도로 나눈다. 개략순서도는 종합적이 고 일반적인 순서도로서 프로그램이나 알고리즘의 전체 내용을 개괄적으로 설명 한 것이다. 이 순서도는 처리되는 단계를 큰 부분으로 나누어 프로그램의 전체적 인 구조와 기능이 한 눈에 파악되도록 한다. 상세순서도는 개략순서도의 각 단계 를 세분화하여 그린 순서도이다. 여기에는 프로그램의 모든 조작과 자료의 이동 순서를 빠짐없이 표시하여 프로그래밍에 바로 활용할 수 있을 정도로 세밀하게 작성한다. - 95 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 4. 자주 쓰이는 순서도 기호 (1) 단말(Terminal) 작업의 시작과 끝을 나타내는 기호로 다음의 [ 그림 3-1] 과 같은 요령으로 사 용된다. [ 그림 3-1] 단말 < 출처 : 인터넷 사이트 2 > (2) 준비(Preparation) 작업을 하기 위한 준비로 필요한 기억장소의 확보 및 배열확보 또는 초기값 을 정해 주는데 사용된다. [ 그림 3-2] 준비 < 출처 : 인터넷 사이트 2 > - 96 -
알고리즘 이해하기 (3) 입출력(I/O symbol) [ 그림 3-3] 입출력 < 출처 : 인터넷 사이트 2 > (4) 처리(Process) 자료의 이동 또는 연산내용을 기호내에 서술한다. [ 그림 3-4] 처리 < 출처 : 인터넷 사이트 2 > (5) 비교판단(Decision) [ 그림 3-5] 비교 판단 < 출처 : 인터넷 사이트 2 > - 97 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 5. 순서도의 기본 유형 순서도는 입력과 출력, 자료의 연산, 처리조건의 판단, 동일한 처리의 반복 등 의 내용으로 이루어진다. 따라서 순서도는 처리 순서에 따라 다음과 같은 세 가 지의 기본 유형으로 나눌 수 있다. (1) 직선형 어떤 조건에 의해서 분기되거나 반복되는 과정이 없이 처리순서가 아래 방향 으로 차례차례 단계적으로 이루어지는 가장 기본적인 처리구조이다. 다음의 [ 그 림 3-6] 은 직선형 구조의 예이다. 시 작 컴 퓨 터 를 켠 다 컴 퓨 터 를 사 용 한 다 컴 퓨 터 를 끈 다 끝 [ 그림 3-6] 직선형 (2) 분기형 처리 중 주어진 조건을 비교, 판단하여 그 결과에 따라 서로 다른 처리를 행 하도록 하는 구조이다. 다음의 [ 그림 3-7] 은 분기형 구조의 예이다. - 98 -
알고리즘 이해하기 시 작 남자인가? 아니오 예 남자 화장실에 간다 여자 화장실에 간다 볼일을 본다 끝 [ 그림 3-7] 분기형 (3) 반복형 주어진 조건이 만족될 때까지 특정한 과정을 반복하여 수행하도록 하는 구조 이다. 다음의 [ 그림 3-8] 은 반복형 구조의 예이다. [ 그림 3-8] 반복형 - 99 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 읽기자료 [ 컴퓨터도 마음을 소유할 수 있는가? - 튜링 검사] 인간 두뇌의 메모리 용량과 논리 회로 숫자를 훨씬 상회하는 기능을 갖는 새로 운 컴퓨터 모델이 시장에 나왔다고 가정해 보자. 그 기계에는 프로그램이 잘 되 어 있고 적당한 종류의 데이터도 충분히 주어졌다고 가정하자. 제조 회사는 이 컴퓨터가 실제로 생각한다고 주장하고 있다. 또 이 컴퓨터가 진짜로 지능이 있다 고 주장할 수도 있다. 어쩌면 한 걸음 더 나아가서 이 컴퓨터가 실제로 느끼고 ( 아픔ㆍ행복ㆍ동정ㆍ자긍심 등) 자기가 무엇을 하고 있는가를 자각하고 실제로 이해한다고 주장할 수도 있다. 실로, 그들은 이 컴퓨터에 의식이 있다고 주장하 는 것처럼 보인다. 그 제작자의 주장이 맞는지 틀리는지를 어떻게 알 수 있을까? 보통 우리가 어떤 기계를 구입하면 그 물건이 제공할 수 있는 유익성 (service) 하나에 근거하여 그 가치를 판정하게 된다. 만약 그 기계가 우리가 정해 놓은 작업을 만족스럽게 수행하기만 하면 그 때 우리는 기분이 좋을 것이다. 그렇지 못하다면 반환하여 수리하든지 아니면 다른 것으로 교체하게 된다. 이러한 기준에 따른다면, 그 기 계가 실제로 제작 회사의 주장대로 인간의 특성을 갖는다는 것을 확인하기 위해 서는 주어진 특성들에 대하여 단순히 인간처럼 반응하는가 하는 것만을 알아보 면 될 것이다. 만일 이를 만족스럽게 수행한다면 그 제조 회사에 대하여 불평할 근거가 없고 수리나 교체를 위하여 컴퓨터를 반환할 필요도 없을 것이다. 위의 내용은 이 문제에 관하여 매우 조작주의적인 관점을 제시하고 있다. 조작주 의자 (operationalist) 들은 컴퓨터가 사람이 생각하며 행동하는 것과 똑같은 행동 양상을 보일 때 비로소 그것이 생각한다고 말할 것이다. 당분간 이 조작주의적인 관점을 받아들이기로 하자. 물론 이 말이 의미하는 것은, 컴퓨터가 마치 생각하 며 행동하는 사람처럼 똑같이 동작하는 것까지 요구하는 것은 아니다. 그것이 사 람과 모양이 비슷하다거나 접촉을 느끼는 것은 그다지 기대하지 않는다. 그러한 것은 컴퓨터의 목적과 무관한 특성들이기 때문이다. 이 말의 의미는 우리가 어떤 질문을 컴퓨터에 부여하더라도 그것이 인간과 유사한 답을 생성하는 것을 우리 가 요구한다는 것이다. 그리고 그 컴퓨터가 우리의 질문에 대하여 인간과 구분할 수 없는 답을 생성할 때 비로소 그것이 생각한다 ( 혹은 느낀다, 이해한다 등) 는 것을 사실로서 받아들일 수 있다는 것이다. - 100 -
알고리즘 이해하기 이러한 관점은 1950 년 철학 논문집 Mind 에 게재된 앨런 튜링의 유명한 논 문 계산 기계와 지능 (Turing, 1950) 에서 매우 강력하게 주장되고 있다 ( 튜 링에 대해서는 뒤에 다시 보게 될 것이다). 이 논문에는 요즈음 튜링 검사 (Turing test) 로 알려진 아이디어가 처음으로 등장한다. 이것은 어떤 기계가 생 각한다고 정당하게 간주될 수 있는가를 시험할 의도로서 제안되었다. 어떤 컴퓨 터 ( 예를 들면 위에서 언급한 제조업자가 내세운 것과 같은) 가 실제로 생각한다 고 누군가 주장한다고 가정하여 보자. 튜링 검사에서는 그 컴퓨터가 인간 자원자 와 함께 ( 감각을 가진) 제 3 의 질문자의 시야로부터 가려지게 된다. 그 질문자 는 각각에게 간략한 질문만을 던져서 그 대답을 이용하여 둘 중에 누가 인간이 고 누가 컴퓨터인가를 결정하여야 한다. 질문들, 그리고 더욱 중요한 것은 그녀 가 수집하는 모든 대답이 키보드와 컴퓨터 스크린처럼 기계적인 방법으로 소통 된다. 질문자는 이 질의 응답 과정 외에는 양쪽 참여자에 대한 어떠한 정보도 얻 는 것이 허락되지 않는다. 인간 실험 대상은 질문에 정직하게 대답하고 자기가 정말로 인간이고 다른 대상이 컴퓨터라는 것을 설득하려고 노력한다. 컴퓨터는 질문자에게 자기야말로 인간이라고 ' 거짓말' 을 하도록 프로그램되어 있다. 그러 한 질문을 주고받는 과정에서 질문자가 진짜 인간을 일관되게 알아 내지 못한다 면 그 컴퓨터 ( 혹은 컴퓨터의 프로그램, 또는 프로그래머, 컴퓨터 설계자 등) 는 테스트를 통과했다고 간주한다. 이러한 테스트가 실제로 컴퓨터에 매우 불리하다는 주장이 있을 수 있다. 왜냐 하면 역할을 뒤집어서 인간 대상이 컴퓨터인 것처럼 행동하고 컴퓨터가 정직하 게 대답한다면 질문자가 어느 쪽이 누구인가를 밝히는 작업이 너무나 쉬울 것이 기 때문이다. 질문자는 대상들에게 단지 복잡한 산수 계산을 해 보도록 요구하면 된다. 훌륭한 컴퓨터는 단숨에 정확한 대답을 줄 수 있을 것이고 인간은 난처하 게 될 것이다. ( 그러나 여기에는 약간의 주의가 필요하다. 암산을 아주 놀라울 정 도로 정확하게, 그리고 힘들이지 않고 수행하는 ' 계산 신동' 들이 있기 때문이다. 예를 들면, 다세 [Johann Martin Zacharias Dase] 라고 하는 문맹인 농부의 아들 은 1824 년에서 1861 년까지 독일에서 살았는데 임의의 여덟 자리 숫자 두 개의 곱을 암산으로 1 분 이내에 풀었고 20 자리의 수 두 개의 곱도 6 분 정도면 풀 었다고 한다! 그러한 계산에 대해서 컴퓨터라고 착각하기는 쉬울 것이다. 근자에 와서는 1950 년대에 에딘버러 대학의 수학 교수인 에이킨 [Alexander Aitken] 이 나 다른 사람들의 계산 능력도 그 정도로 놀라웠다. 질문자가 선택하여야 할 계 산 문제도 이보다는 좀더 복잡해져야 할 것이다. 예를 들면, 두 개의 30 자리 숫 자를 2 초 내에 풀어 보라는 것이다. 그만한 정도의 계산 능력은 웬만한 현대 컴 퓨터로 쉽게 풀 수 있다.) - 101 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 그러므로 그 컴퓨터의 프로그래머가 수행해야 하는 작업 중의 일부는 그 컴퓨터 가 어떤 면에서는 더 ' 어리석게' 보이도록 만드는 것이다. 왜냐 하면, 만일 질문 자가 컴퓨터에게 위에서처럼 복잡한 계산 문제를 내놓으면, 컴퓨터는 이제는 대 답을 할 수 없는 것처럼 위장해야만 된다. 그렇지 않으면 금세 발각될 것이다! 그러나 이러한 식으로 컴퓨터를 ' 어리석게' 만드는 작업은 그 컴퓨터 프로그래머 에게 그다지 심각한 문제는 아닐 것이다. 가장 어려운 점은 오히려 인간 대상에 게는 아무런 어려움이 없는 가장 단순한 ' 상식' 적인 질문에 대하여 대답할 수 있도록 만드는 것일 것이다! 그러나 그러한 질문에 대하여 어떤 특별한 예를 드는 것은 본질적인 문제가 있 다. 왜냐 하면 어떤 문제를 처음 제시하든지간에 컴퓨터가 그 문제에 관하여 인 간처럼 대답하게끔 만드는 방법을 생각해 내는 것은 쉬운 작업이기 때문이다. 그 러나 좀더 질문을 계속하면, 그리고 특히 그 질문이 독창적이고 진정한 이해를 요하는 것이라면 컴퓨터가 그 문제에 대하여 이해가 부족하다는 사실이 명백해 질 것이다. 이 경우 질문자에게 요구되는 기술은, 한편으로는 그러한 독창적인 형태의 질문을 만들어 내야 되는 것이고 또 한편으로는 실제로 ' 이해' 가 되었나 를 밝혀 낼 수 있도록 설계된, 탐문 형식의 후속 질문들을 만들어 내는 것이다. 또, 때로는 전혀 엉뚱한 질문을 던져서 컴퓨터가 그 차이를 아는가를 살펴보고 혹은 겉으로는 엉뚱해 보이지만 실제로는 어떤 식이든 의미가 있는 문장을 몇 개 던질 수도 있을 것이다. 예를 들면 이런 질문을 할 수 있다. " 내가 듣기에 오 늘 아침에 코뿔소가 분홍 풍선을 타고 (in a pink balloon) 미시시피 강을 따라 (along the Mississippi) 날았다던데, 어떻게 생각하니?" ( 어쩌면 컴퓨터의 눈썹 부위로 식은 땀방울이 맺히는 것을 상상할 수 있을 것이다. 적절치 않은 은유겠 지만.) 그는 조심스레 대답할 것이다. " 그것 참 우습군." 아직까지는 아무런 문제 가 없다. " 그래? 우리 아저씨도 한 번 그런 적이 있는데? 왕복으로 말이야. 단지 그 때는 흰색에 줄무늬가 있었지. 그게 뭐가 우스운데?" 만일 컴퓨터가 ' 이해' 가 부족하다면 곧 들통이 나고 말 것이다. 그 기억 은행에서 코뿔소가 날개가 없 다는 사실을 찾아 내곤 처음 질문에 대하여 " 코뿔소는 날지 못해." 라고 실수를 해 버리든지 아니면 두 번째 질문에 " 코뿔소는 줄무늬가 없잖아." 하고 엉터리 대답을 할 것이다. 그 다음에는 훨씬 엉뚱한 질문을 던져 보는 것도 좋다. ' 미시 시피 강 밑으로 (under the Mississippi)' 라든지, ' 분홍 풍선 속에서 (inside a pink balloon)' 라든지, 혹은 ' 분홍 잠옷을 입고 (in a pink nightdress)' 로 문장 을 약간 고쳐서 컴퓨터가 그 본질적인 차이를 감지하는가 알아보는 것이다. 잠시, 튜링 검사를 통과할 수 있는 컴퓨터를 만들 수 있는가 없는가, 있다면 언 - 102 -
알고리즘 이해하기 제나 가능한가 따위의 질문을 제쳐놓기로 하자. 대신 여기서의 논의를 위하여 그 러한 컴퓨터가 이미 만들어졌다고 가정해 보기로 하자. 이 검사를 통과한 컴퓨터 가 과연 생각하고, 느끼고, 이해하는가 등을 생각해 보아야 할 것이다. 이 문제에 대해서는 잠시 뒤에 다시 보기로 하고, 잠시 그것이 함축하고 있는 몇 가지 사항 을 생각해 보기로 하자. 예를 들면, 만일 그 제작자가 주장하는 것, 즉 그들이 만 든 기계가 생각하고, 느끼고, 감수성이 있고, 이해를 하고 의식이 있다는 것이 모 두 옳다면, 우리가 이 물건을 구매할 때 도덕적 책임감이 관여되어야 할 것이다. 만일 제작자 말을 믿는다면 당연히 그렇게 되어야 한다. 그것의 감정을 생각해 보지도 않고 우리가 필요한 대로만 그 기계를 작동한다면 그것은 비난받아 마땅 할 것이다. 이는 노예를 함부로 다루는 것과 도덕적으로 다를 바 없을 것이다. 제작자가 주장하는 것처럼 이 기계가 아픔을 느낄 수 있다면 그 컴퓨터로 하여 금 통증을 유발하는 작업은 피해야만 할 것이다. 컴퓨터를 끄는 것, 혹은 그것이 우리와 정이 들 만할 때 파는 것도 도덕적으로 어려움이 따를 것이고 그 외에도 다른 사람 혹은 동물들과의 관계에서 발생할 수 있는 셀 수 없이 많은 비슷한 문제들에 직면하게 될 것이다. 이러한 모든 것들이 이제 와서는 매우 유관한 이 슈가 될 것이다. 그러므로 제작자의 주장, 즉 '모든 생각하는 기계는 본사의 전문가들에 의해서 완전히 튜링 검사를 필하였 음.' 이라는 주장이 실제로 정말인가 아닌가를 우리가 ( 또, 당국에서도) 아는 것이 매 우 중요하다. 내가 보기에는, 그것이 함축하는 몇 가지 분명히 말이 안 되는 점 ( 특히, 도덕성 과 관련된 부분) 에도 불구하고 튜링 검사에 통과하는 것을 생각ㆍ지능ㆍ이해, 혹은 의식 등이 있다는 지표로 간주하는 것은 상당히 설득력이 있다고 생각된다. 왜냐 하면, 다른 사람들에게 그러한 자질이 있는가 없는가를 판단할 때 대화 이 외의 방법이 있을 수 있을까? 실은 몇 가지 다른 기준이 있을 수도 있다. 예를 들면, 얼굴 표정이라든지 몸의 움직임, 행동 등은 우리가 그러한 판단을 내릴 때 매우 중요한 영향을 줄 수 있다. 그러나 ( 어쩌면 먼 훗날이 되겠지만) 이 모든 표정과 동작을 잘 흉내낼 수 있는 로봇이 제작된다고 추측해 보자. 이제는 로봇 과 인간 대상을 질문자의 시야에서 가릴 필요도 없을 것이다. 그러나 질문자가 갖추어야 할 기준은 본질적으로 이전과 동일할 것이다. 나름대로 생각해 보건대, 튜링 검사의 요건을 대폭 완화하더라도 무방하다고 본 다. 내 생각에는 컴퓨터에게 사람 흉내를 내게 하여서 사람과 분간을 못할 정도 - 103 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 로 비슷할 것을 요구하는 것은 사실 컴퓨터에게 필요 이상을 요구하는 것이라고 본다. 내가 요구하고 싶은 것은 다만 감각적인 질문자가 컴퓨터의 대답을 통하여 그 대답 기저에 의식이 존재한다는 것을 진정으로 확신할 수만 있다면 그것으로 족한 것이다. 그 의식이 이질적인 것이라 할지라도. 이러한 성질은 지금까지 제 작된 어떤 컴퓨터에서도 아직 찾아볼 수 없다. 그러나 여기에는 한 가지 위험이 따를 수 있는데 만일 질문자가 어떤 쪽이 컴퓨터인가를 눈치채게 되는 경우이다. 이 경우 그 컴퓨터로부터 지능적인 면이 실제로 감지되더라도 그 질문자는, 어쩌 면 무의식적으로, 의식의 존재를 인정하는 데 주저하게 될 것이다. 혹은 반대로, 그 질문자가 실제로는 그렇지 않은데도 마치 컴퓨터의 반응에서 ' 이질적인 의식' 을 ' 감지' 한 듯한 인상을 받음으로써 컴퓨터에 선의적 해석을 줄 수도 있는 것 이다. 이러한 이유들 때문에 튜링의 원래 검사 방법이 오히려 객관적 측면에서 훨씬 좋다고 판단되어 여기에서도 그냥 따르기로 하겠다. 결과적으로 컴퓨터에 불리하다는 점 ( 즉, 기계는 인간의 모든 것을 할 수 있어야 검사를 통과하지만 인간은 컴퓨터가 하는 것을 못해도 무방하다는 점) 은 튜링 검사가 진정으로 적 합하다고 믿는 지지자들에게는 별 문제가 되지 않는 것 같다. 어떻든 그들의 의 견은 대개, 그렇게 머지 않은 장래 - 예를 들면 2010 년까지 - 에 튜링 검사를 실제로 통과할 컴퓨터가 나올 것으로 모아지고 있는 것 같다. ( 튜링은 원래, 2000 년까지는 평범한 질문자가 5 분간 검사할 때 컴퓨터가 30 % 정도 성공할 것으로 추측하였다.) 이런 점으로 미루어 볼 때 그들은 위에서 언급한 불평등이 그 날짜 를 그렇게 연기하지는 않을 것으로 자신했던 것 같다! 이러한 모든 사항은 한 가지 중요한 질문과 연관성이 있다. 즉, 어떤 물체에 정 신적 자질이 있는가 없는가를 판별할 때 조작주의적 관점이 합당한 기준이 될 수 있는가 하는 것이다. 어떤 사람들은 강력하게 이를 부인할 것이다. 모조품은, 그것이 아무리 기술적으로 행하여졌다 할지라도 절대로 진짜는 될 수가 없다는 관점이다. 이 점에서 나의 입장은 약간 중립적이라 할 수 있다. 나는, 보편적 원 칙으로서, 아무리 기술적인 흉내라 할지라도 충분히 기술적으로 검사한다면 언제 나 간파할 수 있다고 믿어진다. 그러나 이는 밝혀진 사실이라기보다는 신조 ( 혹 은, 과학적 낙관주의) 에 가깝다. 그러므로 나는 전체적으로 볼 때 튜링 검사가 적당히 선택된 문맥 내에서는 대개 올바르다는 것을 인정할 용의가 있다. 그 말 은 즉, 만약 컴퓨터가 진실로 주어진 모든 질문에 대하여 인간의 것과 구분이 안 될 정도로 답을 할 수만 있다면, 그리하여 분별력 있는 질문자를 정당하고 일관 되게 속일 수만 있다면, 이를 반증하는 증거가 없는 한 컴퓨터가 실제로 생각하 고 느끼고 한다고 추정하겠다는 것이다. ' 증거', ' 실제', ' 추정' 등의 단어를 사용 함으로써 나는 암암리에 내가 말하는 생각ㆍ느낌ㆍ이해, 그리고 특히 의식이라는 - 104 -
알고리즘 이해하기 개념이 실제로 객관적인 ' 것' 들로서 그들이 물리적 육체에 있고 없음을 우리가 확인하려 한다는 것임을 밝히고 있다. 즉, 단순한 언어적 편의에 의한 것이 아니 라는 것이다. 나는 이것이 매우 중대한 사항이라고 생각한다. 그러한 자질의 존 재 여부를 분간하기 위하여 우리는 주어진 모든 증거에 근거하여 추정을 하는 것이다. ( 이는, 본질적으로, 천문학자가 멀리 떨어진 별의 질량을 알기 위하여 하 는 노력과 크게 다르지 않다.) 그렇다면 어떤 종류의 반증이 고려될 수 있을까? 이에 대해서는 미리 어떤 규칙 을 정해 놓기가 어렵다. 그러나 확실히 밝혀 두고 싶은 것은 컴퓨터가 신경ㆍ혈 관 등이 아닌 트랜지스터ㆍ전선 등으로 만들어졌다는 단순한 사실이 그 자체만 으로는 내가 생각하는 반증이 될 수 없다는 것이다. 내 마음 속에 두고 있는 생 각은 언젠가 미래에 의식에 관한 성공적인 이론이 개발될지도 모른다는 것이다. 성공적이라 함은 그것이 조리 있고 적절한 물리 이론으로서 다른 물리 이론들과 도 아름답게 부합되며 그것이 산출하는 내용들이 우리 인간이 자신의 의식에 대 하여 진정한 결론을 내려 줄 수 있다는 것이다. 심지어는 이 이론에 의한 ' 의식 탐지기' 까지 나올 수도 있다고 상상할 수 있다. 이 탐지기는 인간 대상에 대해 서는 완전히 믿을 만한 결과를 보이는 한편 컴퓨터에 대해서는 튜링 검사와 다 른 결과를 줄 수도 있다. 그러한 경우 튜링 검사 결과를 해석할 때 매우 조심해 야 할 것이다. 튜링 검사의 적합성에 대한 문제를 어떻게 볼 것인가는 우리가 과 학과 기술의 발전을 얼마만큼 기대하느냐 하는 문제와도 어느 정도 관련성이 있 다고 본다. < 출처 : 참고문헌 6 > - 105 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 1. 참고문헌 1 2 3 4 참고자료 정보교육학회 교재개발분과위원회(2004), 컴퓨터과 교수법 및 교재연구, 생능 출판사 정보교육학회 교재개발분과위원회(2004), 컴퓨터 교육론, 삼양미디어 박정호(2003), 컴퓨터 알고리즘, 상조사 Cormen Thomas H(2001), Introduction to Algorithms, 2/E, MIT 5 Horowitz Ellis, Sahni Sartaj, Anderson-Freed S(1992), Fundamentals of 6 Data Structures in C, Computer Science Roger Penrose 저, 박승수 역, 황제의 새마음, 이화여자대학교출판부 2. 인터넷 사이트 1 http://www.ygreen.org 2 http://www.dgedu.net 3 http://imagebingo.naver.com 4 http://mathman.pe.kr/ 5 http://contests.edu-i.org/gongmo/2000/785/deep_learn/basic/flow_mean.htm - 106 -
알고리즘 이해하기 정보과학-3주 발전 단원 1 활동지 3-1(1) 교육청 영재교육원/ 영재학급 중학교 이름 순서도를 사용했을 때의 장단점을 정리해봅시다. - 107 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 정보과학-3주 발전 단원 1 활동지 3-1(2) 교육청 영재교육원/ 영재학급 중학교 이름 일상생활의 알고리즘을 순서도의 기본유형에 맞추어 표현해봅시다. - 108 -
알고리즘 이해하기 정보과학-3주 발전 단원 1 활동지 3-1(3) 교육청 영재교육원/ 영재학급 중학교 이름 서로 다른 두 수 a 와 b 중에서 큰 수를 구하는 알고리즘을 순서도로 표현해 봅시다. - 109 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 정보과학-3주 발전 단원 1 활동지 3-1(4) 교육청 영재교육원/ 영재학급 중학교 이름 x 의 일차부등식 ax > b 의 해를 구하는 알고리즘을 순서도로 표현해봅시다. - 110 -
알고리즘 이해하기 정보과학-3주 발전 단원 1 활동지 3-2(1) 교육청 영재교육원/ 영재학급 중학교 이름 알고리즘 표현 방법 중에서 의사코드를 사용하여 알고리즘을 설계하고 표현 했을 때의 장단점을 정리해봅시다. - 111 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 정보과학-3주 발전 단원 1 활동지 3-2(2) 교육청 영재교육원/ 영재학급 중학교 이름 우리 일상생활에서 찾아볼 수 있는 알고리즘의 예를 의사코드를 사용하여 표 현하는 방법에 대해 정리해봅시다. - 112 -
알고리즘 이해하기 정보과학-3주 발전 단원 1 평가도구(1/1) 교육청 영재교육원 중학교 이름 교사용 번호 측정요소 측정의 근거 1점 2점 3점 4점 5점 창의성 독창성 기존의 알려진 방법과는 확연히 구분 되는 형식, 이론, 주장 등이 존재하는 가? 자신만의 참신하고 독특한 아이디어를 제시하고 있는가? 논리성 전개과정과 문제해결에서 전후가 명확 하며, 원인과 결과 및 사용되는 이론 적 배경이 분명하다. 다양성 복수의 상이한 요소, 부분 또는 수준 들을 포함하고 있다. 가치성 주제나 내용이 명확한 이슈를 포함한 다. 기능적 솜씨 논리적으로 치밀하며, 도입 전개 결론 에 이르는 과정이 치밀하다. 유용성 발전 가능성 내용과 결과를 실제에 적용하여 사용 할만한 가치가 있다. 앞으로 새로운 산출물, 혹은 연구 결 과를 도출할 수 있는 아이디어를 포함 한다. - 113 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 4 주 주제 의사코드를 이용한 알고리즘 표현하기 본 활동은 알고리즘 이해하기 단원의 세 번째 시간으로서 알고리즘 표현방 법 중 순서도를 이용한 표현방법보다 더 프로그래밍적인 방법인 의사코드를 이 용한 표현방법과 BNF(Backus-NaurForm) 표기법을 이용한 알고리즘 표현 및 작성방법에 대해 학습한다. 의사코드나 BNF방법은 특정 언어에 독립적인 방식으 로 프로그램의 논리나 알고리즘을 표현하는 수단으로 많이 사용되고 있다. 특히 의사코드는 컴퓨터 프로그램이나 알고리즘이 해야 하는 내용을 자세히 기술해 놓은 것으로, 프로그래밍 언어보다는 자연어에 가깝게 표현해 놓은 것이다. 의사 코드는 때로 프로그램을 개발하는 과정에서 상세한 단계로 사용된다. 이를 이용 하여 설계자나 설계내용을 매우 자세하게 나타낼 수 있고, 프로그래머에게는 다 음 단계에서 특정한 프로그램 언어로 코드를 작성하기 위한 상세한 템플릿을 제 공한다. 의사코드는 비교적 자세하고 읽기도 쉽기 때문에 나중에 실제 프로그램 이 설계대로 잘 맞아 들어갈 것인지를 보장하기 위한 수단으로 사용되기도 한다. 의사코드 단계에서 발견한 에러들은 실제로 개발단계에서 잡아내는 것보다 비용 면에서 절약이 된다. 교육 목표 1. 2. 3. 5. 정보과학 분야 사고력 신장 정보과학 분야 적성 강화 정보과학 분야 특정지식 습득 정보과학 분야 일반능력신장 교육 내용 1-2. 논리전개 및 추론능력 2-1. 정보과학에 대한 호기심 - 114 -
알고리즘 이해하기 3-1. 5-1. 5-2. 알고리즘 설계 자율적 탐구 및 학습능력 상호작용과 의사소통능력 세부 교육 내용 학습자가 준비한 발표한 내용에 대해 토론한다. 의사코드 표현의 장단점 에 대해 발표를 실시한다. 의사코드의 정의 및 개요에 대해 학습한다. 의사코드의 특징 및 사용 시 유의사항에 대해 학습한다. 의사코드의 표현 방법에 대해 학습한다. BNF 의 개념 및 배경에 대해 학습한다. BNF 의 표기법에 대해 학습한다. 다양한 알고리즘들의 의사코드 표현 방법에 대해 팀별로 연구한다. 교육방법 발표와 토론, 강의, 주제별 연구 프로젝트 - 115 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) < 교육목표 - 교육내용 - 세부교육내용 - 교육방법의 유기적 연관성 > 교육목표 교육내용 세부교육내용 교육방법 1.정보과학 분야 사고력 신장 2.정보과학 분야 적성 강화 1-2. 논리전개 및 추론 능력 학습자가 준비한 의사코드 표현의 장단점 에 대해 발표를 실시한다. 2-1. 정보과학에 발표한 내용에 대해 토론한다. 대한 호기심 발표와 토론 3.정보과학 분야 특정 지식 습득 5.정보과학 분야 일반 능력 신장 3-1. 설계 알고리즘 의사코드의 정의 및 개요에 대해 학습한다. 의사코드의 특징 및 사용 시 유의사항에 대해 학습한다. 의사코드의 표현방법에 대해 학습 한다. BNF의 개념 및 배경에 대하여 학습한다. 강의 BNF 의 표기법에 대하여 학습한다. 5-1. 자율적 탐구 발표한 내용에 대해 토론한다. 발표와 토론, 와 학습 능력 다양한 알고리즘들의 의사코드 표 주제별 연구 5-2. 상호작용과 현 방법에 대해 팀별로 연구한다. 프로젝트 의사소통능력 준비물 교사용 학생용 관련 시청각 자료, 인터넷 검색용 PC 학생용 활동지 필기도구 사진 - 116 -
알고리즘 이해하기 교수학습 활동 학습 단계 교수학습 활동 시간 ( 총 90 분 ) 지도초점 및 유의점 도입 활동 이번 차시의 세부교육내용을 소 개한다. 5 학습자가 준비한 발표 내용에 대하여 간단한 질문 과정을 통 5 학생 스스로가 진행할 수 있도록 도우면서, 모든 학 해 준비 정도를 파악한다. 생들이 참여할 수 있도록 시간이 부족할 경우 의사코드 표현의 장단점 에 대하여 발표 5 지도한다. 본 활동 할 학습자를 선정한다. 발표자의 내용 중에서 토론이 가능한 내용을 선정하여 토론을 20 의사코드의 이해를 도우면 서 의사코드를 이용하여 진행한다. 토론 내용을 종합 정리한다. 의사코드 와 BNF' 를 이용한 5 20 알고리즘을 작성할 수 있 음을 설명한다. 알고리즘의 작성방법에 대한 강 의를 진행한다. 정리 활동 본 시간에 배운 개념 정리 다음 주 교육 내용과 준비 사항 을 안내한다. 20 10 학생 스스로가 등교 알고 리즘 작성을 진행할 수 있 도록 이해를 도우면서, 모 든 학생들이 참여할 수 있 도록 지도한다. 주요 초점 질문 1. 순서도를 제외한 알고리즘의 다른 표현방법은 무엇이 있을까? 2. 알고리즘을 자연어가 아닌 의미 있는 방법으로 기술했을 때의 장점은 무엇일까? 3. 의사코드를 사용하여 알고리즘을 표현했을 때와 순서도를 통하여 알고리즘을 표현했을 때의 장단점은 무엇이 있을까? - 117 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 지도활동 도입 활동 1. 이번 차시의 세부 교육 내용을 소개합니다. 학습자가 준비한 발표한 내용에 대해 토론한다. 의사코드 표현의 장단점 에 대해 발표를 실시한다. 의사코드의 정의 및 개요에 대해 학습한다. 의사코드의 특징 및 사용 시 유의사항에 대해 학습한다. 의사코드의 표현 방법에 대해 학습한다. BNF 의 개념 및 배경에 대해 학습한다. BNF 의 표기법에 대해 학습한다. 본 활동 1. 의사코드를 이용한 알고리즘 표현방법에 대해서 발표하고 토론해봅시다. 활동지 3-2(2) 사용 2. 발표 및 토론 내용을 종합하여 정리하면서 학생 스스로 결과를 정리할 수 있도록 지도합니다. 1) 발표자와 자신의 활동지 내용을 비교하여 장단점을 분석해봅시다. 2) 자신의 활동지를 스스로 평가해봅시다. 3. 강의 내용 1) 의사코드의 정의 및 개요에 대해 강의합니다. 필수정보 1.1 과 1.2 절 참조 2) 의사코드의 특징과 표현에 대해 강의합니다. 필수정보 1.3 ~ 1.5 절 참조 3) BNF 의 개념 및 배경에 대해 강의합니다. 필수정보 2.1 과 2.2 절 참조 - 118 -
알고리즘 이해하기 4) BNF 의 표기법과 형식에 대해 강의합니다. 필수정보 2.3 ~ 2.5 절 참조 정리 활동 1. 학습 내용 정리 1) 의사코드를 사용했을 때의 장단점을 정리해봅시다. 활동지 4-1(1) 사용 2) 의사코드를 사용할 때와 순서도를 사용할 때와의 차이점과 장단점을 비 교해봅시다. 활동지 4-1(2) 사용 3) 팀별로 일상생활의 알고리즘을 설계하여 의사코드로 표현해봅시다. 활동지 4-1(3) 사용 4) 서로 다른 두 수 a 와 b 중에서 큰 수를 구하는 알고리즘을 의사코드로 표현해봅시다. 활동지 4-1(4) 사용 5) x 의 일차부등식 ax > b 의 해를 구하는 알고리즘을 의사코드로 표현해봅 시다. 활동지 4-1(5) 사용 2. 다음 주 교육 내용 안내 1) 생활속에 숨어있는 알고리즘을 찾아서 정리해봅시다. 활동지 4-2(1) 사용 2) 등교 알고리즘을 작성하기 위한 조건을 정리해봅시다. 활동지 4-2(2) 사용 3) 여러분이 생각한 등교 알고리즘을 순서도로 표현해봅시다. 활동지 4-2(3) 사용 - 119 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 평가 평가 내용 의사코드 표현의 장단점을 발표함으로써 논리전개 및 추론능력과 정보과학 에 대한 호기심을 갖게 되었는지 평가한다. 의사코드의 정의 및 개요, 의사코드의 특징 및 사용 시 유의사항, 의사코드 의 표현 방법, BNF 의 개념 및 배경, BNF의 표기법을 통해 알고리즘 설계방 법을 학습하였는지 평가한다. 학습자가 미리 준비한 활동지와 본차시에 작성한 활동지, 학습자의 발표 내 용, 토론 참여도 등을 종합적으로 평가하여, 논리전개 및 추론능력, 자율적 탐구와 학습능력, 상호작용과 의사소통능력이 신장되었는지를 평가한다. 평가 방법 발표 및 토론 평가 : 도입활동 1 번, 본활동 2번 활동시 평가 그룹 프로젝트 산출물 평가 : 정리활동 1번 3) 활동시 평가 평가도구 1/1 평가 기준 사용 의사코드의 정의 및 특징을 정확히 이해하였는가? 의사코드 작성시 유의사항을 정확히 이해하였는가? 의사코드를 잘 기술할 수 있는가? BNF 의 개념 및 형식을 정확히 이해하였는가? BNF 를 사용하여 잘 표현할 수 있는가? 평가 유의점 토론 시 학생들이 적극적으로 참여하도록 지도한다. - 120 -
알고리즘 이해하기 필수정보 1. 의사코드를 이용한 알고리즘의 표현 및 작성 방법 1.1 의사코드의 정의 및 개요 의사코드(pseudocode) 란 특정 언어에 독립적인 방식으로 프로그램의 논리나 알고리즘을 표현하는 수단이다. 의사코드에 대한 일반적인 ' 한글' 어휘나 표기 관례를 만들어 둔다면 함께 일하는 프로그래머들 사이의 의사소통에 도움이 될 것이다. 또한 자신의 기법을 다른 사람들과 공유하는 데에도 많은 도움이 될 것 이다. 아마도 어느 정도 규모가 있는 개발사라면 이와 비슷한 개념의 규약 같은 것이 존재할 것이다. 의사코드의 주요 용도를 정리하면 다음과 같다. (1) 프로그래밍에 사용되는 언어와 유사한 서술적 표현에 의하여 프로그램의 설계 또는 시스템의 검토에 사용 (2) 문서화(Documentation) 용도로 사용 (3) 자연언어와 프로그래밍 언어의 중간적 형태를 만들어 시스템의 설계나 검 토에 사용 이와 같은 의사코드는 특정한 문법이나 언어의 제약은 없으나 프로그래밍 언 어로 다시 변환해야하므로 어느 정도의 규칙성은 필요하다. 1.2 프로그램 설계 언어 (Program Design Language, PDL) 의 개념 PDL 은 그 자체로 컴파일되는 실제 프로그래밍 언어가 아니라, 프로그램을 설 계하고 서술하기 위한 언어이다. 즉 PDL은 컴퓨터를 위한 것이 아니고 기본적으 로 사람을 위한 것이다. 흔히 말하는 의사코드가 바로 PDL 이라고 할 수 있다. 컴퓨터 프로그래밍 언어는 인간의 일상 언어( 구체적으로는 영어) 와 점점 더 닮아 가고 있지만, 여전히 격차는 존재한다. 인간이 가장 이해하기 쉬운 언어는 물론 자신이 사용하는 일상 언어이다. 그리고 특정 영역에서는 영어와 거의 흡사한 프 로그래밍 언어가 쓰이고 있다. 예를 들어서 SQL에서는 DELETE name FROM table1 처럼 영어 문장과 거의 흡사한 표현이 가능하며, MS-SQL Server 2000의 경우에는 What item has the highest price? 싼 항목을 돌려주는 기능도 있다. < 출처 : 인터넷 사이트 5 > 같은 문장을 받아서 가격이 가장 비 - 121 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 의사코드를 사용함으로써 다음과 같은 3 가지의 장점을 기대할 수 있다. (1) 코드의 논리와 구조를 미리 한 번 더 생각할 수 있다. (2) 코드가 뜻하는 바를 다른 사람에게 좀 더 명확하게 전달할 수 있다. (3) 그 자체가 코드의 문서화 수단이 될 수 있다. 예를 들어서 다음과 같은 의사코드가 있다고 하자. 만일 A가 B 보다 크면 그렇지 않으면 만일 끝 A 를 하나 감소시킨다. B 를 하나 감소시킨다. [ 그림 4-1] 의사코드 예 코드를 작성하기 전에 미리 이런 의사코드를 작성함으로서 코드의 논리를 한 번 더 생각할 수 있다. 또한 상사에게 검사(code review) 받기도 편하다. 아마 이 경우에는 다음과 같은 질문이 생길 것이다. 둘이 같을 때에도 B를 감소시키는 건가? 의사코드로 보니까 쉽게 보일 수 있다는 것이다. 또한 의사코드 자체를 주석으로 만들면 그대로 문서화가 되기도 한다. 다음의 예제를 살펴보도록 하자. // 만일 A가 B 보다 크면 if (vara > varb) { } //그렇지 않으면 else { } //만일 끝 --vara; //A 를 하나 감소시킨다. --varb; //B 를 하나 감소시킨다. [ 그림 4-2] 의사코드를 이용한 문서화의 예 1.3 의사코드의 특징 의사코드는 다음과 같은 다섯 가지의 특징이 있다. - 122 -
알고리즘 이해하기 (1) 특정한 문법이나 언어의 제약이 없으므로 프로그래밍 언어를 모르는 사람 도 작성이 가능하고 이해하기 쉽다. (2) 시스템의 개발 및 운영관리에 관련되는 사용자, 관리자, 시스템 설계자, 프로그래머 등이 시스템의 세부적인 사항에 대해서 공동으로 검토할 수 있는 자료가 될 수 있으며, 시스템의 정확도를 향상시킬 수 있다. (3) 프로그래밍 언어의 제어구조에 맞추어 기술하는 경우, 프로그램의 설계에 직접 사용될 수 있다. (4) 문서화 및 시스템 검토용으로 적합하다. (5) 프로그래밍 언어 교육을 위한 수단으로 사용할 경우, 특정한 프로그래밍 언어를 쉽게 이해할 수 있다. 1.4 의사코드 작성 시 유의사항 (1) 프로그램상의 모듈을 구분하기 위해 독립된 기능과 기능 사이에 적당한 공백을 두어 단위 기능을 파악할 수 있도록 하는 것이 좋다. (2) 들여쓰기(Indentation) 나 중첩(nesting) 에 의한 구조표현 방식을 사용하여 문자의 의미나 기능 등을 명확히 하는 것이 좋다. (3) 한 문장의 끝이나 어느 조건문의 끝 등을 나타내기 위해서는 마침표(.) 나 콤마(,) 를 사용하는 것보다는 END, IF-THEN-ELSE, END-DO와 같은 표현을 사용하는 것이 좋다. (4) 무조건 분기인 GO TO 등의 사용을 피하는 것이 좋다. 1.5 의사코드의 표현 (1) 순차제어구조 순차적으로 나열하고 기능이 다를 때에는 각각 다른 줄에 기술한다. 순차제어구조에 대한 예이다. 다음은 C = A + B (A와 B를 더하여 C 에 저장한다) print A (A 를 출력한다) print B (B 를 출력한다) print C (C 를 출력한다) [ 그림 4-3] 순차제어구조의 예 (2) 선택구조 선택구조는 가능하면 IF - ENDIF 와 같이 명확히 표현한다. 또한 ELSE에 해 당하는 문장이 없는 경우, ELSE 를 생략하거나 괄호를 표시한다. IF, ELSE, - 123 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) ENDIF 는 들여쓰기 할 때 같은 열에 기술한다. 중첩된 IF문이 있을 경우에는 줄 을 바꾸어 들여쓰기를 하여 계층적으로 기술한다. 다음은 선택구조의 예이다. IF p THEN ELSE ENDIF IF q THEN ELSE ENDIF add C to D add C to E add X to Y IF r THEN ENDIF add X to Z [ 그림 4-4] 선택구조의 예 (3) 반복구조 가능하면 WHILE( 조건) - ENDWHILE 과 같이 명확히 표현한다. WHILE( 조건) 과 ENDWHILE 은 같은 열에 기술한다. 다른 기능은 줄을 바꾸거나 들여쓰기를 하 여 표기한다. 중첩 WHILE( 조건) 은 들여쓰기를 하여 표기한다. DO-UNTIL( 조건) 이 WHILE( 조건)-ENDWHILE 과 다른 점은 먼저 한번은 실행하고 조건을 검사한 다는 것이다. 또한 FOR - DO - ENDFOR 구문이 있으며, 형식은 다음과 같다. FOR 초기값 종료값 증감 DO S ENDFOR [ 그림 4-5] 반복구조의 예 1.6 의사코드의 표현 예제 우리가 임의의 수 n에 대해서 n의 제곱값 n 2 을 구한다고 하자. 수학에서 n 2 값은 다음 그림과 같은 관계를 갖고 있다. 이상과 같은 n 2 의 관계에 따라 n 2 의 값을 구하여 sum 이라는 변수에 담아내는 컴퓨터 알고리즘을 생각할 수 있다. < 표 4-1> 은 A, B, C의 3 가지 방식으로 표현된 의사코드를 나타낸다. - 124 -
알고리즘 이해하기 A : n 2 = n*n // n을 n 과 곱한 것 // B : n 2 = n+n+ +n // n을 n 번 더한 것 // C : n 2 = (1+1+ +1)+(1+1+ +1)+...(1+1+ +1) // 1을 n번 더한 것을 n 번 더한 것 // [ 그림 4-6] 수학에서 n 2 의 관계 < 표 4-1> 수학과 컴퓨터 알고리즘의 관계 수학 관계 A : n을 n과 곱한 것 의사코드 sum = 0 (sum변수의 값을 0 으로 초기화한다) sum = n * n (n과 n을 곱하여 sum 에 저장한다) print sum (sum 을 출력한다) i = 0 (i변수의 값을 0 으로 초기화한다) sum = 0 (sum변수의 값을 0 으로 초기화한다) B : n을 n번 더한 것 WHILE i < n+1 THEN { sum = sum + n (sum과 n을 더하여 sum 에 저장한다) i = i + 1 (i를 1 씩 증가시킨다) } print sum (sum 을 출력한다) i = 0 (i변수의 값을 0 으로 초기화한다) j = 0 (j변수의 값을 0 으로 초기화한다) sum = 0 (sum변수의 값을 0 으로 초기화한다) C : 1을 n번 더한 것을 n번 더한 것 WHILE i < n+1 THEN { WHILE j < n+1 THEN { sum = sum + 1 (sum을 1 씩 증가시킨다) j = j + 1 (j를 1 씩 증가시킨다) } i = i + 1 (i를 1 씩 증가시킨다) } print sum (sum 을 출력한다) - 125 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 이상과 같이 컴퓨터 알고리즘은 의사코드로서 쉽게 표현이 가능하며, 의사코 드의 작성에 있어서 논리나 문제 해결과정, 문제 해결 방법을 찾는 것은 수학적 기반을 가지고 있음을 알 수 있다. 2. BNF(Backus-Naur Form) 표기법을 이용한 알고리즘 표현 및 작성 방법 2.1 BNF의 개념 BNF 는 프로그래밍 언어를 정의하기 위한 최초의 메타 언어였다. ALGOL 58 언어의 구문 기술을 위해 1959년에 John Backus 에 의해 처음 도입되었으며, Peter Naur에 의해 강화되어 ALGOL 60 을 정의하는데 사용되었다. BNF는 구문 요소를 나타내는 기호 < >, 둘 중 하나의 선택을 의미하는 기호, 좌변은 우 변에 의해 정의됨을 의미하는 기호 ::= 등의 메타 기호들을 사용하여 규칙을 표 현한다. BNF 의 원형은 원래 "Backus normal form" 이었으나, Peter Naur의 이름 을 넣어 오늘날과 같이 바뀌었다. 2.2 배경 언어 자체에 관심을 가지고 있었던 학자들은 언어에 대한 욕심을 알골 (ALGOL, Algorithm Language) 에 사용하였다. 그러나 또 다른 측면에서 이는 신 대륙( 미국) 에 대한 구대륙( 유럽) 의 반항이라고도 할 수 있었다. 1958년 5월 28일 취리히 공과대학에서 과학기술용 범용언어에 대한 회의(ACM/GAMM committee) 가 열렸다. 배커스도 초청되었다. 그러나 소수점을 문장의 분리기호를 쓸것인가 하는 문제로 격돌을 벌였다. 위원장인 웨그슈타인의 중재로 일단 격돌을 일으키 는 부분은 나중에 다루기로 하였다. 사소한 논쟁을 피하고 구조적인 측면을 중시 한 언어가 탄생하게 되었다. 그 결과 포트란을 따라잡지는 못했지만, 이후에 나 타날 현대적 언어에 많은 영향을 주었고, 특히 배커스 표준형식(Backus Normal Form, BNF)이 도입되어 이제 프로그래밍 언어는 하나의 언어과학으로 발전하게 되었다. 미국의 포트란 추종자들은 입출력도 제대로 없다, 구조가 모호하다는 등 으로 알골을 헐뜯었다. 그러나 유럽인들은 알골을 아꼈고, 미국에서는 알골이 시 들어 갔다. 호퍼여사는 알골을 기절할 정도로 절묘한 구조의 아름다움을 지녔지 만, 아무도 쳐다보지 않아 조금 쓸쓸할 따름이라고 표현했다. 그러나 알골설계의 철학은 미국에도 큰 영향을 미쳤다. 블록 구조, 자기호출기능(recursion), BNF형 식에 의한 구문 정의가 그것으로 이 선물을 이어받은 파스칼은 포트란을 미국의 대학에서 몰아내고, 교육용 언어로서 자리를 굳혀갔다. Backus-Naur form( 일반적으로는 BNF 또는 Backus-Naur Form 으로 알려진) 은 Algol 58 프로그래밍 언어의 문법을 묘사하기 위해 Jim Backus와 Peter - 126 -
알고리즘 이해하기 Naur 에 의해서 개발되어진 정규 수학적 방법이다. 수학자 Emil Post에 의해 초 기 작업된 것에 기초로 하여, JIm Backus가 주요하게 개발한 것으로 알려져 있 지만, 그러나 Peter Naur 가 향상시켜 그것을 유명하게 만들었다. BNF라 불리는 것도 Peter Naur가 그렇게 불렀기 때문에 그밖에 다른 사람들도 BNF라고 부르 게 된 것이다. 무엇이 허락되어지고 무엇이 허락되지 않는지에 대한 모호성과 불일치가 없 게 하기 위해서 정규적인 언어의 문법을 정의하는 것을 사용하게 되었다. 사실 상, BNF 는 다수의 문법에서 많은 수학적인 이론이 있다는 것은 매우 분명하다. 문법에 대해 하나의 BNF문법이 주어진 언어에 대한 하나의 parser 로 사실적, 기 계적으로 구성할 수 있다. 2.3 BNF 표기법 (1) 언어 구문의 형식 정의(formal definition) - - 언어를 가지고 정상적인 프로그램을 작성하는 규율들의 집합 일반적으로 형식 정의에서 이 규율들은 그대로 적용되는 공식이나 순서도를 가지고 표현 (2) BNF(Backus-Naur Form) 표기법 - 구문 형식을 정의하는 가장 보편적인 기법 ALGOL을 정의할 때 최초로 사용 - 한 언어의 구문에 대한 BNF의 정의는 생성규칙들의 집합 - 생성 규칙은 구문 규율 생성규칙은 하나의 정의를 이루는데, 규칙의 왼쪽에는 정의될 대상 (object) 을, 오른쪽에는 그 대상에 대한 정의를 표현 2.4 BNF의 형식 BNF 는 하나의 수학적인 게임 같은 종류이다. 즉 당신은 하나의 symbol(s라는 이름으로 약속된 start symbol 이 호출되어) 과 이 symbol과 함께 위치할 수 있는 주어진 규칙으로 시작한다. BNF에 의해 정의된 그 언어는 오직 다음의 이들 규칙 들에 의해 제공할 수 있는 모든 문자열의 집합이다. 그 규칙들은 production rules 라고 불린다. 그것은 다음과 같이 나타낸다. symbol := alternative1 alternative2... - 127 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) production rule 은 간단하게 := 의 왼쪽 부분에 있는 symbol이 오른쪽에 있 는 alternative 중에 하나와 대체되어야 한다고 말한다. alternative 들은 에 의 해서 구별되고, 나누어진다( 참고로 := 대신 ::= 이 사용되기도 하는데, 의미는 동일하다.). Alternative들은 일반적으로 terminal이라고 불리는 것과 symbol로 구성된다. Terminal들은 간단하게 symbol 들이 아닌 마지막 문자열의 조각들이다. 그들은 production rule에 적용되지 않기 때문에 terminal 들이라고 부른다. BNF 에서 다른 변동은 symbol들로부터 그들을 분류하기 위해 인용부호로 terminal들 을 동봉한다. 몇몇 BNF 문법에서는 공백이 그것에 대해 symbol을 가지는 것을 허락하는 장소나 다른 문법들을 읽는 자가 암시하게 이것을 남겨놓는 장소를 분 명하게 보여준다. 다음은 BNF 의 문법의 정의를 보여준다. 문장 ::= 주어 술어 주어 ::= 정관사 명사 술어 ::= 동사 직접-목적어 직접- 목적어 ::= 정관사 명사 정관사 ::= [ 그림 4-7] BNF의 문법 예 2.5 BNF 형식 사용 및 Simplified Expression (1) BNF 형식 <sentence> ::= <noun-phrase><verb-phrase> <noun-phrase> ::= <article><noun> <article> ::= a the <noun> ::= girl dog <verb-phrase> ::= <verb><noun-phrase> <verb> ::= sees pets (2) Simplified Expression <exp> ::= <exp> + <exp> <exp> * <exp> (<exp>) <number> <number> ::= <number><digit> <digit> <digit> ::= 0 1 2... 9-128 -
알고리즘 이해하기 읽기자료 [ 디지털 상품들의 투명한 DNA] 디지털 워터마킹(Digital Watermarking) 이란 정보은닉 기술의 일종으로 이미지, 영상, 음악, 문서파일 등 디지털 콘텐츠에 사람의 눈에 보이지 않는 어떤 특정 정보를 삽입하는 기술을 말하고 이 때 삽입되는 정보를 워터마크(Watermark) 라 고 한다. 워터마킹 기술은 디지털시대가 도래하기 훨씬 전인 13세기에 이탈리아 제지업자들이 자신들의 상품을 표시하고 위조품을 적발하기 위해 처음 개발되었 다. 그 후의 군사적 목적으로 비밀정보를 특수잉크나 약품 등을 이용하여 숨겨서 전달하거나, 미술작품 등에 저작자만이 식별할 수 있는 투명한 표식을 하여 위작 과 구별할 수 있도록 하거나, 또는 지폐가 젖어있는 상태에서 특정정보를 삽입한 후, 건조 후에 인쇄를 하여 빛에 비추어보았을 때 그 정보를 보이게 함으로써 위 조지폐를 식별할 수 있도록 하는 기술 등은 모두 고전적인 워터마킹이라고 할 수 있다. 이렇게 실세계의 대상물에 물, 약품 등의 액체를 이용하여 특수처리를 하던 아날 로그 워터마킹 기술이, 완벽한 복제가 손쉽게 가능해진 디지털 콘텐츠의 등장과 컴퓨터 네트워크의 발전, 전자상거래의 활성화와 콘텐츠 유료화 확산에 따라 디 지털 저작권에 보호에 대한 중요성이 높아지면서 무형의 디지털 파일에 해당 저 작물에 대한 저작권 정보가 담긴 비트 등을 추가하는 디지털 워터마킹기술로 발 전하게 된 것이다. 예를 들어 디즈니사의 미키마우스 디지털 파일에 소유권 정보를 담은 디지털 워터마크가 들어가게 되면, 이는 해당 파일은 디즈니사의 재산 임을 증명하므로 저작권침해 발생 시 정당한 권한을 가진 사람이 워터마크 정보를 추출함으로써 그 침해사실을 입증할 수 있게 된다. 또한 파일을 구입한 사람의 아이디(ID) 정보 가 콘텐츠 구입 시점에 동적으로 파일에 워터마크로 삽입되면 해당 아이디 소유 자가 구입했다는 정보가 기록되어 불법복제가 발생했을 시 이 파일의 워터마크 를 추출하여 워터마크에 기록된 해당 아이디에 불법유통의 책임을 물을 수 있게 된다. 이처럼 디지털 워터마킹은 디지털 파일 안에 숨겨진 파일 자신의 유전자정 보(DNA) 이자 이력( ) 의 역할을 하게 된다. 디지털 워터마킹 기술은 아래와 같이 기존의 콘텐츠 파일에 저작자 정보 등의 워터마크 정보를 특정 워터마킹 알고리즘을 이용하여 파일에 삽입함으로써 워터 마킹이 삽입된 새로운 파일을 생성하게 되는데, 이 때 워터마크가 파일의 특정부 - 129 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 분에 단순히 붙여지는 것이 아니라 특정 알고리즘을 이용하여 기존의 파일과 완 벽하게 뒤섞이게 된다. 이렇게 생성된 결과물은 사람의 눈이나 일반적인 프로그 램으로는 워터마크 삽입여부에 대한 식별이 불가능하며, 워터마크 생성시 사용한 특정 키 정보를 가지고 특정 소프트웨어를 이용하지 않고는 워터마크를 추출해 내거나 분리 혹은 위변조하기가 매우 어렵게 된다. 디지털 워터마킹 기술의 가장 기본적인 기능은 디지털 콘텐츠에 저작자 정보를 삽입하여 저작권 침해로 인한 분쟁발생시 소유권을 주장하기 위한 소유권 증명 (Ownership Protection) 및 디지털 콘텐츠에 구매자로 하여금 전자적 지문을 찍 게하는 방식으로 구매자의 아이디정보를 삽입한 후 불법복제로 인한 중복데이터 를 검색할 때, 불법 배포자를 식별할 수 있도록 하는 구매자 판별 (Fingerprinting) 과 같은 저작권 보호 기능이라고 할 수 있다. 또한 복제 및 사용 에 따라 워터마킹 정보가 동적으로 변하면서 특정 횟수 이상은 복제나 사용을 할 수 없도록 복제 및 사용 횟수를 제한하는 사용통제 기능, 대가를 지불하지 않 은 방송 콘텐츠에 대한 불법 이용을 감시하는 방송모니터링 기능 등의 저작권 보호기능을 제공하고 있다. 이러한 저작권 보호기능 이외에도 디지털 워터마킹은 콘텐츠의 위조 및 내용변경 여부를 판별하여 안전한 온라인 서류 발급을 가능하 게 해주는 데이터 원본 인증(Data Authentication), 콘텐츠에 대한 메타정보를 삽 입하는 라벨링(Labeling) 등으로 사용되기도 한다. 또한 알카에다가 전시 비밀통 신에 디지털 워터마킹 기술을 사용한 것처럼 기밀이 중시되는 군사 분야에서는 디지털워터마킹을 이용해 특정 정보를 숨겨서 상대방과 대화를 주고받는 비밀통 신 목적으로 사용되는 비밀채널이나 심층암호(Steganography) 로 응용되기도 한 다. 디지털 워터마킹이 디지털 콘텐츠를 보호하거나 비밀정보를 주고받기 위한 안전 하고도 효율적인 기술이 되기 위해서는 최소한 다음과 같은 특성들을 가지고 있 어야 한다. 첫째, 워터마크 삽입 후에도 원본의 변화가 거의 없고, 콘텐츠의 품질 을 저하시켜서도 안되며, 워터마크의 삽입되었는지 여부도 알아챌 수 없어야 할 것, 둘째, 삽입된 워터마크가 신호의 일그러짐이나 조건의 변화에 의해 쉽게 깨 지거나 손실되지 말 것, 셋째, 워터마크를 콘텐츠로부터 분리하거나 훼손 및 변 형을 통해 디지털워터마킹을 무력화시키려는 여타의 시도에 강해야 할 것, 넷째, 추출된 워터마크가 확실한 소유권을 입증할 수 있도록 삽입된 정보의 정확성을 유지할 것, 다섯째, 워터마크 정보 추출시 원본 콘텐츠는 불필요하고 워터마킹된 콘텐츠만으로 추출이 가능할 것, 여섯째, 워터마크 삽입시 사용된 알고리즘의 키 값 등을 알고 있을 경우에만 워터마크 추출이 가능해야 할 것, 일곱째, 정당한 권한이 있을 경우 필요에 따라 워터마크안의 정보를 변경할 수 있어야 하며 추 - 130 -
알고리즘 이해하기 가도 가능할 것, 그리고 마지막으로 현재 적용된 알고리즘이 차후에 쉽게 깨질 수 있게 될 경우 더욱 강화된 새로운 알고리즘을 쉽게 적용할 수 있어야 할 것 등의 주요한 특성을 갖고 있어야 한다. 고전적 워터마킹부터 지금까지의 디지털 워터마킹 기술이 콘텐츠에 저작권 정보 를 숨겨넣음으로써 콘텐츠에 대한 불법행위들이 발생했을 경우 저작권 침해의 증거자료로 삼는 수동적이고 방어적인 성격이었다면, 최근의 디지털 워터마킹은 웹 크롤러(Web Crawler) 를 이용하여 웹 공간을 검색하면서 불법복제 및 무단이 용에 대한 실시간 감시와 위치 추적을 하거나, 합법적으로 구매한 콘텐츠도 일정 정도 사용하거나 복사를 하면 자동으로 쓸모없는 파일로 만들어버리는 등의 능 동적이고 적극적인 성격으로 변화하고 있다. 또한, 워터마킹 기술 단독이 아니라 강한 암호화 기술 및 또 다른 저작권 보호기술인 DRM과 결합됨으로써 더 강력 하고 효과적인 저작권 보호 및 유료 콘텐츠 관리의 촘촘한 그물망을 만들기 위 한 다양한 시도들이 이루어지고 있다. < 출처 : 인터넷사이트 6 > - 131 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 1. 참고문헌 1 2 3 4 참고자료 정보교육학회 교재개발분과위원회(2004), 컴퓨터과 교수법 및 교재연구, 생능 출판사 정보교육학회 교재개발분과위원회(2004), 컴퓨터 교육론, 삼양미디어 박정호(2003), 컴퓨터 알고리즘, 상조사 Cormen Thomas H(2001), Introduction to Algorithms, 2/E, MIT 5 Horowitz Ellis, Sahni Sartaj, Anderson-Freed S(1992), Fundamentals of 6 Data Structures in C, Computer Science 원유헌(1991), 프로그래밍 언어론, 정익사 2. 인터넷 사이트 1 http://www.ygreen.org 2 http://www.dgedu.net 3 http://imagebingo.naver.com 4 http://mathman.pe.kr/ 5 http://www.gamedev.net/reference/programming/features/pdl/default.asp 6 http://networker.jinbo.net - 132 -
알고리즘 이해하기 정보과학-4주 발전 단원 1 활동지 4-1(1) 교육청 영재교육원/ 영재학급 중학교 이름 의사코드를 사용했을 때의 장단점을 정리해봅시다. - 133 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 정보과학-4주 발전 단원 1 활동지 4-1(2) 교육청 영재교육원/ 영재학급 중학교 이름 의사코드를 사용할 때와 순서도를 사용할 때와의 차이점과 장단점을 비교해 봅시다. - 134 -
알고리즘 이해하기 정보과학-4주 발전 단원 1 활동지 4-1(3) 교육청 영재교육원/ 영재학급 중학교 이름 [ 팀별 연구 프로젝트 ] 일상생활의 알고리즘을 설계하여 의사코드로 표현해봅시다. - 135 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 정보과학-4주 발전 단원 1 활동지 4-1(4) 교육청 영재교육원/ 영재학급 중학교 이름 서로 다른 두 수 a 와 b 중에서 큰 수를 구하는 알고리즘을 의사코드로 표현 해봅시다. - 136 -
알고리즘 이해하기 정보과학-4주 발전 단원 1 활동지 4-1(5) 교육청 영재교육원/ 영재학급 중학교 이름 x 의 일차부등식 ax > b 의 해를 구하는 알고리즘을 의사코드로 표현해봅시 다. - 137 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 정보과학-4주 발전 단원 1 활동지 4-2(1) 교육청 영재교육원/ 영재학급 중학교 이름 생활속에 숨어있는 알고리즘을 찾아서 정리해봅시다. - 138 -
알고리즘 이해하기 정보과학-4주 발전 단원 1 활동지 4-2(2) 교육청 영재교육원/ 영재학급 중학교 이름 등교 알고리즘을 작성하기 위한 조건을 정리해봅시다. - 139 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 정보과학-4주 발전 단원 1 활동지 4-2(3) 교육청 영재교육원/ 영재학급 중학교 이름 여러분이 생각한 등교 알고리즘을 순서도로 표현해봅시다. - 140 -
알고리즘 이해하기 정보과학-4주 발전 단원 1 평가도구(1/1) 교육청 영재교육원 중학교 이름 교사용 번호 측정요소 측정의 근거 1점 2점 3점 4점 5점 창의성 독창성 기존의 알려진 방법과는 확연히 구분 되는 형식, 이론, 주장 등이 존재하는 가? 자신만의 참신하고 독특한 아이디어 를 제시하고 있는가? 논리성 전개과정과 문제해결에서 전후가 명 확하며, 원인과 결과 및 사용되는 이 론적 배경이 분명하다. 다양성 복수의 상이한 요소, 부분 또는 수준 들을 포함하고 있다. 가치성 주제나 내용이 명확한 이슈를 포함한 다. 기능적 솜씨 논리적으로 치밀하며, 도입 전개 결론 에 이르는 과정이 치밀하다. 유용성 발전 가능성 내용과 결과를 실제에 적용하여 사용 할만한 가치가 있다. 앞으로 새로운 산출물, 혹은 연구 결 과를 도출할 수 있는 아이디어를 포 함한다. - 141 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 5주 주제 생활 속 알고리즘 구현하기 ( 등교 알고리즘 ) 본 활동은 알고리즘 이해하기 단원의 네 번째 시간으로서 알고리즘의 전문 적인 표현방법을 생활 속 알고리즘에 적용시키는 방법을 학습한다. 일상생활 속 에는 다양한 알고리즘들이 존재한다. 즉, 생활 속에서 다양한 문제 상황이 발생 하며 이를 해결하기 위하여 환경에 맞게 단계별로 분석하게 되고 원하는 결과를 얻을 수 있게 된다. 특히 이번 차시에서는 생활 속 알고리즘 중 등교 알고리즘 을 작성하고 이를 순서도와 의사코드를 이용하여 표기하는 방법에 대해 학습한 다. 미리 준비한 학생들의 등교 알고리즘과 다양한 조건 및 환경을 제시한 선생 님의 등교 알고리즘을 비교하고 스스로 알고리즘을 작성하고 표현하는 능력을 배양한다. 교육 목표 1. 2. 3. 5. 정보과학 분야 사고력 신장 정보과학 분야 적성 강화 정보과학 분야 특정지식 습득 정보과학 분야 일반능력신장 교육 내용 1-2. 논리전개 및 추론능력 2-3. 정보과학과 실생활과의 연계성 3-1. 알고리즘 설계 5-1. 자율적 탐구 및 학습능력 5-2. 상호작용과 의사소통능력 - 142 -
알고리즘 이해하기 세부 교육 내용 알고리즘의 정당성에 대해 학습한다. 알고리즘이 되기 위한 조건에 대해 학습한다. 알고리즘의 정당성 증명방법에 대해 학습한다. 학습자가 준비한 등교 알고리즘 에 대해 발표를 실시한다. 발표한 내용에 대한 토론을 통해 문제점을 도출한다. 도출된 문제의 해결을 위한 효율적인 등교 알고리즘의 구현방법을 찾는다. 등교 알고리즘의 구상 및 설계에 대해 학습한다. 등교 알고리즘의 표현 방법에 대해 학습한다. 다양한 알고리즘의 표현 방법을 팀별로 연구한다. 교육방법 발표와 토론, 강의, 주제별 연구 프로젝트 - 143 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 교육목표 < 교육목표 - 교육내용 - 세부교육내용 - 교육방법의 유기적 연관성 > 교육내용 세부교육내용 교육방법 1.정보과학 분야 1-2. 논리전개 사고력 신장 및 추론 능력 학습자가 준비한 등교 알고리즘 에 2-3. 정보과학 대해 발표를 실시한다. 발표와 토론 2.정보과학 분야 과 실생활과 발표한 내용에 대해 토론한다. 적성 강화 의 연계성 알고리즘의 정당성에 대해 설명한다. 3.정보과학 분야 3-1. 알고리즘 특정지식 습득 설계 5-1. 자율적 탐 알고리즘이 되기 위한 조건에 대해 설명한다. 알고리즘의 정당성 증명방법에 대해 설명한다. 등교알고리즘의 구상 및 설계를 설명한다. 등교 알고리즘의 표현 방법을 설명한다. 구와 학습 발표한 내용에 대해 토론한다. 5.정보과학 분야 능력 다양한 알고리즘의 표현 방법을 일반능력 신장 5-2. 상호작용 팀별로 연구한다. 과 의사소통 능력 강의 발 표 와 토 론, 주제별 연구 프로젝트 준비물 교사용 학생용 관련 시청각 자료, 인터넷 검색용 PC 학생용 활동지 필기도구 사진 - 144 -
알고리즘 이해하기 교수학습 활동 학습 단계 교수학습 활동 시간 ( 총 90 분 ) 지도초점 및 유의점 도입 활동 이번 차시의 세부교육내용을 소개한다. 5 학습자가 준비한 발표 내용에 대하여 간단한 질문 과정을 5 학생 스스로가 진행할 수 있도록 도우면서, 모든 학 통해 준비 정도를 파악한다. 생들이 참여하도록 독려한 시간이 부족할 경우 등교 알 고리즘의 표현 에 대하여 발표 5 다. 본 활동 할 학습자를 선정한다. 발표자의 내용 중에서 토론이 가능한 내용을 선정하여 토론 20 을 진행한다. 토론 내용을 종합 정리한다. 알고리즘의 정당성과 등교 알 5 20 등교 알고리즘의 이해를 도 우면서 순서도를 활용하여 고리즘의 다양한 구현 방법에 등교 알고리즘을 구현할 수 대한 강의를 진행한다. 있음을 설명한다. 정리 활동 본 시간에 배운 내용 정리 다음 주 교육에 대한 안내와 준비 사항을 안내한다. 20 10 학생 스스로가 수업 알고리 즘 작성을 진행할 수 있도 록 이해를 도우면서, 모든 학생들이 참여하도록 독려 한다. 주요 초점 질문 1. 알고리즘의 정당성을 증명하는 방법에는 무엇이 있을까? 2. 생활속의 알고리즘에는 어떤 것들이 있을까? 3. 등교 알고리즘을 작성하기 위해 필요한 것은 무엇일까? 4. 등교 알고리즘을 알고리즘 표현 방법으로 표현할 수 있는가? - 145 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 지도활동 도입 활동 1) 이번 차시의 세부 교육 내용을 소개합니다. 알고리즘의 정당성에 대해 학습한다. 알고리즘이 되기 위한 조건에 대해 학습한다. 알고리즘의 정당성 증명방법에 대해 학습한다. 학습자가 준비한 등교 알고리즘 에 대해 발표를 실시한다. 발표한 내용에 대한 토론을 통해 문제점을 도출한다. 도출된 문제의 해결을 위한 효율적인 등교알고리즘의 구현방법을 찾는다. 등교 알고리즘의 구상 및 설계에 대해 학습한다. 등교 알고리즘의 표현 방법에 대해 학습한다. 본 활동 1. 등교 알고리즘의 표현에 대해서 발표하고 토론해봅시다. 활동지 4-2(3) 사용 2. 발표 및 토론 내용을 종합하여 정리하면서 학생 스스로 결과를 정리할 수 있도록 지도합니다. 1) 발표자와 자신의 활동지 내용을 비교하여 장단점을 분석해봅시다. 2) 자신의 활동지를 스스로 평가해봅시다. 3. 강의 내용 1) 알고리즘의 정당성에 대해 강의합니다. 필수정보 1. 알고리즘의 정당성 참조 2) 생활 속에 숨어있는 알고리즘에 대해 강의합니다. 필수정보 2. 생활속에 숨어있는 알고리즘 참조 3) 등교 알고리즘의 표현방법에 대해 강의합니다. 필수정보 3. 등교 알고리즘 참조 - 146 -
알고리즘 이해하기 정리 활동 1. 학습 내용 정리 1) 여러분이 순서도로 작성한 등교 알고리즘을 의사코드로 변환해봅시다. 활동지 5-1(1) 사용 2) 등교 알고리즘의 정당성을 증명하고 판단해봅시다. 활동지 5-1(2) 사용 3) 팀별로 여러분이 학습한 유클리드 호제법은 두 개의 정수 m 과 n (m>n) 이 주어졌을 때 최대공약수는 m-n 과 n 의 최대공약수를 구하는 방법으로 바 꿀 수 있다. 입니다. 이를 증명하는 방법을 순서도와 의사코드로 나타내봅시 다. 또한 두 수 24 와 18 로 작성한 순서도와 의사코드가 정확한지를 대입하여 증명해봅시다. 활동지 5-1(3) 사용 2. 다음 주 교육 내용 안내 1) 수업 알고리즘을 작성하기 위한 조건을 정리해봅시다. 활동지 5-2(1) 사용 2) 여러분이 생각한 수업 알고리즘을 순서도로 표현해봅시다. 활동지 5-2(2) 사용 - 147 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 평가 평가 내용 등교 알고리즘을 발표함으로써 논리전개 및 추론능력과 정보과학과 실생활 과의 연계 능력을 갖게 되었는지 평가한다. 알고리즘의 정당성, 알고리즘이 되기 위한 조건, 알고리즘의 정당성 증명방 법, 등교 알고리즘의 구상 및 설계를 통해 알고리즘 설계 방법을 학습하였는 지 평가한다. 학습자가 미리 준비한 활동지와 본차시에 작성한 활동지, 학습자의 발표 내 용, 토론 참여도 등을 종합적으로 평가하여, 논리전개 및 추론능력, 자율적 탐구와 학습능력, 상호작용과 의사소통능력이 신장되었는지를 평가한다. 평가 방법 발표 및 토론 평가 : 도입활동 1 번, 본활동 2번 활동시 평가 그룹 프로젝트 산출물 평가 : 정리활동 1번 3) 활동시 평가 평가도구 1/1 평가 기준 사용 등교 알고리즘 작성 시에 고려사항들이 포함되었는가? 등교 알고리즘을 정확히 표현하였는가? 독창적인 방법으로 등교 알고리즘을 표현하였는가? 평가 유의점 토론 시 학생들이 적극적으로 참여하도록 지도한다. - 148 -
알고리즘 이해하기 필수정보 1. 알고리즘의 정당성 어떤 문제 P를 해결하기 위해 고안된 알고리즘이 문제 P의 입력 데이터에 대 한 정답을 제대로 계산해 내야 한다는 것은 당연하다. 이러한 것을 알고리즘의 정당성(Correctness) 이라고 하는데 이런 조건을 갖추지 못한 것은 알고리즘이라 고 할 수 없다. 또 계산이 언젠가는 반드시 종료한다는 보증도 필요한데 이러한 종료조건은 자칫 빠뜨리기 쉬우므로 조심해야 한다. 어떤 문제에 대한 알고리즘 이 절대로 틀린 답을 계산해 내지는 않지만 답을 계산해 내게 되는지 어떤지 몰 라서는 알고리즘으로서는 실격이기 때문이다. 따라서 알고리즘이 되기 위한 조건 을 정리하면 다음과 같다. 조건 1. 어떠한 입력 데이터에 대해서도 틀린답은 계산해 내지 않을 것. 즉, 답을 출력할때는 반드시 그 답이 정확할 것. 조건 2. 어떤 입력 데이터에 대해서도 유한 시간내에 답을 낼 것. 즉, 반드시 계산을 끝낼 것. 첫 번째 조건은 알고리즘이 결과를 출력할 때는 반드시 정답만을 낸다는 것 이다. 그러나 문제 P에 대한 알고리즘 A가 첫 번째 조건을 만족한다고 해서 알 고리즘 A가 문제 P 에 대해서 반드시 답을 계산해 낸다고는 할 수 없다. 이것을 보장하는 것이 두 번째 조건이다. 여기서 말하는 어떠한 입력 데이터에 대해서 라는 것은 주어진 문제의 조건에 맞는 모든 입력 데이터란 뜻이다. 가령 유클리 드 호제법의 경우에 실수 데이터를 입력시켰을 때 어떤 일이 생길지 모르지만 거기까지 생각할 필요가 없다는 것이다. 문제의 조건에 맞지 않는 데이터는 사전 검사에 의해 배제된다고 가정한다. 알고리즘의 정당성을 증명하기 위한 가장 단순한 방법의 하나로 테스팅법 (testing method) 이라는 것이 있다. 테스팅법으로 정당성을 증명할 경우에는 그 문제의 조건에 맞는 임의의 데이터를 입력했을 때 그 데이터에 대한 컴퓨터의 계산 결과를 미리 알고 있는 정답과 비교한다. 이것을 모든 데이터에 대해서 반 복함으로써 알고리즘의 정당성을 확인하는 방법이다. 그러나 이 방법은 비용이 너무 많이 들고 시간이 너무 많이 걸리며 번거롭기 때문에 이 방법은 정당성을 검증하기에는 부적합하다. 왜냐하면 알고리즘의 정당성에 관한 모든 의문을 없애 - 149 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 기 위해서는 가능한 모든 데이터에 대해 이러한 검증을 해야한다. 그러나 모든 데이터에 대한 결과를 미리 알고 있다면 프로그램을 작성하는 의미가 없을 뿐 아니라 실제 문제에 있어서는 이와 같이 프로그램을 모든 경우에 대해 테스트 하는 것은 거의 불가능하다. 가령 어떠한 컴퓨터를 이용하여 두 수의 덧셈을 할 경우에는 1마이크로 초가 걸리고 까지의 절대값을 나타낼 수 있다고 가정하 자. 그러면 개의 서로 다른 덧셈이 있을 수 있기 때문에 초 = 년 이 걸리게 된다. 이와 같이 모든 경우를 테스트 하는 것은 무의미하고 불가능하 다. 따라서 알고리즘이 제대로 실행된다는 정당성을 증명하기 위해서는 앞에서 말한 두 가지 조건이 성립한다는 것을 따로따로 이론적으로 증명하는 것이 일반 적이다. 다음은 유클리드 호제법을 이용하여 알고리즘의 정당성을 증명하는 방법 을 설명하기로 한다. 1.1 유클리드 (Euclid) 호제법의 정당성 유클리드 호제법은 두 양의 정수 m과 n(m>n) 의 최대공약수를 구하는 것이 다. 이 방법은 다음과 같은 알고리즘으로 수행되어 진다. 1 m을 n으로 나눠서 나머지를 r 로 한다. 2 r=0 이면 알고리즘을 종료한다. 이때 n 이 최대공약수가 된다. r>0 이면 3으로 간다. 3 n의 값을 m에 대입하고 r의 값을 n 에 대입한 후 1로 되돌아 간다. 면, 유클리드 호제법의 정당성을 증명해 보자. m과 n의 최대공약수를 d 라고 하 로 나타낼 수 있다. 단, m' 과 n' 은 서로 소인 양의 정수이다. 이때 몫을 u로 하 면 다음과 같이 나타낼 수 있기 때문에 m을 n으로 나눈 나머지 r도 d의 배수가 된다. 또 m' 과 n' 이 서로 소이므로 n' 과 m'-u n' 도 서로 소가 된다. 이상의 사실로부 터 유클리드 알고리즘을 한번 실행한 후의 변수 m과 n이 가진 값의 최대공약수 와 제일 처음에 변수 m과 n 이 가진 값의 최대공약수는 같다는 것을 알 수 있다. - 150 -
알고리즘 이해하기 이 관계를 유지하면서 계산을 계속해서 m이 n으로 나누어 떨어지게 되면 m이 n 으로 나누어 떨어졌을 때의 n 의 값이 최대공약수가 된다. 이상으로 유클리드 알고리즘의 정당성에 관한 첫 번째 조건이 증명된 셈이다. 이 증명은 유클리드 알고리즘이 계산 결과를 출력하는 경우에는 그것이 정답이 라는 것을 나타낼 뿐이고 반드시 계산이 끝날지 어떨지에 대해서는 전혀 언급하 지 않고 있다는 점을 유의해야 한다. 즉 두 번째 조건은 따로 증명하지 않으면 안된다. 계산이 끝났다는 것을 증명하기 위하여 여기서는 변수 n의 변화에 주목해 보 자. 알고리즘 실행 전의 m을 n 으로 나눈 나머지(n 보다 적은 수) 를 새로운 n의 값으로 한다는 사실로부터 변수 n의 값은 알고리즘을 한번 실행할 때마다 감소 된다는 것을 알 수 있다. n이 매번 감소되고 n의 값이 0이 되면 알고리즘은 끝나 기 때문에 최악의 경우에도 n의 초기값에 해당하는 횟수만큼 1-3의 세 스텝 을 실행하면 n의 값이 0이 되어 두 번째 단계에 명시되어 있는 종료 조건을 만 족하게 되는데 이것으로서 두 번째 조건이 증명되었다. 1.2 정당성의 증명법 일반적으로 알고리즘의 정당성은 앞에서 설명한 형식으로 증명하는데 첫 번 째 조건을 증명하기 위해서는 알고리즘 혹은 프로그램의 각 문장에 있는 변수가 갖는 값 사이에 성립하는 어떤 조건식을 증명하면 된다. 유클리드 알고리즘의 예 에서는 최초의 m과 n의 값을 각각 와 라고 하면 첫 번째 단계를 통과할 때 의 변수 m과 n 이 가지는 값에 대해서 다음 식이 성립한다. m과 n 의 최대공약수 = 와 의 최대공약수 이 등식이 유클리드 알고리즘의 첫 번째 단계에서 항상 성립하는 조건식이다. 이 와같이 프로그램의 특정 장소에 있는 변수가 갖는 값 사이에 성립하는 조건식을 주장(assertion) 이라 하는데 특히 루프문을 한번 반복할 때마다 항상 성립하는 주 장을 루프 불변 조건(loop invariant condition) 이라고 한다. 알고리즘의 정당성을 증명하기 위한 하나의 기법으로 루프 불변 조건이 성립하는 것을 증명하는 방법 이 있다. 루프 불변 조건은 정당성 증명 이외에 알고리즘을 설계하는데도 유용하 게 이용될 수 있기 때문에 알고리즘 이론 분야에서는 매우 유효한 개념이라고 할 수 있다. 루프 불변 조건이 성립하는 것을 증명하기 위해서는 다음의 사항을 증명하면 된다. - 151 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 1 2 반복이 시작되기 직전에 루프 불변 조건이 성립하는 것 루프 불변 조건이 성립할 때 반복을 한번 실행한 후 다시 조건이 성립한 다는 것 위의 두 가지 사항은 수학적 귀납법에 의한 증명법과 유사하게 증명할 수 있 다. 그러나 주장과 루프 불변 조건만으로는 두 번째 조건인 알고리즘의 종료성은 증명되지 않는다. 항상 조건이 성립한다는 것 즉 출력 결과가 틀리지 않다는 것 을 증명하는 것만으로는 계산이 끝난다는 것은 보장되지 않기 때문이다. 이것을 증명하기 위한 하나의 방법으로서는 계산이 끝날 때까지의 최대 반복 횟수를 나 타낼 수 있으면 된다. 유클리드 호제법의 종료성에 대한 증명과 같이 최대 반복 횟수가 단조 감소한다는 점과 최대 반복 횟수의 하한값을 나타내는 것이 증명 에 가장 많이 쓰이는 방법이다. 종료성 2. 생활속에 숨어있는 알고리즘 우리가 무심코 지나치는 일상생활 속에는 다양한 알고리즘이 존재한다. 이는 하루에도 여러 번씩 문제를 해결해야 하는 상황을 만나게 된다는 것을 의미한다. 어디를 갈 때도 버스를 탈것인지 전철을 탈것인지부터 시작하여 어느 방향으로 가는 것이 빠른지에 이르기까지 생활 속에서 다양한 문제를 해결해야 한다. 그때 마다 여러 가지 방법 중에서 가장 적합한 방법을 찾아야 한다. 예를 들어 아버지 들이 회사에 출근할 때 선택할 수 있는 경로는 대개 하나로 국한되지 않는다. 버 스를 타고 나가서 전철을 탈수도 있고 아니면 전철역까지 걸어가서 전철을 탈수 도 있다. 또한 아예 버스를 두 번 갈아타고 갈 수도 있다. 이런 상황에서 출근시 간, 교통상황, 비용등과 같은 여러 가지 변수를 고려해서 최선의 경로를 선택해 야 한다. 이러한 선택을 내리는 과정은 가장 효율적인 알고리즘을 찾으려고 노력 하는 것도 동일한 과정이다. 다른 생활속 알고리즘을 생각해 보자. 극장에서 매표소가 여러 개 있을 때 표 를 예매하는 경우나 놀이공원 입구에서 여러 매표소에 많은 사람들이 줄을 서고 있을때 어느 위치에 줄을 서야 빠르게 표를 예매할 수 있을 것 인가 하는 문제 이다. 운이 좋은 경우에는 줄이 빠르게 빠져서 일찍 표를 예매할 수도 있으나 머피의 법칙 에 따르면 반대의 경우가 훨씬 많았다. 따라서 줄을 설 때에 가장 짧은 줄이 어디인가를 순간적으로 파악하는 능력이 중요하다. 그러나 줄의 길이 만을 따지는 것은 하수의 방법이고 줄서기의 고수들은 언제나 공식에 입각해서 줄을 선택하였다. 이것이 알고리즘을 사용하느냐 하지 않느냐의 차이이다. 고수 들은 다음과 같은 식에 의해서 줄을 선택하였다. - 152 -
알고리즘 이해하기 이 공식에서 T는 줄을 서는데 걸리는 총 시간이고 L 은 현재 줄의 길이, V는 줄 이 줄어드는 속도 마지막으로 K는 여러 가지 다른 환경변수를 고려한 상수를 의 미한다. 즉, 줄이 짧다고 무조건 선택하는 것이 아니라 줄이 줄어드는 속도와 줄 에 서 있는 사람들의 분위기, 환경적인 변수까지 모두 고려했던 것이다. 순간적 인 선택이 운명을 달리하는 예는 아주 급한 상황에서 화장실 문 앞에 줄을 설때 가 대표적이다. 내가 서 있는 줄보다 다른 줄이 더 빠르게 줄어들어 더 늦게 온 사람이 먼저 화장실에 들어가는 것을 바라보면서 탄식하는 경우가 드물지 않게 나타난다. 이러한 상황은 비단 화장실 뿐만 아니라 현금 자동 지급기에서도 나타 날 수 있다. 이와 같이 생활속에는 다양한 알고리즘들이 숨어 있고 어떻게 알고 리즘을 설계하느냐에 따라 결과는 크게 달라지는 것을 알 수 있다. 3. 등교알고리즘 3.1 등교 알고리즘의 표현 방법 우리는 아침마다 학교에 등교한다. 학교에 등교할 때에는 지각하지 않아야 하 고 그날 수업 준비물을 가지고 가야 한다. 그리고 학교에는 대부분 아침을 먹는 시간이 정해져 있지 않기 때문에 아침을 먹고 등교해야 한다. 이 상황을 고려하 여 다음과 같은 알고리즘을 순서대로 적을 수 있다. 아침에 기상한 후부터 시작 한다. (1) 오늘 학교 수업에 필요한 준비물과 오늘 필요한 용돈을 모두 준비했는지 생각해 보고 준비물을 챙긴다. (2) 시계를 본다. (3) 시간 여유가 있으면 아침 식사를 한다. (4) 시간 여유가 없으면 아침 식사를 하지 않고 간식을 챙긴다. (5) 이를 닦고 세면을 한다. (6) 일기 예보에 따라 옷을 입는다. (7) 날씨에 비나 눈이 오면 우산을 챙긴다. (8) 부모님께 인사를 하고 집을 나온다. (9) 시간 여유가 있으면 학교까지 걸어간다. (10) 시간 여유가 없으면 학교로 가는 버스를 탄다. (11) 학교 근처에서 구입해야할 수업 준비물이 있으면 문구점에서 구입한다. (12) 학교 정문에서 선생님께 인사를 한다. - 153 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) (13) 첫 번째 수업 시간에 대한 준비를 한다. (14) 수업 알고리즘을 수행한다. 3.2 등교 알고리즘의 분석 및 조건 찾기 앞에서 우리는 등교 알고리즘의 표현방법에 대해 살펴보았다. 그럼 등교 알고 리즘을 분석하고 등교 알고리즘의 조건을 알아보자. 등교라는 것은 단지 학교에 간다는 것 뿐 아니라 아침에 외출한다는 것도 의미한다는 것이다. 이에 학교에 가기 위한 준비 뿐 아니라 아침에 외출을 하기 위한 준비도 필요하다. 학교에 등 교할 때 생각해야 알고리즘의 조건은 우선 지각하지 않아야 한다는 것과 오늘 학교 수업에 필요한 준비물을 준비해야 한다는 것이다. 한편 아침에 외출할 때 생각해야 알고리즘의 조건은 오늘 필요한 용돈을 준비해야 한다는 것과 한창 자 라나는 청소년이기 때문에 아침 등교 시에 아침 식사를 하고 외출을 해야 한다 는 것이다. 아울러 세면을 하고 오늘 날씨에 따라 옷을 입고 우산을 챙기는 것이 다. 예시한 알고리즘을 기반으로 등교 알고리즘의 조건으로 제시된 것을 만족시 키기 위한 추가적인 알고리즘들을 학생들이 스스로 추가하여 구성해 보길 바란 다. 3.3 등교 알고리즘의 순서도 표현 순서도를 작성할 때는 처음에는 개략적인 흐름을 처리하여 블록별로 나타내 고 단계적으로 구체화시켜 나가는 것이 좋다. 보통 순서도는 다음과 같은 규칙을 지켜 작성한다. (1) 표준 기호를 사용하여 누구나 이해하기 쉽도록 작성한다. 표준 기호는 2 차시에서 학습하였다. 그때 배운 순서도 기호를 사용한다. (2) 처리흐름 방향은 위에서 아래로, 왼쪽에서 오른쪽으로 하고 흐름이 서로 교차되지 않도록 작성한다. (3) 순서도 내부에 처리사항을 간략하게 기술하고 필요하면 기호 외부에 주석 을 붙여 그 내용을 명확히 할 수 있다. (4) 조건에 따라 처리순서가 다를 때는 판단 기호를 작업 순서 흐름에 따라 나누어 그린다. (5) 순서도의 처음과 끝은 단말기 기호를 이용하여 표시하고 분기 및 반복 처 리 내용을 명확하게 한다. (6) 복잡한 문제에 대한 순서도는 처음에는 개괄적으로 작성한 다음 각 논리 적 단위별로 자세하게 구성해 가면서 점차 구체화시켜 나간다. - 154 -
알고리즘 이해하기 이러한 순서에 기반 하여 등교 알고리즘을 순서도로 작성하여 보자. [ 그림 5-1] 등교 알고리즘의 순서도 3.4 등교 알고리즘의 의사코드 표현 순서도의 작성이 다 끝났으면 이번에는 의사코드를 작성하도록 한다. [ 그림 5-1] 에 표현된 등교알고리즘의 의사코드는 다음과 같다. - 155 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) START 수업 준비물과 용돈을 챙긴다. 시계를 본다. IF 시간 여유가 있는가? THEN 아침을 먹는다. ELSE 간식을 챙긴다. ENDIF 이를 닦고 세면을 한다. 일기 예보에 따라 옷을 입는다. IF 비나 눈이 오는 날씨인가? THEN 우산을 챙긴다. ENDIF 부모님께 인사하고 집을 나온다. IF 시간 여유가 있는가? THEN 학교까지 걸어간다. ELSE 학교로 가는 버스를 탄다. ENDIF IF 구입할 수업 준비물이 있나? THEN 준비물을 구입한다,. ENDIF 정문에서 선생님께 인사한다. 첫 번째 수업 시간에 대한 준비를 한다. END GOTO 수업 알고리즘 [ 그림 5-2] 등교 알고리즘의 의사코드 - 156 -
알고리즘 이해하기 [ 차세대 PC] 읽기자료 1. 기술 개요 가. 유비쿼터스 컴퓨팅 시대의 차세대 PC 대표적인 개인 정보이용 수단으로 사용되는 PC 가, 성능이나 속도 같은 기계 중심에서 소형화, 모바일, 휴대 착용 및 지능화된 기능을 더해 사용자의 편리성 등 을 강조한 인간 중심의 컴퓨터로 진화하고 있으며, 인터넷을 기반으로 하는 정보 통신 환경하에서 사용자들은 더 이상 PC 에만 의존하지 않게 되었다. 또한 언제, 어디서나 인터넷에 쉽게 접속할 수 있는 정보통신 이용환경의 변화는 사용자가 원하는 정보를 찾아가는 기존 정보서비스 개념에서 벗어나 원하는 정보가 편재 되어 있는 유비쿼터스 정보서비스 시대로 접어들고 있음을 보여주고 있다. MIT 미디어랩의 니콜라스 네그로폰테 교수는 ' 지금까지 PC는 기술의 발전으 로 더욱 빠르고 가볍게 많은 정보를 저장할 수 있게 되었지만, 미래 PC는 사용 자의 문화(culture) 가 용도와 가치를 결정하는 데 큰 영향을 미치게 될 것이므로 속도가 얼마나 빠른가의 경쟁보다는 디지털 시대의 문화를 얼마나 잘 담아 낼 수 있느냐가 선택의 기준이 될 것이다' 라고 공언한 바 있다. 이는 얼마나 다양한 일을 하는가 보다 얼마나 쉽고 간편하게 일을 하게 하는가, 즉 단순성(simplicity) 이 미래 디지털 산업의 성패를 좌우하는 요소임을 시사하고 있다. - 157 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) < 표 1> 기존 PC와 차세대 PC의 차이점 기존 PC o 문서작성, 인터넷 검색, 멀티미디어 등 다양한 기능을 수행하기 위해 하나에 집약시킨 중앙 집중형 o 차세대 PC 정보 이용 환경과 사용 목적에 따라 특화된 기능을 수행하기 위해 여러 기능들을 따로 떼어낸 분산형 o PC, 노트북 o 휴대형 및 입고 다니는 컴퓨터 o 본체, 주변기기 일체형 구조 o 유무선 LAN 접속 o 본체, 주변기기 분리형 구조 o 웨어러블 네트워크 접속 o 무겁고 사용 불편 o Boot up 시간 소요 o 일정시간 학습 필요 o 성능이나 속도 등 기계중심 o 핸드헬드, 착용형 o 사용하기 편리 o 직관적 사용자 인터페이스 o 일상생활에 친숙하고 사용이 편리한 인 간중심 o 윈텔( 윈도우, 인텔) 시장 지배력 o 특정회사의 시장 주도 곤란 차세대 PC 는, 종합정보기기 개념의 PC와는 달리 정보이용 환경과 사용 목적 에 따라 단순하면서도 소비자 중심의 사용하기 편리하고, 네트워킹이 가능한 컴 퓨팅 기술을 포함한 차세대 디지털 정보기기를 총칭한다. 그리고 PC가 제공하는 웹브라우징, 전자메일, 문서작성, 영상편집, DB 검색, MP3, 영상전화, 게임 등과 같 은 컴퓨터 처리 능력이나 성능 중심에서 웹패드, PDA(Personal Digital Assistant, 개인정보단말기), 스마트폰, 셋톱박스, 웨어러블 컴퓨터 등 용도별로 특화된 기능성 정보기기로서 네트워크를 통해 사용자에게 편리한 서비스를 제공 하는 것을 목적으로 한다. 따라서 차세대 PC는 일상생활에서 더욱 친숙하고 인 간 중심의 사용하기 편리하며 휴대, 혹은 착용 가능한 형태로 의사소통의 효율성 과 자연성을 극대화시켜 언제 어디서나 사용자 요구에 응할 수 있는 유비쿼터스 환경을 제공해 준다. 나. 차세대 PC 요소기술 차세대 PC는 인간 친화적인 정보기기를 구성하기 위한 것으로서 휴대성과 편 의성을 개선시키기 위해서는 언제, 어디서나 컴퓨팅을 실현할 수 있어야 하고, 항시 들고 다닐 수 있을 정도의 소형 컴퓨팅 기기를 통해 유비쿼터스 컴퓨팅 서 비스를 제공할 수 있으며, 컴퓨팅 기능이 주위 환경에 내재되어 이로부터 정보를 - 158 -
알고리즘 이해하기 획득하여 활용하거나 사용자가 인식하지 못하는 상태에서 컴퓨팅 기능을 수행할 수 있어야 한다. 따라서 이러한 요구 기능을 제공하기 위한 차세대 PC의 핵심 요소기술로 는 착용성, 저전력, 소형화 기술에 의한 스마트웨어 등과 같은 플랫폼 기술, 재 래식 키보드, 마우스, 모니터를 대체할 초소형 키보드 및 디스플레이 등을 포함하 여 양손의 사용을 자유롭게 하는 입출력 장치 기술, 음성 시각 촉각 후각 미 각 등 오감 정보처리 기술을 위한 사용자 인터페이스 기술, 그리고 데이터 송수신을 위한 웨어러블 네트워크 등 개인 무선통신 기술 등을 들 수 있다. < 표 2> 차세대 PC의 기술 범위 구분 초소형 플랫폼 디스플레이 저장장치 전원장치 인체통신 사용자 인터페이스 기술 범위 및 내용 펜, 안경, 목걸이, 손목시계 등과 같은 액세서리, 의복 등에 착용성을 제공하기 위한 저 전력 프로세서 기반 동적 재구성 가능한 시스템 및 초소형, 초절전 시스템 S/W 플랫폼 구조 착용 상태에서의 화면 출력과 안구 움직임에 의한 화면 제어를 통하여 디스플레이 정보의 가독성 및 착용의 편의성 제공 대용량, 저 전력, 초소형 저장매체 및 구동장치로 퍼스널 스토리지 기 능 제공 차세대 PC의 전원 공급을 위한 것으로 2 차 전지, 태양전지 등 플렉시 블 배터리로서 궁극적으로는 인체 자가발전 기능 제공 차세대 PC, 주변기기, 센서들 간 초단거리 무선통신 인터페이스와 착 용성, 이동성 보장을 위한 웨어러블 네트워크, 근접장 통신 등 시각, 청각, 촉각, 후각, 미각 등 인간의 오감 메커니즘을 이용한 오감 정보처리 및 이를 기반으로 하는 멀티모달 사용자 인터페이스로 실감 정보서비스 등 제공 다. 차세대 PC 기술 발전방향 종합정보기기 개념의 기존 PC는 사용자들의 정보이용 환경과 사용 목적에 따 라 기능이 분리되고 용도가 전문화되어 휴대형을 거쳐 사용자의 편의성, 의사소 통의 효율성, 자연성을 극대화시키는 착용형 형태의 차세대 PC로 발전될 것으로 전망된다. 또한 이러한 정보이용 환경의 변화에 따라 사용자는 컴퓨터나 네트워크 등을 의식하지 않고 주위의 모든 사물이 컴퓨팅 기능과 센서를 가지고 유무선 통합 네트워크와의 접속으로 언제 어디서나 간단하고 편리하게 사용자와 일상생활 의 물건, 그리고 기기 등이 자유롭게 상호 작용하여 정보단말기의 위치와 정보사용 - 159 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 자의 제한이 없어지는 새로운 정보서비스 패러다임으로 발전할 것으로 전망된다. 따라서 차세대 PC 는 [ 그림 1] 과 같이 소형화, 실감화, 지능화 발전 추세로 디 스플레이가 분리되고 입출력 기기는 더욱 세분화되어 일상생활에서 매일 사용하 는 시계, 목걸이, 반지, 안경 등이 지능화된 모습을 가지며 음성명령어, 펜 인식 위주의 사용자 인터페이스는 시각, 청각, 촉각, 미각, 후각 등 인간의 오감 메커니 즘을 이용한 정보 입력과 표현이 가능한 인간 친화형 인터페이스 기술로 발전될 것이다. < 출처 : 참고문헌 7 > [ 그림 1] 차세대 PC의 제품별 발전 방향 - 160 -
알고리즘 이해하기 1. 참고문헌 1 2 3 4 참고자료 정보교육학회 교재개발분과위원회(2004), 컴퓨터과 교수법 및 교재연구, 생능 출판사 정보교육학회 교재개발분과위원회(2004), 컴퓨터 교육론, 삼양미디어 박정호(2003), 컴퓨터 알고리즘, 상조사 Cormen Thomas H(2001), Introduction to Algorithms, 2/E, MIT 5 Horowitz Ellis, Sahni Sartaj, Anderson-Freed S(1992), Fundamentals of 6 Data Structures in C, Computer Science 임백준(2005), 행복한 프로그래밍, 한빛미디어 7 IT 신기술 현황 및 향후 적용방안, 한국전산원 2. 인터넷 사이트 1 http://www.gamedev.net/reference/programming/features/pdl/default.asp 2 http://contests.edu-i.org/gongmo/2000/785/deep_learn/basic/flow_mean.htm 3 http://mathman.pe.kr - 161 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 정보과학-5주 발전 단원 1 활동지 5-1(1) 교육청 영재교육원/ 영재학급 중학교 이름 여러분이 순서도로 작성한 등교 알고리즘을 의사코드로 변환해봅시다. - 162 -
알고리즘 이해하기 정보과학-5주 발전 단원 1 활동지 5-1(2) 교육청 영재교육원/ 영재학급 중학교 이름 등교 알고리즘의 정당성을 증명하고 판단해봅시다. - 163 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 정보과학-5주 발전 단원 1 활동지 5-1(3) 교육청 영재교육원/ 영재학급 중학교 이름 [ 팀별 연구 프로젝트 ] 여러분이 학습한 유클리드 호제법은 두 개의 정수 m 과 n (m>n) 이 주어졌을 때 최대공약수는 m-n 과 n 의 최대공약수를 구하는 방법으로 바꿀 수 있다. 입 니다. 이를 증명하는 방법을 순서도와 의사코드로 나타내봅시다. 또한 두 수 24 와 18 로 작성한 순서도와 의사코드가 정확한지를 대입하여 증명해봅시다. - 164 -
알고리즘 이해하기 정보과학-5주 발전 단원 1 활동지 5-2(1) 교육청 영재교육원/ 영재학급 중학교 이름 수업 알고리즘을 작성하기 위한 조건을 정리해봅시다. - 165 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 정보과학-5주 발전 단원 1 활동지 5-2(2) 교육청 영재교육원/ 영재학급 중학교 이름 여러분이 생각한 수업 알고리즘을 순서도로 표현해봅시다. - 166 -
알고리즘 이해하기 정보과학-5주 발전 단원 1 평가도구(1/1) 교육청 영재교육원 중학교 이름 교사용 번호 측정요소 측정의 근거 1점 2점 3점 4점 5점 창의성 독창성 기존의 알려진 방법과는 확연히 구분 되는 형식, 이론, 주장 등이 존재하는 가? 자신만의 참신하고 독특한 아이디어 를 제시하고 있는가? 논리성 전개과정과 문제해결에서 전후가 명 확하며, 원인과 결과 및 사용되는 이 론적 배경이 분명하다. 다양성 복수의 상이한 요소, 부분 또는 수준 들을 포함하고 있다. 가치성 주제나 내용이 명확한 이슈를 포함한 다. 기능적 솜씨 논리적으로 치밀하며, 도입 전개 결론 에 이르는 과정이 치밀하다. 유용성 발전 가능성 내용과 결과를 실제에 적용하여 사용 할만한 가치가 있다. 앞으로 새로운 산출물, 혹은 연구 결 과를 도출할 수 있는 아이디어를 포 함한다. - 167 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 6주 주제 생활 속 알고리즘 구현하기 ( 수업 알고리즘 ) 본 활동은 알고리즘 이해하기 단원의 다섯 번째 시간으로서 알고리즘의 중 요성을 예제를 통하여 학습한다. 또한 알고리즘을 공부할 때 중요하게 생각해야 할 부분에 대해 학습한다. 알고리즘을 공부할 때는 알고리즘을 스스로 생각해낼 수 있는 능력, 다른 알고리즘과 효율성을 비교할 수 있는 능력, 알고리즘을 컴퓨 터와 다른 사람이 이해할 수 있는 언어로 표현해낼 수 있는 능력, 이것의 정상작 동(correctness) 여부를 검증해 내는 능력이 매우 중요하다. 따라서 이와 같은 요 소에 주의하여 실생활 알고리즘을 작성한다. 또한 이번 차시에서는 실생활 알고 리즘 중 수업 알고리즘 을 작성하고 이를 순서도와 의사코드를 이용하여 표기하 는 방법에 대해 학습한다. 미리 준비한 학생들의 수업 알고리즘과 다양한 조건 및 환경을 제시한 선생님의 수업 알고리즘을 비교하고 스스로 알고리즘을 작성 하고 표현하는 능력을 배양한다. 교육 목표 1. 2. 3. 5. 정보과학 분야 사고력 신장 정보과학 분야 적성 강화 정보과학 분야 특정지식 습득 정보과학 분야 일반능력신장 교육 내용 1-2. 논리전개 및 추론능력 2-3. 정보과학과 실생활과의 연계성 3-1. 알고리즘 설계 5-1. 자율적 탐구 및 학습능력 5-2. 상호작용과 의사소통능력 - 168 -
알고리즘 이해하기 세부 교육 내용 학습자가 준비한 발표한 내용에 대해 토론한다. 수업 알고리즘 표현 에 대해 발표를 실시한다. 동화속의 예제를 통한 알고리즘의 분석 방법을 학습한다. 알고리즘 공부의 중요한 요소에 대해 학습한다. 알고리즘의 정당성 증명방법에 대해 학습한다. 수업 알고리즘의 구상 및 설계에 대해 학습한다. 수업 알고리즘의 표현방법에 대해 학습한다. 다양한 알고리즘의 표현 방법을 연구한다. 교육방법 발표와 토론, 강의, 주제별 연구 프로젝트 - 169 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 교육목표 < 교육목표 - 교육내용 - 세부교육내용 - 교육방법의 유기적 연관성 > 교육내용 세부교육내용 교육방법 1.정보과학 분야 1-2. 논리전개 사고력 신장 및 추론 능력 학습자가 준비한 수업 알고리즘 에 2-3. 정보과학 대해 발표를 실시한다. 발표와 토론 2.정보과학 분야 과 실생활과 발표한 내용에 대해 토론한다. 적성 강화 의 연계성 동화속의 예제를 통한 알고리즘의 3.정보과학 분야 3-1. 알고리즘 특정지식 습득 5.정보과학 분야 일반능력 신장 설계 5-1. 자율적 탐 구와 학습 능력 5-2. 상호작용 과 통 능력 의사소 분석 방법에 대해 학습한다. 알고리즘 공부의 중요한 요소에 대 해 학습한다. 알고리즘의 정당성 증명방법에 대해 학습한다. 수업 알고리즘의 구상 및 설계를 설명한다. 수업 알고리즘의 표현 방법을 설명한다. 발표한 내용에 대해 토론한다. 다양한 알고리즘의 표현 방법을 연구한다. 강의 발 표 와 토 론, 주제별 연구 프로젝트 준비물 교사용 학생용 관련 시청각 자료, 인터넷 검색용 PC 학생용 활동지 필기도구 사진 - 170 -
알고리즘 이해하기 교수학습 활동 학습 단계 교수학습 활동 시간 ( 총 90 분 ) 지도초점 및 유의점 도입 활동 이번 차시의 세부교육내용을 소개한다. 5 학습자가 준비한 발표 내용에 대하여 간단한 질문 과정을 5 학생 스스로가 진행할 수 있도록 도우면서, 모든 학 통해 준비 정도를 파악한다. 생들이 참여하도록 독려한 시간이 부족할 경우 수업 알 고리즘의 표현 에 대하여 발표 5 다. 본 활동 할 학습자를 선정한다. 발표자의 내용 중에서 토론이 가능한 내용을 선정하여 토론 20 을 진행한다. 토론 내용을 종합 정리한다. 수업 알고리즘의 분석 및 구현 5 20 수업 알고리즘의 이해를 도 우면서 순서도를 활용하여 방법에 대한 강의를 진행한다. 수업 알고리즘을 구현할 수 있음을 설명한다. 정리 활동 본 시간에 배운 개념 정리 다음 주 교육에 대한 안내와 준비 사항을 안내한다. 20 10 학생 스스로가 점심시간 알 고리즘 작성을 진행할 수 있도록 이해를 도우면서, 모든 학생들이 참여하도록 독려한다. 주요 초점 질문 1. 알고리즘을 공부할 때 중요하게 생각해야 할 것은 무엇일까? 2. 알고리즘을 분석할 때 먼저 생각해야 할 것은 무엇일까? 3. 수업 알고리즘을 작성하기 위해 필요한 것은 무엇일까? 4. 수업 알고리즘을 알고리즘 표현 방법으로 표현할 수 있는가? - 171 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 지도활동 도입 활동 1. 이번 차시의 세부 교육 내용을 소개합니다. 학습자가 준비한 발표한 내용에 대해 토론한다. 수업 알고리즘 표현 에 대해 발표를 실시한다. 동화속의 예제를 통한 알고리즘의 분석 방법을 학습한다. 알고리즘 공부의 중요한 요소에 대해 학습한다. 수업 알고리즘의 구상 및 설계에 대해 학습한다. 수업 알고리즘의 표현방법에 대해 학습한다. 본 활동 1. 수업 알고리즘의 표현에 대해서 발표하고 토론해봅시다. 활동지 5-2(2) 사용 2. 발표 및 토론 내용을 종합하여 정리하면서 학생 스스로 결과를 정리할 수 있도록 지도합니다. 1) 발표자와 자신의 활동지 내용을 비교하여 장단점을 분석해봅시다. 2) 자신의 활동지를 스스로 평가해봅시다. 3. 강의 내용 1) 예제로 알아보는 알고리즘 에 대해 강의합니다. 필수정보 1. 예제로 알아보는 알고리즘 참조 2) 알고리즘 공부에서 중요한 것 에 대해 강의합니다. 필수정보 2. 알고리즘 공부에서 중요한 것 참조 3) 수업 알고리즘의 표현 방법에 대해 강의합니다. 필수정보 3. 수업 알고리즘 참조 정리 활동 - 172 -
알고리즘 이해하기 1. 학습 내용 정리 1) 여러분이 순서도로 작성한 수업 알고리즘을 의사코드로 변환해봅시다. 활동지 6-1(1) 사용 2) 이번 시간에 우리는 수업 알고리즘을 표현하는 방법과 이를 순서도로 표 현하는 방법에 대해 학습하였습니다. 학습내용 중에 선생님의 질문에 대한 답을 찾기 위한 알고리즘 을 추가하여, 자연어와 순서도로 생성하고 이를 의 사코드로 변환해봅시다. 활동지 6-1(2) 사용 2. 다음 주 교육 내용 안내 1) 점심시간 알고리즘을 작성하기 위한 조건을 정리해봅시다. 활동지 6-2(1) 사용 2) 여러분이 생각한 점심시간 알고리즘을 순서도로 표현해봅시다. 활동지 6-2(2) 사용 - 173 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 평가 평가 내용 수업 알고리즘을 발표함으로써 논리전개 및 추론능력과 정보과학과 실생활 과의 연계 능력을 갖게 되었는지 평가한다. 동화속의 예제를 통한 알고리즘의 분석 방법, 알고리즘 공부의 중요한 요 소, 수업 알고리즘의 구상 및 설계를 통해 알고리즘 설계 방법을 학습하였는 지 평가한다. 학습자가 미리 준비한 활동지와 본차시에 작성한 활동지, 학습자의 발표 내 용, 토론 참여도 등을 종합적으로 평가하여, 논리전개 및 추론능력, 자율적 탐구와 학습능력, 상호작용과 의사소통능력이 신장되었는지를 평가한다. 평가 방법 발표 및 토론 평가 : 도입활동 1 번, 본활동 2번 활동시 평가 그룹 프로젝트 산출물 평가 : 정리활동 1번 2) 활동시 평가 평가도구 1/1 평가 기준 사용 수업 알고리즘 작성 시에 고려사항들이 포함되었는가? 수업 알고리즘을 정확히 표현하였는가? 독창적인 방법으로 등교 알고리즘을 표현하였는가? 평가 유의점 토론 시 학생들이 적극적으로 참여하도록 지도한다. - 174 -
알고리즘 이해하기 필수정보 1. 예제로 알아보는 알고리즘 지난 시간에 우리는 알고리즘에 대해서 학습하였다. 이번에는 예제나 이야기 를 가지고 알고리즘을 작성해 보자. 이때 반드시 먼저 문제점을 찾아야만 해결할 수 있는 알고리즘을 계획할 것이다. 다음의 예제를 보자. 우리가 잘 아는 이야기 이다. 잔치에 가고 싶어 하는 콩쥐에게 마음씨 나쁜 계모는 나무 호미를 던져주며 집 뒤에 있는 돌밭을 다 일구고 나서 잔치에 오라고 하였다. 잔치에 너무나 가고 싶은 콩쥐는 나무 호미로 밭을 일구다가 나무 호미가 부러지자 그만 밭에 앉아 서 울음을 터뜨렸다. 그 때 어디선가 선녀가 나타나서 콩쥐에게 무엇을 도와드 릴까요? 라고 하였다. 콩쥐가 어떻게 도움을 청해야 일을 끝내고 잔치에 갈 수 있을까? 일단 문제를 해결하기 위하여 문제가 무엇인지 파악해야 한다. 여기서 콩쥐가 해결해야 할 문제는 돌밭을 갈아야 하는 것이다. 그럼 이 문제를 해결하기 위한 방법에는 어떤 것이 있을까? 우선 선녀에게 부러진 나무 호미를 고쳐달라고 해 서 돌밭을 계속 갈 수 있을 것이다. 또는 황소에게 직접 밭을 갈아달라고 하거나 최신식 밭을 가는 기계를 달라고 하여 돌밭을 갈 수도 있을 것이다. 방법은 여러 가지가 있으며 어떤 것을 선택하는가는 문제를 해결하는데 큰 영향을 미친다. 위 와 같은 문제를 해결하기 위한 방법들을 알고리즘이라고 하는데 하나의 문제를 해결하기 위한 알고리즘은 여러 가지가 있을 수 있다. 그 중 가장 적합한 방법을 선택하여 문제를 해결하는 것이 얼마나 문제를 잘 풀었는지를 결정하게 된다. 콩쥐도 이와 같은 여러 가지 조건 중에서 한 가지를 선택해야 하는데 그러기 위해서 콩쥐가 생각해야 할 조건은 잔치에 가기 위해서는 잔치가 끝나기 전에 빨리 일을 마쳐야 한다는 것이다. 우리는 여기서 문제를 해결하기 위한 조건을 찾아 낼 수 있었다. 이것 역시 알고리즘을 설정하는데 매우 중요한 요소이다. 그 러므로 콩쥐는 시간이 적게 걸리는 일을 선택해야 하며 위의 방법 중에서는 세 번째 방법이 시간이 가장 적게 걸리므로 콩쥐는 세 번째 방법을 선녀에게 말해 야 할 것이다. 이와 같이 우리는 문제를 도출했고, 도출한 문제를 해결하기 위한 조건을 찾았으며 그 모든 것을 만족하는 해답을 찾았다. 따라서 이와 같이 잘 이 루어졌을 경우 문제를 잘 해결했다고 한다. 실생활에서 일어날 수 있는 다양한 상황을 통하여 이와 같이 문제점을 찾고 조건을 찾아내어 원하는 해답을 얻는 - 175 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 방법을 기르도록 하자. 2. 알고리즘 공부에서 중요한 것 개별 알고리즘의 목록을 이해, 암기하며 익히는 것도 중요하지만 알고리즘 공 부에서 더 중요한 것은 다음 네 가지이다. (1) 알고리즘을 스스로 생각해낼 수 있는 능력 (2) 다른 알고리즘과 효율을 비교할 수 있는 능력 (3) 알고리즘을 컴퓨터와 다른 사람이 이해할 수 있는 언어로 표현해낼 수 있 (4) 는 능력 이것의 정상작동(correctness) 여부를 검증해 내는 능력 첫 번째가 제대로 훈련되지 못한 사람은 알고리즘 목록의 스테레오 타입에만 길들여져 있어서 모든 문제를 자신이 아는 알고리즘 목록에 끼워 맞추려고 할 것이다. 이것은 디자인 패턴을 잘못 공부한 사람과 비슷하다. 이런 사람들은 마 치 과거에 참고서만 수십 번 공부해 문제를 하나 던져주기만 하면, 생각해보지도 않고 자신이 풀었던 문제들의 패턴 중 가장 비슷한 것 하나를 선택하여 기계적 이고 무의식적으로 푸는 문제풀이기계와 비슷하다. 그들에게 도중에 물어보십시 오. 너 지금 무슨 문제 풀고 있는 거니? 열심히 연습장에 뭔가 풀어나가고는 있지만 그들은 자신이 뭘 풀고 있는지도 제대로 인식하지 못 하는 경우가 많다. 머리가 푸는 게 아니고 손이 푸는 것이다. 이렇게 되면 도구에 종속되는 망치의 오류 에 빠지기 쉽다. 새로운 알고리즘을 고안해야 하는 상황에서도 기존 알고리 즘에 계속 매달릴 뿐이다. 알고리즘을 새로 고안해 내건 혹은 기존의 것을 조합 하건 스스로 생각해 내는 훈련이 필요하다. 두 번째가 제대로 훈련되지 못한 사람은 일일이 구현해 보고 실험해 봐야만 알고리즘 간의 효율을 비교할 수 있다. 특히 자신이 가진 카탈로그를 벗어난 알 고리즘을 만나면 이 문제가 생긴다. 이건 상당한 대가를 치르게 한다. 세 번째가 제대로 훈련되지 못한 사람은, 문제를 보면 아, 이건 이렇게 저렇 게 해결하면 된다. 는 말은 쉽게 할 수 있지만 막상 컴퓨터 앞에 앉혀 놓으면 아 무 것도 하지 못한다. 심지어 자신이 생각해낸 그 구체적 알고리즘을 남에게 설 명해 줄 수는 있지만, 그걸 컴퓨터에게 설명하는 데는 실패한다. 뭔가 생각해낼 수 있다는 것과 그걸 컴퓨터가 이해할 수 있게 설명할 수 있다는 것은 다른 차 원의 능력을 필요로 한다. 네 번째가 제대로 훈련되지 못한 사람은, 알고리즘을 특정 언어로 구현해도, - 176 -
알고리즘 이해하기 그것이 옳다는 확신을 할 수 없다. 임시변통(ad hoc) 의 아슬아슬한 코드가 되거 나 이것저것 덧붙인 누더기 코드가 되기 쉽다. 이걸 피하려면 두 가지 훈련이 필 요하다. 하나는 수학적 논리적 증명의 훈련이고, 다른 하나는 테스트 훈련이다. 전자가 이론적이라면 후자는 실용적인 면이 강하다. 양자는 상보적인 관계이다. 특수한 경우들을 개별적으로 테스트해서는 검증해야 할 것이 너무 많고, 또 모든 경우에 대해 확신할 수 없다. 테스트가 버그의 부재를 보장할 수는 없다. 하지만 수학적 증명을 통하면 그것이 가능하다. 또, 어떤 경우에는 수학적 증명을 굳이 할 필요 없이 단순히 테스트 케이스 몇 개만으로도 충분히 안정성이 보장되는 경우가 있다. 이럴 때는 그냥 테스트만으로 만족할 수 있다. 3. 수업알고리즘 3.1 수업 알고리즘의 표현 방법 우리는 매일 학교에 등교하여 수업을 받는다. 학생이 수업을 받는 동안 무슨 알고리즘이 있을 수 있겠는가라고 생각할 수 있다. 그러나 수업시간이야 말로 자 신이 생각한 수업 알고리즘이 있다면 그 수업알고리즘이 빛을 발할 수 있는 시 간이기도 하다. 즉, 자신이 어떠한 수업 알고리즘을 가지고 있느냐에 따라 학습 효과가 크게 나타날 수 있기 때문이다. 가령 수업 시간 알고리즘으로, 수업 시간 에 선생님의 강의 내용 중 선생님이 칠판에 필기해 주지 않은 중요한 내용을 자 신이 노력하여 필기해 놓는 과정이 있을 수 있다. 이 밖에도 수업시간에 필요한 기본 학습 행동에 관한 알고리즘들이 필요하다. 이 상황을 고려하여 다음과 같은 알고리즘을 순서대로 적을 수 있다. 수업 시작종이 울린 후부터 시작한다. (1) 수업시간에 필요한 교과서와 노트 및 필기구 그리고 숙제 등의 수업 준비 물들을 꺼내어 놓는다. (2) 수업시간에 필기할 수 있는 준비가 되어 있는지 확인하다. (3) 연필심이 부러 졌거나, 샤프심이 없으면 반 친구들에게 미리 빌려 준비해 놓는다. (4) 핸드폰이 켜져 있으면 꺼 놓는다. (5) 선생님이 교실로 들어오시기 전까지 오늘 공부할 내용을 미리 읽어 본다. (6) 선생님이 들어오시면 전체 인사를 한다. (7) 숙제를 못해왔으면 선생님 말씀에 따라 벌을 받는다. (8) 선생님의 강의가 끝날 때까지 (9)-(12) 번을 반복한다. 강의가 끝나면 (13) 번으로 간다. (9) 선생님이 칠판에 필기해 주신 내용을 노트에 옮겨 적는다. - 177 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) (10) 선생님의 강의 내용 중 선생님이 칠판에 필기해 주지 않은 중요한 내용 이 있으면 바로 노트에 필기해 놓는다. (11) 수업 시간 중 선생님이 질문을 하시면 답변을 한다. (12) 수업 시간 중에 의문 사항이 있으면 선생님께 질문하고 선생님의 답변을 노트에 적어 놓는다. (13) 선생님이 내주신 숙제와 다음 시간 준비물 목록을 적는다. (14) 수업이 끝나면 선생님께 인사한다. (15) 오전 수업이 모두 끝났으면 점심시간 알고리즘을 수행한다. (16) 오전 수업이 모두 끝나지 않았으면 휴식을 취한 후 다음 수업 시간에 대 한 수업 알고리즘을 수행한다. (17) 오후 수업이 모두 끝났으면 하교 알고리즘을 수행한다. (18) 오후 수업이 모두 끝나지 않았으면 휴식을 취한 후 다음 수업 시간에 대 한 수업 알고리즘을 수행한다. 3.2 수업 알고리즘의 분석 및 조건 찾기 앞에서 우리는 수업 알고리즘의 표현방법에 대해 살펴보았다. 그럼 수업 알고 리즘을 분석하고 수업 알고리즘을 구성하는 조건을 알아보자. 수업 알고리즘은 선생님의 강의 내용을 수업 시간 동안 효과적으로 학습하기 위해 자신이 생각한 방법이다. 즉, 수업 알고리즘의 조건은 효율적인 학습이라는 것이다. 효율적인 학 습을 위해서 자신에게 적합한 수업 알고리즘을 생각해 내고 자신의 수업 태도로 수업 시간에 임하는 것이다. 또한 수업 알고리즘의 조건은 함께 수업을 듣는 친 구들을 방해해서는 안 된다는 것이다. 그래서 핸드폰이 꺼져 있는 지 확인한다. 수업시간에는 공부에 집중하고 주변 친구들에게 방해를 하지 않기 위해서 핸드 폰은 꺼서 가방에 넣어 놓아야 한다. 그리고 떠들어서도 안 되고 선생님의 허락 없이 교실을 나갔다가 돌아와도 안 된다는 것이다. < 그림 3-1> 은 위에서 제시한 수업 알고리즘을 순서도로 표현한 것이다. 예시한 알고리즘을 기반으로 수업 알 고리즘의 조건으로 제시된 것을 만족시키기 위한 추가적인 알고리즘들을 학생들 이 스스로 추가하여 구성해 보길 바란다. 3.3 수업 알고리즘의 순서도 표현 순서도를 작성할 때는 처음에는 개략적인 흐름을 처리하여 블록별로 나타내 고 단계적으로 구체화시켜 나가는 것이 좋다. 수업 알고리즘을 순서도로 작성하 여 보자. - 178 -
알고리즘 이해하기 [ 그림 6-1] 수업 알고리즘 순서도 - 179 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 읽기자료 디지털 콘텐츠 1. 기술 개요 가. 디지털콘텐츠와 DRM의 태동 산업의 패러다임이 움직이고 있다. 1970년대와 80년대를 주도하던 전통 제조업 시대를 거쳐, 90년대 네트워크 중심의 시대를 지나 21세기 디지털콘텐츠 산업이 그 중심에 서 있다. 디지털콘텐츠 산업이 각광을 받는 이유로는 제조업에 비해 고부가치 산업이라는 측면, 문화적 산출물을 활용할 수 있다는 장점, IT 산업 전반 에 걸친 파급효과를 들 수 있다. 국내 디지털콘텐츠 산업의 시장규모는 2003년 5 조 원에서 2004년 7조 원으로 급성장했고 매년 30% 이상의 성장률을 보일 것으 로 예상하고 있으며, 2007년 세계시장 규모는 약 315조 원에 달할 것으로 예상하 고 있다.(KIPA) 우리가 흔히 말하는 디지털콘텐츠란, 디지털화 가능한 모든 미디어를 일컫는 것으로서, 정보저장장치에 저장되어 보관이 가능하거나 유무선 네트워크를 통해 유통이 가능한 디지털콘텐츠를 의미한다고 할 수 있다. 디지털 통신 디바이스와 디지털 저장장치의 발달로 인해 언제 어디서나 디지털콘텐츠를 실행시키는 것이 가능해졌고, 이러한 콘텐츠의 유통과 이동이 자유롭게 되면서 디지털콘텐츠의 활 용도가 증대되고 유료기반 콘텐츠 서비스가 자연스럽게 생겨나게 되었다. 유료화 서비스 배경에는 디지털콘텐츠의 저작권을 보호하려는 콘텐츠 저작권자와 공급 업자의 요구가 있었으며, 불법복제를 원천적으로 차단하고 콘텐츠의 안전한 온라 인 유통경로를 확보하기 위한 기술적 방안으로 DRM(Digital Right Management) 솔루션이 개발되었다. 나. DRM 개요 유선과 무선을 통합하는 네트워크 서비스 시대가 개막되고 있다. 우리나라 어 느 곳에서나 무선 인터넷이 가능해지고 유선과 무선의 경계가 사라지면서 콘텐 츠 서비스도 새로운 전환기를 맞고 있다. 2005년 초 한 이동통신사에서는 유비쿼 터스 환경을 지원하는 디지털 음악서비스를 개시한다고 발표했고, 뒤를 이어 타 - 180 -
알고리즘 이해하기 이동통신사들도 이 서비스에 뛰어들었다. 즉, 한번 구매한 음악 파일은 핸드폰과 PC, 그리고 MP3 플레이어 등 어떤 장치에서도 플레이가 가능하도록 지원하는 음악서비스를 제공한다는 것이다. 소비자의 편의성과 콘텐츠의 재활용성을 극대 화시키는 동시에 저작권 보호를 위한 도 보호하겠다는 큰 의미를 갖는 서비스의 시작인 것이다. DRM을 적용하여 음원 저작권자들의 이익 DRM은 사용 권한이 있는 사용자라 하더라도 부여된 권한에 따라서 디지털콘 텐츠의 사용권한을 지속적으로 통제하는 방식으로서, 원본 콘텐츠에 대한 추출이 불가함을 보장하기 때문에 현재 많은 디지털콘텐츠가 이 기술을 통해 보호를 받 고 있다. 저작권보호 기술은 저작권 보호를 위해 모든 콘텐츠를 암호화된 형태로 서버 또는 클라이언트에 저장하며, 안전한 네트워크 환경을 통해 전달해서 인증 된 사용자만이 해당 콘텐츠를 즐길 수 있도록 하는 기술로 구현된다. [ 그림 1] 일반적인 DRM의 기본 개념도 다. 적용분야에 따른 DRM 구분 - 181 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) DRM 기술은 적용 대상에 따라서 크게 기업용 DRM(Enterprise DRM) 과 상 업용 DRM(Commercial DRM) 등 두 부문으로 나눌 수 있다. 기업용 DRM은 기 업 내 공유정보, 또는 기밀정보의 유출 및 불법출력 등을 막기 위해 도입되었으 며, 지식관리시스템(KMS) 또는 전자문서관리시스템(EDMS), 파일서버 등과 연 동해서 인트라넷 또는 그룹웨어 상에서 이루어지는 기업내 구성원 개개인의 파 일 이용패턴 등을 감시하게 된다. 최근에는 ERP, BPR 등과도 연동하여 개개인 들에 대한 파일사용 권한을 제어하는 경우도 있다. 이때 개인들이 파일을 사용할 수 있는 권한 기준은 AD(Active Directory) 라고 불리는 권한설정 LDAP(Lightweight Directory Access Protocol), 또는 DB를 참조해서 결정하는데 중앙관 리자가 직급과 업무영역, 문서의 기밀성과 공유성을 기준으로 정한 개개인의 권 한에 따라서 해당 문서 파일의 가용이 결정되는 것이다. [ 그림 2] 기업용 DRM 개념도 상업용 DRM은 우리가 일반적으로 접할 수 있는 MP3 나 영화, 성인 콘텐츠, 사진 등과 같은 멀티미디어 콘텐츠 유료화를 위해 도입되는 DRM 기술을 말한다. 소비자는 자신이 원하는 콘텐츠를 공급자가 유도하는 구매절차에 따라서 구매하 게 되는데, 이때 발급되는 사용자 권한정보를 라이센스라고 한다. 파일과 라이센 - 182 -
알고리즘 이해하기 스를 받는 방법에는 함께 묶어서 다운로드 받는 방법과 따로 나누어 받는 방법이 있는데, 이는 콘텐츠 공급자가 구상하는 비즈니스 모델에 따라 유동적이며, 비즈 니스 모델에 따라서 소비자가 이용 가능한 H/W 수를 제한 한다든가 이용횟수, 이용기간 등을 제한하도록 하는 여러 종류의 권한설정이 가능하도록 구현된다. [ 그림 3] 상업용 DRM 개념도 라. DRM의 요소기술 DRM 기술의 핵심요소로는 1) 암복호화 기술 2) 콘텐츠 전달, 배포기술 3) 라 이센스 및 키관리 기술 4) 응용프로그램 제어기술 등이 있다. 암복호화 기술은 콘텐츠를 암호화해서 저장했다가, 안전하게 복호화해서 실행할 수 있도록 하는 기술이다. 그리고 암호화된 형태의 콘텐츠를 네트워크( 유선 또는 무선) 를 통해 안전하게 전달하며 빠르고 정확하게 배포하는 기술이 콘텐츠 전달, 배포기술이 다. 이와 함께 사용자 권리를 표현하는 여러 가지 정보와 함께, 콘텐츠를 복호 화 하는 데 필요한 복호화 키를 관리하는 기술이 함께 필요하며, 복호화 된 콘 텐츠를 안전한 메모리 공간에서 여러 가지 응용프로그램을 이용해서 플레이가 가능하도록 하는 기술이 응용프로그램 제어기술이다. - 183 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 1) 암복호화 기술 암호화 기술은 원천적인 암호화 기술과 콘텐츠의 저장 정책에 따른 암호화 기 술로 나눌 수 있다. 콘텐츠 암호화 기술은 대체로 128비트 AES 공인 알고리즘을 사용하는 추세이며, 국내에서는 SEED 알고리즘을 사용하기도 한다. 암호화 정책 에 따른 암호화 기술로는 Pre-Encryption( 선암호화) 방법과 On-the-Fly( 요청시점 암호화) 방법으로 구분할 수 있다. Pre-Encryption 방법은 서비스 대상 콘텐츠 를 콘텐츠 스토리지 또는 콘텐츠 레파지토리에 저장할 때, 일괄처리(Batch) 작 업을 통해 모두 암호화 저장하는 방법이다. 즉, 콘텐츠 유출에 대비한 보안상의 이유로 콘텐츠 저작권자의 요청시 모든 파일을 암호화 하여 저장해 두고 서비스 하는 방식이다. 이 경우, 내부 사용자 또는 관리자에 의한 유출방지는 물론, 네트 워크를 통해 침입하는 외부 해커의 공격에도 안전하게 방어가 가능하다. 반면, 모든 콘텐츠 파일을 특정한 포맷으로 변환시켜 두기 때문에 콘텐츠의 변환 및 가용성이 떨어지는 단점이 있다. On-the-Fly 방법은 구매자가 해당 콘텐츠에 대한 다운로드 요청시, 원본 파 일로부터 암호화해서 전송하는 방식으로, 모든 콘텐츠 파일은 원본 형태로 저장 되어 있으며, 구매자 정보 등을 실시간으로 암호화해서 전송하게 된다. 대용량의 파일을 실시간으로 암호화하는 경우에는 서버에 부하를 많이 주기 때문에 사용하 지 않는 반면, 하나의 파일로 다양한 암호화 기술의 적용이 가능하므로 멀티DRM 적용 가능하다는 장점이 있다. 즉, 하나의 서비스 사업자가 다양한 콘텐츠 공급자 로부터 콘텐츠를 제공받아 서비스 하는 경우, 여러 종류의 DRM을 동시에 수용 하도록 설계가 가능하다. 2) 콘텐츠 전달 및 배포기술 콘텐츠 유통을 위해서는 크게 저작권자( 창조자), 배포자( 콘텐츠공급자), 사용 자로 구분되는 세 그룹간의 콘텐츠 전달 배포 과정에 있어서 안전한 전달과정이 필수인데, 이러한 권리 전달을 위한 표현 방법으로 라이센스(License) 라는 권리 증을 사용한다. 콘텐츠의 구매과정은 바로 이 라이센스를 구매하는 행위로 상거 래가 이루어지며 이 라이센스에는 콘텐츠의 사용가능 기간, 사용가능 횟수, 구매 금액 등 다양한 사용자 권리 정보가 수록된다. 네트워크를 통해 콘텐츠를 전달, 배포하는 방법에는 다운로드 방식과 스트리밍 방식이 있다. 다운로드 방식은 파일 전체를 PC 또는 이동형 기기에 저장한 후 실행하는 방 식이다. 서버에 접속하여 원하는 콘텐츠를 구매한 후 전체 파일을 자신이 원하는 저장위치에 저장한 후 실행하는 것이다. 스트리밍 방식은 대용량의 파일을 일시 - 184 -
알고리즘 이해하기 에 다운로드 받기 어려운 경우, 파일을 작은 단위로 나누어 연속된 형태의 스트 림(stream) 으로 전달하는 기술로서, 다운로드를 위해 장시간 기다리는 불편함은 적으나 서버에 접속한 이용자가 많은 경우 네트워크 속도의 저하를 가져올 수 있다는 단점이 있다. 3) 라이센스 및 키관리 기술 라이센스와 키관리 기술은 사용자 또는 해커로부터 이들 정보가 노출되지 않 도록 얼마나 안전한 장소에 안전한 방식으로 저장할 수 있는가에 대한 기술이다. 이를 위해서는 운영체계(O/S) 에 접근하여 구현하는 방식, 또는 H/W 제어에 의 한 방식 등이 있는데 시스템의 안정성 및 보안성에 각각 장단점을 가지고 있다. < 출처 : 참고문헌 6 > - 185 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 1. 참고문헌 1 2 3 4 참고자료 정보교육학회 교재개발분과위원회(2004), 컴퓨터과 교수법 및 교재연구, 생능 출판사 정보교육학회 교재개발분과위원회(2004), 컴퓨터 교육론, 삼양미디어 박정호(2003), 컴퓨터 알고리즘, 상조사 Cormen Thomas H(2001), Introduction to Algorithms, 2/E, MIT 5 Horowitz Ellis, Sahni Sartaj, Anderson-Freed S(1992), Fundamentals of Data Structures in C, Computer Science 6 IT 신기술 현황 및 향후 적용방안, 한국전산원 2. 인터넷 사이트 1 http://mathman.pe.kr/ - 186 -
알고리즘 이해하기 정보과학-6주 발전 단원 1 활동지 6-1(1) 교육청 영재교육원/ 영재학급 중학교 이름 여러분이 순서도로 작성한 수업 알고리즘을 의사코드로 변환해봅시다. - 187 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 정보과학-6주 발전 단원 1 활동지 6-1(2) 교육청 영재교육원/ 영재학급 중학교 이름 [ 팀별 연구 프로젝트 ] 이번 시간에 우리는 수업 알고리즘을 표현하는 방법과 이를 순서도로 표현하 는 방법에 대해 학습하였습니다. 학습내용 중에 선생님의 질문에 대한 답을 찾기 위한 알고리즘 을 추가하여, 자연어와 순서도로 생성하고 이를 의사코드 로 변환해봅시다. - 188 -
알고리즘 이해하기 정보과학-6주 발전 단원 1 활동지 6-2(1) 교육청 영재교육원/ 영재학급 중학교 이름 점심시간 알고리즘을 작성하기 위한 조건을 정리해봅시다. - 189 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 정보과학-6주 발전 단원 1 활동지 6-2(2) 교육청 영재교육원/ 영재학급 중학교 이름 여러분이 생각한 점심시간 알고리즘을 순서도로 표현해봅시다. - 190 -
알고리즘 이해하기 정보과학-6주 발전 단원 1 평가도구(1/1) 교육청 영재교육원 중학교 이름 교사용 번호 측정요소 측정의 근거 1점 2점 3점 4점 5점 창의성 독창성 기존의 알려진 방법과는 확연히 구분 되는 형식, 이론, 주장 등이 존재하는 가? 자신만의 참신하고 독특한 아이디어 를 제시하고 있는가? 논리성 전개과정과 문제해결에서 전후가 명 확하며, 원인과 결과 및 사용되는 이 론적 배경이 분명하다. 다양성 복수의 상이한 요소, 부분 또는 수준 들을 포함하고 있다. 가치성 주제나 내용이 명확한 이슈를 포함한 다. 기능적 솜씨 논리적으로 치밀하며, 도입 전개 결론 에 이르는 과정이 치밀하다. 유용성 발전 가능성 내용과 결과를 실제에 적용하여 사용 할만한 가치가 있다. 앞으로 새로운 산출물, 혹은 연구 결 과를 도출할 수 있는 아이디어를 포 함한다. - 191 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 7주 주제 생활 속 알고리즘 구현하기 ( 점심시간 알고리즘 ) 본 활동은 알고리즘 이해하기 단원의 여섯 번째 시간으로서 알고리즘의 다 양한 설계 기법에 대해 먼저 학습한다. 훌륭한 알고리즘 중에는 문제를 해결하는 방법과 고속화의 테크닉에 있어서 공통점을 가진 알고리즘이 많이 있다. 따라서 좋은 알고리즘 설계기법을 사용한다면 해결해야 할 새로운 문제에 접했을 때 기 존의 설계된 알고리즘 설계 기법을 응용할 수 있다. 이는 새로운 알고리즘 개발 에 필요한 시간과 비용을 줄일 수 있다는 점에서 매우 중요하다. 이러한 관점에 서 몇 가지 주요 알고리즘 설계 기법을 학습한다. 또한 이번 차시에서는 실생활 알고리즘 중 점심시간 알고리즘을 작성하고 이를 순서도와 의사코드를 이용하여 표기하는 방법에 대해 학습한다. 미리 준비한 학생들의 점심시간알고리즘과 다양 한 조건 및 환경을 제시한 선생님의 점심시간 알고리즘을 비교하고 스스로 알고 리즘을 작성하고 표현하는 능력을 배양한다. 교육 목표 1. 2. 3. 5. 정보과학 분야 사고력 신장 정보과학 분야 적성 강화 정보과학 분야 특정지식 습득 정보과학 분야 일반능력신장 교육 내용 1-2. 논리전개 및 추론능력 2-3. 정보과학과 실생활과의 연계성 3-1. 알고리즘 설계 5-1. 자율적 탐구 및 학습능력 5-2. 상호작용과 의사소통능력 - 192 -
알고리즘 이해하기 세부 교육 내용 학습자가 준비한 발표한 내용에 대해 토론한다. 점심시간 알고리즘 표현 에 대해 발표를 실시한다. 분할 통치법을 이용한 알고리즘의 설계 기법에 대해 학습한다. 동적 계획법을 이용한 알고리즘의 설계 기법에 대해 학습한다. 탐욕법을 이용한 알고리즘의 설계 기법에 대해 학습한다. 점심시간 알고리즘의 구상 및 설계에 대해 학습한다. 점심시간 알고리즘의 표현방법에 대해 학습한다. 다양한 알고리즘의 설계 방법을 연구한다. 교육방법 발표와 토론, 강의, 주제별 연구프로젝트 < 교육목표 - 교육내용 - 세부교육내용 - 교육방법의 유기적 연관성 > - 193 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 교육목표 교육내용 세부교육내용 1.정보과학 분야 1-2. 논리전개 사고력 신장 및 추론 능력 학습자가 준비한 점심시간 알고리 2-3. 정보과학 즘 에 대해 발표를 실시한다. 2.정보과학 분야 과 실생활과 발표한 내용에 대해 토론한다. 적성 강화 의 연계성 분할 통치법을 이용한 알고리즘의 3.정보과학 분야 3-1. 알고리즘 특정지식 습득 설계 5-1. 자율적 탐 설계 기법에 대해 설명한다. 동적 계획법을 이용한 알고리즘의 설계 기법에 대해 설명한다. 탐욕법을 이용한 알고리즘의 설계 기법에 대해 설명한다. 점심시간 알고리즘의 구상 및 설계 를 설명한다. 점심시간 알고리즘의 표현 방법을 설명한다. 구와 학습 발표한 내용에 대해 토론한다. 5.정보과학 분야 능력 다양한 알고리즘의 설계 방법을 일반능력 신장 5-2. 상호작용 연구한다. 과 의사소통 능력 교육방법 발표와 토론 강의 발 표 와 토 론, 주제별 연구 프로젝트 준비물 교사용 학생용 관련 시청각 자료, 인터넷 검색용 PC 학생용 활동지 필기도구 사진 - 194 -
알고리즘 이해하기 교수학습 활동 학습 단계 교수학습 활동 시간 ( 총 90 분 ) 지도초점 및 유의점 도입 활동 이번 차시의 세부교육내용을 소개한다. 5 학습자가 준비한 발표 내용에 대하여 간단한 질문 과정을 5 학생 스스로가 진행할 수 있도록 도우면서, 모든 학 통해 준비 정도를 파악한다. 생들이 참여하도록 독려한 시간이 부족할 경우 점심시간 5 다. 알고리즘의 표현 에 대하여 발 본 활동 표할 학습자를 선정한다. 발표자의 내용 중에서 토론이 가능한 내용을 선정하여 토론 20 을 진행한다. 점심시간 알고리즘의 이해 토론 내용을 종합 정리한다. 점심시간 알고리즘의 설계 기 5 20 를 도우면서 순서도를 활용 하여 점심시간 알고리즘을 법 및 구현 방법에 대한 강의 구현할 수 있음을 설명한 를 진행한다. 다. 정리 활동 본 시간에 배운 내용 정리 다음 주 교육에 대한 안내와 준비 사항을 안내한다. 20 10 학생 스스로가 하교 알고리 즘 작성을 진행할 수 있도 록 이해를 도우면서, 모든 학생들이 참여하도록 독려 한다. 주요 초점 질문 1. 알고리즘의 설계 기법에는 무엇이 있을까? 2, 효율적인 알고리즘의 설계 기법은 무엇일까? 3. 점심시간 알고리즘을 작성하기 위해 필요한 것은 무엇일까? 4. 점심시간 알고리즘을 알고리즘 표현 방법으로 표현할 수 있는가? - 195 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 지도활동 도입 활동 1. 이번 차시의 세부 교육 내용을 소개합니다. 학습자가 준비한 발표한 내용에 대해 토론한다. 점심시간 알고리즘 표현 에 대해 발표를 실시한다. 분할 통치법을 이용한 알고리즘의 설계 기법에 대해 학습한다. 동적 계획법을 이용한 알고리즘의 설계 기법에 대해 학습한다. 탐욕법을 이용한 알고리즘의 설계 기법에 대해 학습한다. 점심시간 알고리즘의 구상 및 설계에 대해 학습한다. 점심시간 알고리즘의 표현방법에 대해 학습한다. 본 활동 1. 점심시간 알고리즘의 표현 에 대해서 발표하고 토론해봅시다. 활동지 6-2(2) 사용 2. 발표 및 토론 내용을 종합하여 정리하면서 학생 스스로 결과를 정리할 수 있도록 지도합니다. 1) 발표자와 자신의 활동지 내용을 비교하여 장단점을 분석해봅시다. 2) 자신의 활동지를 스스로 평가해봅시다. 3. 강의 내용 1) 분할 통치법이라는 알고리즘의 설계 기법에 대해 강의합니다. 필수정보 1.1 분할 통치법 참조 2) 동적 계획법이라는 알고리즘의 설계 기법에 대해 강의합니다. 필수정보 1.2 동적 계획법 참조 3) 탐욕법이라는 알고리즘의 설계 기법에 대해 강의합니다. 필수정보 1.3 탐욕법 참조 - 196 -
알고리즘 이해하기 4) 점심시간 알고리즘의 표현 방법에 대해 강의합니다. 필수정보 2. 점심시간 알고리즘 표현 예제 참조 정리 활동 1. 학습 내용 정리 1) 다. 여러분이 순서도로 작성한 점심시간 알고리즘을 의사코드로 변환해봅시 활동지 7-1(1) 사용 2) 분할 통치법, 동적 계획법, 탐욕법 등의 장단점을 정리해봅시다. 활동지 7-1(2) 사용 3) 임의의 수들이 섞여 있는 데이터가 있습니다. 이 데이터에서 어떤 값과 가장 가까운 값을 찾고 싶을 경우, 이를 찾는 방법과 이 때 걸리는 시간은 어 떻게 변하는지 팀별로 생각해봅시다. 활동지 7-1(3) 사용 4) 임의의 수들이 섞여 있는 데이터에서 가장 큰 값과 가장 작은 값을 찾으 려고 할 경우, 사용할 수 있는 방법은 무엇인지 팀별로 생각해봅시다. 활동지 7-1(4) 사용 2. 다음 주 교육 내용 안내 1) 하교 알고리즘을 작성하기 위한 조건을 정리해봅시다. 활동지 7-2(1) 사용 2) 여러분이 생각한 하교 알고리즘을 순서도로 표현해봅시다. 활동지 7-2(2) 사용 - 197 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 평가 평가 내용 점심시간 알고리즘을 발표함으로써 논리전개 및 추론능력과 정보과학과 실 생활과의 연계 능력을 갖게 되었는지 평가한다. 분할 통치법을 이용한 알고리즘의 설계 기법, 동적 계획법을 이용한 알고리 즘의 설계 기법, 탐욕법을 이용한 알고리즘의 설계 기법, 점심시간 알고리즘 의 구상 및 설계를 통해 알고리즘 설계 방법을 학습하였는지 평가한다. 학습자가 미리 준비한 활동지와 본차시에 작성한 활동지, 학습자의 발표 내 용, 토론 참여도 등을 종합적으로 평가하여, 논리전개 및 추론능력, 자율적 탐구와 학습능력, 상호작용과 의사소통능력이 신장되었는지를 평가한다. 평가 방법 발표 및 토론 평가 : 도입활동 1 번, 본활동 2번 활동시 평가 그룹 프로젝트 산출물 평가 : 정리활동 1번 3), 4) 활동시 평가 평가도구 1/1 평가 기준 사용 점심시간 알고리즘 작성 시에 고려사항들이 포함되었는가? 점심시간 알고리즘을 정확히 표현하였는가? 독창적인 방법으로 점심시간 알고리즘을 표현하였는가? 평가 유의점 토론 시 학생들이 적극적으로 참여하도록 지도한다. - 198 -
알고리즘 이해하기 필수정보 1. 알고리즘의 설계 기법 훌륭한 알고리즘 중에는 문제를 해결하는 방법과 고속화의 테크닉에 있어서 공통점을 가진 알고리즘이 많이 있다. 순서도를 포함하여 문제를 해결할 수 있는 기본적인 기법을 알고리즘의 설계 기법이라고 부른다. 우리는 해결해야 할 새로 운 문제에 접했을 때 기존의 알고리즘 설계 기법을 응용할 수 있는지를 생각하 는 것은 새로운 알고리즘 개발에 필요한 시간과 경비를 줄일 수 있다는 점에서 매우 중요하다. 이 관점에서 우리는 몇 가지 알고리즘 설계 기법을 학습한다. 1.1 분할 통치법(Divide-and-Conquer) 효율이 좋은 알고리즘을 설계하는 기법으로서 가장 널리 사용되고 있는 기법 중 하나가 분할 통치법이다. 분할 통치법에서는 해결하려고 하는 문제( 크기를 n 이라고 가정) 를 크기보다 작은 여러 개의 부분 문제로 분할한다. 단, 이 때 크기 가 작은 부분 문제에 대한 답으로부터 원래의 문제에 대한 해답을 쉽게 얻을 수 있게 분할할 필요가 있다. 우선 문제를 분할하면 어느 정도 효과가 있는지를 예 를 통해 살펴보기로 하자. (1) 예제 1 : 탁구대회 순차방법 탁구 대회를 열어서 가장 탁구를 잘 하는 사람과 가장 못하는 사람을 정하려 고 한다. 실력이 좋은 사람이 항상 이긴다고 했을 때 몇 번 시합을 하면 되는가 를 계산하는 것이 문제이다. 여기서 탁구 대회 참가 인원을 n 명이라고 하자. 이 문제를 해결하기 위해서 스포츠 경기 시에 일반적으로 많이 이용하는 토너먼 트법 을 이용하는데, 첫 번째 토너먼트에서는 가장 강한 사람을 결정하고, 그 다음에는 나머지 n-1명 중에서 마찬가지로 토너먼트법을 이용해서 가장 약한 사 람을 정하는 방법을 이용하기로 하자([ 그림 7-1] 참조). [ 그림 7-1] 에서 굵은 선 은 시합에서 이긴 사람을 나타내고, 표시가 있는 것은 진 사람을 나타낸다. - 199 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) [ 그림 7-1] 탁구대회 대진표 [ 그림 7-1] 과 같은 방법을 이용하는 경우에는 한번 시합을 할 때마다 한 사람 씩 대상에서 제외되므로, n명 중에서 가장 강한 사람을 정하기 위해서는 n-1번 시합을 하게 된다. 따라서 이 방법에서 필요한 시합수를 이라고 하면, 이 된다. 그러나, 조금만 자세히 생각해 보면 [ 그림 7-3] 과 같은 방법을 이용하는 경우에는 불필요한 시합을 많이 한다는 것을 알 수 있다. 첫 번째 토너먼트에서 이긴 사람 ( 약 n/2 명) 은 자기가 이긴 상대보다는 강하다는 것은 알고 있으므로 다음번에 실시하는 토너먼트에는 출전할 필요가 없다. 두 번째 토너먼트전은 첫 번째 토너먼트에서 한번도 이기지 못하고 진 사람만을 모아서 실시하면 되므로, 두 번째 토너먼트에 출전하는 사람 수를 k라고 하면 두 번째 토너먼트전을 운영 하기 위해서는 k-1 번 시합을 하면 된다. 이 방법으로 경기를 할 때의 시합수를 평가하기 위해서는 k 를 구해야 하는데, 이를 위해서는 첫 번째 토너먼트전을 구 체적으로 어떻게 행하는지가 문제가 된다. 이때 전년도 우승자에게 다른 사람이 차례로 한 사람씩 도전하는 방법을 택한다고 하고, 전년도 우승자가 모두에게 이 기면 k의 값은 n-1 이 된다. 따라서, 이 방법을 이용하더라도 [ 그림 7-1] 의 방법 과 같이 2n-3 번 시합을 해야 한다([ 그림 7-2] 참조). - 200 -
알고리즘 이해하기 [ 그림 7-2] 비능률적인 경기 운영 그러나 n명을 거의 반씩 나눠서 첫 번째 토너먼트를 하게 하면 k의 값은 n/2가 된다([ 그림 7-2] 참조). [ 그림 7-3] 능률이 좋은 경기 운영 이때 계산을 간단하게 하기 위해 n 을 짝수라 하고, 이 경우의 시합 수를 이라고 하면, - 201 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 가 되어, [ 그림 7-1] 의 방법보다 n/2-1 번이나 시합 수가 적어진다. (2) 예제 2 : 탁구대회 분할방법 그러면, 이번에는 또 다른 알고리즘을 생각해 보기로 하자. 우선 전체를 반으 로 나눠서 각 팀에서 따로따로 최강자와 최약자를 결정한 후, 양 팀의 최강자끼 리 시합을 하게 해서 전체의 최강자를 정하고, 최약자끼리 시합을 하게 해서 최 약자를 정하면 된다([ 그림 7-4] 참조). [ 그림 7-4] 분할에 의한 최강ㆍ최약자 결정 이 방법을 이용한 경우의 시합 수를 이라고 하면, 가 된다. 또, 분명히 이다. 이 두 식을 이용하면 각 n 에 대해 다음과 같이 되는데, 계산을 간단하게 하기 위해 n = 2 P 라고 하자. - 202 -
알고리즘 이해하기... 이것을 n 에 대한 일반식으로 나타내면, 이 된다. 여기서 설명한 마지막 방법([ 그림 7-4] 의 방법) 에서는 우선 전체를 반으로 나 눠서( 분할) 각각에 대해 원래와 같은 문제를 해결하고 마지막에 간단한 처리를 해서 전체에 대한 해답을 구한다( 통합). 이와 같이 전체를 분할해서 각각을 따로 따로 처리하고 마지막에 통합하는 방법을 분할 통치법 이라고 한다. (3) 예제 3 : 하노이의 탑 분할 통치법의 또 하나의 예로서 하노이의 탑이라는 게임을 살펴보자. [ 그림 7-5] 와 같이 세 개의 막대 A, B, C 가 있는데, 처음에는 A라는 막대에 여러 개 의 원판이 크기 순으로 즉, 어떠한 원판을 보더라도 위에는 그보다 적은 원판이 있고 아래에는 그보다 큰 원판이 놓여져 있다. [ 그림 7-5] 하노이의 탑 이 게임의 목적은 원판을 막대에서 막대로 한번에 하나씩 이동해서 모든 원 판을 막대 B 로 옮기는 것이다. 단, 어떠한 경우에도 적은 원판 위에는 큰 원판을 둘 수 없다. 이 게임은 다음과 같은 단순한 알고리즘으로 해결할 수 있다는 것을 알 수 있다. 막대가 삼각형의 형태로 배치되어 있다고 하고 홀수 번째에는 가장 - 203 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 작은 원판을 시계 방향으로 하나만 이동하고, 짝수 번째에는 제일 작은 원판을 제외한 나머지 원판 중에서 이동할 수 있는 것만을 하나 이동한다. 이 알고리즘 은 간단하고 정당하지만 왜 정당한지를 금방 알기는 어렵지만 다음과 같은 분할 통치법을 이용하면 정당성도 금방 이해할 수 있을 것이다. 원판 n장을 A에서 B로 이동하는 문제는 크기가 n-1인 두 개의 부분 문제로 구성된 것이라고 생각할 수 있다. 우선 n-1장의 원판을 막대 A에서 막대 C로 옮 기면 막대 A에 있던 n 번째 작은 원판( 가장 큰 원판) 을 옮길 수 있는 상태가 되 므로 그 원판을 A에서 B 로 옮긴다. 그리고, n-1 장의 원판을 막대 C에서 B로 이동한다. n-1장의 원판을 옮기기 위해서는 이 방법을 재귀적으로 사용하면 되는 데, 여기서 이동하는 n-1 장의 원판은 다른 어느 원판보다도 작으므로 이동할 때 에 막대 A, B, C의 제일 윗부분에는 어떠한 원판이 있는지를 생각할 필요가 없 다. 실제로 여러 개의 원판이 어떻게 이동하는지는 알기 어렵고, 재귀 호출이 반 복되므로 이것을 하나하나 체크하기는 힘들지만, 이 알고리즘의 아이디어는 이해 하기 쉽고 정당하다는 것을 증명하는 것도 비교적 쉽다. 일반적으로 이와 같은 분할 통치법을 이용한 알고리즘은 그렇지 않은 알고리즘보다 효율이 좋다. 분할 통치법을 이용해서 알고리즘을 설계할 때에는 문제를 분할하는 방법 및 각 부분 문제에 대한 답을 통합시키는 방법도 고려해야 한다. 특히 부분 문제의 답에서 전체의 문제에 대한 답이 비교적 간단하게 얻어지지 않으면 이 기법은 사용할 수 없는 것이라고 생각해야 한다. 문제의 분할법도 알고리즘의 성능에 영 향을 미치기 때문에 중요하다. 대부분의 경우 가능한 한 균등한 크기로 분할하는 것이 바람직하다. 부분 문제를 해결하기 위해서는 같은 프로시저를 재귀적으로 호출하는 것이 간단하고, 이 재귀 호출은 데이터수가 1이 될 때와 같이 문제의 답이 분명하게 되는 시점에서 종료하게 된다. 1.2 동적계획법 (Dynamic programming method) 동적계획법이란 작은 문제들의 해를 표에 저장한 다음 그것들을 순환적인 성 질을 이용하여 결합해 큰 문제의 해를 구하는 것이다. 동적계획법의 특징을 살펴 보면 다음과 같다. 첫째로 동적계획법은 해를 저장하는 표를 사용한다. 동적계획 법이 분할정복법과 구별되는 가장 큰 특징이다. 표를 이용하면 똑같은 문제에 대 한 답을 여러 번 구할 필요가 없다는 것이다. 둘째로 동적계획법은 순환적인 성 질을 이용한다. 동적계획법은 ' 점화식' 이란 것을 사용하는데 이 점화식은 큰 문 제와 작은 문제간의 관계를 나타내는 식이다. 큰 문제를 풀기 위해서는 작은 문 제에 대한 답을 미리 구해 놓아야 한다는 뜻이 된다. 동적계획법이 확실히 유용한 알고리즘 설계기법이긴 하지만 어떤 문제에든지 적용할 수 있는 것은 아니다. 동적계획법이 성립하기 위해서는 최적화 원리 - 204 -
알고리즘 이해하기 (principal of optimality) 가 성립해야만 한다. 최적화 원리란 한 문제에 대한 해가 최적이면 그 문제를 이루는 부분 문제들의 해도 최적이라는 것이다. 오락실 문방구 학교 집 그림 A 그림 B 그림 C 학교 집 [ 그림 7-6] 최적화의 원리 위의 그림은 최적화의 원리를 잘 나타내 주고 있다. 과연 학교에서 오락실과 문방구를 거쳐 최단거리로 가는 문제는 최적화의 원리를 성립할까? 위의 문제에 서 큰 문제는 학교에서 집으로 가는 것이고, 작은 문제는 학교에서 오락실, 오락 실에서 문방구, 문방구에서 집 등이다( 오락실에서 집으로 가는 것도 전체에 비하 면 부분문제이다). 그림 A 는 학교에서 집으로 가는 최단거리를 나타내 주고 있다. 만약 오락실 에서 문방구로 가는 길이 최단거리가 아니라고 하자( 그림 B). 그럼 과연 전체 경 로 ( 그림 C) 는 최단거리일까? 당연히 아니다. 즉 위의 문제는 부분 문제들의 해 가 최적이 아니라면 큰 문제의 해가 최적이 아니다 가 성립한다. 이것의 대우를 취하면, 큰 문제의 해가 최적이면 부분 문제들의 해가 최적이다 가 성립한다. 따 라서 이 문제는 최적화의 원리가 성립하는 문제이다. 즉, 동적계획법을 적용하면 최적의 답을 얻을 수 있는 문제이다. 동적계획법 문제를 풀기 위해서는 다음과 같은 것들을 고려해야 한다. 첫째는 최적화 원리가 성립하는 문제인지를 검사한다. 즉, 동적계획법으로 해결할 수 있 는지를 검사한다. 둘째는 부분문제를 정의한다. 셋째는 우리가 구해야 하는 큰 문제는 어떻게 정의되는지 알아본다. 넷째는 큰 문제와 작은 문제간의 관계를 찾 는다. 즉, 점화식을 구한다. 점화식을 통해 작은 문제들을 어떤 순서로 구해 나갈 것인지를 결정한다. 다섯째는 답을 얻는 과정을 추적하는 방법을 세워야 한다. 마지막 과정은 문제에 따라 생략하는 경우도 많다. - 205 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 1.3 탐욕법 (Greedy method) 탐욕법은 말 그대로 욕심쟁이 같은 방법이다. 즉, 현재의 상태만 보는 것이다. 전체 상태나 다른 것들은 생각하지 않고 현재의 상태에서 만족을 얻을 수 있는 것만 선택하는 것이다. 탐욕법 알고리즘은 이런 특성 때문에 언제나 최적해를 보 장한다는 보장이 없다. 탐욕법을 이용하여 배낭(knapsack) 문제를 풀어보자. 배 낭 문제는 다음과 같다. 배낭에 물건들을 채우려고 하는데, 배낭이 담을 수 있는 무게는 한정되어 있 고 각각의 물건들은 자기만의 값어치와 무게를 가진다. 어떻게 하면 배낭이 담을 수 있는 무게를 넘지 않고 최대의 값어치를 얻을 수 있도록 물건들을 배낭에 넣 을 수 있을 것인가( 단 물건은 나누어질 수 없다)? 이 문제를 보면 탐욕법이 딱 떠오를 것이다. 어떤 기준을 정하여 우선순위를 정해 넣을까? 여기서 기준이라는 것은 무게가 될 수도 있고 값어치가 될 수도 있다. 그리고 무게는 가장 무거운 것부터 정하던지, 가장 가벼운 것부터 정할 수 있다. 배낭 문제를 풀기 위하여 다음과 같이 < 표 7-1> 과 같이 만들어보자. 가방 의 총 무게는 17kg 이라고 하자. < 표 7-1> 배낭문제 예제 물건번호 1 2 3 4 5 무게(kg) 3 4 7 8 9 값어치( 만원) 4 5 10 11 13 이렇게 구성되어 있다면 3 가지로 나누어서 생각해 볼 수 있다. 먼저 문제에 서는 쪼갬이 불가능하다고 하였지만 탐욕법 중 최선의 경우를 모색하기 위하여 물체가 쪼개지는 것으로 간주하여 값을 정리하자. 나중에 문제를 풀 때에는 아무 상관이 없다. 첫째, 가장 무거운 것부터 넣어보면, 5번과 4번이 17kg으로 들어가고 이의 값 어치는 24 만원이 된다. 둘째, 가장 가벼운 것부터 넣어보면, 1번과 2번과 3번과 4 번이 들어가고 이의 무게는 (14+3/8*11)kg이고 값어치는 23.12 만원이 된다. 마지 막으로 가장 값어치 있는 것부터 집어넣으면 5번과 4번이 들어가고 이의 무게는 17kg이고 값어치는 24 만원이다. 이렇게 대충 비교해 보면 첫 번째와 세 번째가 좀 더 높은 값을 가진다는 것을 알 수 있다. - 206 -
알고리즘 이해하기 2. 점심시간 알고리즘의 표현 예제 2.1 점심시간 알고리즘의 표현방법 우리는 거의 매일 학교에 등교하여 점심을 학교에서 먹는다. 그리고 점심시간 은 점심을 먹으면서 휴식을 취할 수 있어 학생들이 기다리는 달콤하고 유쾌한 시간이다. 이러한 점심시간에는 반 친구들과 다양한 활동을 할 수 있다. 이에 다 양한 알고리즘이 발생할 수 있다. 이 상황을 고려하여 다음과 같은 알고리즘을 순서대로 적을 수 있다. 점심시간 종이 울린 후부터 시작한다. (1) 학교 식당에 간다. (2) 오늘의 메뉴를 확인한다. (3) 오늘 당번이면 주방으로 가고 그렇지 않으면 식사를 받으러 간다. (4) 당번이면 손을 깨끗이 씻고, 앞치마와 모자를 쓴다. (5) 당번의 할일을 확인한다. (6) 할일이 배식이면 배식할 메뉴 앞에서 배식을 한다. (7) 배식이 끝났으면 친구들과 식사를 한다. (8) 배식이 끝나지 않았으면 (6) 번으로 돌아간다. (9) 배식 당번이 아니고 청소 당번이면 친구들과 식사를 하고 나중에 식당을 청소하기로 한다. (10) 친구들과 맛있게 식사를 한다. (11) 식사 후 잔반을 버리고 빈 그릇을 정해진 위치에 가져다 놓는다. (12) 청소 당번이면 식당을 청소한 후 교실로 돌아가 이를 닦고 세면을 한다. (13) 청소 당번이 아니면 친구들과 놀 것인지 생각해 본다. (14) 혼자 급하게 해야 할 일이 있으면, 친구들과 놀지 않기로 하고 자신이 하고 싶은 일을 한다. (15) 비오는 날씨이면 실내에서, 비가 오지 않으면 친구들과 야외 운동장에서 놀기로 한다. (16) 이를 닦고 세면을 한다. (17) 다음 수업시간에 대한 수업 준비를 한다. (18) 수업 알고리즘을 수행한다. 2.2 점심시간 알고리즘의 분석 및 조건 찾기 앞에서 우리는 점심시간 알고리즘의 표현방법에 대해 살펴보았다. 그럼 점심 시간 알고리즘을 분석하고 점심시간 알고리즘의 조건을 알아보자. 점심시간에는 반 친구들과 다양한 활동을 할 수 있는 시간이다. 이에 점심식사를 하는 것 뿐 아니라 당번 활동이나 식사 후에 무엇을 하면서 점심시간을 보낼 것인지 결정해 - 207 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 야 한다. 점심시간에 생각하는 알고리즘의 조건은 점심을 꼭 먹어야 하고 식사 후 남는 시간을 활용해야 한다는 것이다. 그리고 건강을 위하여 식사 후 꼭 양치 를 하는 것이 필요하다는 것이다. [ 그림 7-7] 은 위에서 제시한 점심식사 알고리 즘을 순서도로 표현한 것이다. 예시한 알고리즘을 기반으로 점심시간 알고리즘의 조건으로 제시된 것을 만족시키기 위한 추가적인 알고리즘들을 학생들이 스스로 추가하여 구성해 보길 바란다. 2.3 점심시간 알고리즘의 순서도 표현 순서도를 작성할 때는 처음에는 개략적인 흐름을 처리하여 블록별로 나타내 고 단계적으로 구체화시켜 나가는 것이 좋다. 점심시간 알고리즘을 순서도로 작 성하여 보자. [ 그림 7-7] 점심시간 알고리즘 순서도 - 208 -
알고리즘 이해하기 읽기자료 [ 지능형 로봇] 1. 기술 개요 가. 지능형 로봇의 정의 및 분류 지능형 로봇이란, 주변 환경의 변화나 작업 변경에 대한 인식이 없이 사람의 지령에 따 라 피동적, 반복적 작업을 수행하던 과거의 전통적 로봇의 개념과는 달리, 외부 환경을 인식하고 스스로 상황을 판단하여 자율적으로 동작하거나 인간과 상호작용을 하는 로봇을 의미한다. 로봇의 분류는 용도별, 형태별 등 여러 가지 방법으로 분류할 수 있으나, 지능형 로봇은 IFR( 국제로봇연맹) 및 ISO/TC-184의 분류에 따라 개인서비스용, 전문서비스용, 제조업용 등 세 분야로 구분한다. [ 그림 1] 지능형 로봇의 응용분야별 종류 < 표 1> 지능형 로봇의 분류 산자부 분류 정의 종류 서비스로봇 개인서비스용 전문서비스용 제조업용 인간의 생활범주 속에서 불특정 다수를 위한 서비스 각 산업의 제조 제반 서비스를 제공하는 인간 제공 및 전문화된 작업을 수행 현장에서 제품 생 공생형 대인지원 로봇 하는 로봇 산부터 출하까지 공정 내 작업을 수행하는 로봇 가사용( 청소, 심부름, 빌딩서비스용( 경비, 안내, 자동차 제조용 경비, 조리, 제초 등) 배달, 청소 등) 전자제품 생활지원용 ( 재활훈련, 공공작업용 ( 재난극복인명 구조 ) 제조용 - 209 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 장애자보조, 간병 등) 여가지원용(헬스케어, 오락, 애완, 게임 등) 교육용 ( 가정교사, 연구용 ) 의료 복지 사회인프라용 ( 고소/ 활선/ 관로) 국방/ 우주/ 해양/ 원자력 농업/ 임업/ 축산업 / 수산업 광업/ 건설 디스플레이 제조용 반도체 제조용 바이오 신약 제조용 물류자동화용 일본공업 협회분류 비산업용 ( 개인용) 산업용 비제조업용 제조업용 IFR분류 Service Robot for Personal Use Service Robot for Professional Use Industrial Robot 나. 지능형 로봇 요소기술 및 국내 기술 수준 로봇에 대한 기술 분류는 운동메커니즘 기술, 인식기술, 지능제어 기술, 부품기 술, 시스템 통합기술 등으로 대별할 수 있으며 < 표 2> 와 같이 37개의 중분류로 구분된다. 37개의 기술 분류 중 우리나라가 선진국과 동등 이상의 기술을 가진 분야는 14개 분야이며, 나머지 23개 기술 분야는 선진국에 비해 기술력이 미흡한 실정이다. 특히 지능분야 등의 7개 기술 분야는 취약한 것으로 판단된다. 대분류 운동 메커 니즘 기술 이동 메커 니즘 < 표 2> 지능형 로봇 요소기술 및 국내 기술 수준 ( 범례: 우월, 다소우월, 동등, 다소부족, 부족) 중분류 분야 및 기술 항목 소분류 기술 수준 바퀴식 구동 전방향 바퀴, 문턱 승월, 바퀴의 slip 극복 2족보행 동적보행, 계단승월, 측보행, 역보행 계단/ 험지이동 무한궤도형, 바퀴형, 2 족/4족 보행 머니퓰레이터 경량화, 모듈화, 유연화, 시리얼드라이브 로봇, 수동/ 능동 컴플라이언스 로봇 손/ 손목 인간형 손, 센서기반 스마트 핸드 햅틱장치 인식기술 시각인식 웨어러블 햅틱장치, 햅틱 암마스터, 햅틱 핸드컨트롤러, 햅틱 글러브, 촉각제시기 눈-목 기구 인간형 눈- 목 기구, Pan-Tilt 기구 관절 모듈형 관절, 다자유도 관절 얼굴 / 제스처 / 패턴 / 컬러 / 표정 / 감정 인식 이동물체의 실시간 추적, 환경에 강한, 인식 - 210 -
알고리즘 이해하기 지능 제어 기술 부품 기술 시스템 통합 기술 음성인식 대화음성인식, 대화음성 생성, 음향인식, 음원감지 추정, 잡음에 강인한 음성 전처리 지도작성 거리센서 기반 기법, 센서융합기법 자기위치인식 추측항법, Active Beacon, 영상기반 인식 3 차원 물체인식, 실시간 인식, 조명변화 / 가려짐에 환경인식 강인한 인식 작업환경의 모델링 작업체획 지능형 학습 및 추론 에이전트,, 지능 Context/ Context/Semantics 모델링 및 학습 기술, Semantics Ontology 기반 지식기반 시스템 센서융합 칼만필터링 제어구조 계층제어, 하이브리드 제어, 분산제어 지도작성 위치추정 경로계획 장애물회피 주행제어 목표물 추종,, 영상기반, 주행, SLAM,, 다개체군, 제어 제어 보행제어 ZMP 기반 제어, 2 족/4 족/6 족 보행, 자세제어 Soft Manipulation, 여유자유도 제어, 하이브리드 머니퓰레이션 힘/ 위치 제어 시각기반 제어 반복학습 뉴로 퍼지 제어 지능제어 신경망 제어, Fault, Tolerance, - 제어, 강인제어, 센서 구동 기 S/W 통합 H/W 통합 N/W 기반 운동 및 촉각 자이로, 가속도 센서, 토크 / 힘 센서, 질감 / 물체 인식, 촉각제시, 힘 반영 원격제어 시각 CCD, CMOS, 적외선 카메라 청각 마이크로폰 거리 적외선, 초음파, 레이저 후각, 미각 등 스마트 센서( 퓨전센서) 모터 회전/ 직선형 모터, 모터 초음파/ 초전도 모터, 고토크 인공근육 EAP, Conducting Polymer Actuator 감속기 Harmonic Drive, RV 감속기 분산객체화 S/W VM, 프레임워크, 표준 API 통신 M/W, 분산 M/W, 개발환경 실시간 OS, S/W 통합개발도구, 콘텐츠 저작도구 플랫폼 모듈화, H/W 규격화, SoC화 N/W 평가 안전성, 신뢰성, 성능평가 인프라 N/W기반 실시간분산제 어 N/W 기반 분산지능 N/W 기반 서비스 QoS 확보, 실시간 전송, 네트워크 보안, 상황인식 프레임워크 네트워크 불확실성 극복, 네트워크 기반 조작 분산형 신호처리, 네트워크 기반 환경 인지, 네트워크 기반 인공지능 실시간 콘텐츠 서비스, 인간-로봇 네트워크 인터페이스, 홈네트워크 연동기술 - 211 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 다. 지능형 로봇 기술 발전방향 지능형 로봇 기술은 종합기술로서 모든 곳에 적용이 가능하고 인간과의 결합 및 협력이 가능하도록 응용이 확대되고, 학제적 결합에서 업제적 결합으로 기술 이 확대되어 시장이 폭발적으로 확대될 것으로 기대된다. 또한 지능형 로봇 기술 은 System & Solution 기술로서 Micro Nano Bio 등 기존 기술의 한계를 극 복하는 새로운 제품과 Clean, 진공, 고온, 비정형 환경 등 새로운 환경에 적용할 수 있는 기술로 발전될 것으로 예상된다. 그리고 끊임없이 인간을 지향하면서 인 간공존 환경으로 진출하면서 인간화가 가속되고 엔터테인먼트, 스포츠 등의 새로 운 시장으로 진출할 것으로 전망된다. 로봇 기술은 20년을 주기로 기술 집중과 응용확산을 반복하면서 발전하고 비 용 대비 이익은 5년마다 2 배씩 증가할 것으로 전망된다. 2000년대는 로봇 기술이 IT BT와 접목되어 Digital Fusion이 일어나면서 지능형 로봇이 탄생되는 시기 이다. 향후 지능형 로봇 기술은 로봇의 인간사회 공존 능력과 인간과의 상호작용 기술, 고도 지능을 요구하는 고난도의 작업과, 극한 환경기술이 접목된 지능형 로봇으로 발전할 것으로 전망되며, 다양한 응용분야에서 발생하는 요구조건을 만 족하는 다품종 지능형 로봇의 개발이 요구될 것으로 예상된다. 또한 2010 년대는 군사용, 사회 서비스 등의 다양한 분야로 확산되면서 지능형 로봇의 사회화가 구현되고, 2020년대에는 새로운 지능의 혁명이 일어나서 2030년 대에는 새로운 지능이 확산, 전개되고 2040 년대에는 바이오, 생체와의 결합이 이 루어질 것으로 전망된다. < 표 3> 로봇 기술의 발전전망 - 212 -
알고리즘 이해하기 1. 참고문헌 1 2 3 4 참고자료 정보교육학회 교재개발분과위원회(2004), 컴퓨터과 교수법 및 교재연구, 생능 출판사 정보교육학회 교재개발분과위원회(2004), 컴퓨터 교육론, 삼양미디어 박정호(2003), 컴퓨터 알고리즘, 상조사 Cormen Thomas H(2001), Introduction to Algorithms, 2/E, MIT 5 Horowitz Ellis, Sahni Sartaj, Anderson-Freed S(1992), Fundamentals of Data Structures in C, Computer Science 6 IT 신기술 현황 및 향후 적용방안, 한국전산원 2. 인터넷 사이트 1 http://www.aistudy.co.kr/algorithm/design_park.htm 2 http://mathman.pe.kr/ - 213 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 정보과학-7주 발전 단원 1 활동지 7-1(1) 교육청 영재교육원/ 영재학급 중학교 이름 여러분이 순서도로 작성한 점심시간 알고리즘을 의사코드로 변환해봅시다. - 214 -
알고리즘 이해하기 정보과학-7주 발전 단원 1 활동지 7-1(2) 교육청 영재교육원/ 영재학급 중학교 이름 분할 통치법, 동적 계획법, 탐욕법 등의 장단점을 정리해봅시다. - 215 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 정보과학-7주 발전 단원 1 활동지 7-1(3) 교육청 영재교육원/ 영재학급 중학교 이름 [ 팀별 연구 프로젝트 ] 다음의 각 문제들을 해결하기 위하여 어떤 알고리즘으로 적용하는 것이 좋 은지 생각하고 그 기법을 적용한 이유와 풀이 방법을 기술해봅시다 (3-4 번 ). 임의의 수들이 섞여 있는 데이터가 있습니다. 이 데이터에서 어떤 값과 가장 가까운 값을 찾고 싶을 경우, 이를 찾는 방법과 이 때 걸리는 시간은 어떻게 변하는지 생각해봅시다. 참고 : 어떤 값과 가장 가까운 값을 찾는 방법은 전체 데이터를 한 번씩만 살 펴보면 가능하다. - 216 -
알고리즘 이해하기 정보과학-7주 발전 단원 1 활동지 7-1(4) 교육청 영재교육원/ 영재학급 중학교 이름 임의의 수들이 섞여 있는 데이터에서 가장 큰 값과 가장 작은 값을 찾으려고 할 경우, 사용할 수 있는 방법은 무엇인지 생각해봅시다. 참고 : 가장 큰 값이나 가장 작은 값을 찾는 방법 역시 모든 데이터를 한 번 씩만 살펴보면 찾을 수 있다. - 217 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 정보과학-7주 발전 단원 1 활동지 7-2(1) 교육청 영재교육원/ 영재학급 중학교 이름 하교 알고리즘을 작성하기 위한 조건을 정리해봅시다. - 218 -
알고리즘 이해하기 정보과학-7주 발전 단원 1 활동지 7-2(2) 교육청 영재교육원/ 영재학급 중학교 이름 여러분이 생각한 하교 알고리즘을 순서도로 표현해봅시다. - 219 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 정보과학-7주 발전 단원 1 평가도구(1/1) 교육청 영재교육원 중학교 이름 교사용 번호 측정요소 측정의 근거 1점 2점 3점 4점 5점 창의성 독창성 기존의 알려진 방법과는 확연히 구분 되는 형식, 이론, 주장 등이 존재하는 가? 자신만의 참신하고 독특한 아이디어 를 제시하고 있는가? 논리성 전개과정과 문제해결에서 전후가 명 확하며, 원인과 결과 및 사용되는 이 론적 배경이 분명하다. 다양성 복수의 상이한 요소, 부분 또는 수준 들을 포함하고 있다. 가치성 주제나 내용이 명확한 이슈를 포함한 다. 기능적 솜씨 논리적으로 치밀하며, 도입 전개 결론 에 이르는 과정이 치밀하다. 유용성 발전 가능성 내용과 결과를 실제에 적용하여 사용 할만한 가치가 있다. 앞으로 새로운 산출물, 혹은 연구 결 과를 도출할 수 있는 아이디어를 포 함한다.. - 220 -
알고리즘 이해하기 8주 주제 생활 속 알고리즘 구현하기 ( 하교 알고리즘 ) 본 활동은 알고리즘 이해하기 단원의 다섯 번째 시간으로서 알고리즘의 분 석방법에 대해 학습한다. 알고리즘을 분석하는 이유는 효율적인 알고리즘을 찾고 실행시간이나 기억 공간을 최소화 할 수 있는 방법을 찾기 위함이다. 이번 차시 에는 좀더 구체적으로 알고리즘을 분석하는 이유를 학습한다. 어떤 문제가 주어 졌을 때 그 문제를 해결할 수 있는 여러 가지 알고리즘이 존재한다. 따라서 많은 사람들이 많은 알고리즘 중에서 어떤 알고리즘을 선택할 것인지를 고민하게 된 다. 주어진 상황에 따라서 결과가 다르게 나올 수 있기 때문에 상황에 맞는 알 고리즘을 선택해야 한다. 또한 중요하게 생각해야 할 것은 문제를 해결하는 속도 에 더 비중을 둘 것인지 아니면 알고리즘의 단순성에 더 비중을 둘 것인지에 따 라서 알고리즘의 선택이 달라지기 때문에 알고리즘의 객관적인 분석방법이 필요 하다. 따라서 이번 차시에서는 좋은 알고리즘을 작성하기 위한 알고리즘의 분석 방법에 대해 학습한다. 또한 실생활 알고리즘 중 하교 알고리즘 을 작성하고 이 를 순서도와 의사코드를 이용하여 표기하는 방법에 대해 학습한다. 미리 준비한 학생들의 하교 알고리즘과 다양한 조건 및 환경을 제시한 선생님의 하교 알고리 즘을 비교하고 스스로 알고리즘을 작성하고 표현하는 능력을 배양한다. 교육 목표 1. 2. 3. 5. 정보과학 분야 사고력 신장 정보과학 분야 적성 강화 정보과학 분야 특정지식 습득 정보과학 분야 일반능력신장 교육 내용 1-2. 논리전개 및 추론능력 - 221 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 2-3. 3-1. 5-1. 5-2. 정보과학과 실생활과의 연계성 알고리즘 설계 자율적 탐구 및 학습능력 상호작용과 의사소통능력 세부 교육 내용 학습자가 준비한 하교 알고리즘 에 대해 발표를 실시한다. 알고리즘 분석의 중요성에 대해 학습한다. 알고리즘 분석 단계에 대해 학습한다. 알고리즘 분석 기준에 대해 학습한다. 하교 알고리즘의 구상 및 설계에 대해 학습한다. 하교 알고리즘의 표현방법에 대해 학습한다. 다양한 알고리즘의 표현 방법을 연구한다. 교육방법 발표와 토론, 강의, 주제별 연구 프로젝트 - 222 -
알고리즘 이해하기 교육목표 < 교육목표 - 교육내용 - 세부교육내용 - 교육방법의 유기적 연관성 > 교육내용 세부교육내용 교육방법 1.정보과학 분야 1-2. 논리전개 사고력 신장 및 추론 능력 학습자가 준비한 하교 알고리즘 에 2-3. 정보과학 대해 발표를 실시한다. 발표와 토론 2.정보과학 분야 과 실생활과 발표한 내용에 대해 토론한다. 적성 강화 의 연계성 알고리즘 분석의 중요성에 대해 3.정보과학 분야 3-1. 알고리즘 특정지식 습득 5.정보과학 분야 일반능력 신장 설계 5-1. 자율적 탐 구와 학습 능력 5-2. 상호작용 과 의사소통 능력 학습한다. 알고리즘 분석 단계에 대해 학습 한다. 알고리즘 분석 기준에 대해 학습 한다. 하교 알고리즘의 구상 및 설계에 대해 학습한다. 하교 알고리즘의 표현방법에 대해 학습한다. 발표한 내용에 대해 토론한다. 다양한 알고리즘의 표현 방법을 연구한다. 강의 발 표 와 토 론, 주제별 연구 프로젝트 준비물 교사용 학생용 관련 시청각 자료, 인터넷 검색용 PC 학생용 활동지 필기도구 사진 - 223 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 교수학습 활동 학습 단계 도입 활동 교수학습 활동 이번 차시의 세부교육내용을 소개한다. 학습자가 준비한 발표 내용에 대하여 간단한 질문 과정을 시간 ( 총 90 분 ) 5 5 지도초점 및 유의점 학생 스스로가 진행할 수 있 도록 도우면서, 모든 학생들 통해 준비 정도를 파악한다. 이 참여하도록 독려한다. 시간이 부족할 경우 하교 알 고리즘의 표현 에 대하여 발표 5 본 활동 할 학습자를 선정한다. 발표자의 내용 중에서 토론이 가능한 내용을 선정하여 토론 20 을 진행한다. 토론 내용을 종합 정리한다. 하교 알고리즘의 분석 단계 5 20 하교 알고리즘의 이해를 도 우면서 순서도를 활용하여 및 기준과 구현 방법에 대한 하교 알고리즘을 구현할 수 강의를 진행한다. 있음을 설명한다. 정리 활동 본 시간에 배운 내용 정리 다음 주 교육에 대한 안내와 준비 사항을 안내한다. 20 10 학생 스스로가 소풍 알고리 즘 작성을 진행할 수 있도록 이해를 도우면서, 모든 학생 들이 참여하도록 독려한다. 주요 초점 질문 1. 알고리즘의 분석이 왜 중요할까? 2, 알고리즘을 분석할 때 기준은 무엇일까? 3. 알고리즘의 분석은 어떤 단계로 이루어질까? 4. 하교 알고리즘을 작성하기 위해 필요한 것은 무엇일까? 5. 하교 알고리즘을 알고리즘 표현 방법으로 표현 할 수 있는가? - 224 -
알고리즘 이해하기 지도활동 도입 활동 1. 이번 차시의 세부 교육 내용을 소개합니다. 알고리즘 분석의 중요성에 대해 학습한다. 알고리즘 분석 단계에 대해 학습한다. 알고리즘 분석 기준에 대해 학습한다. 하교 알고리즘의 구상 및 설계에 대해 학습한다. 하교 알고리즘의 표현방법에 대해 학습한다. 본 활동 1. 하교 알고리즘의 표현에 대해서 발표하고 토론해봅시다. 활동지 7-2(2) 사용 2. 발표 및 토론 내용을 종합하여 정리하면서 학생 스스로 결과를 정리할 수 있도록 지도합니다. 1) 발표자와 자신의 활동지 내용을 비교하여 장단점을 분석해봅시다. 2) 자신의 활동지를 스스로 평가해봅시다. 3. 강의 내용 1) 알고리즘의 분석 단계에 대해 강의합니다. 필수정보 1.1 알고리즘의 분석 단계 참조 2) 알고리즘의 분석 기준에 대해 강의합니다. 필수정보 1.2 알고리즘의 분석 기준 참조 3) 하교 알고리즘의 표현 방법에 대해 강의합니다. 필수정보 2. 하교 알고리즘 표현 참조 정리 활동 1. 학습 내용 정리 - 225 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 1) 여러분이 순서도로 작성한 하교 알고리즘을 의사코드로 변환해봅시다. 활동지 8-1(1) 사용 2) 영화관의 요금표가 다음과 같다고 합니다. 연령과 요금의 관계를 표시한 것인데 어떤 사람이 왔을 때 그 사람의 요금을 계산하는 순서도와 의사코드 를 팀별로 작성해봅시다. 활동지 8-1(2) 구분 노인 사용 연령 요금 65세 이상 3000원 일반인 19세 이상 65세 미만 5000원 중고교생 13세 이상 19세 미만 4000원 초등학생 6세 이상 13세 미만 3000원 유아 6세 미만 무료 2. 다음 주 교육 내용 안내 1) 소풍 알고리즘을 작성하기 위한 조건을 정리해봅시다. 활동지 8-2(1) 사용 2) 여러분이 생각한 소풍 알고리즘을 순서도로 표현해봅시다. 활동지 8-2(2) 사용 - 226 -
알고리즘 이해하기 평가 평가 내용 하교 알고리즘을 발표함으로써 논리전개 및 추론능력과 과의 연계 능력을 갖게 되었는지 평가한다. 정보과학과 실생활 알고리즘 분석 단계 및 기준, 표현 방법을 통하여 알고리즘 설계를 학습하 였는지 평가한다. 학습자가 미리 준비한 활동지와 본차시에 작성한 활동지, 학습자의 발표 내 용, 토론 참여도 등을 종합적으로 평가하여, 논리전개 및 추론능력, 자율적 탐구와 학습능력, 상호작용과 의사소통능력이 신장되었는지를 평가한다. 평가 방법 발표 및 토론 평가 : 도입활동 1 번, 본활동 2번 활동시 평가 그룹 프로젝트 산출물 평가 : 정리활동 1번 2) 활동시 평가 평가도구 1/1 평가 기준 사용 하교 알고리즘 작성 시에 고려 사항들이 포함되었는가? 하교 알고리즘을 정확히 표현하였는가? 독창적인 방법으로 하교 알고리즘을 표현하였는가? 평가 유의점 토론 시 학생들이 적극적으로 참여하도록 지도한다. - 227 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 필수정보 1. 알고리즘의 분석 알고리즘을 분석하는 이유는 효율적인 알고리즘을 찾고 실행시간이나 기억 공간을 최소화 할 수 있는 방법을 찾기 위함이다. 좀더 구체적으로 알고리즘을 분석하는 이유를 알아보자. 어떤 문제가 주어졌을 때 그 문제를 해결하는 여러 가지 알고리즘이 존재한다. 따라서 많은 사람들이 많은 알고리즘 중에서 어떤 알 고리즘을 선택할 것인지를 고민하게 된다. 그러나 이때 기억해두어야 할 것은 최 상의 알고리즘은 없다는 것이다. 즉, 주어진 상황에 따라서 결과가 다르게 나올 수 있기 때문에 상황에 맞는 알고리즘을 선택해야 한다. 또한 중요하게 생각해야 할 것은 문제를 해결하는 속도에 더 비중을 둘 것인지 아니면 알고리즘의 단순 성에 더 비중을 둘 것인지에 따라서 알고리즘의 선택이 달라진다는 것이다. 따라 서 알고리즘의 객관적인 분석방법이 필요하다. 과연 주어진 문제의 해답을 얻기 위하여 최상의 알고리즘을 어떻게 선택할 수 있을까? 최상의 알고리즘 선택은 적용 가능한 여러 알고리즘들을 서로 비교 분석함으로써 가능하다. 그러나 사실 적으로 모든 알고리즘을 다 수행할 수 없기 때문에 문제점과 조건을 잘 판단해 야 한다. 또한 기존의 알고리즘을 개선하기 위해서도 알고리즘의 분석이 필요하 다. 1.1 알고리즘의 분석단계 알고리즘의 분석단계는 일반적으로 다음과 같이 세 단계로 구분할 수 있다. (1) 제1 단계 : 알고리즘을 판단할 수 있는 입력될 데이터의 특성을 결정한다. 메모리 요구사항이나 필요조건에 대하여 평균적인 수행시간(run time) 을 얻을 수 있는 입력 데이터를 정한다. 즉, 여러 종류의 데이터들을 알고리즘에 적용시키면 어느 정도의 실행시간 범위가 결정된다. 이때 최선의 경우와 최악의 경우를 찾는 다. (2) 제2 단계 : 알고리즘을 구성하는 동작들과 수행시간에 직접적으로 영향을 미치는 연산들을 추상적이고 기본적인 동작 및 연산들로 분리하여 그 동작의 수 행시간을 비교하고 기본적인 연산을 결정한다. (3) 제3 단계 : 기본적인 연산들의 각 연산횟수에 대하여 평균의 경우와 최악 의 경우에 대한 수학적 분석을 수행한다. - 228 -
알고리즘 이해하기 1.2 알고리즘의 분석 기준 알고리즘의 분석 기준은 총 다섯 가지로 구분할 수 있다. 성, 작업량, 기억장소 사용량, 단순성, 최적성이다. 그 기준들은 정확 (1) 정확성(Correctness) 알고리즘에서 수행될 입력 데이터와 알고리즘 수행 후 기대되는 출력에 대하 여 정확하게 이해를 하여야 한다. 정확한 입력 데이터로부터 올바른 출력결과가 생성되어야 한다. 이는 주어진 입력으로부터 원하는 출력을 얻을 수 있는 방법을 수학적으로 기술함으로써 확인할 수도 있고 직접 프로그램화하여 실행함으로써 확인할 수도 있다. 만약 문제가 짧고 단순하다면 작은 예제를 이용하여 종이와 연필로 그 알고리즘의 정확성을 증명할 수 있다. 그러나 매우 복잡한 알고리즘이 라면 전체 알고리즘을 작은 단위로 나누어서 각각의 작은 단위의 프로그램이 올 바르게 수행되는 것을 증명하여 이것이 증명된다면 전체 프로그램이 정확하다는 것을 증명할 수 있다. 정확성을 증명할 수 있는 중요한 방법으로 가장 많이 사용 되는 것이 수학적 귀납법이다. (2) 작업량(Amount of work done) 문제를 해결하기 위해 필요한 작업량을 알 수 있다면 같은 문제를 해결하는 여러 개의 알고리즘 중에서 가장 적은 작업량을 갖는 알고리즘을 선택하는 것이 최선일 것이다. 따라서 어떻게 알고리즘의 작업량을 계산하는가 하는 것이 문제 가 될 수 있다. 즉, 이것은 알고리즘이 수행되는데 걸리는 시간을 측정하는 것이 다. 그러나 실행시간은 컴퓨터의 종류에 따라서 달라질 수 있으므로 정확한 방법 이라고 할 수 없다. 또 다른 방법은 알고리즘을 수행하기 위한 프로그램에서 실 행되는 모든 연산의 개수를 세어보는 방법이 있다. 그러나 이 방법도 적당한 방 법이라고 할 수 없다. 왜냐하면 구현한 프로그래밍 언어의 종류나 프로그래머에 의하여 달라질 수 있기 때문이다. 따라서 컴퓨터의 종류나 프로그래밍 언어, 프 로그래머의 스타일로부터 독립된 방법이 필요하다. 이를 위해 가장 좋은 방법은 어느 알고리즘에나 포함될 수 있는 기본적인 연산(read, write 등) 을 제외하고, 주어진 문제를 해결하기 위한 가장 중요한 연산들만으로 작업량을 측정하는 방 법이다. 예를 들어 가장 많이 다루어지는 문제들 중에서 수행되는 주요 연산들은 다음과 같다. 이름이 저장되어 있는 목록에서 특정한 이름 - 목록의 각 이름들과 x를 비교하는 연산 실수로 된 두 개의 행렬을 곱하는 문제 x를 찾는 문제 - 229 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) - 두 수를 곱하는 연산 ( 또는 실수의 곱셈과 덧셈) 숫자들을 순서에 맞게 정렬하는 문제 - 두 개의 숫자들을 비교하는 연산 (3) 기억 장소 사용량(Amount of space used) 프로그램이 실행될 때에는 명령어, 변수, 상수 또는 입력 데이터를 저장하기 위한 공간이 필요하다. 또한, 프로그램이 수행되는 동안 데이터를 변경하고 정보 를 저장하는데도 공간이 필요하다. 이는 입력 데이터의 형태에 따라서 필요한 공 간의 양이 달라지기도 한다. 그러나 현재의 추세로 보면 메모리나 기억장치의 가 격이 점점 낮아지므로 작업량만큼 중요하게 여겨지지는 않고 있다. (4) 단순성(Simplicity, Clarity) 알고리즘을 간단하게 디자인하는 것은 매우 중요하다. 즉 문제점을 올바르게 인식하여 해결할 수 있는 알고리즘을 알기 쉽고 실행하기 편하게 단순하게 작업 하는 것은 매우 중요한 일이다. 왜냐하면 알고리즘이 단순하면 알고리즘의 정확 성을 증명하기가 그만큼 쉬워지기 때문이다. 또한 프로그램의 작성 및 디버깅 등 이 매우 쉬워질 수 있다. (5) 최적성(Optimality) 어떤 알고리즘이 ' 최적이다' 라고 하는 것은 같은 문제를 해결하는데 그 알고 리즘보다 더 적은 숫자의 주요 연산을 수행하는 알고리즘이 없다는 것을 의미한 다. 즉 최적이라는 것은 ' 가장 잘 알려진' 이란 뜻이 아니라 ' 가장 좋은' 의 의미이 다. 어떤 문제를 해결하는 최적 알고리즘은 이미 그 문제를 해결할 수 있다고 알 려진 모든 알고리즘들뿐만 아니라 아직 발견되지 않은 알고리즘들까지 포함하여 그 중에서 최적의 알고리즘을 말한다. 따라서 최적의 알고리즘을 찾고 만드는 것 이 매우 중요하다. 2. 하교 알고리즘 표현 2.1 하교 알고리즘의 표현방법 우리는 거의 매일 학교에 등교하고 그날 모든 수업이 끝나 담임선생님과의 종례를 마치게 되면 학교에서 하교한다. 하교할 때에는 내일 준비해야 할 수업 준비물들이 무엇인지 꼭 알아 와야 한다. 그리고 하교하기 위해서는 무엇보다 학 교에서 해야 할 일( 특별 활동 및 청소 등) 을 마쳐야 한다. 이 상황을 고려하여 다음과 같은 알고리즘을 순서대로 적을 수 있다. 담임선생님과의 종례를 마친 후 - 230 -
알고리즘 이해하기 부터 시작한다. (1) 내일 준비해야 할 수업 준비물들이 무엇인지 모두 적어 놓았는가를 생각 해 본다. (2) 수업 준비물들을 적어 놓지 않았으면 친구들이나, 담임선생님에게 물어보 고 수업 준비물 목록을 적어 놓는다. (3) 자신이 오늘 청소 당번이면 청소를 하고, 아니면 소지품을 챙겨 나갈 준 비를 한다. (4) 청소 당번이면 청소 준비를 한다. (5) 자신의 청소 담당 구역을 확인하고 담당구역을 청소한다. (6) 선생님께 검사를 받는다. (7) 선생님이 허락을 하지 않으면 (5) 번으로 돌아간다. (8) 교실에서 자신의 소지품을 빠짐없이 챙긴다. (9) 하교 후 친구들이나, 가족과 약속한 일이 있는지 생각해 본다. (10) 약속한 일이 있으면 그 일을 마친다. (11) 집에 들어가기 전에 구입해야할 수업 준비물이 있으면 준비물을 구입한다. (12) 하교 알고리즘을 종료한다. 2.2 하교 알고리즘의 분석 및 조건 찾기 앞에서 우리는 하교 알고리즘의 표현방법에 대해 살펴보았다. 그럼 하교 알고 리즘을 분석하고 하교 알고리즘의 조건을 알아보자. 하교라는 것은 단지 학교에 서 돌아온다는 것 뿐 아니라 방과 후 활동의 시작을 의미한다. 이에 학교에서 돌 아오기 위한 준비 뿐 아니라 방과 후 활동을 생각하는 것도 필요하다. 학교에 하 교할 때 생각해야 알고리즘의 조건은 내일 준비해야 할 수업 준비물들이 무엇인 지 꼭 알아 와야 한다는 것과 그리고 하교하기 위해서는 무엇보다 학교에서 해 야 할 일( 특별 활동 및 청소 등) 을 마쳐야 한다는 것이다. 아울러 하교 시에 구 입할 수 있는 수업 준비물이 있으면 준비해 와야 한다는 것이다. [ 그림 8-1] 은 위에서 제시한 하교 알고리즘을 순서도로 표현한 것이다. 예시한 알고리즘을 기 반으로 하교 알고리즘의 조건으로 제시된 것을 만족시키기 위한 추가적인 알고 리즘들을 학생들이 스스로 추가하여 구성해 보길 바란다. 2.3 하교 알고리즘의 순서도 표현 순서도를 작성할 때는 처음에는 개략적인 흐름을 처리하여 블록별로 나타내 고 단계적으로 구체화시켜 나가는 것이 좋다. 하교알고리즘을 순서도로 작성해 보자. - 231 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) [ 그림 8-1] 하교 알고리즘 순서도 - 232 -
알고리즘 이해하기 읽기자료 [ 지그비 (ZigBee) 와 무선 메쉬 네트워크 (Wireless Mesh Network)] 1. 지그비 기술 개요 가. 유비쿼터스 컴퓨팅 시대의 차세대 근거리 통신 기술 유비쿼터스 컴퓨팅은 모든 컴퓨터가 서로 연결되고 이용자 눈에 보이지 않으 며 언제 어디서나 사용 가능하고 현실세계의 사물과 환경 속으로 스며들어 일상 생활에 통합되는 것을 기본 전제로 한다. 유비쿼터스 기술 중에서도 우리 일상 에 가장 깊숙이 들어와 있는 것이 바로 홈네트워크, 홈오토메이션이다. 이를 통 해 가정 내의 모든 기기들을 네트워크로 연결할 수 있으며, 외출 중에도 집과 사무실 안의 모든 기기들을 자유롭게 제어하는 것도 가능하다. 그리고 이를 가능 하게 하는 핵심 기술 중 하나가 지그비(Zigbee) 등의 근거리 무선통신 기술이다. 지그비는 지그재그(Zigzag) 와 벌(Bee) 의 합성어로 벌이 꽃을 쫓아 여기저기 다니며 모든 것을 통신한다는 의미의 합성어로 근거리 무선통신을 일컫는 용어 다. 또 이 기술의 표준화를 위한 모임의 태동기에 여러 제안 및 결정을 위한 혼 선을 빗댄 말이기도 하다. [ 그림 1] 에서는 유비쿼터스 환경을 구성하는 초소형 저전력 무선 네트워크 기술을 보여준다. - 233 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) [ 그림 1] 유비쿼터스 환경을 구성하는 초소형/ 저전력 무선 네트워크 기술 나. 지그비 특징 및 응용 ZigBee system은 2.4GHz, 868MHz, 915 MHz의 주파수 대역을 사용하며 각 각 250kbps, 20kbps, 40kbps 의 데이터 전송률을 제공한다. 이 기술은 하나의 무 선네트워크에 255 대의 기기를 연결할 수 있으며, AA건전지 2개로 몇 년을 작동 할 정도로 전력 소모가 적다. 이에 따라 지그비는 초소형 저전력 저가격 시장에 적합하다는 것이 가장 큰 특징이다. 지그비 노드는 센서와 같은 역할을 하기 때 문에 대량의 정보 전송이나 높은 주파수를 필요로 하지 않는다. 또한, 다른 무선통신 기술과 달리 전력소모도 적고 저가 제품 구현이 가능해 산업전자 군사용으로 폭넓게 쓰일 수 있고, 지능형 홈네트워크 빌딩 및 산업용기기 자동화 물류 환경 모니터링 휴먼 인터페이스 텔레매틱스 군사 등 다양한 유비쿼터 스 환경에 응용할 수 있다. 또한 적외선 방식의 전통적인 TV 리모컨이나 게임기 및 컴퓨터 키보드 마우스 등 PC 주변기기에서도 응용이 가능하다. 가정의 경우, 조명부터 홈시큐리티 시스템까지 모든 것을 무선으로 제어 가능한 네트워크를 구 축할 수 있다. < 표 1> 지그비(ZigBee) 응용 분야 및 종류 분 야 종 류 침입탐지, 생화학 공격 및 테러 방지, 국방관련 물류, 피아 식별 국 방 및 위치인식, 정찰, 감시 등 - 234 -
알고리즘 이해하기 환 경 수질, 해양, 토양, 대기, 산림 감시, 생태계 감시, 재난방지. 등 경제 산업 신 산업창출, 유비쿼터스 기본 인프라 제공 및 산업안전시스템, 홈 오토메이션 등 과학기술 다중센서 기술, 센서네트워크 기술, 위치인식 및 추적 기술 등 에 대한 기반 기술 확보 및 관련 전문 인력 양성 2. 무선 메쉬 네트워크 기술 개요 가. 무선 메쉬 네트워크 유비쿼터스 시대의 무선 네트워크 시장에 새로운 패러다임을 제시할 것으로 기대되고 있는 무선 메쉬 네트워크는 도시나 특정 지역 전체를 대상으로 고속 인터 넷을 지원할 수 있도록 고정형과 모바일 노드들을 무선 링크로 연결한 멀티홉 Ad-hoc 네트워크의 일종이다. 무선 메쉬 네트워크는 기존의 Hot Spot과 같은 무선랜의 단점인 지역 커버리 지와 네트워크 용량의 한계를 극복하기 위해 유선망의 메쉬 네트워크 구조를 무 선망에 채택하여 망의 신뢰성 및 확장성, 이동성의 장점을 취할 수 있도록 설계 되었다. 뿐만 아니라 자가망구성(self-configuring), 자동복구(self-healing), 높은 대역폭과 기존 무선랜 구조보다 넓은 커버리지를 제공함에 따라, 향후 지능형 교통정보시스템, 차세대 무선통신, 공공 안전 등 다양한 분야에서 활용할 수 있 다. - 235 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) [ 그림 2] 무선 메쉬 네트워크 구조 나. 무선 메쉬 네트워크의 장점 1) 낮은 설치/ 유지비용 Hot Spot 과 같은 기존 방법으로 메트로 무선랜(WMAN) 을 구성할 경우 802.11 신호의 제한된 전송 범위 때문에 많은 수의 액세스 포인트를 설치해야 하 고, 이들을 백본망에 연결하기 위한 유선 케이블이 필요하게 된다. 이에 비해, 무 선 메쉬 네트워크의 경우 Ad-hoc 네트워킹을 통한 넓은 커버리지를 이용하여 유선망과의 연결에 필요한 케이블, 인건비, 수리비 등 인프라 구축에 필요한 비 용을 효과적으로 줄일 수 있으며, 케이블 설치가 불가능한 지역까지 커버할 수 있다. 2) 확장성 기존 무선랜은 무선랜의 커버리지가 확장되면서 신호 강도가 약해짐에 따라 전송속도 감소와 신호 손실 등의 신뢰성 문제가 발생하게 된다. 그러나 무선 메 쉬 네트워크는 짧은 거리의 링크를 멀티 홉을 통해서 전송하기 때문에 네트워크 - 236 -
알고리즘 이해하기 커버리지가 확장되며, 빠른 속도로 데이터 전송을 가능하게 한다. 또한 무선 메 쉬 네트워크의 모든 노드가 라우터 역할을 할 수 있으므로, 액세스 포인트의 수 가 증가할수록 네트워크의 용량과 커버리지가 비례하여 증가한다는 장점을 갖는 다. 3) 신뢰성 무선 메쉬 네트워크는 네트워크를 자동으로 구성할 수 있는 특성 (self-configuring)과 함께 네트워크 구성이나 통신 경로를 변경하는 등 네트워크의 변화에 따라 스스로 적응할 수 있는 특성을 갖는다. 예를 들어, 한 통신 경로에 일 시적인 장애물이나 외부의 전파 방해로 인한 노드 실패, 경로 실패 등의 문제가 발생할 경우 대체 경로를 이용하여 통신을 계속할 수 있다. 4) 이동성 무선 메쉬 네트워크에서는 네트워크의 변화에 따라 동적으로 네트워크와 경 로를 재구성하는 기법을 이용하여 모바일 노드의 이동을 지원하며, 자동차의 경 우 고속 주행시에도 인터넷 서비스 이용이 가능하다 < 표 2> 무선 메쉬 네트워크 특성 토폴로지 신뢰성 적응성 확장성 점 대 점 높음 낮음 없음 점 대 다점 낮음 낮음 중간 (7~30 개) 메쉬네트워크 높음 높음 높음 ( 수천 개) < 출처 : 참고문헌 6 > - 237 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 1. 참고문헌 1 2 3 4 참고자료 정보교육학회 교재개발분과위원회(2004), 컴퓨터과 교수법 및 교재연구, 생능 출판사 정보교육학회 교재개발분과위원회(2004), 컴퓨터 교육론, 삼양미디어 박정호(2003), 컴퓨터 알고리즘, 상조사 Cormen Thomas H(2001), Introduction to Algorithms, 2/E, MIT 5 Horowitz Ellis, Sahni Sartaj, Anderson-Freed S(1992), Fundamentals of Data Structures in C, Computer Science 6 IT 신기술 현황 및 향후 적용방안, 한국전산원 2. 인터넷 사이트 1 http://ds.pe.kr/ 2 http://mathman.pe.kr/ - 238 -
알고리즘 이해하기 정보과학-8주 발전 단원 1 활동지 8-1(1) 교육청 영재교육원/ 영재학급 중학교 이름 여러분이 순서도로 작성한 하교 알고리즘을 의사코드로 변환해봅시다. - 239 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 정보과학-8주 발전 단원 1 활동지 8-1(2) 교육청 영재교육원/ 영재학급 중학교 이름 [ 팀별 연구 프로젝트 ] 영화관의 요금표가 다음과 같다고 합니다. 연령과 요금의 관계를 표시한 것인 데 어떤 사람이 왔을 때 그 사람의 요금을 계산하는 순서도와 의사코드를 작 성해봅시다. 구분 노인 연령 요금 65세 이상 3000원 일반인 19세 이상 65세 미만 5000원 중고교생 13세 이상 19세 미만 4000원 초등학생 6세 이상 13세 미만 3000원 유아 6세 미만 무료 - 240 -
알고리즘 이해하기 정보과학-8주 발전 단원 1 활동지 8-2(1) 교육청 영재교육원/ 영재학급 중학교 이름 소풍 알고리즘을 작성하기 위한 조건을 정리해봅시다. - 241 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 정보과학-8주 발전 단원 1 활동지 8-2(2) 교육청 영재교육원/ 영재학급 중학교 이름 여러분이 생각한 소풍 알고리즘을 순서도로 표현해봅시다. - 242 -
알고리즘 이해하기 정보과학-8주 발전 단원 1 평가도구(1/1) 교육청 영재교육원 중학교 이름 교사용 번호 측정요소 측정의 근거 1점 2점 3점 4점 5점 창의성 독창성 기존의 알려진 방법과는 확연히 구분 되는 형식, 이론, 주장 등이 존재하는 가? 자신만의 참신하고 독특한 아이디어 를 제시하고 있는가? 논리성 전개과정과 문제해결에서 전후가 명 확하며, 원인과 결과 및 사용되는 이 론적 배경이 분명하다. 다양성 복수의 상이한 요소, 부분 또는 수준 들을 포함하고 있다. 가치성 주제나 내용이 명확한 이슈를 포함한 다. 기능적 솜씨 논리적으로 치밀하며, 도입 전개 결론 에 이르는 과정이 치밀하다. 유용성 발전 가능성 내용과 결과를 실제에 적용하여 사용 할만한 가치가 있다. 앞으로 새로운 산출물, 혹은 연구 결 과를 도출할 수 있는 아이디어를 포 함한다. - 243 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 9주 주제 생활 속 알고리즘 구현하기 ( 소풍 알고리즘 ) 본 활동은 알고리즘 이해하기 단원의 여덟 번째 시간으로서 효율적인 알고 리즘을 찾는 방법과 알고리즘의 선택 방법에 대해 학습한다. 어떤 문제를 해결하 는 알고리즘이 많이 존재하는 경우에 어떤 것을 선택해야 하는가 하는 의문이 종종 발생한다. 알고리즘의 선택에 관한 일반적인 지침을 분명하게 얘기하는 것 은 어렵지만 이번 차시에서는 알고리즘 선택 시 주의해야 할 중요한 몇 가지 요 소를 학습한다. 알고리즘이 좋고 나쁘다는 것을 구별하는 것은 복잡도의 대소 관 계에 의존하므로 복잡도가 적은 것, 다시 말해서 빠른 알고리즘을 선택해야 한다 는 것은 두말할 나위도 없다. 그러나 이것은 각 알고리즘의 복잡도만으로 잘라 말할 수는 없다. 따라서 효율적으로 알고리즘을 선택하는 방법을 학습한다. 또한 이번 차시에서는 실생활 알고리즘 중 소풍 알고리즘 을 작성하고 이를 순서도와 의사코드를 이용하여 표기하는 방법에 대해 학습한다. 미리 준비한 학생들의 소 풍 알고리즘과 다양한 조건 및 환경을 제시한 선생님의 소풍 알고리즘을 비교하 고 스스로 알고리즘을 작성하고 표현하는 능력을 배양한다. 교육 목표 1. 2. 3. 5. 정보과학 분야 사고력 신장 정보과학 분야 적성 강화 정보과학 분야 특정지식 습득 정보과학 분야 일반능력신장 교육 내용 1-2. 논리전개 및 추론능력 2-3. 정보과학과 실생활과의 연계성 3-1. 알고리즘 설계 - 244 -
알고리즘 이해하기 5-1. 5-2. 자율적 탐구 및 학습능력 상호작용과 의사소통능력 세부 교육 내용 효율적인 알고리즘을 찾는 방법에 대해 학습한다. 환경에 맞는 알고리즘의 선택 방법에 대해 학습한다. 소풍 알고리즘의 구상 및 설계에 대해 학습한다. 소풍 알고리즘의 표현방법에 대해 학습한다. 다양한 알고리즘의 표현 방법을 연구한다. 교육방법 발표와 토론, 강의, 주제별 연구프로젝트 - 245 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 교육목표 < 교육목표 - 교육내용 - 세부교육내용 - 교육방법의 유기적 연관성 > 교육내용 세부교육내용 교육방법 1.정보과학 분야 1-2. 논리전개 사고력 신장 및 추론 능력 학습자가 준비한 소풍 알고리즘 에 2-3. 정보과학 대해 발표를 실시한다. 발표와 토론 2.정보과학 분야 과 실생활과 발표한 내용에 대해 토론한다. 적성 강화 의 연계성 효율적인 알고리즘을 찾는 방법에 3.정보과학 분야 3-1. 알고리즘 특정지식 습득 설계 5-1. 자율적 탐 대해 학습한다. 환경에 맞는 알고리즘의 선택 방법 에 대해 학습한다. 소풍 알고리즘의 구상 및 설계에 대 해 학습한다. 소풍 알고리즘의 표현방법에 대해 학습한다. 구와 학습 발표한 내용에 대해 토론한다. 5.정보과학 분야 능력 다양한 알고리즘의 표현 방법을 일반능력 신장 5-2. 상호작용 연구한다. 과 의사소통 능력 강의 발 표 와 토 론, 주제별 연구 프로젝트 준비물 교사용 학생용 관련 시청각 자료, 인터넷 검색용 PC 학생용 활동지 필기도구 사진 - 246 -
알고리즘 이해하기 교수학습 활동 학습 단계 교수학습 활동 시간 ( 총 90 분 ) 지도초점 및 유의점 도입 활동 이번 차시의 세부교육내용을 소개한다. 5 학습자가 준비한 발표 내용에 대하여 간단한 질문 과정을 통 5 학생 스스로가 진행할 수 있도록 도우면서, 모든 학 해 준비 정도를 파악한다. 생들이 참여하도록 독려한 시간이 부족할 경우 소풍 알 고리즘의 표현 에 대하여 발표 5 다. 본 활동 할 학습자를 선정한다. 발표자의 내용 중에서 토론이 가능한 내용을 선정하여 토론 20 을 진행한다. 토론 내용을 종합 정리한다. 소풍 알고리즘의 선택 기준과 5 20 소풍 알고리즘의 이해를 도 우면서 순서도를 활용하여 구현 방법에 대한 강의를 진행 소풍 알고리즘을 구현할 수 한다. 있음을 설명한다. 정리 활동 본 시간에 배운 내용 정리 다음 주 교육에 대한 안내와 준비 사항을 안내한다. 20 10 학생 스스로가 긴급 상황 처리 알고리즘 작성을 진행 할 수 있도록 이해를 도우 면서, 모든 학생들이 참여 하도록 독려한다. 주요 초점 질문 1. 좋은 알고리즘을 찾는 것은 왜 중요할까? 2, 알고리즘을 선택할 때 기준은 무엇일까? 3. 환경에 알맞은 알고리즘 선택 방법은 무엇일까? 4. 소풍 알고리즘을 작성하기 위해 필요한 것은 무엇일까? 5. 소풍 알고리즘을 알고리즘 표현 방법으로 표현할 수 있는가? - 247 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 지도활동 도입 활동 1. 이번 차시의 세부 교육 내용을 소개합니다. 효율적인 알고리즘을 찾는 방법에 대해 학습한다. 환경에 맞는 알고리즘의 선택 방법에 대해 학습한다. 소풍 알고리즘의 구상 및 설계에 대해 학습한다. 소풍 알고리즘의 표현방법에 대해 학습한다. 본 활동 1. 소풍 알고리즘의 표현에 대해서 발표하고 토론해봅시다. 활동지 8-2(2) 사용 2. 발표 및 토론 내용을 종합하여 정리하면서 학생 스스로 결과를 정리할 수 있도록 지도합니다. 1) 발표자와 자신의 활동지 내용을 비교하여 장단점을 분석해봅시다. 2) 자신의 활동지를 스스로 평가해봅시다. 3. 강의 내용 1) 적절한 알고리즘을 찾는 방법에 대해 강의합니다. 필수정보 1. 알고리즘 찾기 참조 2) 알고리즘의 선택 방법에 대해 강의합니다. 필수정보 2. 알고리즘의 선택 참조 3) 소풍 알고리즘의 표현 방법에 대해 강의합니다. 필수정보 3. 소풍 알고리즘 참조 정리 활동 1. 학습 내용 정리 1) 여러분이 순서도로 작성한 소풍 알고리즘을 의사코드로 변환해봅시다. - 248 -
알고리즘 이해하기 활동지 9-1(1) 사용 2) [ 팀별 연구 프로젝트 ] 다음은 간단한 연산으로 값을 구할 수 있는 문제입 니다. 두 개의 블록 A 와 B 가 있습니다. 두 블록의 모양은 항상 기억 ( ㄱ ) 모 양이며, 두 블록의 크기는 서로 다를 수 있습니다. 풀어야 할 문제는 블록 A 가 블록 B 에 들어가는지, 블록 B 가 블록 A 에 들어가는지, 또는 두 블록은 서 로 끼워 넣을 수 없는지를 조사하여 큰 블록의 이름을 출력하는 것입니다. 때 답이 없으면 X 를 출력합니다. 예를 들어, 아래 그림과 같이 블록 A 와 블 록 B 가 있을 때, 블록 A 를 90 도 돌려서 블록 B 에 넣을 수가 있습니다. 이 경 우에 답은 B 가 됩니다. 활동지 9-1(2) 사용 이 2. 다음 주 교육 내용 안내 1) 긴급 상황 처리 알고리즘을 작성하기 위한 조건을 정리해봅시다. 활동지 9-2(1) 사용 2) 여러분이 생각한 긴급 상황 처리 알고리즘을 순서도로 표현해봅시다. 활동지 9-2(2) 사용 - 249 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 평가 평가 내용 소풍알고리즘을 발표함으로써 논리전개 및 추론능력과 정보과학과 실생활 과의 연계 능력을 갖게 되었는지 평가한다. 알고리즘의 선택의 기준 및 방법에 대한 학습을 통해 알고리즘 설계를 학 습하였는지 평가한다. 학습자가 미리 준비한 활동지와 본차시에 작성한 활동지, 학습자의 발표 내 용, 토론 참여도 등을 종합적으로 평가하여, 논리전개 및 추론능력, 자율적 탐구와 학습능력, 상호작용과 의사소통능력이 신장되었는지를 평가한다. 평가 방법 발표 및 토론 평가 : 도입활동 1 번, 본활동 2번 활동시 평가 그룹 프로젝트 산출물 평가 : 정리활동 1번 2) 활동시 평가 평가도구 1/1 평가 기준 사용 소풍 알고리즘 작성 시에 고려사항들이 포함되었는가? 소풍 알고리즘을 정확히 표현하였는가? 독창적인 방법으로 소풍 알고리즘을 표현하였는가? 평가 유의점 토론 시 학생들이 적극적으로 참여하도록 지도한다. - 250 -
알고리즘 이해하기 필수정보 1. 알고리즘 찾기 이전 시간에 우리는 알고리즘을 분석하는 방법에 대하여 살펴보았다. 배운 내 용을 바탕으로 이번 시간에는 먼저 예제를 통하여 답을 찾는 방법들을 모색해 보자. 하나의 예를 들어 다양한 방법들을 제시하고 살펴보도록 하자. 그 예로 미 로 찾는 방법을 살펴보도록 하자. 흔히 이것을 미로 알고리즘이라고 한다. 미로 가 있다고 하자. 우리는 미로의 입구에서 출구로 가는 가장 짧은 길을 찾으려고 한다. 어떤 방법들이 있을까? 이제 몇 가지 방법들을 비교해 보자. (1) 모든 길을 조사하여 가장 짧은 길을 찾는다. 현실이라면 거의 불가능하며 목숨을 잃을 지도 모른다. 그러나 컴퓨터에서는 되부름법 등으로 가능은 하다. 그러나 미로 찾기 로봇 대회에서 이 방법을 사용 하면 당연히 꼴등할 것이며, 좀 복잡한 미로에서는 경우의 수가 너무 많아 해결 하지 못할 수도 있다. (2) 오른손 방법을 사용한다. 입구에서 오른손으로 벽을 짚고 손을 떼지 않고 계속가면 비교적 빠른 길로 반드시 출구를 만난다. 이 방법은 현실적이며 미로를 좋아하는 유럽 사람들이 발 견하여 Right hand 법 이라 명명하였다. 따라서 알고리즘을 찾을 때 컴퓨터에 서도 방향 데이터(direction data) 를 사용하여 구현이 가능하다. 그러나 이 방법은 반드시 출구는 만나게 되나 이 길이 꼭 최단경로가 되는 것은 아니다. 참고로 물 론 왼손을 따라가도 된다. 그러나 발을 따라가면 조금 불편할 것이다. (3) 큐(Queue) 를 사용하여 찾는다. 이 방법은 입구에서 갈 수 있는 곳을 모두 큐에 기록한다. 즉, 입구에서 갈 수 있는 곳을 모두 기록하고, 두 번째 기록한 곳에서 갈 수 있는 곳을 또 기록한 다. 출구를 만날 때까지 이러한 과정을 반복하게 되면 같은 곳을 두 번 기록하지 않으며 어디에서 왔는지도 표시해 둔다. 출구에서 왔던 길을 되돌아가면 최단경 로가 된다. 이 방법은 매우 큰 미로에도 적용 가능하며 비교적 간단하기 때문에 가장 많이 사용되는 방법이다. 그러나 무슨 말인지 잘 모를 것이다. 큐가 무엇인 지를 학습하고 나면 더 확실하게 알 수 있을 것이다. (4) 다이나믹(Dynamic) 혹은 메모라이제이션(Memorization) 으로 찾는다. - 251 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 미로의 블록(block) 수가 많지 않다( 일반적으로 30000 개 이하) 면 상당히 빠른 결과를 기대할 수 있다. 이 방법은 입구에 이웃한 곳을 출구라 생각하고 최소 경 로를 구한 다음, 그곳에 이웃한 곳을 또 출구라 생각하고 이미 구한 경로를 이용 하여 최소 경로를 구한다. 이와 같이 범위를 넓혀 나가는 방법인데 범위가 제한 적이고 부분 문제로 분할 가능할 때에 매우 효과적이다. (5) 탐욕법으로 찾는다. 이 방법은 그 시점에서 제일 그럴듯한 곳으로 가고 그곳에서 또 그럴듯한 곳 으로 찾아가는 방법이다. 이곳저곳 기웃거려보고 제일 멀리 갈 수 있는 곳으로 가보는 것도 한 가지 방법이 된다. 출구를 찾으란 법도 더구나 최단 경로란 법도 없지만 운이 좋으면 때로는 좋은 결과도 기대된다. (6) 랜덤(Random) 법으로 찾는다. 랜덤이란 닥치는 대로 란 뜻이다. 즉, 입구에서 가고 싶은 곳으로 가고, 그 곳에서 또 닥치는 대로 가보는 것이다. 이러한 과정을 무수히 반복하여 그 중에 서 가장 짧은 길을 택하면 된다. 이 방법은 무식한 방법처럼 보이지만 생각보다 의외로 좋은 결과가 나올 때가 많다. 이 방법을 몬테 칼로(Monte Carlo) 법이라 이름하고 시행착오(Trial-and-error) 를 반복하여 근사해를 구하는 방법이라고 할 수 있다. (7) 휴리스틱(Heuristic) 으로 찾는다. 휴리스틱이란 작은 사전에는 나오지도 않는 경험적 이란 뜻을 가지고 있 다. 이 방법은, 말하자면 좋은 방법이 없으니 경험을 살려 생각대로 해보라는 것 이다. 한번 생각해 보자. 일단은 무조건 입구에서 출구에 가까운 쪽으로 계속 간 다. 그러다가 막히면 적당히 돌아 나와서 또 출구 쪽으로 간다. 이런 방법을 계 속하면 출구를 만나게 될 것이다. 즉, 휴리스틱은 각자의 생각대로 하면 되는 것 이다. 위에서 말한 탐욕법과 랜덤법도 일종의 휴리스틱이다. 미로의 최단 경로를 찾을 때도 이와 같은 여러 가지 방법을 생각할 수 있다. 물론 이 외에도 다른 방법들을 생각할 수도 있을 것이다. 그러나 여기서 주목할 점은 어떠한 방법이든 반복된 절차에 의하여 문제를 해결한다는 것이다. 이는 공 식에 대입하는 것과는 확연하게 구별된다. 따라서 알고리즘을 해결하기 위해서는 다양한 방법들을 구상하여 보고 어느 것이 좋을까 판단하여 적용하여야 한다. - 252 -
알고리즘 이해하기 2. 알고리즘의 선택 어떤 문제를 해결하는 알고리즘이 많이 존재하는 경우에 어떤 것을 선택해야 하는가 하는 의문이 종종 발생한다. 알고리즘의 선택에 관한 일반적인 지침을 분 명하게 얘기하는 것은 어렵지만 여기서 알고리즘 선택 시 주의해야할 몇 가지 점을 들기로 한다. 알고리즘이 좋고 나쁘다는 것을 구별하는 것은 복잡도의 대소 관계에 의존하므로 복잡도가 적은 것, 다시 말해서 빠른 알고리즘을 선택해야 한 다는 것은 두말할 나위도 없다. 그러나 이것은 각 알고리즘의 점근적인 복잡도만 으로 잘라 말할 수는 없다. 극단적인 예로서 점근적인 성능은 좋지만, n이 실제 로는 있을 수 없을 만큼 매우 큰 경우를 제외하고는 다른 알고리즘보다 느린 알 고리즘이 있는데 당연히 이런 알고리즘은 사용할 수 없다. 지금까지 점근적인 평가의 중요성만을 강조해 왔지만 문제의 크기 n이 그다 지 크지 않을 때는 점근적인 성능은 좋지 않더라도 단순한 알고리즘이 빠른 경 우가 많다. n<10 정도로 적은 문제에서는 일반적으로 간단한 알고리즘이 복잡한 알고리즘 보다 빠르다. 이것은 고속 알고리즘일수록 반복 횟수를 줄이기 위해서 루프속에 있는 연산이 복잡하게 되어 있는 경우가 많기 때문이다. 따라서 알고리 즘을 선택할 때는 문제의 크기를 나타내는 n이 어느 정도인지를 미리 예측해 두 어야 한다. 문제의 크기를 예측하는 데 있어서 프로그램에 입력되는 대표적인 데 이터 수 또는 최대라고 생각되는 데이터 수를 정할 수 있으면 더욱 좋지만 이러 한 것을 예측하기는 어려운 경우도 있다. 프로그램을 개발할 당시에는 적은 문제 에만 이용되리라 생각했으나 응용 범위가 넓어짐에 따라 당초의 예상을 넘는 큰 문제를 대상으로 해야 하는 경우가 생긴다, 크기가 작은 문제만을 대상으로 하는 알고리즘을 이용하면 이러한 문제에 대응할 수 없으므로 취급하려는 문제의 크 기에 대해서는 충분히 여유를 두지 않으면 안 된다. 문제의 크기에 대한 예측이 끝나면 그 크기의 문제를 해결할 수 있는 알고리 즘 중에서 가장 효율이 좋은 것을 선택하면 된다. 일반적으로는 n이 매우 크면 점근적인 성능이 좋은 알고리즘을 선택해야 하고, 그렇지 않으면 연산이 간단한 알고리즘을 선택해야 한다. 그러나 이것을 구별하는 것은 실제로는 그다지 쉽지 않을지도 모른다. 알고리즘 해석 시와는 대조적인 방법으로써 각 알고리즘을 실 제로 컴퓨터상에 실행시켜서 실행 시간을 측정하여 평가하는 방법이 있다. 이것 을 알고리즘의 실험적 평가라고 한다. 컴퓨터의 성능과 컴파일러의 품질, 프로그 래밍 기술의 우열 등 여러 가지 요소가 실제로는 프로그램의 속도에 영향을 미 친다. 알고리즘 해석 시에는 무시되는 이러한 사항까지 고려하여 종합적인 판정 을 하는 경우에는 실험적인 방법이 판정 근거가 된다. 점근적인 복잡도 평가에서는 계수를 무시하지만 알고리즘을 선택할 때에는 - 253 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 이것을 무조건 무시해서는 안 된다. 만일, 점근적인 복잡도가 같은 알고리즘이 두 개 있는 경우 어느 쪽이 빠른지를 정하는 것은 주요 항에 걸리는 계수가 되 는데 이 계수는 컴퓨터와 컴파일러에 따라 다르므로 최종적으로는 실험 결과에 따라 정해야 한다. 그러나 어느 알고리즘의 계수가 적은 가에 대해서는 어느 정 도까지는 컴퓨터를 한정하지 않아도 비교할 수 있다. 알고리즘은 빠르다고 해서 반드시 좋은 것은 아니다. 알고리즘이라고 하더라도 프로그램의 일부이므로 좋은 프로그램의 조건( 예, 정확성, 신뢰성, 해독성 등) 을 만족해야 한다. 이와 관련해서 프로그램의 실행시간이 어느 부분에서 어떻게 소비되는지를 살펴보기로 한다. 프 로그램 실행시간의 90% 는 프로그램 전체의 10% 에 해당하는 부분을 실행하는 데 소비된다고 한다. 여기서 90% 라던가 10% 라는 숫자에는 별다른 근거는 없지만 아무튼 이런 경향이 있다는 것은 틀림없다. 프로그램 계산 시간의 대부분은 프로 그램의 극히 일부분에서 소비된다. 이러한 사실로부터 얻을 수 있는 교훈은 아무 리 빠른 알고리즘을 도입하더라도 고속화를 이 10% 이외의 곳에서 얻었다면 프 로그램 전체의 속도 향상에는 거의 공헌하지 않는다는 것이다. 쓸데없는 데 시간 과 경비를 많이 들여도 얻어지는 이득은 없으므로 프로그램의 속도를 좌우하는 중요한 곳에 영향을 미치는 알고리즘을 개발해야 할 것이다. 프로그램의 어느 부분에 시간이 걸리는 가를 판단하는 것은 의외로 어렵다. 예를 들면, 컴파일러에는 구문 해석과 코드 생성 등의 복잡한 처리가 포함되어 있으므로 얼핏 보면 이들 처리에 걸리는 시간이 컴파일 시간의 대부분을 차지하 고 있다고 생각할 수 있으나 그렇지 않다. 사실은 컴파일러에서 가장 시간이 오 래 소요되는 부분은 프로그램을 한 자씩 읽는 등 단순한 처리부분인 경우가 많 다. 따라서, 그 프로그램이 어디서 계산 시간을 소비하는가( 경우에 따라서는 해석 툴(tool) 을 이용해서) 를 잘 조사해서 고속화의 목표를 정하는 것이 중요하다. 그 알고리즘이 단 한 번의 계산에만 사용하는 1회용인지 아니면 계속 반복해서 사 용되는 것인지도 알고리즘 선택 시 고려해야할 사항이다. 1회용 알고리즘이라면 구태여 많은 시간과 노력을 들여서 좋은 알고리즘을 작성하면서까지 계산시간을 절약하는 것보다는 알고리즘 작성에 걸리는 시간에서 발생하는 손해가 클 것이 다. 반대로, 반복해서 사용되는 알고리즘인 경우에는 알고리즘 개발에 시간이 다 소 걸린다고 하더라도 효율이 좋은 알고리즘을 작성해서 사용해야 할 것이다. 3. 소풍 알고리즘 3.1 소풍 알고리즘의 표현방법 꽃이 피는 따스한 봄이나 날씨가 좋은 가을에 학교에서는 소풍을 간다. 소풍 은 우리에게 좋은 추억을 안겨주는 즐거운 행사이다. 소풍은 이전 차시에서 살펴 - 254 -
알고리즘 이해하기 본 등교, 하교, 점심시간, 수업 알고리즘들과는 달리 학교 밖에서 이루어지는 행 사이다. 이에 소풍에 대한 알고리즘을 생각할 때에는, 무엇보다도 담임선생님이 소풍 장소에서 전달한 안전에 관한 유의 사항을 꼭 기억하고 지켜야 한다는 것 과 장기자랑에 관한 알고리즘이 필요하다. 이와 같이 소풍 장소에서 일어날 수 있는 상황을 고려하여 다음과 같은 알고리즘을 순서대로 적을 수 있다. 기상 후 부터 시작한다. (1) 기상하여 아침 8 시를 기다린다. (2) 8 시가 되어 창밖을 본다. (3) 비가 오면 수업 준비물을 챙기고 등교 알고리즘을 수행한다. (4) 비가 오지 않으면 소풍 준비물을 챙기고 학교 운동장으로 간다. (5) 학교 운동장에서 학교 버스를 타고 소풍 장소로 이동한다. (6) 핸드폰이 꺼져 있으면 켜 놓는다. (7) 선생님이 설명해 주신 소풍 장소에서 지켜야하는 유의 사항과 오늘 소풍 행사 일정을 적어 놓고 기억한다. (8) 선생님을 따라 소풍을 즐긴다. (9) 점심시간이 되어 점심을 먹을 곳을 찾는다. (10) 돗자리나 신문이 있으면 잔디밭에서 점심을 먹는다. (11) 돗자리가 신문이 없으면 벤치에서 점심을 먹는다. (12) 점심을 먹은 후 주변에 있는 쓰레기를 치운다. (13) 카메라가 있으면 친구들과 돌아다니면서 사진을 찍는다. (14) 카메라가 없으면 다른 놀이를 한다. (15) 점심시간이 끝났으면 집합 장소로 이동한다. (16) 점심시간이 끝나지 않았으면 (13)-(14) 번을 반복한다. (17) 장기자랑 행사 순서가 되어 장기자랑에 나갈할 것인지 결정한다. (18) 장기자랑에 안 나갈 것이면 열심히 응원한다. (19) 참가 순서에 따라 장기자랑을 한다. (20) 장기자랑 후 학교 버스를 타고 학교로 돌아온다. (21) 하교 알고리즘을 수행한다. 3.2 소풍 알고리즘의 분석 및 조건 찾기 앞에서 우리는 소풍 알고리즘의 표현방법에 대해 살펴보았다. 그럼 소풍 알고 리즘을 분석하고 소풍 알고리즘의 조건을 알아보자. 소풍은 학교 밖에서 이루어 지는 행사다. 이에 소풍에 대한 알고리즘을 생각할 때에는 야외 소풍 장소에서의 - 255 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 안전이 가장 중요하다는 것을 염두에 두어야 한다. 따라서 소풍 알고리즘의 조건 은 무엇보다도 담임선생님이 소풍 장소에서 전달한 유의 사항을 꼭 기억하고 지 킨다는 항목이 꼭 포함되어야 한다. 즉, 야외 소풍 장소에서의 안전이 가장 중요 하다는 것이다. 또한, 위급 상황 시에는 선생님이나, 외부에 전화를 걸어야 하므 로 핸드폰이 켜져 있는지 확인한다. 수업시간과는 달리 소풍 장소는 학교가 아닌 야외이므로 긴급한 상황이 발생했을 시에 신속하게 연락할 수 있어야 한다. 그 밖에도 소풍 알고리즘에 대한 조건으로 장기자랑, 사진촬영, 야외 점심 식사 등 소풍 장소에서 이루어지는 행동에 관한 알고리즘들이 필요하다. [ 그림 3-1] 은 위 에서 제시한 소풍 알고리즘을 순서도로 표현한 것이다. 예시한 알고리즘을 기반 으로 소풍 알고리즘의 조건으로 제시된 것을 만족시키기 위한 추가적인 알고리 즘들을 학생들이 스스로 추가하여 구성해 보길 바란다. 3.3 소풍 알고리즘의 순서도 표현 순서도를 작성할 때는 처음에는 개략적인 흐름을 처리하여 블록별로 나타내 고 단계적으로 구체화시켜 나가는 것이 좋다. 소풍 알고리즘을 순서도로 작성하 여 보자. [ 그림 9-1] 소풍 알고리즘 순서도 - 256 -
알고리즘 이해하기 읽기자료 [Semantic Web] 1. 기술 개요 시맨틱 웹(semantic web) 은 웹상에 존재하는 정보를 사람뿐만 아니라 기계 가 의미를 파악하고, 사용자의 요구에 적합한 결과만을 찾아주는 의미 기반 검색 이나 사람과 기계, 또는 기계와 기계 상호간에 협업을 원활히 수행함으로써 사람 을 대신한 자동적인 서비스가 가능하도록 하는 차세대 웹이라고 할 수 있다. 현재 웹 환경에서 HTML은 정보자원을 다양한 형태로 표현하고 간편하게 전 달할 수 있어 인터넷 대중화에는 크게 기여했지만, 사용되는 데이터는 기계가 처 리하기 어려운 형태로 표현되어 있다. HTML로 표현된 데이터는 사람이 쉽게 보 고 해석할 수 있는 형태이지만, 사람이 해석하지 않으면 이를 처리할 수 있는 특 별한 방법이 존재하지 않는다. 그러나 시맨틱 웹 기술은 기계가 처리 가능한 형 태로 데이터를 표현하는데 근본적인 목적을 갖고 있다. [ 그림 1] 에서는 단순한 링크정보로만 연결되어 있는 웹페이지에 온톨로지23) 기 반 의미 체계를 둠으로써 기계가 의미를 파악할 수 있게 되는 시맨틱 웹의 기본 구조를 보여주고 있다. 23) IT 발달로 컴퓨터와 인터넷을 통해 정보와 서비스가 제공되고 있으나, 그 방대한 정보나 서비스 속에서 사람이 필요한 자료나 서비스를 선택해서 이용 하는 데 걸리는 시간 및 노력이 가중되고 있다. 이러한 문제를 해결하기 위해 컴퓨터가 웹문서의 용어들을 이해할 수 있게 해서 직접 정보를 찾는 작업까지 컴퓨터가 수행하도록 하는 기술이 바로 지능형 웹( 시맨틱 웹, Semantic Web) 기술이다. 이처럼 컴퓨터가 사람의 생각처럼 지능적으로 정보를 검색해서 결 과를 제공하게 하기 위해서는 컴퓨터가 웹문서의 의미를 인식할 수 있도록 각 종 용어와 동의어, 반의어, 포함관계 등 용어간의 관계를 집대성한 DB를 구축 해야 하는데 이를 온톨로지(Ontology) 라고 한다. 온톨로지 는 컴퓨터를 지능 화시킬 수 있기 때문에 시맨틱 웹뿐만 아니라 지능형 로봇 시스템을 위한 지 능형서비스, 지능형 e- 비즈니스, 의료정보화, 바이오 인포매틱스 등의 다양한 분야에서 활용될 수 있다. - 257 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) [ 그림 1] 시맨틱 웹의 개요 2. 기술 동향 가. 표준화 동향 현재까지의 시맨틱 웹 진화 방향은 데이터 표현을 위한 표준안 마련에 집중되 어 왔다. 웹 창시자이자 국제 웹 기술의 표준화를 주도하는 W3C의 팀버너스리 는 1995 년부터 현재까지의 시맨틱 웹 표준 스택과 관련된 연구 흐름을 [ 그림 2] 와 같이 도표화하고 있다. - 258 -
알고리즘 이해하기 [ 그림 2] 시맨틱 웹 표준의 Emergence [ 그림 2] 에서는 시맨틱 웹 표준의 발전 단계를 해안선에 비교해서 설명하고 있 다. 파란색의 바닷물은 해당 기술이 안정되어 널리 사용되고 있음을 나타내고, 모래사장 부분은 아직 도달하지 못한 부분을, 그리고 중간 부분은 연구가 진행되 고 있는 부분을 나타내고 있다. 특히, RDF(Resource Description Framework) 와 OWL(Ontology Web Language)로 대표되는 시맨틱 웹 언어는 [ 그림 3] 과 같이 발전해 왔다. - 259 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 1992 1998 1999 2000 2001 2002 2003 2004 2005 For Rule RuleML Combine RuleML & OWL SWRL XML Define vocabularies RDF RDFS OIL Extend vocabularies Combine vocabularies DAML (DAML+OIL) Revision OWL DAML-ONT For Web services Revision DAML-S OWL-S SGML For Query SPARQL HTML Extend HTML tags for semantic description SHOE [ 그림 3] 시맨틱 웹 언어의 발전 과정 현재 OWL의 보급으로 시맨틱 웹 기반의 응용프로그램 개발이 가속화되고 있으 며, W3C에서는 OWL, SKOS(Simple Knowledge Organisation System) 24) 를 중 심으로 표준화 및 실제 적용을 위한 툴과 응용프로그램 개발 활동을 하고 있 다. 25) 또한 추가적인 룰(rules), 로직(logic), 논리적 추론(comprehensive reasoning), 그리고 ( 시맨틱 웹, 그리드, P2P 인프라 환경에서) 신뢰(trust) 를 가 능하게 하기 위한 표준 활동을 계속하고 있다. 나. 시장 동향 및 전망 가트너의 XML기술 Hyper Cycle에서는 Semantic Web, OWL, XML Topic Map 기술의 현재 위치는 성숙 초기로 진단하고 있다. RDF의 경우는 성숙 단계 로 접어들고 있고 2~3 년 후면 상용 기술 단계로 접어들 것이라고 소개하고 있다. 24) SKOS(Simple Knowledge Organisation System) 는 시맨틱 웹의 프레임워크 안에서 classification schemes, subject heading lists, taxonomies, glossary,,, 처럼 지 식기반 시스템에 도움이 되는 개발 및 표준화 작업의 영역이다. 25) http://www.w3.org/consortium/techstack-desc.html - 260 -
알고리즘 이해하기 [ 그림 4] Hyper Cycle for XML Technologies, Gartner Research(2004) 또한 Christian Ohlms은 시맨틱 웹 기반의 온톨로지 기술은 3단계로 구분돼 서 발전할 것이며, 현재는 성장 초기에서 성숙기로 진입하고 있다고 설명한다. [ 그림 5] 온톨로지 기술의 발전 전망(Christian Ohlms) - 261 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) [ 그림 5] 를 보면 1단계에서는 기존 분류체계를 온톨로지로 변환하거나 또는 생 성하는 것이 주를 이루며, 응용 프로그램도 이와 같은 기능을 제공하는 데 초점을 맞춰 진행되고 있다. 2단계는 시맨틱 웹의 성숙기로 산업별로 온톨로지를 구축하 여 이를 활용하는 단계로 볼 수 있다. 유럽 및 미국의 경우 기술적 산업적 환경 으로 보면 이미 2 단계로 진입한 반면, 국내는 초기 단계에 머물러 있다. 3단계는 온톨로지와 시맨틱 웹 기술이 모든 애플리케이션에 적용되는 단계이다. 최근 THE BUSINESS VALUE OF SEMANTIC TECHNOLOGY from Vision to Mainstream Markets(2005. 4) 에 따르면, 시맨틱 웹 기술의 시장규모는 2003년 12억 달러에서 2010년에는 524 억 달러에 달할 것으로 전망하고 있다. [ 그림 6] 2010년까지의 시맨틱 웹과 정보기술의 성장 예측 < 출처 : 참고문헌 6 > - 262 -
알고리즘 이해하기 1. 참고문헌 1 2 3 4 참고자료 정보교육학회 교재개발분과위원회(2004), 컴퓨터과 교수법 및 교재연구, 생능 출판사 정보교육학회 교재개발분과위원회(2004), 컴퓨터 교육론, 삼양미디어 박정호(2003), 컴퓨터 알고리즘, 상조사 Cormen Thomas H(2001), Introduction to Algorithms, 2/E, MIT 5 Horowitz Ellis, Sahni Sartaj, Anderson-Freed S(1992), Fundamentals of Data Structures in C, Computer Science 6 IT 신기술 현황 및 향후 적용방안, 한국전산원 2. 인터넷 사이트 1 http://mathman.pe.kr/ - 263 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 정보과학-9주 발전 단원 1 활동지 9-1(1) 교육청 영재교육원/ 영재학급 중학교 이름 여러분이 순서도로 작성한 소풍 알고리즘을 의사코드로 변환해봅시다. - 264 -
알고리즘 이해하기 정보과학-9주 발전 단원 1 활동지 9-1(2) 교육청 영재교육원/ 영재학급 중학교 이름 [ 팀별 연구 프로젝트 ] 다음은 간단한 연산으로 값을 구할 수 있는 문제입니다. 두 개의 블록 A 와 B 가 있습니다. 두 블록의 모양은 항상 기억 ( ㄱ ) 모양이며, 두 블록의 크기는 서로 다를 수 있습니다. 풀어야 할 문제는 블록 A 가 블록 B 에 들어가는지, 블록 B 가 블록 A 에 들어가는지, 또는 두 블록은 서로 끼워 넣을 수 없는지를 조사하여 큰 블록의 이름을 출력하는 것입니다. 이때 답이 없으면 X 를 출력 합니다. 예를 들어, 아래 그림과 같이 블록 A 와 블록 B 가 있을 때, 블록 A 를 90 도 돌려서 블록 B 에 넣을 수가 있습니다. 이 경우에 답은 B 가 됩니다. 다음의 그림은 블록 A 를 어떻게 돌리더라도 블록 B 에 넣을 수 없습니다. 따 라서 이 경우는 답이 X 입니다. 두 블록은 90 도 씩 얼마든지 회전시킬 수 있으며 뒤집을 수도 있습니다. 예를 들어 위의 첫 번째 그림의 블록 한 것입니다. A 는 다음과 같은 다양한 모양의 블록과 동일 - 265 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 블록의 입력된 각 변의 길이를 a, b, c, d, e, f 라고 하고, 블록 A 의 각 변 길 이는 A.a, A.b, A.c,... 라고 하고, 블록 B 의 각 변 길이를 B.a, B.b, B.c,... 라 고 하면, 블록 A 가 블록 B 에 포함될 조건은 두 가지 중 하나를 만족해야 합 니다. 따라서 이 조건이 만족되는지 그렇지 않은지만 검사하면 문제를 풀 수 있습니다. 이 두 가지 조건을 찾아서 의사코드로 표현해봅시다. - 266 -
알고리즘 이해하기 정보과학-9주 발전 단원 1 활동지 9-2(1) 교육청 영재교육원/ 영재학급 중학교 이름 긴급 상황 처리 알고리즘을 작성하기 위한 조건을 정리해봅시다. - 267 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 정보과학-9주 발전 단원 1 활동지 9-2(2) 교육청 영재교육원/ 영재학급 중학교 이름 여러분이 생각한 긴급 상황 처리 알고리즘을 순서도로 표현해봅시다. - 268 -
알고리즘 이해하기 정보과학-9주 발전 단원 1 평가도구(1/1) 교육청 영재교육원 중학교 이름 교사용 번호 측정요소 측정의 근거 1점 2점 3점 4점 5점 창의성 독창성 기존의 알려진 방법과는 확연히 구분 되는 형식, 이론, 주장 등이 존재하는 가? 자신만의 참신하고 독특한 아이디어 를 제시하고 있는가? 논리성 전개과정과 문제해결에서 전후가 명 확하며, 원인과 결과 및 사용되는 이 론적 배경이 분명하다. 다양성 복수의 상이한 요소, 부분 또는 수준 들을 포함하고 있다. 가치성 주제나 내용이 명확한 이슈를 포함한 다. 기능적 솜씨 논리적으로 치밀하며, 도입 전개 결론 에 이르는 과정이 치밀하다. 유용성 발전 가능성 내용과 결과를 실제에 적용하여 사용 할만한 가치가 있다. 앞으로 새로운 산출물, 혹은 연구 결 과를 도출할 수 있는 아이디어를 포 함한다. - 269 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 10주 주제 생활 속 알고리즘 구현하기 ( 긴급 상황 처리 알고리즘 ) 본 활동은 알고리즘 이해하기 단원의 아홉 번째 시간으로서 좋은 알고리즘 으로 인한 효과와 여러 가지 알고리즘 중에서 우선순위를 찾는 방법에 대해 학 습한다. 이를 위해 우선순위규칙을 학습하고 우선순위규칙의 종류와 한계성에 대 해서 학습한다. 다양한 문제가 주어졌을 때 어떤 순서로 문제를 해결하느냐에 따 라 많은 성능의 차이를 가져올 수 있다. 이럴 때 사용되는 해법으로 가장 쉽게 사용할 수 있는 방법이 우선순위규칙(Dispatching Rule) 이다. 우선순위규칙의 종 류는 상당히 많기 때문에 우선순위규칙을 활용한다 하더라도 충분한 검토를 통 한 선택이 요구된다. 또한 이번 차시에서는 실생활 알고리즘 중 긴급 상황 처리 알고리즘을 작성하고 이를 순서도와 의사코드를 이용하여 표기하는 방법에 대해 학습한다. 미리 준비한 학생들의 긴급 상황 처리 알고리즘과 다양한 조건 및 환 경을 제시한 선생님의 긴급 상황 처리 알고리즘을 비교하고 스스로 알고리즘을 작성하고 표현하는 능력을 배양한다. 교육 목표 1. 2. 3. 5. 정보과학 분야 사고력 신장 정보과학 분야 적성 강화 정보과학 분야 특정지식 습득 정보과학 분야 일반능력신장 교육 내용 1-2. 논리전개 및 추론능력 2-3. 정보과학과 실생활과의 연계성 3-1. 알고리즘 설계 5-1. 자율적 탐구 및 학습능력 5-2. 상호작용과 의사소통능력 - 270 -
알고리즘 이해하기 세부 교육 내용 알고리즘의 효과에 대해 학습한다. 우선순위규칙의 개념 및 특징에 대해 학습한다. 우선순위규칙의 한계에 대해 학습한다. 우선순위규칙의 종류에 대해 학습한다. 긴급 상황 처리 알고리즘의 구상 및 설계에 대해 학습한다. 긴급 상황 처리 알고리즘의 표현방법에 대해 학습한다. 다양한 알고리즘의 표현 방법을 연구한다. 교육방법 발표와 토론, 강의, 주제별 연구프로젝트 - 271 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 교육목표 < 교육목표 - 교육내용 - 세부교육내용 - 교육방법의 유기적 연관성 > 교육내용 세부교육내용 1.정보과학 분야 1-2. 논리전개 사고력 신장 및 추론 능력 학습자가 준비한 긴급 상황 처리 2-3. 정보과학 알고리즘 에 대해 발표를 실시한다. 2.정보과학 분야 과 실생활과 발표한 내용에 대해 토론한다. 적성 강화 의 연계성 알고리즘의 효과에 대해 학습한다. 3.정보과학 분야 3-1. 알고리즘 특정지식 습득 설계 5-1. 자율적 탐 우선순위규칙의 개념 및 특징에 대해 학습한다. 우선순위규칙의 한계에 대해 학습 한다. 우선순위규칙의 종류에 대해 학습 한다. 긴급 상황 처리 알고리즘의 구상 및 설계에 대해 학습한다. 긴급 상황 처리 알고리즘의 표현 방법에 대해 학습한다. 구와 학습 발표한 내용에 대해 토론한다. 5.정보과학 분야 능력 다양한 알고리즘의 표현 방법을 일반능력 신장 5-2. 상호작용 연구한다. 과 의사소통 능력 교육방법 발표와 토론 강의 발표와토론, 주제별 연구 프로젝트 준비물 교사용 학생용 관련 시청각 자료, 인터넷 검색용 PC 학생용 활동지 필기도구 사진 - 272 -
알고리즘 이해하기 교수학습 활동 학습 단계 교수학습 활동 시간 ( 총 90 분 ) 지도초점 및 유의점 도입 활동 이번 차시의 세부교육내용을 소개한다. 5 학습자가 준비한 발표 내용에 5 학생 스스로가 진행할 수 대하여 간단한 질문 과정을 통 있도록 도우면서, 모든 학 해 준비 정도를 파악한다. 생들이 참여하도록 독려한 시간이 부족할 경우 긴급 상황 처리 알고리즘의 표현 에 대하 5 다. 본 활동 여 발표할 학습자를 선정한다. 발표자의 내용 중에서 토론이 가능한 내용을 선정하여 토론 20 을 진행한다. 토론 내용을 종합 정리한다. 긴급상황처리 알고리즘의 우선 순위규칙 특징과 구현방법에 5 20 긴급상황처리 알고리즘의 이해를 도우면서 순서도를 활용하여 알고리즘을 구현 대한 강의를 진행한다. 할 수 있음을 설명한다. 정리 활동 본 시간에 배운 개념 정리 다음 주 교육에 대한 안내와 준비 사항을 안내한다. 20 10 학생 스스로가 알고리즘 구현 보고서 작성을 진행 할 수 있도록 이해를 도우 면서, 모든 학생들이 참여 하도록 독려한다. 주요 초점 질문 1. 좋은 알고리즘을 선택하여 작업했을 때 어떤 효과가 있을까? 2. 여러 가지 알고리즘이나 작업 중 먼저 처리해야 할 긴급 상황이 발생했을 때 어떤 순서로 처리하는 것이 좋을까? 3. 우선순위를 결정할 수 있는 방법들은 무엇이 있을까? 4. 긴급 상황 처리 알고리즘을 작성하기 위해 필요한 것은 무엇일까? 5. 긴급 상황 처리 알고리즘을 알고리즘 표현 방법으로 표현 할 수 있는가? - 273 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 지도활동 도입 활동 1. 이번 차시의 세부 교육 내용을 소개합니다. 알고리즘의 효과에 대해 학습한다. 우선순위규칙의 개념 및 특징에 대해 학습한다. 우선순위규칙의 한계에 대해 학습한다. 우선순위규칙의 종류에 대해 학습한다. 긴급 상황 처리 알고리즘의 구상 및 설계에 대해 학습한다. 긴급 상황 처리 알고리즘의 표현방법에 대해 학습한다. 본 활동 1. 긴급상황처리 알고리즘의 표현에 대해서 발표하고 토론해봅시다. 활동지 9-2(2) 사용 2. 발표 및 토론 내용을 종합하여 정리하면서 학생 스스로 결과를 정리할 수 있도록 지도합니다. 1) 발표자와 자신의 활동지 내용을 비교하여 장단점을 분석해봅시다. 2) 자신의 활동지를 스스로 평가해봅시다. 3. 강의 내용 1) 세상을 바꾼 알고리즘에 대해 강의합니다. 필수정보 1. 세상을 바꾼 알고리즘 참조 2) 우선순위 규칙의 정의와 한계에 대해 강의합니다. 필수정보 2.1 과 2.2 절 참조 3) 우선순위 규칙의 종류에 대해 강의합니다. 필수정보 2.3 우선순위 규칙의 종류 참조 4) 긴급상황 알고리즘의 표현 방법에 대해 강의합니다. - 274 -
알고리즘 이해하기 필수정보 3 긴급상황 알고리즘 참조 정리 활동 1. 학습 내용 정리 1) 여러분이 순서도로 작성한 긴급 상황 처리 알고리즘을 의사코드로 변환 해봅시다. 활동지 10-1(1) 사용 2) 구구단을 화면에 출력하는 순서도와 의사코드를 작성해 봅시다. 단, 구구 단의 출력 형식은 자유롭게 설정합니다. 활동지 10-1(2) 사용 3) 합니다. 합니다. 어느 백화점이 행사로 물건을 사면 상품을 받을 수 있는 쿠폰을 준다고 어떤 소비자가 여러 백화점들의 물건을 사서 최대의 쿠폰을 받으려고 단 물건은 만원 단위로 살 수 있으며 각 백화점은 물건을 많이 살수 록 많은 쿠폰을 소비자에게 돌려줍니다. 따라서 물건을 사지 않는 경우는 당 연히 얻게 되는 쿠폰도 없습니다. 예를 들어 한 소비자가 4 만원을 갖고 두 개 의 백화점에서 각각 만원 단위로 물건을 샀을 경우 얻을 수 있는 쿠폰은 다 음과 같다고 합니다. 물건 액수 ( 만원 ) 백화점 A 백화점 B 1 5 1 2 6 5 3 7 9 4 8 15 위의 경우 만일 백화점 A 에 1 만원, 백화점 B 에 3 만원의 물건을 샀다면 소비 자가 얻은 쿠폰은 14 장 (5 장 +9 장 ) 입니다. 4 만원의 물건을 사서 가장 많은 쿠 폰을 얻을 경우는 백화점 B 에서만 4 만원의 물건을 사는 경우로서 이때 받는 쿠폰은 15 장입니다. 물건을 사는 액수가 정해져 있고 백화점의 개수와 물건 을 샀을 경우 얻게 되는 쿠폰이 주어졌을 때 가장 많은 쿠폰을 얻을 수 있는 방법과 이때의 쿠폰 수를 구하는 방법을 순서도와 의사코드로 팀별로 표현해 봅시다. 활동지 10-1(3) 사용 - 275 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 2. 다음 주 교육 내용 안내 1) 여러분이 배웠던 생활속 알고리즘을 2 개 선택하여 구현하려고 할때의 문 제점을 찾아 정리해봅시다. 활동지 10-2(1) 사용 2) 5주에서 여러분이 구현한 유클리드 호제법은 다음과 같이 나타낼 수 있 습니다. m 을 n 으로 나눈 나머지가 0 이면 n 이 최대공약수가 되고, 0 이 아니 면 m 을 n 으로 나눈 나머지와 n 의 최대공약수이다. 이 과정을 반복하여 최대 공약수를 구한다. 이를 순서도와 의사코드로 나타내봅시다. 또한 두 수 24 와 18 로 작성한 순서도와 의사코드가 정확한지를 대입하여 증명해봅시다. 활동지 10-2(2) 사용 - 276 -
알고리즘 이해하기 평가 평가 내용 긴급 상황 처리 알고리즘에 대해 발표함으로써 논리전개 및 추론능력과 보과학과 실생활과의 연계 능력을 갖게 되었는지 평가한다. 알고리즘의 효과, 우선순위의규칙, 긴급상황 처리 알고리즘을 통해 알고리 즘 설계방법을 학습하였는지 평가한다. 학습자가 미리 준비한 활동지와 본차시에 작성한 활동지, 학습자의 발표 내 용, 토론 참여도 등을 종합적으로 평가하여, 논리전개 및 추론능력, 자율적 탐구와 학습능력, 상호작용과 의사소통능력이 신장되었는지를 평가한다. 평가 방법 발표 및 토론 평가 : 도입활동 1 번, 본활동 2번 활동시 평가 그룹 프로젝트 산출물 평가 : 정리활동 1번 3) 활동시 평가 평가도구 1/1 평가 기준 사용 긴급 상황 처리 알고리즘 작성 시에 고려사항들이 포함되었는가? 긴급 상황 처리 알고리즘을 정확히 표현하였는가? 독창적인 방법으로 긴급 상황 처리 알고리즘을 표현하였는가? 평가 유의점 토론 시 학생들이 적극적으로 참여하도록 지도한다. 정 - 277 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 필수정보 1. 세상을 바꾼 알고리즘 컴퓨터 공학의 성과가 일상생활에 침투하면서 ' 알고리즘' 이라는 낯선 전문 용 어도 많은 사람들에게 익숙한 단어가 됐다. 알고리즘은 주어진 문제를 풀기 위해 밟아야 하는 과정을 수학적으로 명시한 것이다. 지난 수십 년 동안 알고리즘은 연구실을 뛰쳐나와 수많은 사람들의 일상을 변화시키는 중요한 역할을 했다. 따 라서 이런 알고리즘들은 많은 변화를 가져왔다. 특히 세상을 바꾸어버린 알고리 즘의 예로는 인터넷에서의 데이터 교환을 위한 TCP/IP 프로토콜, 구글 검색 엔 진의 검색 결과순위 결정 알고리즘, 90년대 중반 이후 IT 업계의 지형을 뒤흔든 월드와이드웹의 HTTP 프로토콜 등을 들 수 있다. 이들만큼 일반인들에게까지 널리 알려진 것은 아니지만 아직까지도 영향력이 큰 좋은 알고리즘들도 많이 있 다. 델라웨어 대학교의 데이브 밀스 교수가 개발한 인터넷 시계 동기화 알고리즘 이 여기에 속한다. < 출처 : 인터넷 사이트 1 > 이던 인터넷의 근간인 TCP/IP 프로토콜은 메인프레임 위주의 컴퓨터 사용이 고작 1960년대에 미국 국방성이 대학과 연구 기관의 컴퓨터를 연결해 네트워크 를 구성한다는 아이디어에서 처음 개발됐다. 파스칼 컴파일러가 처음 개발된 1969 년에 노드 네 개로 구성된 패킷망인 아파넷(ARPANET) 이 등장했고, 5년 뒤 에 마침내 빈튼 서프(Vinton Cerf) 와 로버트 칸(Robert Kahn) 이 비로소 TCP/IP 프로토콜 집합을 구성했다. 지금은 당연한 듯 보이는 컴퓨터 네트워크 구성과 이 들 간의 통신은 TCP/IP 프로토콜 개발로 사실상 처음 안정성이 증명된 것이었 다. 현재 TCP/IP 프로토콜을 이용해 인터넷을 이용하는 인구수는 전 세계적으로 수 억 명이 넘는다. 순수 연구 목적보다는 절박한 필요에 의해 개발되는 알고리즘도 있다. 가장 좋은 예는 암호화 알고리즘이다. 전쟁 등 급박한 상황에서 적에게 들키지 않고 비밀 통신을 하기 위해, 적군의 비밀 통신을 가로채기 위해, 암호화 연구가 급진 전된 바 있다. 1977년 MIT에서 개발된 RSA 암호화 프로토콜이 " 세상을 바꾼 알 고리즘" 에 속한다는 데는 별 이견이 없다. 인터넷 통신이 일반화되어 암호화 문 제가 중요해진 요즘, RSA를 비롯한 암호화 알고리즘의 역할은 지대한 정도를 넘 어서고 있다. 모든 인터넷 상거래의 기본이 암호화로부터 시작되기 때문이다. 음성 IP(Voice over IP) 등 음성 정보나 동영상 정보를 나르는 프로토콜도 멀 티미디어 네트워크가 일반화된 최근 들어 중요성이 증대되고 있다. 1991년에 시 스코에서 개발된 압축 실시간 프로토콜(CRTP) 이 이에 속하고, 1987년 독일의 에 - 278 -
알고리즘 이해하기 얼랑겐 대학교에서 개발된 오디오 압축 알고리즘인 MP3는 P2P 네트워크와 MP3 플레이어 등 다른 분야의 기술 발전까지 몰고 왔을 만큼 영향력이 컸다. MP3는 비슷한 음질을 유지하면서도 소리 파일의 크기를 대폭 줄임으로써 전송 이나 보관을 용이하게 하는 획기적인 압축 기법이었다. < 출처 : 인터넷 사이트 2> 2. 우선순위 알고리즘 다양한 문제가 주어졌을 때 어떤 순서로 문제를 해결하느냐에 따라 많은 성 능의 차이를 가져올 수 있다. 이럴 때 사용되는 해법으로 가장 쉽게 사용할 수 있는 방법이 우선순위규칙(Dispatching Rule) 이다. 우선순위규칙의 종류는 상당 히 많기 때문에 우선순위규칙을 활용한다 하더라도 충분한 검토를 통한 선택이 요구된다. 이번 차시에서는 우선순위규칙의 기초에 대한 이해를 돕기 위하여 잘 알려진 몇 가지의 우선순위규칙을 학습한다. 그리고 마지막으로 우선순위규칙을 몇 가지로 분류해보고, 우선순위규칙의 장단점에 대해 학습한다. 2.1 우선순위규칙이란? 우선순위규칙은 계산양이 적기 때문에 소요 시간도 적고, 구현하기도 쉬울 뿐 만 아니라 직관적으로 이해하기 쉽다는 장점이 있다. 우선순위규칙은 컴퓨터를 이용한 스케쥴링이 이루어지기 전부터 사람들에 의해 사용되던 방법이다. 우선순 위규칙이란 말 그대로 여러 개의 작업이 있을 때 어떤 작업을 먼저 할지를 결정 하는 규칙이다. 다음의 [ 그림 2-1] 의 작업자의 고민을 토대로 우선순위규칙에 대 해 살펴보자. [ 그림 10-1] 작업자의 고민 드릴링 공정을 맡고 있는 작업자가 있다. 어떤 공정을 끝내고 보니 대기 중인 작업물이 그림과 같이 A, B, C 3 개가 있다. 어떤 것부터 먼저 해야 할까? 만일, - 279 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 대기 중인 작업이 하나였다면 작업자는 고민 없이 작업을 수행했을 것이다. 이와 같이 대기 중인 작업물 중에서 어떤 작업을 먼저 할 것인지를 선택하는 규칙이 바로 우선순위규칙이다. 후반부에서 설명하겠지만 먼저 도착한 작업부터 먼저 가 공을 해주는 FIFO(First In First Out) 규칙을 사용할 수도 있고, 그 반대로 LIFO(Last In First Out) 규칙을 사용할 수도 있다. 또, 가공이 짧게 끝날 것으로 예상되는 작업부터 처리해주는 SPT(Shortest Processing Time) 규칙을 사용할 수도 있고, 납기기일이 빠른 작업부터 처리해주는 EDD(Earliest Due Date) 규칙 을 적용할 수도 있다. 즉, 우선순위규칙은 기계가 여유가 생기는 순간에 적용되 는 규칙이다. 만일 기계에 여유가 생겼는데 대기 중인 작업물이 없다면 새로운 작업물이 도착할 때 까지 기다린다. 2.2 우선순위규칙의 한계 몇 가지 가정이 필요하기는 하지만, 단일기계 문제에서 우선순위규칙은 매우 좋은 성능을 보인다. SPT(Shortest Processing Time) 규칙을 사용하면 평균 수 행시간을 최소화할 수 있다. 그리고 EDD(Earliest Due Date) 규칙을 사용하면 Tardy Job 의 수를 최소화할 수 있다. 이와 같은 우선순위규칙에는 어떤 문제점 이 있을까? 작업장에는 대개 여러 대의 기계가 있고, 작업물은 이들 기계를 오 가며 가공이 이루어진다. 다음의 [ 그림 10-2] 는 근시안적인 우선순위규칙을 보여 주고 있다. [ 그림 10-2] 근시안적인 우선순위규칙 [ 그림 10-2] 를 보면 왼쪽의 작업장( 기계) 에서 가공이 이루어진 작업은 다음 작업장( 기계) 으로 이동이 이루어진다. 왼쪽의 작업장에서 막 가공이 이루어진 부 품 A의 납기가 임박한 중요한 부품이라고 할 때 오른쪽의 작업장에서는 이런 부 품이 있는지도 모른 상태에서 부품 D와 부품 E를 놓고 우선순위규칙을 적용하 여 작업을 선택하게 된다. 이것은 조금 더 멀리 내다보지 못하고, 당장의 작업부 터 처리하는 근시안적인 의사결정이다. 제조현장에 작업물이 많지 않은 경우( 즉, - 280 -
알고리즘 이해하기 기계나 작업장 내에 대기 중인 작업이 적은 경우) 에는 우선순위규칙도 좋은 성능 을 발휘하지만, 대기 중인 작업이 많은 경우와 특히 가공순서에 영향을 받는 셋 업 타임이 있는 경우에는 우선순위규칙은 좋지 않은 성능을 보일 수도 있다. 이러한 근시안적인 문제 때문에 우선순위규칙의 한계성이 나타난다. EK라서 이러한 문제를 해결하는 방법이 필요하다. 이러한 근시안적 문제를 해결할 수 있 는 방법은 더 넓게 보는 것이다. 즉 대기 중인 부품뿐만 아니라 앞으로 도착할 작업들까지를 고려해서 의사결정을 취하되 그 의사결정이 미치게 될 영향까지를 분석해 보는 것이다. 그러나 멀리보기 위해서는 많은 계산이 필요하기 때문에 수 행시간이 길어지는 단점이 발생하고 얼마나 넓게 보는 것이 필요한지에 대해서 도 생각해 보아야 한다. 2.3 우선순위규칙의 종류 앞서 언급한 바와 같이 우선순위규칙은 매우 다양하다. 동일한 상황이라 하더 라도 적용되는 우선순위규칙에 따라 생성된 스케쥴은 매우 상이할 수 있다. 따라 서 공장이나 작업장에 적합한 우선순위규칙을 찾는 것은 매우 중요한 일이다. 일 단 좋은 우선순위규칙을 찾기에 앞서 어떤 우선순위규칙이 있는지를 살펴보자. 또한 이 우선순위규칙의 장단점이 무엇인지 어떻게 분류할 수 있는지를 알아야 한다. 우선순위규칙의 종류를 알기 위하여 다음의 예를 먼저 살펴보도록 한다. 이 예를 통해 우선순위규칙의 결과를 비교하여 설명한다. 지금 기계 MCX 앞에 는 3 개의 작업이 있다고 하자. 각 작업의 라우팅을 비롯한 공정진행현황과 관련 된 정보는 다음과 같다. (1) 작업 A : MCA( 10 ) -> MCB( 20 ) -> MCX ( 15 ) 작업장 MCX 도착시간 ( 50 ), 납기일 ( 80 ) (2) 작업 B : MCB( 15 ) -> MCX( 10 ) -> MCA ( 30 ) 작업장 MCX 도착시간 ( 45 ), 납기일 ( 60 ) (3) 작업 C : MCX( 20 ) -> MCA( 20 ) -> MCB ( 10 ) 작업장 MCX 도착시간 ( 40 ), 납기일 ( 70 ) 우선순위규칙의 종류는 다음과 같다. 이 내용은 YIH-LONG CHANG, et al., "Ranking Dispatching Rules by Data Envelopment Analysis in a Job Shop Environment," IIE Transactions Vol. 28, pp. 631-642, 1996. 의 Appendix에서 발췌한 것이다. (1) SPT(Shortest Processing Time) : 가장 짧은 공정시간을 필요로 하는 작업 - 281 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 부터 선택한다. 작업 A는 15, 작업 B는 10, 작업 C는 20 만큼의 시간을 필요 로 함으로, 작업 B 가 선택된다. (2) LTWK(Least Total Work) : 전체 공정시간( 공정시간의 합) 이 가장 짧은 작 업부터 선택한다. 작업 A는 45(10+20+15), 작업 B는 55(15+10+30), 작업 C는 50(20+20+10) 이므로, 작업 A 가 선택된다. (3) LWKR(Least Work Remaining) : 잔여 작업시간이 가장 짧은 작업부터 선택 한다. 작업 A는 15, 작업 B는 40(10+30), 작업 C는 50(20+20+10) 이므로, 작업 A 가 선택된다. (4) SRM(Shortest Remaining Time) : 현재 고려 중인 공정을 제외한 잔여 작업 시간이 가장 짧은 작업부터 선택한다. 작업 A는 0, 작업 B는 30, 작업 C는 30(20+10) 이므로, 작업 A 가 선택된다. (5) SPT/TWK : 고려 중인 공정의 소요시간을 전체 공정시간으로 나누어, 그 비 율이 가장 작은 작업부터 선택한다. 작업 A는 15 / 45, 작업 B는 10 / 55, 작 업 C는 20 / 50 이므로, 작업 B 가 선택된다. (6) SPT/TWKR : 고려중인 공정의 소요시간을 잔여 공정시간으로 나누어, 그 비율이 가장 작은 작업부터 선택한다. 작업 A는 15 / 15, 작업 B는 15 / 40, 작업 C는 20 / 50 이므로, 작업 B 가 선택된다. (7) LPT(Longest Processing Time) : 가장 긴 공정시간을 필요한 하는 작업부터 선택한다. 작업 A는 15, 작업 B는 10, 작업 C는 20 만큼의 시간을 필요로 하 므로 작업 C 가 선택된다. (8) MTWK(Most Total Work) : 전체 공정시간( 공정시간의 합) 이 가장 큰 작업 부터 선택한다. 작업 A는 45(10+20+15), 작업 B는 55(15+10+30), 작업 C는 50(20+20+10) 이므로, 작업 B 가 선택된다. (9) MWKR(Most Work Remaining) : 잔여 작업시간이 가장 긴 작업부터 선택 한다. 작업 A는 15, 작업 B는 40(10+30), 작업 C는 50(20+20+10) 이므로, 작업 C 가 선택된다. (10) LRM(Longest Remaining Work) : 현재 고려 중인 공정을 제외한 잔여 작 업시간이 가장 긴 작업부터 선택한다. 작업 A는 0, 작업 B는 30, 작업 C는 30(20+10) 이므로, 작업 B 또는 작업 C 가 선택된다. (11) LPT/TWK : 고려 중인 공정의 소요시간을 전체 공정시간으로 나누어, 그 비율이 가장 큰 작업부터 선택한다. 작업 A는 15 / 45, 작업 B는 10 / 55, 작 업 C는 20 / 50 이므로, 작업 C 가 선택된다. (12) LPT/TWKR : 고려 중인 공정의 소요시간을 잔여 공정시간으로 나누어, 그 비율이 가장 큰 작업부터 선택한다. 작업 A는 15 / 15, 작업 B는 15 / 40, 작 업 C는 20 / 50 이므로, 작업 A 가 선택된다. - 282 -
알고리즘 이해하기 (13) EDD(Earliest Due Date) : 납기일이 가장 빠른 작업부터 선택한다. 작업 A 는 80, 작업 B는 60, 작업 C는 70 이므로, 작업 B 가 선택된다. (14) (MIN)SLACK : 납기일로부터 잔여작업시간을 뺀 여유(SLACK) 시간이 가장 작은 작업을 선택한다. 작업 A는 65(80-15), 작업 B는 20(60-10-30), 작업 C는 20(70-20-20-10) 입니다. 따라서, 작업 B 또는 작업 C 가 선택된다. (15) STS-SLACK : 납기일로부터 전체 공정시간을 뺀 여유(SLACK) 시간이 가 장 작은 작업을 선택한다. 작업 A는 35(80-45), 작업 B는 5(60-55), 작업 C 는 20(70-50) 이므로, 작업 B 가 선택된다. (16) SLACK/ROP : SLACK 을 잔여공정수로 나누어 가장 작은 작업을 선택한다. 작업 A는 65/1, 작업 B는 20/2, 작업 C는 20/3 이므로, 작업 C 가 선택된다. (17) STS-SLACK/ROP : STS-SLACK을 잔여공정수로 나누어 가장 작은 작업 을 선택한다. 작업 A는 35/1, 작업 B는 5/2, 작업 C는 20/3 이므로, 작업 B가 선택된다. (18) SLACK/TWK : SLACK을 TWK로 나누어 비율이 가장 작은 작업을 선택 한다. 작업 A는 65/45, 작업 B는 20/55, 작업 C는 20/50 이므로, 작업 B가 선 택된다. (19) SLACK/TWKR : SLACK을 TWKR로 나누어 비율이 가장 작은 작업부터 선택한다. 작업 A는 65/15, 작업 B는 20/50, 작업 C는 20/50 이므로, 작업 C가 선택된다. (20) FOPR( Fewest Number of Operations Remaining ) : 잔여 공정수가 가장 작은 작업을 선택한다. 작업 A는 1, 작업 B는 2, 작업 C는 3 이므로, 작업 A 가 선택된다. (21) MPOR( Most Number Of Operations Remaining ) : 잔여 공정수가 가장 많은 작업부터 선택한다. 작업 A는 1, 작업 B는 2, 작업 C는 3 이므로, 작업 C 가 선택된다. (22) FCFS( First Come First Served ) : 가장 먼저 도착한 작업을 먼저 선택한 다. 작업 A는 50, 작업 B는 45, 작업 C는 40 이므로, 작업 C 가 선택된다. (23) LCFS( Last Come First Served ) : 제일 늦게 도착한 작업을 먼저 선택한 다. 작업 A는 50, 작업 B는 45, 작업 C는 40 이므로, 작업 A 가 선택된다. (24) RND( Random ) : 아무 작업이나 선택한다. 3. 긴급 상황 알고리즘 3.1 긴급 상황 알고리즘의 표현 예제 우리는 이전 차시에서 학교생활 속의 다양한 알고리즘들을 학습하였다. 이러 - 283 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 한 학교생활 속의 알고리즘들 상에서 우선순위가 높은 긴급 상황이 발생할 수 있다. 다음은 앞 차시에서 소개한 각 알고리즘 상에서 발생할 수 있는 긴급 상황 들을 예시한 것이다. 그리고 각 긴급 상황 시에 생각할 수 있는 긴급 상황처리 알고리즘을 기술하고 있다. (1) 기상 후 집에 있는 시계를 보니 학교에 지각할 것 같은 경우 1 신속하게 수업 준비물을 챙기고 옷을 입는다. 2 담임선생님에게 연락하여 어쩔 수 없는 사정이 있었으면 사정을 설명한다. 3 그렇지 않으면 거짓말하지 않고 담임선생님에게 잘못을 인정한다고 말씀드 리고 벌을 받을 마음의 준비를 한다. 4 신속하게 학교로 간다. (2) 수업시간 중에 졸음이 몰려오거나 용변이 급한 상황이 발생한 경우 1 일단 참아 본다. 2 도저히 참을 수 없으면 선생님께 말씀드린다. 3 졸음이 몰려오는 경우에는 세수를 하고 바람을 쏘이고 신속하게 교실로 돌 아간다. 4 용변이 급한 경우에는 화장실에 가서 일을 보고 손을 씻고 교실로 신속하 게 돌아온다. (3) 점심시간에 친구가 식사를 하다가 체한 경우 1 친구를 편하게 해주기 위한 응급 처치를 실시한다. 2 신속하게 선생님께 상황을 보고한다. 3 양호실로 친구를 부축하여 데리고 간다. 4 친구의 소지품을 챙겨서 보관한다. (4) 집에 오는 도중에 갑자기 비가 오는 경우 1 빗물로 인해 책과 노트가 젖을 수 있으므로 가방에 지퍼가 열린 곳이 있으 면 잠근다. 2 우산이 있으면 우산을 펴서 쓰고 집으로 간다. 3 우산이 없으면 비를 피할 수 있는 곳으로 신속하게 이동한다. 4 우산을 살 수 있는 돈이 있으면 주변 가게에서 우산을 사서 쓰고 집으로 간다. 5 우산을 살 수 있는 돈이 없으면 주변 가게에서 머리에 뒤집어 쓸 수 있는 비닐봉지나 신문지를 얻어서 쓰고 집으로 간다. - 284 -
알고리즘 이해하기 6 7 핸드폰이 있으면 집으로 가면서 부모님에게 연락하여 우산을 가지고 미리 나와 줄 것을 요청한다. 비를 많이 맞지 않도록 침착하게 집으로 간다. (5) 소풍 중에 친구가 넘어져서 다리를 다친 경우 1 신속하게 선생님께 상황을 보고한다. 2 친구를 눕히기 편한 곳을 찾아 친구를 부축하여 데리고 간다. 3 친구의 소지품을 챙겨서 보관한다. 4 선생님과 상의하여 구급차를 부른다. 5 친구에게 부모님의 연락처를 물어보고 친구 부모님에게 연락한다. 6 선생님과 상의하여 구급차를 타고 병원에 간다. 7 부모님이 오실 때까지 친구를 간호한다. 3.2 긴급 상황 처리 알고리즘의 특징 이와 같은 긴급 상황 알고리즘은 기본 알고리즘의 순서들보다 높은 우선순위 를 갖게 되고 일반적으로는 수행중인 기본 알고리즘을 잠시 멈췄다가 긴급 상황 알고리즘을 행한 후 중단했던 기본 알고리즘을 계속한다. 또한 경우에 따라서는 현재 기본 알고리즘을 끝까지 다 한 뒤에 긴급 상황 알고리즘을 행한다. 이러한 긴급 상황 알고리즘을 수행할 때에는 신속하면서도 침착하여야 하며 남에게도 긴급 상황 알고리즘이 있음을 알고 양보하는 습관을 갖는 것이 중요하다. [ 그림 10-3] 은 수업 알고리즘 상에서 (2) 번의 긴급 상황이 발생한 경우를 순서도로 표 현한 것이다. 학생들이 스스로 다양한 생활 속 알고리즘 상에서 발생할 수 있는 긴급 상황을 생각해 보게 하고 그 긴급 상황을 처리할 수 알고리즘을 기술하고 순서도로 표현해 보도록 한다. 3.3 긴급 상황 처리 알고리즘의 순서도 표현 순서도를 작성할 때는 처음에는 개략적인 흐름을 처리하여 블록별로 나타내 고 단계적으로 구체화시켜 나가는 것이 좋다. 긴급 상황 처리 알고리즘을 순서도 로 작성하여 보자. - 285 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) [ 그림 10-3] 수업 알고리즘 상의 긴급 상황 처리 순서도 - 286 -
알고리즘 이해하기 읽기자료 [SOA] 1. 기술 개요 Service Oriented Architecture( 이하, SOA) 는 2004년 이후 엔터프라이즈 컴퓨 팅 분야에서 가장 많이 회자되고 있는 용어중 하나일 것이다. SOA는 기업의 정 보 시스템을 서비스 위주로 분할하는 아키텍처를 말하며, 기본적으로 서비스들의 집합이다. 여러 서비스를 묶어 다른 서비스가 되기도 하고, 서비스가 서비스를 서로 사용하기도 한다( 여기서 말하는 서비스는 잘 정의되고, 다른 서비스에 종속 적이지 않은 기능의 단위). 객체지향(Object Orientation) 과 같은 개념처럼 SOA 역시 완전히 새로운 개념은 아니다. 현재 IBM, SUN 그리고 HP와 같은 전통적인 S/W 리더들뿐만 아니라 Accenture, EDS, InfoSYS 와 같은 대규모 컨설팅, SI기업 들도 고객의 기업 인프라에 보다 미국에서 웹서비스 관련 SOA를 적용시키기 위해 노력하고 있다. 그리고 무엇 S/W 엔지니어 구직 면접시 가장 많이 받는 질문 중 하나가 바로 당신은 SOA 가 무엇이라고 생각 합니까?, 또는 SOA로 어떤 문 제를 해결할 수 있습니까? 이다. 그만큼 미국 내에서 SOA는 대단한 주목을 받 고 있다. SOA 의 개념은, 고객이 원하는 것 = Functional Requirement but Service 라는 간단한 식으로 정의할 수 있다. 즉, 더 이상 고객이 원하는 요구 사항을 기술적인 기능 요구사항으로 일치시키지 않고 서비스라는 추상적인 개념으로 표현하고자 하는 것이다. 우리는 기술적인 측면에서 어떻게 하면 고객의 요구사항 속에서 객 체라는 것을 추출하고(OOAD) 이것을 재활용 할 것인가를 많이 고민해 왔다. 그 리고 최근에는 객체들의 공통집합을 추상화하고 컴포넌트(CBD) 라는 것을 정의해 서 좀더 포괄적으로 이용할 수 있을까에 대한 방안도 생각하고 있다. 그러나 결 국 이러한 접근 방식은 고객이 원하는 총체적인 것의 재활용 가능성을 높여주지 는 못한다. 즉, 아주 제한적인 범위의 확장이나 시스템 내부 활용은 가능하지만 이 범위를 넘어서는 활용은 불가능 하다는 것이다. 이렇게 될 수밖에 없는 가장 큰 문제점은 고객이 원하는 바를 엔지니어 입장에서 이해하고 엔지니어가 활용할 수 있는 방안만 고려했기 때문이다. 시스템을 도입하는 CIO 입장에서는 회사가 새로 도입하는 시스템을 가능한 한 많은 직원이 이용하고 내부 시스템에 연결돼 잘 활용되기만을 원할 뿐이며, 도입 시스템 내의 컴포넌트가 어떻게 구성되어 있 - 287 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 고 그것이 내부적으로 어떻게 재활용 될 수 있는가는 큰 관심사가 아니다. 이런 상황에서 SOA는 우리가 개발하고자 하는 시스템을 서비스라는 추상적인 개념으 로 정의하고, 이 전체 시스템과 서비스를 어떻게 쉽게 이용하고 재활용 할 수 있 을까에 대한 방법론이라 할 수 있다. 그렇다면 SOA 로 어떤 문제를 해결할 수 있을까? 기업의 대규모 IT 시스템이 가진 가장 큰 문제는 고비용으로 도입한 시스템을 극히 제한적인 용도로, 그리고 제한적인 사람들만 이용한다는 것이다. 예를 들어 직원 신원 정보를 담고 있는 정 보시스템을 인력관리(HR) 부서의 직원만 사용할 수 있고 다른 직원은 그러한 시 스템이 존재한다는 사실조차도 모른다는 가정 하에, 적극 관리하기 위해 CIM(Corporate Incentive 회사에서 직원들의 성과를 Management) 을 도입해서 직원 정보 시스템과 연동하고자 한다면 방법은 비싼 비용을 지불하고 직원 정보시스템과 CIM 을 연동하기 위한 별도의 커넥터를 개발하는 것이다. 그리고 향후 또 다른 시스템 이 직원 정보시스템과 연동을 원한다면, 그리고 그 방법이 CIM과 연동했던 방법 과 다르다면 어땋게 할 것인가? 이처럼 시스템 도입과 활용 문제는 기업 내에 존재하는 아주 전형적인 통합(Integration) 과 관련된 문제이다. 그리고 이 전형적인 문제를 해결하기 위해 기업들은 엄청난 비용과 시간을 투자하고 있다. SOA는 바 로 이러한 문제를 적은 비용으로 쉽게 해결할 수 있다. 즉, 직원 정보 시스템이 외부에 제공할 수 있는 서비스를 정의하고 이를 WSDL(Web Service Description Language) 같은 표준 XML 인터페이스로 정의한다. 그리고 WSDL 인터페이스를 통해 들어오는 요청을 기존 직원 정보시스템과 연동시키기 위한 부분을 개발해 준다. 바로 이 부분에서 웹서비스가 요청되는데 JSP/Servlet, 혹은 ASP 와 같은 웹 애플리케이션으로 쉽게 개발이 가능하다. WSDL 의 장점은, 표준화된 방법으 로 시스템이 제공하는 서비스를 비교적 자세히 기술할 수 있다는 것이다. 즉, WSDL 표준을 이해하는 그 누구라도 이 서비스를 이용할 수 있다는 것이다. 위의 두 과정을 통해 직원 정보시스템은 누구나 쉽게 접근할 수 있고 이용 가 능한 서비스가 될 수 있는 것이다. 또한 향후 제3의 시스템을 직원 정보 시스템 과 연동시키더라도 추가 비용을 소요하지 않아도 더욱 많은 이용 가치를 가지므로 회사 입장에서는 많은 비용절감 효과를 볼 수 있다. 그런데 여기서 한 가지 의문 점을 제기할 수 있다. 즉, 왜 웹서비스를 이용해야 하는가이다. 물론 J2EE,.Net, CORBA 같은 방법도 이용할 수 있지만 이 같은 기술을 이용하면 또 다른 문제 점을 야기할 수 있기 때문이다. 예를 들어, 모든 인터페이스를 Java 인터페이스 를 통해 정의하고, RMI(Remote Method Invocation) 로 연동 부분을 개발했다고 가정하면 제3 의 시스템이 직원 정보 시스템과 연동하고자 해도 이 시스템은.Net - 288 -
알고리즘 이해하기 으로만 개발되어 Java 와는 통신이 어렵다. 따라서 이 문제를 해결하기 위해서 추 가비용과 개발이 필요하다는 결론에 이른다. 결국 SOA에서의 웹서비스 사용은 서비스 이용에 따른 연동 문제와 비용을 최소화 하고자 하는 취지에 가장 현실 적인 답이 되는 것이다. 2. 기술동향 최근 수많은 표준이 SOA와 웹서비스를 지원하기 위해 제정되거나 개정되고 있다. 이 중 SOA와 관련이 깊고 업체에서 많은 주목을 받고 있는 것이 SOAD(Service Oriented Analysis Design) 와 BPEL(Business Process Execution Language) 이다. 먼저 SOAD 는 표준과는 거리가 먼 개발 방법론이며, 어떻게 하 면 SOA 를 잘 구축할 수 있을까에 대한 지침정도이다. 최근 SOA 열기는 CBD(Component Based Development) 로 이어진 OOAD(Object Oriented Analysis Design)의 연장선을 만들게 된 원동력이 되었 다. SOA라는 개념으로 시스템을 개발하려면 기존 방법론과 크게 다르지는 않지 만 약간 변형된 형태의 개발 방법론이 필요할 것이다. 즉, SOAD는 어떻게 하면 고객의 요구로부터 SOA를 가지는 시스템을 만들 수 있을까에 대한 방법론이라 할 수 있다. 기존의 OOAD와 같은 방법론은 고객의 요구사항으로부터 핵심 객체 를 찾아내는 것이 주 목적이었다. 하지만 SOA에서는 고객이 원하는 서비스를 구축하는 것이 주 목적이기 때문에 자연히 SOAD는 서비스를 찾아내는 것이 주 목적이라 할 수 있다. 그리고 발견된 서비스를 기존 방법론과 크게 다르지 않은 방법으로 개발할 수 있도록 안내하는 역할을 한다. - 289 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) [ 그림 1] SOAD and its ingredients [ 그림 1] 에서 Y축은 SOAD 를 통해 만들어지는 산출물이라 할 수 있으며, X축 에 가까워질수록 산출물이 구체화 되는 것을 알 수 있다. 즉 SOAD를 이용해서 개발을 진행할수록 고객이 원하는 서비스 내에는 그것을 이루는 비즈니스 활동 이 존재하고, 이 비즈니스를 지원하기 위한 아키텍처가 필요하다는 것을 알게 된 다. 그리고 개발하는 애플리케이션은 이 아키텍처를 기반으로 한다. X 축을 살펴보면, 개발 프로젝트의 가장 첫 번째 단계인 분석단계에서 가장 먼저 해야 할 일이 고객이 원하는 서비스를 찾아내는 일이다. 바로 이 부분이 기 존과 다른 부분으로 여기서 찾아낸 서비스가 개발 종료 시 까지 완성해야 할 목 표가 되는 것이다. 서비스가 발견되면 그 서비스를 이루는 비즈니스 절차를 확인 하는 단계를 거치게 된다. 그리고 이 단계를 거치면 구현하고자 하는 서비스가 어떤 과정을 거쳐 제공되는지 알게 된다. 그 다음 과정들은 기존 방법론과 동일 하다. 즉, 비즈니스 프로세스를 지원할 수 있는 엔터프라이즈 패턴을 정하고, 프 로젝트에 적합한 아키텍처를 정의하게 된다. 그리고 이 아키텍처를 바탕으로 OOAD 를 진행한다. 반면 BPEL은 전혀 다른 웹서비스를 연동하고자 할 때의 프로세스 관리에 관 한 표준이다. BPEL이 중요한 이유는 SOA를 통해 개발된 여러 개의 웹서비스를 동시에 실행해야 한다고 할 때 이 독립적인 서비스들을 하나의 워크플로우로 정 의하고 실행할 수 있도록 기술하는 표준이기 때문이다. - 290 -
알고리즘 이해하기 결국 여러 개의 웹서비스를 연결해서 하나의 서비스로 제공한다고 볼 때 이 것도 하나의 웹서비스로 볼 수 있기 때문에 BPEL을 통해 우리는 더 큰 개념의 추상 화를 이룰 수 있는 것이다. BPEL 에서는 이러한 독립적인 서비스들을 하나의 새로운 서비스로 재정의할 수 있도록 WSDL 을 통해 기술되며, 이 WSDL내에는 다음과 같 은 내용이 기술된다. 원격 서비스로 XML 메시지 전송 XML 데이타 구조의 변경 원격 서비스로부터 비동기적인 방법으로 XML 이벤트 및 예외(exception) 처리 실행 구문의 병렬시퀀스 정의 예외 발생시 프로세스의 부분적 취소 처리 등 메시지 수신 위와 같은 구성요소를 이용해 서비스를 협업과 트랜잭션에 기반하는 단일 비 즈니스 프로세스로 조합할 수 있다는 것이 BPEL 의 가장 큰 장점이다. [ 그림 2] BPEL 적용 예 [ 그림 2] 의 중앙에 위치한 부분이 BPEL 스크립트이다. 그림에서 볼 수 있듯이 동 기 혹은 비동기로 동시에 진행되는 다양한 프로세스가 존재하고 이들의 순서도 명 시되어 있다. 워크플로가 진행되는 동안 필요에 따라 서비스 A의 WSDL을 통해 서비스를 비동기로 호출했고, 서비스 B의 서비스를 호출하고 다시 결과도 받고 - 291 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 있는 것을 확인할 수 있다. 이처럼 BPEL을 이용해 여러 서비스의 상호작용을 마 치 하나의 서비스처럼 정의할 수 있는 것이다. < 출처 : 참고문헌 7 > - 292 -
알고리즘 이해하기 1. 참고문헌 1 2 3 4 참고자료 정보교육학회 교재개발분과위원회(2004), 컴퓨터과 교수법 및 교재연구, 생능 출판사 정보교육학회 교재개발분과위원회(2004), 컴퓨터 교육론, 삼양미디어 박정호(2003), 컴퓨터 알고리즘, 상조사 Cormen Thomas H(2001), Introduction to Algorithms, 2/E, MIT 5 Horowitz Ellis, Sahni Sartaj, Anderson-Freed S(1992), Fundamentals of Data Structures in C, Computer Science 6 YIH-LONG CHANG, et al., "Ranking Dispatching Rules by Data Envelopment Analysis in a Job Shop Environment," IIE Transactions Vol. 28, pp. 631-642, 1996. 7 IT 신기술 현황 및 향후 적용방안, 한국전산원 2. 인터넷 사이트 1 http://blog.naver.com/isensor/20002047032 2 http://www.eecis.udel.edu/~mills/ 3 http://mathman.pe.kr/ - 293 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 정보과학-10주 발전 단원 1 활동지 10-1(1) 교육청 영재교육원/ 영재학급 중학교 이름 여러분이 순서도로 작성한 긴급 상황 처리 알고리즘을 의사코드로 변환해봅 시다. - 294 -
알고리즘 이해하기 정보과학-10주 발전 단원 1 활동지 10-1(2) 교육청 영재교육원/ 영재학급 중학교 이름 구구단을 화면에 출력하는 순서도와 의사코드를 작성해 봅시다. 단, 구구단의 출력 형식은 자유롭게 설정합니다. - 295 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 정보과학-10주 발전 단원 1 활동지 10-1(3) 교육청 영재교육원/ 영재학급 중학교 이름 [ 팀별 연구 프로젝트 ] 어느 백화점이 행사로 물건을 사면 상품을 받을 수 있는 쿠폰을 준다고 합니 다. 니다. 어떤 소비자가 여러 백화점들의 물건을 사서 최대의 쿠폰을 받으려고 합 단 물건은 만원 단위로 살 수 있으며 각 백화점은 물건을 많이 살수록 많은 쿠폰을 소비자에게 돌려줍니다. 따라서 물건을 사지 않는 경우는 당연히 얻게 되는 쿠폰도 없습니다. 예를 들어 한 소비자가 4 만원을 갖고 두 개의 백 화점에서 각각 만원 단위로 물건을 샀을 경우 얻을 수 있는 쿠폰은 다음과 같다고 합니다. 물건 액수 ( 만원 ) 백화점 A 백화점 B 1 5 1 2 6 5 3 7 9 4 8 15 위의 경우 만일 백화점 A 에 1 만원, 백화점 B 에 3 만원의 물건을 샀다면 소비 자가 얻은 쿠폰은 14 장 (5 장 +9 장 ) 입니다. 4 만원의 물건을 사서 가장 많은 쿠 폰을 얻을 경우는 백화점 B 에서만 4 만원의 물건을 사는 경우로서 이때 받는 쿠폰은 15 장입니다. 물건을 사는 액수가 정해져 있고 백화점의 개수와 물건 을 샀을 경우 얻게 되는 쿠폰이 주어졌을 때 가장 많은 쿠폰을 얻을 수 있는 방법과 이때의 쿠폰 수를 구하는 방법을 순서도와 의사코드로 표현해봅시다. - 296 -
알고리즘 이해하기 정보과학-10주 발전 단원 1 활동지 10-2(1) 교육청 영재교육원/ 영재학급 중학교 이름 여러분이 배웠던 생활속 알고리즘을 을 찾아 정리해봅시다. 2 개 선택하여 구현하려고 할때의 문제점 - 297 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 정보과학-10주 발전 단원 1 활동지 10-2(2) 교육청 영재교육원/ 영재학급 중학교 이름 5주에서 여러분이 구현한 유클리드 호제법은 다음과 같이 나타낼 수 있습니 다. m 을 n 으로 나눈 나머지가 0 이면 n 이 최대공약수가 되고, 0 이 아니면 m 을 n 으로 나눈 나머지와 n 의 최대공약수이다. 이 과정을 반복하여 최대공약 수를 구한다. 이를 순서도와 의사코드로 나타내봅시다. 또한 두 수 24 와 18 로 작성한 순서도와 의사코드가 정확한지를 대입하여 증명해봅시다. - 298 -
알고리즘 이해하기 정보과학-10주 발전 단원 1 평가도구(1/1) 교육청 영재교육원 중학교 이름 교사용 번호 측정요소 측정의 근거 1점 2점 3점 4점 5점 창의성 독창성 기존의 알려진 방법과는 확연히 구분 되는 형식, 이론, 주장 등이 존재하는 가? 자신만의 참신하고 독특한 아이디어 를 제시하고 있는가? 논리성 전개과정과 문제해결에서 전후가 명 확하며, 원인과 결과 및 사용되는 이 론적 배경이 분명하다. 다양성 복수의 상이한 요소, 부분 또는 수준 들을 포함하고 있다. 가치성 주제나 내용이 명확한 이슈를 포함한 다. 기능적 솜씨 논리적으로 치밀하며, 도입 전개 결론 에 이르는 과정이 치밀하다. 유용성 발전 가능성 내용과 결과를 실제에 적용하여 사용 할만한 가치가 있다. 앞으로 새로운 산출물, 혹은 연구 결 과를 도출할 수 있는 아이디어를 포 함한다. - 299 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 11주 주제 생활 속 알고리즘 구현하기 ( 보고서 작성 ) 본 활동은 알고리즘 이해하기 단원의 열 번째 시간으로서 각 주에서 학습한 내용을 종합적으로 활용해보는 보고서 작성 활동을 한다. 학습자 전원에게 각 차 시에 학습한 내용과 관련된 창의적인 문제들을 부여하고, 학습자 각자가 정보과 학적인 사고를 통해 창의적으로 문제를 풀고 보고서로 작성하는 활동을 한다. 교육 목표 1. 2. 3. 5. 정보과학 분야 사고력 신장 정보과학 분야 적성 강화 정보과학 분야 특정지식 습득 정보과학 분야 일반능력신장 교육 내용 1-2. 2-1. 3-1. 5-1. 5-2. 논리전개 및 추론능력 정보과학에 대한 호기심 알고리즘 설계 자율적 탐구 및 학습능력 상호작용과 의사소통능력 세부 교육 내용 각 차시에 학습한 내용과 관련된 창의적인 문제들을 제시하고 설명한다. 알고리즘 구현 보고서 에 대한 작성 요령을 설명한다. 학습자가 준비한 발표한 내용에 대해 토론한다. 유클리드 호제법 보고서 에 대해 발표를 실시한다. - 300 -
알고리즘 이해하기 다양한 알고리즘의 표현 방법을 연구한다. 교육방법 발표와 토론, 강의, 주제별 연구프로젝트 교육목표 < 교육목표 - 교육내용 - 세부교육내용 - 교육방법의 유기적 연관성 > 교육내용 1.정보과학 분야 1-2. 논리전개 사고력 신장 2.정보과학 분야 적성 강화 세부교육내용 및 추론 능력 학습자가 준비한 유클리드 호제법 2-1. 정보과학 보고서 에 대해 발표를 실시한다. 에 대한 호기 발표한 내용에 대해 토론한다. 심 교육방법 발표와 토론 3.정보과학 분야 3-1. 알고리즘 특정지식 습득 설계 각 차시에 학습한 내용과 관련된 창 의적인 문제들을 제시하고 설명한다. 알고리즘 구현 보고서 에 대한 작성 요령을 설명한다. 학습자가 준비한 유클리드 호제법 보고서 에 대해 발표를 실시한다. 발표한 내용에 대해 토론한다. 강의 5-1. 자율적 탐 구와 학습 5.정보과학 분야 능력 일반능력 신장 5-2. 상호작용 과 의사소통 능력 발표한 내용에 대해 토론한다. 다양한 알고리즘의 표현 방법을 연구한다. 발 표 와 토 론, 주제별 연구 프로젝트 준비물 교사용 관련 시청각 자료, 인터넷 검색용 PC 학생용 활동지 사진 - 301 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 학생용 필기도구 - 302 -
알고리즘 이해하기 교수학습 활동 학습 단계 교수학습 활동 시간 ( 총 90 분 ) 지도초점 및 유의점 도입 이번 차시의 세부교육내용을 5 활동 소개한다. 학습자가 준비한 발표 내용에 대하여 간단한 질문 과정을 대 하여 준비 정도를 파악한다. 시간이 부족할 경우 알고리즘 구현 보고서 에 대하여 발표할 5 5 학생 스스로가 알고리즘 구현 보고서 활동을 진행 할 수 있도록 이해를 도우 면서, 모든 학생들이 참여 하도록 독려한다. 본 활동 학습자를 선정한다. 발표자의 내용 중에서 토론이 가능한 내용을 선정하여 토론 20 을 진행한다. 토론 내용을 종합 정리한다. 각 차시에 학습한 내용과 5 20 관련된 창의적인 문제들을 제시하고 설명한다. 정리 활동 본 시간에 실시한 활동의 정리 다음 주 교육에 대한 안내와 준비사항을 안내한다. 20 10 학기 정리 및 평가에 대한 진행 방식을 설명한다. 주요 초점 질문 1. 각 차시에서 학습한 알고리즘의 내용 및 생활속 알고리즘을 이해하고 있는가? 2. 주어진 문제를 학습자 스스로가 창의적으로 해결할 수 있겠는가? - 303 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 지도활동 도입 활동 1. 이번 차시의 세부 교육 내용을 소개합니다. 각 차시에 학습한 내용과 관련된 창의적인 문제들을 제시하고 설명한다. 알고리즘 구현 보고서 에 대한 작성 요령을 설명한다. 학습자가 준비한 발표한 내용에 대해 토론한다. 유클리드 호제법 보고서 에 대해 발표를 실시한다. 본 활동 1. 알고리즘 구현 보고서에 대해서 발표하고 토론해봅시다. 활동지 10-2(1) 사용 2. 발표 및 토론 내용을 종합하여 정리하면서 학생 스스로 결과를 정리할 수 있도록 지도합니다. 1) 발표자와 자신의 활동지 내용을 비교하여 장단점을 분석해봅시다. 2) 자신의 활동지를 스스로 평가해봅시다. 3. 강의 내용 1) 보고서 작성 시 필요한 알고리즘 설계 기법에 대해 강의합니다. 필수정보 1. 알고리즘 설계 기법 참조 2) 보고서 작성 내용으로 동적계획법을 이용한 배낭 문제 해결 에 대해 강 의합니다. 필수정보 2. 동적계획법을 이용한 배낭문제 해결 참조 3) 보고서 작성 내용으로 오목 찾기 문제 에 대해 강의합니다. 필수정보 3. 오목 찾기 참조 정리 활동 1. 학습 활동 정리 - 304 -
알고리즘 이해하기 1) 동적계획법을 이용한 배낭 문제 해결 알고리즘을 보고서를 제출하도록 합니다. 활동지 11-1(1) 사용 2) 오목 찾기 알고리즘을 보고서로 제출하도록 합니다. 활동지 11-1(2) 사용 3) 우리가 계산하고 있는 촌수의 계산 방식은 부모 자식간에는 1 촌, 형제간 에는 2 촌이 적용됩니다. 따라서 나와 할아버지의 촌수는 나와 아버지가 1 촌 이고 다시 아버지와 할아버지가 1 촌이므로 2 촌의 촌수를 가지게 됩니다. 이 렇게 나와의 촌수를 계산하기 위해서는 같은 뿌리를 갖는 곳으로 거슬러 올 라가 다시 촌수를 계산하고자 하는 사람에게 거슬러 내려오면서 촌수를 더하 는 방식으로 계산되어 집니다. 이러한 촌수를 여러사람들에 대한 부모 자식들 간의 관계가 주어졌을때 주어진 두 사람의 촌수를 계산하는 알고리즘을 작성 하려고 합니다. 이를 순서도와 의사코드를 사용하여 팀별로 작성하고 보고서 로 제출하도록 합니다. 활동지 11-1(3) 사용 2. 다음 주 교육 내용 안내 1) 이번 시간에 작성한 알고리즘 구현 보고서를 파워포인트 프로그램을 사 용하여 발표할 수 있도록 만들어 봅시다. 활동지 11-2(1) 사용 - 305 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 평가 평가 내용 유클리드 호제법 보고서 를 발표함으로써 논리전개 및 추론능력과 정보과 학에 대한 호기심을 갖게 되었는지 평가한다. 창의적 문제해결 방법, 알고리즘 구현 보고서, 유클리드 호제법 보고서 등 을 통해 알고리즘 설계를 학습하였는지 평가한다. 학습자가 미리 준비한 활동지와 본차시에 작성한 활동지, 학습자의 발표 내 용, 토론 참여도 등을 종합적으로 평가하여, 논리전개 및 추론능력, 자율적 탐구와 학습능력, 상호작용과 의사소통능력이 신장되었는지를 평가한다. 평가 방법 발표 및 토론 평가 : 도입활동 1 번, 본활동 2번 활동시 평가 그룹 프로젝트 산출물 평가 : 정리활동 1번 3) 활동시 평가 평가도구 1/1 평가 기준 사용 보고서의 제목이 창의적인가? 보고서의 내용이 정교한가? 보고서의 핵심 내용이 독창적인가? 보고서의 핵심 내용이 실현가능성이 있는가? 평가 유의점 토론 시 학생들이 적극적으로 참여하도록 지도한다. - 306 -
알고리즘 이해하기 필수정보 1. 알고리즘 설계 기법 1.1 탐욕법 (Greedy method) 현재 상태에서 제일 좋다고 판단되는 것부터 선택하고 다음은 남은 것 중에 서 다시 제일 좋다고 판단되는 것을 선택한다. 즉, 앞 뒤( 그 전의 선택이나, 앞으 로 벌어질) 상황을 전혀 고려하지 않고, 오직 현재의 이익을 쫓는 방법을 뜻한다. 탐욕법은 항상 최적의 답을 가져다주지는 않는다는 사실을 꼭 기억해야 한다. 탐 욕법으로 최적해를 구할 수 있는 문제에는 최소비용 신장트리와 최단거리 알고 리즘 등이 있다. 탐욕법은 코딩이 간편하고 알고리즘 설계가 간단하다. 우리는 다음의 예를 통해 탐욕법으로 최적해를 구할 수 없는 경우를 살펴본다. [ 그림 11-1] 에서 우리는 다음과 같은 문제를 받았다고 가정하자. 1 번 도시를 출발하여 모든 도시를 순회하고 다시 1 번으로 돌아온다. [ 그림 11-1] 그래프 예제 이번 풀이의 목적은 가장 짧은 거리를 갖는 여행 일주 계획을 세우는 것이다. 이 를 탐욕법을 이용하여 계산을 하면 다음 [ 그림 11-2] 와 같다. 이때의 순회 방법 은 1번 2번 3번 4번 1 번 이고, 총거리는 11(1+2+3+5=11) 이다. [ 그림 11-2] 탐욕법 풀이 그러나 우리는 다른 방법을 생각해 볼 수 있다. 다음 [ 그림 11-3] 은 다른 해 법을 보여주고 있다. 이 경우 순회 방법은 1번 2번 4번 3번 1 번 이고 총거리 - 307 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 는 9(1+3+3+2=9) 이다. 이것이 최적해가 된다. [ 그림 11-3] 최적해 따라서 탐욕법은 항상 최적해를 갖지 않는다는 것을 알 수 있다. 탐욕법을 이용하여 효율적인 서비스 순서를 정하는 문제이다. 다음의 예제는 5 명의 고객이 서비스를 받아야 하는 시간이 < 표 11-1> 과 같이 주어졌을 때 전 체 고객의 처리시간(= 기다리는 시간+ 서비스 받는 시간) 의 합이 최소가 되는 시 간과 서비스 순서를 탐욕법을 사용하여 구하라. < 표 11-1> 고객이 서비스를 받아야 하는 시간표 고객 서비스 받을 시간 1 1 2 3 3 2 4 8 5 5 탐욕법을 사용한 풀이방법은 다음과 같다. 1 고객순서로 탐욕법을 적용해 보자 1 2 3 4 5 1 번 고객의 처리시간=1( 서비스 받는 시간) 2 번 고객의 처리시간=1( 기다리는 시간)+3( 서비스 받는 시간)=4 3 번 고객의 처리시간=1+3( 기다리는 시간)+2( 서비스 받는 시간)=6 4 번 고객의 처리시간=1+3+2( 기다리는 시간)+8( 서비스 받는 시간)=14 5 번 고객의 처리시간=1+3+2+8( 기다리는 시간)+5( 서비스 받는 시간)=19 처리시간의 합 : 1+4+6+14+19=44 2 서비스 받을 시간이 긴 순서로 탐욕법을 적용해 보자 - 308 -
알고리즘 이해하기 4 5 2 3 1 4 번 고객의 처리시간=8( 서비스 받는 시간) 5 번 고객의 처리시간=8( 기다리는 시간)+5( 서비스 받는 시간)=13 2 번 고객의 처리시간=8+5( 기다리는 시간)+3( 서비스 받는 시간)=16 3 번 고객의 처리시간=8+5+3( 기다리는 시간)+2( 서비스 받는 시간)=18 1 번 고객의 처리시간=8+5+3+2( 기다리는 시간)+1( 서비스 받는 시간)=19 처리시간의 합 : 8+13+16+18+19=74 3 서비스 받을 시간이 짧은 순서로 탐욕법을 적용해 보자 1 3 2 5 4 1 번 고객의 처리시간=1( 서비스 받는 시간) 3 번 고객의 처리시간=1( 기다리는 시간)+2( 서비스 받는 시간)=3 2 번 고객의 처리시간=1+2( 기다리는 시간)+3( 서비스 받는 시간)=6 5 번 고객의 처리시간=1+2+3( 기다리는 시간)+5( 서비스 받는 시간)=11 4 번 고객의 처리시간=1+2+3+5( 기다리는 시간)+8( 서비스 받는 시간)=19 처리시간의 합 : 1+3+6+11+19=40 ( 최적해) 위의 기준 중에 서비스 시간이 짧은 순서( 오름차순 정렬) 를 기준으로 하는 것이 최적해임을 알 수 있다. 1.2 동적계획법 (Dynamic programming method) 동적계획법이란 개념적으로 주어진 문제를 여러 부분문제로 분할하여 순환 수행한다는 점에서 분할정복법(Divide and Conquer) 과 같으나 분할정복법의 경 우 한 번 순환하여 수행된 부분문제는 다시 수행되지 않는 경우에 적당하고 동 적계획법은 다시 수행될 수 있을 때 사용되는 방법이다. 즉, 주어진 문제를 여러 부분문제로 분할하여 문제를 해결할 때 중첩되는 여러 부분문제가 발생할 수 있 다. 따라서 이런 중복에 대한 주의를 기울이지 않으면 비효율적인 알고리즘이 된 다. 그러나 동적계획법을 이용하여 한번 해결한 부분문제를 저장하여 나중에 다 시 사용한다면 더 효율적인 알고리즘이 된다. 반복해서 여러 번 호출되는 부분문 제가 있을 경우 해당되는 부분문제가 첫 번째 수행될 때 그 결과를 기록해 두었 다가 이후에 다시 수행이 요구될 때 또 수행하는 것이 아니라 이전에 기록된 결 과를 이용하는 것이 동적 프로그래밍의 핵심이다. 동적계획법을 이용할 때는 다 음과 같은 사항에 유의해야 한다. 1 작은 문제의 해를 병합하여 더 큰 문제의 해를 구하는 것이 항상 가능하 지는 않다. 2 주어진 문제를 해결하기 위해 작은 문제로 나눌 때, 해결해야 하는 작은 - 309 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) 문제가 너무 많아질 수가 있다. 또한 동적 프로그래밍은 다음과 같은 특성을 가진다. 1 2 최적의 순서는 최적화의 원칙으로 명백히 나타난다. 즉, 최적 결정의 순서 가 초기상태와 결정이 무엇이든지 간에 나머지의 모든 결정들은 첫 번째 결정에서 나타난 상태에 관해서 최적 결정 순서를 구성시키는 원칙이다. 한 번 어떤 부분 문제가 해결되면 그 해를 기억함으로써 결코 두 번 다시 계산되지 않는다. 2. 동적계획법을 이용한 배낭 문제 해결 ( 보고서 작성 ) A, B, C, D, E의 다섯 개의 보석과 16kg을 담을 수 있는 배낭이 있을 때 보 석의 무게와 가치는 다음 < 표 11-2> 와 같다고 하자. < 표 11-2> 보석 A B C D E 무게(kg) 3 4 7 8 9 가치 4 5 10 11 13 동적계획법을 이용하여 원하는 답을 얻는 알고리즘은 다음과 같다. 1 작은 문제로 분할한다. 2 ( 가방의 무게를 1 16까지 변화시키면서 각 무게에 대한 물건 A만 적용시 킨다.) 그 다음 B를 적용시키는데 A를 적용하는 것과 비교해서 좋은 것을 선택 한다. 3 C, D, E 까지 적용시키는데 매번 더 좋은 값을 선택, 저장하도록 한다. 주어진 알고리즘을 기반으로 하는 과정은 다음과 같다. 1 A 만 적용시킨다. A의 무게는 3이므로 3부터 16 까지 다음을 반복한다. 현재 가치 = ( 현재 판단할 무게-3) 의 가치 + A의 가치 현재 가치와 이전의 가치와 비교하여 좋은 것을 선택한다. 다음의 < 표 - 310 -
알고리즘 이해하기 11-3> 는 A 만 적용시켰을 때의 결과이다. < 표 11-3> A만 적용 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 dyn() 0 0 0 4 4 4 8 8 8 12 12 12 16 16 16 20 20 bosuk() A A A A A A A A A A A A A A A의 시작위치 현재 판단할 무게 dyn(6-3)+4(a 의 가치)=4+4=8 2 B 를 적용시킨다. B의 무게는 4이므로 4부터 16 까지 반복한다. 다음의 < 표2-3> 은 A의 결과 에 B 를 적용시킨 결과를 나타낸 것이다. < 표 11-4> B를 적용 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 dyn() 0 0 0 4 5 5 8 9 10 12 13 14 16 17 18 20 21 bosuk() A B B A B B A B B A B B A B 현재 판단할 무게 dyn(4-4)+5(b 의 가치) > 4 ( 이전 값) 이므로 갱신 3 C, D, E 를 모두 적용시키면 다음 < 표 11-5> 와 같다. - 311 -
정보과학 영재교육 교수학습 자료( 중등-발전-단원 1) < 표 11-5> 모두 적용 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 A B C D E 0 0 0 4 4 4 8 8 8 12 12 12 16 16 16 20 20 A A A A A A A A A A A A A A 0 0 0 4 5 5 8 9 10 12 13 14 16 17 18 20 21 A B B A B B A B B A B B A B 0 0 0 4 5 5 8 10 10 12 14 15 16 18 20 20 22 A B B A C C A C C A C C C C 4 5 5 8 10 11 12 14 15 16 18 20 21 22 A B B A C D A C C D C C D D 4 5 5 8 10 11 13 14 15 17 18 20 21 23 A B B A C D E C C E E C E E 여기서 최종적인 배열의 값은 제일 하단의 E 열이다. 따라서 구하고자 하는 최대 가치는 dyn(16) 의 값인 23 이 된다. 또한 23을 얻기 위하여 E를 사용했기 때문에 16-9(E 의 무게)=7 의 위치로 간다. 10의 가치를 얻기 위해 C를 사용했으므로 7-7(C 의 무게)=0 이므로 알고리즘은 종료된다. 첫 번째 보고서는 위의 동적계획법 과정을 순서도 및 의사코드로 구현하는 것이다. 각자 동적계획법을 이용한 방법을 보고서로 작성하여 발표할 수 있도록 준비한다. 3. 오목 찾기 ( 보고서 작성 ) 다음의 [ 그림 11-4] 는 오목놀이를 보여주고 있다. 번호는 돌을 놓은 순서이다. [ 그림 11-4] 오목 위의 그림에서 보면 흰 돌이 오목이 되었음을 알 수 있다. 인간은 직감적으로 오 - 312 -