프로그래밍 교육은 컴퓨터 과학의 원리를 활용하여 우리 생활 속의 문제를 해결하는데 도움을 준다. 객체지향 프로그래밍의 경우 우리가 주변에서 볼 수 있는 문제 또는 객체를 중심으로 프로그램을 작성하기 때문에 생활 속의 활용도를 높일 수 있다. 따라서 본 연구는 객체지향 개념을 친숙한 형태로 학습시키는 방안을 모색하기 위한 목적이 있다. 목적 달성을 위해 6명의 학생을 대상으로 실험 연구를 진행하였다. 연구 결과, 첫째 학생들이 친숙하게 사용할 수 있는 학습 도구가 필요하다는 것, 둘째 프로그래밍 구현 전에, 충분히 사고하고 개념을 습득할 필요가 있음을 발견하였다. 본 연구는 초보 학습자가 이해하기 어려워하는 객체지향 프로그래밍 학습에 도움이 되는 학습 방법을 제시했다는데 의의가 있다.
프로그래밍 교육은 컴퓨터 과학의 원리를 활용하여 우리 생활 속의 문제를 해결하는데 도움을 준다. 객체지향 프로그래밍의 경우 우리가 주변에서 볼 수 있는 문제 또는 객체를 중심으로 프로그램을 작성하기 때문에 생활 속의 활용도를 높일 수 있다. 따라서 본 연구는 객체지향 개념을 친숙한 형태로 학습시키는 방안을 모색하기 위한 목적이 있다. 목적 달성을 위해 6명의 학생을 대상으로 실험 연구를 진행하였다. 연구 결과, 첫째 학생들이 친숙하게 사용할 수 있는 학습 도구가 필요하다는 것, 둘째 프로그래밍 구현 전에, 충분히 사고하고 개념을 습득할 필요가 있음을 발견하였다. 본 연구는 초보 학습자가 이해하기 어려워하는 객체지향 프로그래밍 학습에 도움이 되는 학습 방법을 제시했다는데 의의가 있다.
Programming education helps learners solve real world problems by applying the principles of computer science. In particular, in the case of object-oriented programming centered around objects or problems that are observed in the real world, learners are able to make the most use of their programmin...
Programming education helps learners solve real world problems by applying the principles of computer science. In particular, in the case of object-oriented programming centered around objects or problems that are observed in the real world, learners are able to make the most use of their programming skills in real life. Therefore, in this study, we sought ways to have learners grasp object-oriented concepts in a learner-friendly manner. To this end we conducted an experiment with six students as participants. As a result we could derive two main points. First, the learning tools which can be easily used by learners are required. Second, it is necessary to think thoroughly to learn concepts before implementation of the programming. This study has significance in the sense that it provides a learning method which helps a novice learner to learn the object-oriented programming that he or she feels difficulty to understand.
Programming education helps learners solve real world problems by applying the principles of computer science. In particular, in the case of object-oriented programming centered around objects or problems that are observed in the real world, learners are able to make the most use of their programming skills in real life. Therefore, in this study, we sought ways to have learners grasp object-oriented concepts in a learner-friendly manner. To this end we conducted an experiment with six students as participants. As a result we could derive two main points. First, the learning tools which can be easily used by learners are required. Second, it is necessary to think thoroughly to learn concepts before implementation of the programming. This study has significance in the sense that it provides a learning method which helps a novice learner to learn the object-oriented programming that he or she feels difficulty to understand.
* AI 자동 식별 결과로 적합하지 않은 문장이 있을 수 있으니, 이용에 유의하시기 바랍니다.
문제 정의
수업 과정에서 학습자의 이해도는 학습자가 표현하는 활동과 언어, 표현된 내용을 통해 연구자가 판단할 수 있다. 따라서 연구자는 객체지향 개념 학습의 과정에서 학습자의 상태를 판단하기 위해 학습자들이 자신의 생각을 활동지와 언어를 통해 표현할 수 있도록 하였다. 그리고 해당 내용을 분석하였다.
본 연구는 객체지향 개념을 학습하고 구현을 하는 과정에서 학습자에게 적합한 프로그래밍 학습을 제안하고자 하였다.
본 연구는 학령이 낮은 학습자가 객체지향의 필수 요소를 학습하는데 효과적인 방법을 제안하기 위한 목적으로 진행하였다. 연구의 목적을 달성하기 위해 게임을 요소로 한 프로그래밍 수업을 진행하였다.
본 연구는 학령이 낮은 학습자의 객체지향 개념 학습을 위한 목적으로 진행되었다. 즉, 활동 내용에 따라 학습자가 어떻게 객체지향 개념 학습을 하였는지에 대한 것이다.
하지만, 객체지향 개념은 추상적인 개념이 많아서 단기간에 학습하기에는 많은 어려움이 있다. 본 연구는 학령이 낮을 때부터 프로그래밍의 중요 내용인 객체지향의 기초적 이해를 바탕으로 학습을 진행할 수 있도록 하기 위하여 초등학생을 대상으로 객체지향에 대한 학습을 구상하였다.
이상의 연구 진행을 통해 본 연구는 학생들의 흥미를 고려한 게임 요소 기반의 학습이 프로그래밍에 대한 인식 변화에 기여하는지를 확인하고자 한다. 분석을 통해 본 연구는 어떤 형태로 객체지향 수업을 진행해야 하는지에 대해 제안하기 위한 목적이 있다.
이상의 연구 진행을 통해 본 연구는 학생들의 흥미를 고려한 게임 요소 기반의 학습이 프로그래밍에 대한 인식 변화에 기여하는지를 확인하고자 한다. 분석을 통해 본 연구는 어떤 형태로 객체지향 수업을 진행해야 하는지에 대해 제안하기 위한 목적이 있다.
학습자가 객체지향 프로그래밍을 하기 위해서는 우선적으로 객체의 개념에 대해 올바르게 이해하고 객체의 속성과 기능을 명확하게 정의할 수 있도록 도움을 줄 필요가 있다. 이에 본 논문은 학령이 낮은 학습자가 객체지향 개념 학습을 위해 객체에 대한 이해를 바탕으로 객체를 프로그래밍 언어로 구현하는 연구를 진행하였다.
이에 본 논문은 학령이 낮은 학습자의 객체지향 개념 학습을 위해 게임에 대한 활동지를 개발하여 프로그래밍 학습을 진행하였다. 본 연구에서 게임 요소는 게임을 내용으로 학습자의 흥미를 높일 수 있도록 하는 것으로 스토리와 흥미, 기술/기계적 기능 등을 의미한다[10].
가설 설정
구조적으로 표현하지 못한 것은 객체지향의 관점에서 명확한 분석이 이루어지지 않은 것으로 해석할 수 있다. 셋째, 속성과 기능을 구분하지 못한 경우이다. <그림 11>과 같이 “움직이지 않는다”, “사라진다” 와 같은 기능을 속성으로 표시한 경우이다.
제안 방법
6차시에는 스크래치 2.0을 이용하여 도형을 만들고 이동시키는 것과 같은 기본 기능을 익히는 수업을 진행하였으며 7차시에는 스크래치 2.0에서 추가된 “추가 블록” 기능을 익히는 수업을 진행하였다.
학습자는 “도형 객체”를 이용하여 “벽돌”과 “공”, “막대” 객체를 구현하였으며, 공통되는 속성인 “색깔”과 “위치”는 만들 필요가 없다는 것을 학습하였다.
개발된 활동지는 학습자의 수준을 고려하면서 객체지향 프로그래밍의 요소인 클래스와 객체를 선언하고, 객체의 속성과 메소드를 정의할 수 있도록 구성하였다.
게임에 필요한 객체 분석, 객체의 속성과 기능 정의, 공통된 속성과 기능을 가진 클래스 정의 등의 순서를 통해 학습자는 구현 과정에서 활동지와 스크래치 블록의 일치성을 고려하였다. 따라서 활동지가 올바르게 작성되지 못할 경우 스크래치로 구현하는 과정에서 어려움이 있음을 확인하였다.
교사는 3단계가 4단계 “클래스 정의 활동 및 구현”을 위해 객체의 속성과 기능을 정리하는 활동임을 설명하여 객체의 속성 정의와 클래스 정의 활동을 구분하도록 하였다.
따라서 연구자는 객체지향 개념 학습의 과정에서 학습자의 상태를 판단하기 위해 학습자들이 자신의 생각을 활동지와 언어를 통해 표현할 수 있도록 하였다. 그리고 해당 내용을 분석하였다.
본 논문은 학령이 낮은 학습자가 객체지향 개념 학습의 기본 개념으로 상속과 객체, 클래스를 선정하고, 기본 개념을 학습하는데 도움을 줄 수 있는 방법을 고려하였다.
본 연구는 수업에 참여하는 학습자의 내러티브를 텍스트화하여 크게 두 가지 형태로 분석하였다.
수업 사례는 학습자의 활동지 작성내용과 구현 과정을 분석하였다. 분석을 위해 본 연구는 초등학교 5-6학년 학습자 6명을 대상으로 활동지를 사용한 객체지향 프로그래밍 수업을 10차시에 걸쳐 진행하였다.
객체 이름은 1단계에서 작성한 내용을 바탕으로 적을 수 있다. 속성과 기능은 시각적으로 명확히 구분하기 위해 속성은 동그라미와 실선, 기능은 네모와 점선을 이용해서 표현하도록 하였다. <그림 5>는 객체의 속성과 기능을 정의하는 활동지를 나타낸 것이다.
연구의 목적을 달성하기 위해 게임을 요소로 한 프로그래밍 수업을 진행하였다. 수업 사례는 학습자의 활동지 작성내용과 구현 과정을 분석하였다. 분석을 위해 본 연구는 초등학교 5-6학년 학습자 6명을 대상으로 활동지를 사용한 객체지향 프로그래밍 수업을 10차시에 걸쳐 진행하였다.
연구 결과, 게임에 필요한 객체를 분석하고 객체의 속성과 기능을 이용하여 클래스를 올바르게 정의한 학습자는 논리적이고 자신감 있게 프로그래밍을 수행하였다. 객체와 클래스에 대해 올바르게 이해하지 못한 학습자는 구현을 하는 과정에서도 무엇을 만들어야 하는지 구체화하지 못하였다.
본 연구는 학령이 낮은 학습자가 객체지향의 필수 요소를 학습하는데 효과적인 방법을 제안하기 위한 목적으로 진행하였다. 연구의 목적을 달성하기 위해 게임을 요소로 한 프로그래밍 수업을 진행하였다. 수업 사례는 학습자의 활동지 작성내용과 구현 과정을 분석하였다.
이를 위해 학습자는 스크래치의 기본 명령어와, 클래스 및 객체를 표현하기 위한 “추가 기능” 사용 방법을 익혔다.
3단계 활동 결과는 다음과 같다. 첫째, 학습자가 속성과 기능에 대해 올바르게 이해하고 분석하였다. <그림 13>과 <그림 14>는 학습자가 객체의 속성과 기능을 정확하게 구분하여 나열하고 객체가 가진 속성과 기능에 표시한 결과이다.
0은 최근 전 세계적으로 가장 많이 활용되고 있는 교육용 프로그래밍 언어이며, 초보자도 자신의 아이디어를 쉽게 구현할 수 있는 환경이다. 특히 2.0버전으로 업데이트 되면서 사용자 정의 블록을 만들 수 있는 기능이 추가되어, 기본적인 객체지향 개념 표현이 가능하여 본 연구에서 활용하였다.
학습자는 1단계에서 작성한 객체를 바탕으로 동그라미, 네모, 선을 이용하여 객체의 속성과 기능을 정의하였다. <그림 9>는 “벽돌깨기 게임”을 만들기 위해 학습자가 정의한 객체의 속성과 기능을 나타낸 것이다.
학습자는 2단계 “객체의 속성과 기능 정의 활동”과 3단계 “공통되는 속성과 기능 분석 활동”이 똑같은 활동을 하는 것은 아닌지 질문을 하였다.
1단계 객체 분석 활동은 “벽돌깨기 게임”에 필요한 객체를 정의하는 활동이다. 학습자는 객체 분석 활동지를 사용하여 게임을 만들 때 필요한 객체를 분석하고 정리한다. 객체 분석 활동지의 “객체” 부분에는 자신이 사용할 객체의 이름을 적고, “특징” 부분에는 객체가 가진 모든 특징을 적는다.
학습자는 과 같이 공통 속성과 공통 기능을 각각 원과 실선, 네모와 점선으로 표시하였다.
대상 데이터
연구 목적 달성을 위해 초등학교 5-6학년 학습자 6명을 대상으로 진행되었다. 수업을 시작하기에 앞서 본 연구의 대상을 프로그래밍 경험과 객체지향 개념 학습의 경험이 전혀 없는 학생으로 한정하였다.
본 연구는 객체지향 개념을 학습하고 구현을 하는 과정에서 학습자에게 적합한 프로그래밍 학습을 제안하고자 하였다. 연구 목적 달성을 위해 초등학교 5-6학년 학습자 6명을 대상으로 진행되었다. 수업을 시작하기에 앞서 본 연구의 대상을 프로그래밍 경험과 객체지향 개념 학습의 경험이 전혀 없는 학생으로 한정하였다.
성능/효과
위의 대화에서 확인할 수 있듯이 학습자는 클래스를 이용하여 객체를 만들면 중복되는 기능을 여러 번 반복할 필요가 없어 빠르게 프로그래밍을 할 수 있다는 것을 알 수 있게 되었다. 객체를 분석하고 객체의 속성과 기능을 이용하여 클래스를 정의하는 활동이 학습자가 객체지향 개념 학습에 도움이 되었다는 것을 확인할 수 있다.
객체지향의 핵심요소에 대한 분석 결과, 상속(81%), 객체(78%), 클래스(71%), 캡슐화(63%), 메소드(53%) 등임을 알 수 있다.
게임에 필요한 객체 분석, 객체의 속성과 기능 정의, 공통된 속성과 기능을 가진 클래스 정의 등의 순서를 통해 학습자는 구현 과정에서 활동지와 스크래치 블록의 일치성을 고려하였다. 따라서 활동지가 올바르게 작성되지 못할 경우 스크래치로 구현하는 과정에서 어려움이 있음을 확인하였다. 즉, 초보 학습자가 객체지향 프로그래밍을 하기 위해서는 문제 해결에 필요한 객체를 분석하고 속성과 기능을 올바르게 정의하는 활동이 우선임을 보여준다.
본 연구를 통해 학령이 낮은 학습자 대상의 객체지향 프로그래밍 수업에서는 학습자가 객체지향 개념을 친숙한 형태로 표현하고 학습할 수 있는 학습 도구가 필요하다는 것을 확인할 수 있었다. 또한, 학생들이 프로그래밍 구현 전에, 충분히 사고하고 개념을 습득할 필요가 있음을 발견하였다.
학생들이 작성한 활동지는 프로그래밍의 구현 과정에서 정확도를 판단할 수 있다. 본 연구자는 학습자가 필수적 내용을 작성하지 못한 경우는 수업 내용을 이해하지 못한 것으로, 올바르지 못하게 작성한 경우는 오개념을 갖는 것으로 판단하였다.
설문 결과 학습자는 객체의 속성과 기능에 대한 이해도가 증가되었고 공통된 특징을 찾아내는데 자신감도 향상되었다. 프로그래밍 활동에서 계획의 중요성을 고려하는 것에도 본 활동지를 활용한 수업은 도움을 준 것으로 나타났다.
위의 대화에서 확인할 수 있듯이 학습자는 클래스를 이용하여 객체를 만들면 중복되는 기능을 여러 번 반복할 필요가 없어 빠르게 프로그래밍을 할 수 있다는 것을 알 수 있게 되었다. 객체를 분석하고 객체의 속성과 기능을 이용하여 클래스를 정의하는 활동이 학습자가 객체지향 개념 학습에 도움이 되었다는 것을 확인할 수 있다.
설문 결과 학습자는 객체의 속성과 기능에 대한 이해도가 증가되었고 공통된 특징을 찾아내는데 자신감도 향상되었다. 프로그래밍 활동에서 계획의 중요성을 고려하는 것에도 본 활동지를 활용한 수업은 도움을 준 것으로 나타났다. 활동지를 이용하여 객체를 정의하는 활동을 한 후 컴퓨터로 구현하는 것에 대한 자신감도 향상되었다.
학습자가 작성한 클래스의 이름을 분석한 결과 클래스와 객체의 개념을 올바르게 이해한 학습자와 이해하지 못한 학습자 사이에 차이가 있음을 확인할 수 있었다. 예를 들어 클래스 개념을 올바르게 이해한 학습자는 클래스 이름을 ‘도형 객체’ 또는 ‘도형’ 과 같이 모든 객체를 포함할 수 있는 형태로 작성하였다.
후속연구
왜냐하면 학생들의 동기나 자기 효능감 등의 부족은 학습자와 프로그래밍 내용의 적합도가 낮을 경우 실패율이 높기 때문이다[9]. 학생들의 흥미나 동기를 높여 프로그래밍 학습을 진행한다면 객체지향 프로그래밍의 목적을 달성하는데 도움이 될 것이다.
질의응답
핵심어
질문
논문에서 추출한 답변
객체지향 프로그래밍에서는 어떻게 프로그램을 작성하는가?
프로그래밍 교육을 통한 효율적인 알고리즘 개발 능력 향상은 궁극적으로 우리에게 많은 시간과 노력을 절약할 수 있도록 한다. 따라서 최근에도 우리가 주변에서 볼 수 있는 물체 또는 생각할 수 있는 그 어떤 것인 객체를 중심으로 프로그램을 작성하는 객체지향 프로그래밍의 중요성이 커지고 있다[4].
객체의 개념이 처음 등장한 것은?
객체의 개념이 처음 등장한 것은 1960년대 중반에 소개된 시뮬레이션 언어인 Simula를 통해서이다[11]. 객체라는 용어는 이전에도 인공지능 등 몇몇 분야에서 사용되었으나 클래스, 객체, 상속, 다형성, 캡슐화 등 객체지향의 개념은 이 시기에 소개되었다.
객체지향 프로그래밍의 핵심 요소에 대한 분석 결과는?
객체지향의 핵심요소에 대한 분석 결과, 상속(81%), 객체(78%), 클래스(71%), 캡슐화(63%), 메소드(53%) 등임을 알 수 있다.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.