본 논문에서는 학생들이 프로그래밍언어를 더 잘 이해하고, 프로그래밍 능력을 향상시킬 수 있는 몇 가지 방법을 제안한다. 현재 컴퓨터공학부뿐만 아니라, 전자공학, 메카트로닉스공학 등에서도 프로그래밍교육이 이루어지고 있으며, 특히 컴퓨터공학의 경우 프로그래밍 교과목은 가장 기본적인 교과목이라고 할 수 있다. 하지만, 컴퓨터 프로그래밍 언어를 이해하고, 주어진 프로그래밍 문제를 해석하여 프로그래밍언어로 구현하는 것에 많은 학생들이 어려움을 겪고, 프로그래밍언어를 가르치는 교수자들도 효과적인 프로그래밍 언어 교육에 관심이 많다. 학생들이 좀 더 잘 프로그래밍언어를 이해하고, 프로그래밍 기술을 향상시킬 수 있는 교육방법을 몇 가지 제안하면 다음과 같다. 첫째 학생들이 프로그래밍언어를 잘 이해하기 위해서는 먼저 컴퓨터 프로그램의 기본적인 동작원리 또는 컴퓨터구조에 대한 사전지식이 필요하다. 둘째 문법위주의 주입식 이론교육보다는 다양한 프로그래밍 예제실행 위주의 프로그래밍언어 교육이 더 효과적이다. 셋째 프로그램의 실행과정과 메모리 할당/해제 흐름에 대한 메모리상태 가시화교육이 필요하다. 넷째 효과적인 실습과 과제 프로그래밍문제들을 통한 프로그래밍 응용능력을 배양하도록 하자. 다섯째 본인 스스로 프로그래밍할 수 있도록 유도하고, 프로그래밍의 자유도를 충분히 부여하자. 마지막으로 텀프로젝트를 통한 개개인의 프로그래밍 능력을 극대화하는 것이 필요하다.
본 논문에서는 학생들이 프로그래밍언어를 더 잘 이해하고, 프로그래밍 능력을 향상시킬 수 있는 몇 가지 방법을 제안한다. 현재 컴퓨터공학부뿐만 아니라, 전자공학, 메카트로닉스공학 등에서도 프로그래밍교육이 이루어지고 있으며, 특히 컴퓨터공학의 경우 프로그래밍 교과목은 가장 기본적인 교과목이라고 할 수 있다. 하지만, 컴퓨터 프로그래밍 언어를 이해하고, 주어진 프로그래밍 문제를 해석하여 프로그래밍언어로 구현하는 것에 많은 학생들이 어려움을 겪고, 프로그래밍언어를 가르치는 교수자들도 효과적인 프로그래밍 언어 교육에 관심이 많다. 학생들이 좀 더 잘 프로그래밍언어를 이해하고, 프로그래밍 기술을 향상시킬 수 있는 교육방법을 몇 가지 제안하면 다음과 같다. 첫째 학생들이 프로그래밍언어를 잘 이해하기 위해서는 먼저 컴퓨터 프로그램의 기본적인 동작원리 또는 컴퓨터구조에 대한 사전지식이 필요하다. 둘째 문법위주의 주입식 이론교육보다는 다양한 프로그래밍 예제실행 위주의 프로그래밍언어 교육이 더 효과적이다. 셋째 프로그램의 실행과정과 메모리 할당/해제 흐름에 대한 메모리상태 가시화교육이 필요하다. 넷째 효과적인 실습과 과제 프로그래밍문제들을 통한 프로그래밍 응용능력을 배양하도록 하자. 다섯째 본인 스스로 프로그래밍할 수 있도록 유도하고, 프로그래밍의 자유도를 충분히 부여하자. 마지막으로 텀프로젝트를 통한 개개인의 프로그래밍 능력을 극대화하는 것이 필요하다.
This paper proposes several methods for effective teaching of programing language(especially C). The programing languages are very important and basic subjects in the Department of Computer Engineering and Science. Many students have some difficulty in learning the programming languages. So, we will...
This paper proposes several methods for effective teaching of programing language(especially C). The programing languages are very important and basic subjects in the Department of Computer Engineering and Science. Many students have some difficulty in learning the programming languages. So, we will suggest several effective methods for effective teaching of programming languages. First, in order to understand the programming language effectively, we need to teach some basic computer architecture and operation principles of computer program to students. Second, it is better to teach many example-based programing skills instead of conventional grammar teaching. Third, if we teach the memory status(memory allocation/release) during the program operation, it will be much better to understand the pointer variables and memory problems. Fourth, let's improve the programming skills through effective homework assignments and experiments. Fifth, let students be guided so that they do programing by themselves. Finally, we can maximize the programming skill through the final termproject.
This paper proposes several methods for effective teaching of programing language(especially C). The programing languages are very important and basic subjects in the Department of Computer Engineering and Science. Many students have some difficulty in learning the programming languages. So, we will suggest several effective methods for effective teaching of programming languages. First, in order to understand the programming language effectively, we need to teach some basic computer architecture and operation principles of computer program to students. Second, it is better to teach many example-based programing skills instead of conventional grammar teaching. Third, if we teach the memory status(memory allocation/release) during the program operation, it will be much better to understand the pointer variables and memory problems. Fourth, let's improve the programming skills through effective homework assignments and experiments. Fifth, let students be guided so that they do programing by themselves. Finally, we can maximize the programming skill through the final termproject.
* AI 자동 식별 결과로 적합하지 않은 문장이 있을 수 있으니, 이용에 유의하시기 바랍니다.
문제 정의
본 논문에서는 나름대로 1~2학년들에게 프로그래밍언어(C, C++)를 교육하면서 경험한 사례를 바탕으로 좀 더 효과적인 프로그래밍 교육에 대한 방법을 제안하였다. 하지만, 제안한 방법을 교육현장에 잘 적용하기 위해서는 다양한 추가적인 노력이 필요하다.
본 저자는 다년간의 프로그래밍언어 교과목을 담당하면서 다음과 같이 나름대로 효과적인 프로그래밍언어(C언어) 교육에 대한 방법을 제안한다.
본 저자는 컴퓨터공학부에서 다년간 대학 1~2학년들에게 프로그래밍언어(C, C++)를 교육하면서 나름대로 느끼고, 실제 교육을 통하여 경험한 내용을 바탕으로 좀 더 효과적으로 학생들에게 프로그래밍언어를 교육하는 방법을 몇 가지 제안하고자 한다. 특히 다양한 프로그래밍언어 중에서 C언어 교육에 대한 것이고, 그 이유는 아직도 많은 학교와 산업현장에서 C언어를 많이 사용하고 있고, 가장 기본이 되는 언어라고 생각하기 때문이다.
제안 방법
개별적으로 1년동안 배운 다양한 프로그래밍언어 요소들을 개인적인 텀프로젝트를 통하여 각 개인의 프로그래밍 능력을 극대화하도록 한다. 그림 5는 학생들에게 제시한 텀프로젝트 안내서의 한 예[2]이다.
그리고 실습과 과제를 채점하고, 조교는 가장 잘 프로그램한 샘플코드(Best Code)를 학생들에게 제시해 줌으로써 학생들이 자신의 코드와 Best Code를 비교함으로써 자신의 코드의 문제점등을 스스로 수정할 수 있도록 한다. 그리고 조교는 학생들이 반복적으로 실수하거나 잘못된 코드에 대하여 교수와 학생들에게 피드백해 주는 과정이 반드시 필요하다.
성능/효과
그림 5는 학생들에게 제시한 텀프로젝트 안내서의 한 예[2]이다. 크게 4가지 주제에 대하여 교수가 학생들의 수준에 따라 각 주제에 학생들을 고르게 배정하였으며, 텀프로젝트는 팀단위가 아닌 개인 프로젝트로 진행하는 것이 더 효과적이다. 학생들을 각 주제에 배정할 때 학기 중의 실습과 과제평가등을 통하여 학생들의 수준을 미리 파악한 후, 학생들의 수준을 고려하여 고르게 배정될 수 있도록 할 필요가 있다.
후속연구
그리고 텀프로젝트를 하면 안하는 것보다는 더 효과적이라는 것은 알고 있지만, 학기가 종료된 후 1~ 2주 후에 기숙사도 종료되는 상황에서 텀프로젝트 발표를 위해서 학생들을 등교시켜야 하는 등 학생들의 불만들이 있는 것이 사실이다. 계속해서 더 좋은 프로그래밍언어 교육을 위해서는 많은 프로그래밍 예제들을 발굴하고, 다양한 현장에서 프로그래밍언어들이 어떻게 응용되고 있는지를 연구하는 것이 필요하며, 좀 더 많은 시간을 할애해서 학생들의 실습과 과제 및 텀프로젝트 결과를 학생들에게 피드백해 주는 것이 필요한 것 같다. 그리고 이러한 교육방법에 대한 효과검증은 아직 연구가 되지 않은 상황이다.
그리고 이러한 교육방법에 대한 효과검증은 아직 연구가 되지 않은 상황이다. 이러한 교육방법에 대한 효과를 검증하기 위해서 추후과제로 학생들의 수업반응도 응답이나 추가적인 설문조사 등을 통하여 그 효과를 분설할 필요가 있다.
질의응답
핵심어
질문
논문에서 추출한 답변
학생들이 포인터관련 내용을 잘 이해하고 프로그래밍하기 위해 필요한 것은 무엇인가?
학생들이 프로그래밍언어를 배우면서 가장 어려워하고, 힘들어하는 부분이 메모리 관련 포인터변수 사용이고, 가장 실수를 많이 하는 부분이 메모리 관련 내용이다. 이러한 포인터관련 내용을 잘 이해하고 프로그래밍하기 위해서는 실제 프로그램이 컴파일되는 과정(compile time)과 실행되는 과정(run time)에서 메모리적인 측면 즉 메모리가 언제 어떻게 할당 되고 해제되는지에 대해 명확하게 학생들에게 이해 시킬 필요가 있다. 이를 위해서는 C언어의 메모리 구조(그림 3)와 메모리공간이 할당되는 시기, 누가 (OS 또는 프로그래머) 메모리를 할당하는 것인지 그리고 메모리의 용도 등에 대한 이해가 필요하다.
C언어의 다양한 문법 교육을 실제 프로그래밍에서 어떻게 사용되고 있는지를 확인하는 것이 학습자 입장에서 매우 효과적인 이유는 무엇인가?
하지만 이러한 문법 즉 사용법은 학생들이 다양한 예제들을 직접 실행해 봄으로써 문법적인 것도 익히고, 그 문법이 실제 프로그래밍에서 어떻게 사용되고 있는지를 확인 하는 것은 학습자 입장에서 매우 효과적이다. 처음 프로그래밍을 학습하는 학습자 입장에서는 매우 다양한 C언어 사용 예를 다양한 예제를 통하여 익힌다면 향후 본인이 작성해야 할 본인의 프로그램에서 그러한 예들을 그대로 활용할 수 있기 때문이다.
학생들이 프로그래밍언어를 배우면서 가장 어려워하고, 힘들어하는 부분은 무엇인가?
학생들이 프로그래밍언어를 배우면서 가장 어려워하고, 힘들어하는 부분이 메모리 관련 포인터변수 사용이고, 가장 실수를 많이 하는 부분이 메모리 관련 내용이다. 이러한 포인터관련 내용을 잘 이해하고 프로그래밍하기 위해서는 실제 프로그램이 컴파일되는 과정(compile time)과 실행되는 과정(run time)에서 메모리적인 측면 즉 메모리가 언제 어떻게 할당 되고 해제되는지에 대해 명확하게 학생들에게 이해 시킬 필요가 있다.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.