프로그래밍은 아이디어를 실현시키는 데 매우 훌륭한 도구이다. 그러나 학습자들은 프로그래밍이 요구하는 엄격한 문법과 고도의 추상적인 사고로 인하여 학습의 어려움을 호소하는 경우가 많다. 학습자들이 쉽게 프로그래밍을 학습할 수 있도록 다양한 연구가 진행되고 있지만 그 이전에 학습자들이 무엇을 어려워하는지에 대한 분석이 선행되어야 학습 효과를 보다 높일 수 있다. 따라서 본 연구에서는 프로그래밍 기초 교육에서 초보 학습자들이 어려워하는 부분은 무엇인지, 그 이유는 무엇인지에 대하여 프로그래밍 개념을 중심으로 분석하였다. 분석 결과를 토대로 프로그래밍 교육 시 프로그래밍 개념에 대한 정확한 이해와 내면화, 정교한 알고리즘 작성을 통해 사고와 실행 결과 간의 오차 축소, 다양한 문제 해결 경험 제공을 바탕으로 문제 해결 능력을 향상시키고, 문제 해결 과정에 대해 자유롭게 사고 할 수 있는 전략을 수립하며, 학습 순서 설계 등을 통한 학습의 효율성을 촉진시킬 필요가 있음을 제시하였다.
프로그래밍은 아이디어를 실현시키는 데 매우 훌륭한 도구이다. 그러나 학습자들은 프로그래밍이 요구하는 엄격한 문법과 고도의 추상적인 사고로 인하여 학습의 어려움을 호소하는 경우가 많다. 학습자들이 쉽게 프로그래밍을 학습할 수 있도록 다양한 연구가 진행되고 있지만 그 이전에 학습자들이 무엇을 어려워하는지에 대한 분석이 선행되어야 학습 효과를 보다 높일 수 있다. 따라서 본 연구에서는 프로그래밍 기초 교육에서 초보 학습자들이 어려워하는 부분은 무엇인지, 그 이유는 무엇인지에 대하여 프로그래밍 개념을 중심으로 분석하였다. 분석 결과를 토대로 프로그래밍 교육 시 프로그래밍 개념에 대한 정확한 이해와 내면화, 정교한 알고리즘 작성을 통해 사고와 실행 결과 간의 오차 축소, 다양한 문제 해결 경험 제공을 바탕으로 문제 해결 능력을 향상시키고, 문제 해결 과정에 대해 자유롭게 사고 할 수 있는 전략을 수립하며, 학습 순서 설계 등을 통한 학습의 효율성을 촉진시킬 필요가 있음을 제시하였다.
Programming is excellent tool on realizing ideas. However students often complain of difficulties due to requiring the strict programming grammar and the highly thinking. Although various researches have been conducted to teach the programming easily for students, it should precede the analysis of w...
Programming is excellent tool on realizing ideas. However students often complain of difficulties due to requiring the strict programming grammar and the highly thinking. Although various researches have been conducted to teach the programming easily for students, it should precede the analysis of what and why programming concept is difficult for learners. In this study, we analyzed what and why the programming concept is difficult for novice learners in basic programming education. Based on the results, we suggested: improving problem-solving skills based on accurate understanding and internalization on the programming concept, on reducing error between thought and execution results through the creation of sophisticated algorithms and on offering a variety of troubleshooting experience, establishing strategies to think freely for problem-solving process, and promoting the effectiveness of the learning through the learning procedure design.
Programming is excellent tool on realizing ideas. However students often complain of difficulties due to requiring the strict programming grammar and the highly thinking. Although various researches have been conducted to teach the programming easily for students, it should precede the analysis of what and why programming concept is difficult for learners. In this study, we analyzed what and why the programming concept is difficult for novice learners in basic programming education. Based on the results, we suggested: improving problem-solving skills based on accurate understanding and internalization on the programming concept, on reducing error between thought and execution results through the creation of sophisticated algorithms and on offering a variety of troubleshooting experience, establishing strategies to think freely for problem-solving process, and promoting the effectiveness of the learning through the learning procedure design.
* AI 자동 식별 결과로 적합하지 않은 문장이 있을 수 있으니, 이용에 유의하시기 바랍니다.
문제 정의
따라서 본 연구에서는 초보 학습자의 프로그래밍 교육에 적절한 ‘코드닷오알지’의 학습 단계를 수업에 도입하고, 학습자들이 어려워하는 프로그래밍 개념이나 원리, 어려운 이유에 대해 분석한 후 이를 바탕으로 적절한 교육 방안을 제시하였다.
본 연구에서는 프로그래밍 학습 시 초보 학습자가 겪는 어려움을 분석하고 프로그래밍 교육을 위한 교수 학습 방안을 제시하였다. 이를 위하여 초보 학습자의 프로그래밍 교육에 적합한 코드닷 오알지를 도입하고, 학습자들이 코드닷오알지의 퍼즐 문제들을 해결하는 동안 이해가 되지 않았던 부분이나 잘못 해결했던 부분, 어려움을 겪었던 이유가 무엇인지를 기록하도록 하였다.
이를 바탕으로 학습자들이 어려워하는 점은 무엇인지, 그 이유는 무엇인지에 대해 파악함으로써 학습의 효과를 높일 수 있는 전략을 수립할 수 있다. 이러한 분석은 학습 과정에서 오개념이 형성되는 것을 예방할 수 있으며, 학습 동기와 흥미를 유지시키고 프로그래밍 학습이 지속되기 위한 적절한 교육적 처방이 가능하도록 한다.
한 예로 삼각형과 사각형을 합쳐 집 모양을 그리는 경우를 생각해보자. 삼각형을 그리는 패턴과 사각형을 그리는 패턴을 분해하여 각각에 대한 해법을 생각한 후 합치는 과정에서, 사각형을 그린 다음 삼각형을 그리려면 사각형 그리기가 종료된 지점에서 적절한 이동과 각도의 회전이 추가되어야 한다.
가설 설정
둘째, 함수의 적용 원리에 대한 이해가 부족했다. 함수가 어떤 역할을 하는지에 대한 이해만으로는 프로그래밍을 통해 문제를 해결할 수 없다.
제안 방법
학습자들이 코드닷오알지에 포함된 20개의 학습 단계 중 실제로 프로그래밍을 하는 9개의 단계에서 제시된 퍼즐을 해결하도록 하였다. 9개의 단계에는 총 98개의 퍼즐이 있으며 그 중 3문항은 원하는 대로 자유롭게 코딩해보는 문항으로, 학습자들이 계획 없이 코딩했다고 응답한 사례가 많아 이를 제외한 95문항에 대해 분석하였다.
분석은 코드닷오알지에 포함된 프로그래밍 개념을 순차, 반복, 조건, 이벤트로 구분하고 학습자 별로 어떤 개념과 원리를 어려워하였는지, 왜 그러했는지를 분석하였다.
본 연구에서는 프로그래밍 학습 시 초보 학습자가 겪는 어려움을 분석하고 프로그래밍 교육을 위한 교수 학습 방안을 제시하였다. 이를 위하여 초보 학습자의 프로그래밍 교육에 적합한 코드닷 오알지를 도입하고, 학습자들이 코드닷오알지의 퍼즐 문제들을 해결하는 동안 이해가 되지 않았던 부분이나 잘못 해결했던 부분, 어려움을 겪었던 이유가 무엇인지를 기록하도록 하였다. 이후 코드닷오알지에 포함된 ‘순차’, ‘반복’, ‘논리’, ‘이벤트’의 4가지 프로그래밍 개념들을 바탕으로 프로그래밍 개념 학습에서 많은 학습자들이 경험하는 어려움과 그 원인이 무엇인지 분석하였다.
이후 코드닷오알지에 포함된 ‘순차’, ‘반복’, ‘논리’, ‘이벤트’의 4가지 프로그래밍 개념들을 바탕으로 프로그래밍 개념 학습에서 많은 학습자들이 경험하는 어려움과 그 원인이 무엇인지 분석하였다.
학습자들이 코드닷오알지에 포함된 20개의 학습 단계 중 실제로 프로그래밍을 하는 9개의 단계에서 제시된 퍼즐을 해결하도록 하였다. 9개의 단계에는 총 98개의 퍼즐이 있으며 그 중 3문항은 원하는 대로 자유롭게 코딩해보는 문항으로, 학습자들이 계획 없이 코딩했다고 응답한 사례가 많아 이를 제외한 95문항에 대해 분석하였다.
대상 데이터
K 대학에서 컴퓨팅을 이해하고 활용하는 능력을 길러주기 위한 목적으로 개설된 교양 과목을 수강하는 학생들을 대상으로 12차시 진행하였다. 수강한 학생들은 프로그래밍 경험이 전혀 없는 1, 2학년 학생 20명이며, 이 중 코드닷오알지 퍼즐을 모두 해결하지 못하고 중도에 포기한 학습자 3명을 제외한 17명(남학생 10명, 여학생 7명)의 문제 해결 과정을 분석하였다.
K 대학에서 컴퓨팅을 이해하고 활용하는 능력을 길러주기 위한 목적으로 개설된 교양 과목을 수강하는 학생들을 대상으로 12차시 진행하였다. 수강한 학생들은 프로그래밍 경험이 전혀 없는 1, 2학년 학생 20명이며, 이 중 코드닷오알지 퍼즐을 모두 해결하지 못하고 중도에 포기한 학습자 3명을 제외한 17명(남학생 10명, 여학생 7명)의 문제 해결 과정을 분석하였다.
이들은 어려움을 겪을 수 있는 범주를 학습 개념, 학습 환경, 교육 방법, 교육 주제, 교육 자료로 구분하고 교사와 학습자의 의견을 수렴하였는데, 분석 결과 학습자들은 프로그래밍 문법 학습에 있어서는 포인터와 참조, 매개변수, 구조화된 데이터 타입, 에러 핸들링, 라이브러리 활용에, 교육 방법으로는 혼자 학습하는 부분을 더욱 어려워한 것을 확인할 수 있었다. 학습 자료의 경우는 코드 예제와 인터넷 튜토리얼, 교육용 동영상, 무들 플랫폼에서 활용 가능한 콘텐츠 순으로 학습하기 용이한 자료로 나타났다.
성능/효과
넷째, 문제 해결 과정이 복잡해질수록 학습자들의 문제 해결 패턴이 주로 무조건적인 시행착오 접근 방법에 집중되어 있다. 중첩의 등장으로 복잡도가 높아지면서 학습자들은 프로그램을 계획하려는 노력 대신 일단 실행시켜보고 수정하는 시행착오 방법을 통해 문제를 해결하고 있었다.
다섯째, 과거 학습 경험이 현재의 학습에서 인지적 조작을 방해하기도 한다는 점이다. 과거 학습 경험에 대한 고착 현상은 학습자의 사고가 유연하게 이루어지지 못하도록 한다[13].
둘째, 문제 분해 후 통합하는 과정에서 필요한 블록을 누락시키고 있었다. 문제를 작은 문제로 분해하여 해결하고 다시 합치는 방법은 문제를 쉽게 해결하도록 하는 방법이지만, 분해했던 작은 부분을 하나로 합치는 과정에서 작은 부분을 생략해서는 안되며, 작은 부분들을 연결하기 위해 필요에 따라 추가 블록을 삽입할 수 있어야 한다.
셋째, 중첩의 구조화에 대한 충분한 파악이 부족하다. 이는 사람의 사고 과정이 순차적이기 때 문에 초보 학습자들은 구조화에 집중하지 않으면 순차 구조로 표현하기 쉽다.
첫째, 학습자들은 체계적으로 작성한 알고리즘을 바탕으로 퍼즐을 해결하는 대신 즉흥적으로 사고한 방법을 바탕으로 프로그래밍 개념을 적용하고 있었다. 순차는 설계한 알고리즘을 바탕으로 필요한 블록을 순서대로 나열할 때 문제 해결에서의 어려움을 최소화시킬 수 있다.
첫째, 함수 개념에 대한 정확한 이해가 부족했다. 개념에 대한 이해는 그 개념이 왜 필요한지, 어떤 역할을 하는지를 깨닫게 한다.
학습자들은 문제 해결에 필요한 블록을 해결 절차대로 배치하지 못하고 뒤바꾸어 배치하거나, 필요한 블록 생략 혹은 불필요한 블록의 추가 삽입, 잘못된 블록의 배치 등의 어려움을 겪은 것으로 나타났다.
학습자들은 반복되어야 할 블록 순차적 나열, 반복문 내에 불필요한 블록을 삽입, 반복 횟수 입력 오류, 문제 해결에 적합하지 않은 반복 블록 선택, 중첩 구조를 만들지 못하는 등의 어려움을 느끼고 있었다. 이는 학습자들이 반복 개념 에 포함되는 4가지 개념을 정확히 파악하지 못했거나 반복되어야 하는 패턴에 대한 인식 부족, 반복 블록을 사용하는 방법에 대한 인지 불가, 중첩의 구조화에 대한 충분한 파악 부족, 시행착오적 접근 방법에 그 원인이 있다.
학습자들은 조건 개념 내에 반복 기능이 포함되어 있다고 인식하거나 조건 블록 내에 삽입되어야 할 블록을 찾아내지 못하는 어려움을 겪은 것으로 나타났다. 이는 논리 구조와 사용 방법에 대한 인지 부족, 코드닷오알지에서 제시하는 학습 순서에 따른 선행 학습의 영향에 의한 결과이다.
후속연구
본 연구에서는 초보 학습자들의 프로그래밍 교육을 위해 적합하다고 판단되는 ‘코드닷오알지’를 기준으로 학습자들이 경험하는 어려움은 무엇인지를 분석하였다 그러나 ‘코드닷오알지’ 외에 다양한 프로그래밍 학습 도구를 도입하고 프로그래밍 학습 도구의 특성에 따라 학습자가 겪는 어려움을 분석함으로써 프로그래밍 학습 효과를 보다 향상시킬 필요가 있다.
질의응답
핵심어
질문
논문에서 추출한 답변
초보 학습자들의 프로그래밍 교육을 위해서 필요한 것은?
초보 학습자들의 프로그래밍 교육을 위해서는 우선 적절한 프로그래밍 도구가 선정이 되어야 하며, 프로그래밍 언어의 문법 학습 보다는 문제 해결에 필요한 개념을 학습하고 개념을 적용하는 원리를 익히는 데에 중점을 두어야 한다. 이를 바탕으로 학습자들이 어려워하는 점은 무엇인지, 그 이유는 무엇인지에 대해 파악함으로써 학습의 효과를 높일 수 있는 전략을 수립할 수 있다.
프로그래밍 과정이 인지적 부담을 증가시켜 학습자가 중도에 포기하도록 하는 결과를 낳는 경우가 많은 이유는?
그러나 프로그래밍은 프로그래밍 언어의 엄격한 문법 학습 혹은 고도의 추상화 능력을 필요로 하기 때문에 인지적 부담을 증가시켜 학습자가 중도에 포기하도록 하는 결과를 낳는 경우가 많다[4][5].
컴퓨 팅 시스템을 다루는 것이 필수인 시대인 이유는?
21세기 사회는 실생활 뿐 아니라 다양한 학문 분야의 문제를 효율적으로 해결하기 위하여 컴퓨 팅 시스템을 다루는 것이 필수인 시대가 되었다. 프로그래밍은 사람의 아이디어를 컴퓨팅 시스템 이 실행하도록 함으로써 실천 가능한 형태로 만들어 주기 때문이다. 주요 선진국이나 IT 강국들은 프로그래밍의 중요성을 일찍이 간파하고 국가 차원의 교육과정을 ICT 활용 중심에서 프로그래밍 교육 중심으로 개편·실천하고 있다[1][2][3].
※ AI-Helper는 부적절한 답변을 할 수 있습니다.