Korea Digital Contents Society
[ Article ]
Journal of Digital Contents Society - Vol. 24, No. 3, pp.641-647
ISSN: 1598-2009 (Print) 2287-738X (Online)
Print publication date 31 Mar 2023
Received 05 Jan 2023 Revised 09 Feb 2023 Accepted 11 Feb 2023
DOI: https://doi.org/10.9728/dcs.2023.24.3.641

깃허브를 활용한 파이썬 프로그래밍 수업 모형 개발

강환수1 ; 신용현2, *
1동양미래대학교 컴퓨터공학부 교수
2서울과학기술대학교 컴퓨터공학과 교수
Development of Python Programming Teaching Model Using Github
Hwan-Soo Kang1 ; Yong-Hyeon Shin2, *
1Professor, School of Computer Engineering, Dongyang Mirae University, Seoul 08221, Korea
2Professor, Department of Computer Science and Engineering, Seoul National University of Science & Technology, Seoul 01811, Korea

Correspondence to: *Yong-Hyeon Shin Tel: +82-2-970-6709 E-mail: yshin@seoultech.ac.kr

Copyright ⓒ 2023 The Digital Contents Society
This is an Open Access article distributed under the terms of the Creative Commons Attribution Non-CommercialLicense(http://creativecommons.org/licenses/by-nc/3.0/) which permits unrestricted non-commercial use, distribution, and reproduction in any medium, provided the original work is properly cited.

초록

본 연구에서 파이썬 프로그래밍 수업에서 학생의 적극적이고도 자발적인 참여를 유도하기 위해 수업 중에 구글의 공유 문서와 시트를 적극적으로 활용하고 프로그래밍 협력 학습을 통해 프로그래밍 역량을 함양하기 위해 깃허브의 팀웍 활동을 중시하는 수업 모형을 개발했다. 3년제 전문대학의 컴퓨터전공 학생 대상으로 전공 수업에 본연구의 수업 모형을 운영하였으며 수업 효과 검증을 위해 대응표본 t-검정을 시행하였다. 수업 모형의 학습 효과를 검증하기 위해 ‘파이썬 문법과 프로그램 구현’과 ‘팀의 협업 학습을 위한 깃과 깃허브 활용’의 학습역량을 도출해 대응표본 t-검정으로 분석하였다. 분석결과, 연구의 수업 모형이 도출한 학생의 학습역량이 향상되었다는 결과를 얻었다.

Abstract

In this study, we utilized Google Docs & Sheets in class to induce active and voluntary participation of students in Python programming classes. In addition, we developed a teaching model benefiting from GitHub's collaborative activities to develop programming capabilities through cooperative programming learning. The teaching model of this study was implemented for computer students at a three-year college university, and the effectiveness was verified by performing paired t-test. To verify the learning effect of python programming teaching model, the learning competencies of 'Implementation of Python Grammar and Program' and 'Use of Git and GitHub for Team Collaborative Learning' were derived and analyzed by paired t-test. As a result of the analysis, a statistically significant improvement was obtained in students' competencies in the python programming course based on this teaching model.

Keywords:

Collaboration learning, GitHub, Google Docs, Python programming, Teaching model

키워드:

협업 학습, 깃허브, 구글 문서, 파이썬 프로그래밍, 수업 모형

Ⅰ. 서 론

인터넷과 정보기술의 발전으로 개방형 협업 활동 플랫폼이 증가하고 있다. 개방형 협업이란 인터넷을 활용해 다수의 불특정 외부 인력을 이용해 성과를 얻는 방식이다[1]. 특히, 4차 산업혁명 시대를 맞아 기술이 복잡해지고 혁신적인 변화에 따라 개방형 협업 활동의 필요성이 요구되고 있다[2]. 코로나19 팬데믹 이후에는 이러한 개방형 협업 활동 플랫폼 활용이 가속화될 것으로 보인다. 개방형 협업 플랫폼의 예로 들자면 오픈소스 소프트웨어(Open Source Software), 위키피디아(Wikipedia), 킥스타터(Kickstarter) 등이 있다. 리눅스(linux)와 하둡(hadoop), 비주얼 스튜디오 코드(visual studio code), 쿠버네티스(Kubernetes) 등으로 대표되는 오픈소스 소프트웨어는 소스를 누구나 자유롭게 소스의 확인과 수정, 배포할 수 있도록 공개적으로 설계된 소프트웨어이다. 오픈소스 소프트웨어 프로젝트는 깃허브(GitHub)와 같은 인터넷의 개방형 협업 플랫폼을 기반으로 다수의 개발자가 참여하고 있다. 글로벌 또는 국내의 다양한 규모의 기업, 대학 연구실에서 깃허브를 통해 오픈소스 소프트웨어를 개발해 공개하고 있다. 특히 최근 가장 관심이 많은 빅데이터 분석과 인공지능 분야의 경우, 데이터와 소프트웨어 모두 누구나 볼 수 있게 공개되어 있으며 논문에 발표된 소스 코드는 바로 깃허브를 통해 공개된다[3]. 오픈소스 소프트웨어의 인기에 힘입어 내부 개발자와 외부 개발자가 함께 오픈소스를 개발하는 웹 호스팅 개발 플랫폼이 활성화되고 있다. 오픈소스 소프트웨어의 성지인 깃허브는 세계 최대 규모의 소프트웨어 개발 플랫폼으로 약 5천만 명이 넘는 개발자가 함께 코드를 공유 및 검토하고 프로젝트를 관리하며 협업 개발을 수행하고 있다[4].

깃허브로 대표되는 깃허브 원격저장소 및 협업 개발을 위한 웹 호스팅 서비스는 공개 소프트웨어 개발에서 개발자 간의 쉬운 협업과 커뮤니티 활동을 도와주는 대표적인 도구이며, 깃랩(GitLab), 비트버킷(Bitbucket) 등도 널리 사용되고 있다. 깃허브와 같은 협업 소프트웨어 개발 플랫폼의 장점은 시스템 개발자와 운영을 담당하는 정보기술 전문가 사이의 소통, 협업, 통합 및 자동화를 지원하고, 전 세계 소프트웨어 개발자와 함께 프로젝트를 진행할 수 있다는 점이다. 공개든 아니든 대부분 소프트웨어 프로젝트는 깃허브와 같은 협업 개발을 위한 웹 호스팅 서비스를 활용한다. 개발자들은 오픈소스 소프트웨어 개발에 참여하면서 경험한 협업 방식을 통하여 새로운 지식을 습득하는 등 개발자의 자질 향상을 가져올 수 있다[5],[6]. 그러므로 깃허브와 같은 협업 소프트웨어 개발 플랫폼은 개발자들이 자연스럽게 자신의 소프트웨어 개발 역량을 발휘할 수 있는 공개적인 자리가 되었다. 정보통신기술의 발달에 따라 정보기술 인력 채용 방식에도 많은 변화가 생기고 있다. 연구에 따르면 채용 담당자들이 적합한 사원 후보를 협업 소프트웨어 개발 플랫폼에서 찾게 되고 이에 따라 개발자는 협업 소프트웨어 개발 플랫폼에서의 경험이 구직을 위한 전략적인 활용방안이 되고 있다[7]. 그러므로 컴퓨터공학 관련 전공자 학생은 깃허브와 같은 소셜 코딩 서비스의 경험과 활용 실적이 향후 취업과 프로그램 개발자로의 발전에 있어 매우 중요해지고 있다. 이러한 오픈소스의 중요성으로 많은 일반대학에서 오픈소스를 비롯한 깃과 깃허브를 교육과정에 반영하고 있다. 국외에서 버전관리의 효과적 교육 연구[8]-[10]나 깃허브 활용의 교육 효과성 연구[11]-[14]는 진행되고 있으나 국내에서 컴퓨터 교육에서 깃허브를 활용한 수업[15]의 연구는 매우 드물다. 본 연구에서는 오픈소스 및 깃허브 교육 자체가 매우 부족한 전문대학에서 협업 활동이 프로그래밍 학습에 도움이 될 수 있도록 깃허브를 적극적으로 활용한 협업 학습으로 효과적인 파이썬 프로그래밍 언어 교육 방안을 연구하여 파이썬 프로그래밍 수업 모형을 개발하고자 한다.


Ⅱ. 파이썬 프로그래밍 수업 모형

2-1 깃허브 개요

버전관리 깃(Git)의 원격저장소로 소셜 코딩(social coding) 서비스를 내세운 깃허브는 2008년 웹 호스팅 서비스를 시작했다. 마이크로소프트는 2018년 개방형 플랫폼 깃허브를 인수해 업계의 우려와는 다르게 비공개 저장소의 공동 작업자 수 제한도 없애고 무료로 제공하는 등 깃허브를 더욱 활성화하고 있다. 깃허브는 여러 협업자(collaborator) 및 누구나가 참여하는 소프트웨어 개발에서 소스의 버전관리와 지속적 통합과 배포(CI/CD), 다양한 협업 기능을 제공한다. 깃허브는 원격저장소(remote repository) 단위로 소스 코드 및 관련 파일 등을 저장・관리한다. 저장소는 기본적으로 자신을 설명하는 마크다운(markdown) 형태의 README.md 파일을 제공하며, 여러 오픈소스 저작권 중의 하나를 정할 수 있다. 깃허브의 프로젝트가 어느 정도 목표한 기능에 이르면 개발된 소스 코드와 바이너리 파일도 함께 저장소에 올려 배포(release)할 수 있다.

깃허브는 개발 중에 발생하는 다양한 쟁점을 제기하고 협의하는 이슈(issues)를 제공한다. 이슈는 게시판 형태의 의사소통 방식으로 프로젝트 관련 추가 기능과 개선사항 수행, 아이디어와 정보의 공유, 버그 보고 및 수정 추적 등에 활용되는 하나의 협업 수단이다. 즉 이슈를 통해 개발자 간의 다양한 의견 교환이 가능하다. 물론 저장소에 아무 권한이 없는 사용자도 임의로 정보 공유 내용의 이슈를 보낼 수 있다. 또한, 깃허브는 이슈를 분류하기 위해 미리 만들어 놓은 레이블(labels), 마일스톤(milestones), 프로젝트(projects)를 지원한다. 이슈 생성 시 이들을 지정해 쉽게 프로젝트를 관리하도록 한다. 실제 이슈 등록 시 복수 개의 레이블 지정이 가능하며 다중 레이블링을 자동화하는 연구[16]도 수행되었다.

소프트웨어 개발 생명주기에서 개발뿐만 아니라 유지보수에서 버그 수정과 기능 추가, 새로운 컴퓨팅 환경 수용 등의 이유로 소스 코드 변경이 요구된다. 깃허브는 이러한 코드 수정 과정에서 풀 요청 등의 빠르고 효율적인 절차와 협업 과정을 제공한다[17]. 풀 요청(PR: Pull Request)은 저장소 내용이나 소스의 변경 사항을 반영하고자 하는 요청 서비스다. 풀 요청은 버전 관리 자체 기능이 아니라 깃허브와 같은 원격저장소 호스팅 서비스에서 제공하는 기능이다. 즉, 관심 있는 오픈소스 프로젝트에 누구나 저장소를 복제(fork)해 수정한 소스나 의견을 풀 요청을 통해 관리자에게 병합(merge)을 신청할 수 있다. 깃허브 프로젝트 관리자는 풀 요청 작업 내용의 검토(review)가 완료되면 원본과 병합한다. 깃허브에서는 이러한 저장소의 커밋(commit)과 풀 요청, 병합 과정의 개방형 협업을 통해 프로젝트 개발이 진행된다[18]. 즉, 풀 요청이란 아무 권한이 없는 누구라도 오픈소스 소프트웨어 개발에 이바지(contribute)할 수 있는 협업 방식이다. 리눅스와 아파치, 파이썬 등 다양한 분야의 오픈소스는 2010년 이후 4차 산업혁명 시대에 들어와 인공지능 관련 오픈소스가 증가하고 있다. 대표적인 인공지능 오픈소스로 텐서플로(tensorflow)와 파이토치(pytorch), 스위프트 AI(Swift-AI), 사이킷런(scikit-learn), 스페이시(spacy) 등을 들 수 있다. 따라서 깃허브의 다양한 오픈 프로젝트를 분석하면 인공지능 기술을 비롯해 공개된 프로젝트들의 특징과 기술 분야, 주요 기술들의 개발 동향을 파악할 수 있다[19],[20].

2-2 수업 모형

본 연구에서 제안하는 깃허브를 활용한 파이썬 프로그래밍 수업 모형은 파이썬 언어의 효과적인 습득을 위해 교수자가 제시한 코드는 물론 다른 학습자의 코드도 공유하도록 하고 깃허브를 활용한 팀웍 활동으로 프로그래밍에서의 협업의 중요성 강조하는 파이썬 프로그래밍 수업 모형을 제안한다.

수업은 이론과 실습을 분리하지 않고 제시된 실습과 함께 필요한 문법 강의가 진행되며, 수업에 온라인 공유 문서(Google Docs)를 적극적으로 활용한다. 수업에서 제시된 파이썬 문법 요소의 실습은 학습자도 스스로 코딩해 공유된 자신의 구글 시트(sheets)에 바로 제시하도록 한다. 이는 수업에서 학생의 흥미를 불러일으키는 촉진제가 될 수 있다. 수업에 활용되는 구글 공유 문서를 통해 교수자는 학습자의 코드를 검토하고 학습자는 다른 학습자의 코드도 참고할 수 있다. 이러한 수업 중 공유 문서의 활용으로 교수자는 학생의 학습 진척상황을 검토하고 학습자는 수업 집중력이 향상되며 프로그래밍 학습에도 도움을 준다. 본 수업 모형에서 학습자는 자신의 학습 결과를 제시하고 협업을 통한 팀 과제를 진행하기 위해 깃허브를 적극적으로 활용한다. 학습자는 깃의 버전관리를 위한 기본 학습을 기반으로 깃허브의 협업 학습을 위해 이슈와 풀 요청을 학습한다. 학습자는 교재에 제시된 예제와 더불어 자신의 팀원과의 협동 학습을 통해 스스로 코딩한 프로그램을 실습하고 이를 자신의 깃허브 저장소에 저장한다. 이러한 과정을 통해 학습자의 흥미를 유발시키고 프로그래밍 수업에서의 협업과 자기주도적 학습이 되도록 유도한다. 본 연구에서 제안된 깃허브 활용 수업 모델의 학습자가 배워야 할 구체적인 학습역량은 파이썬 프로그래밍 PY와 깃허브 GT 2가지로 구체적인 내용은 다음과 같다.

1) 파이썬 문법과 프로그램 구현: PY

본 수업 모델의 학습자는 파이썬에 적합한 개발환경을 이해하고 변수와 자료형, 입출력 및 내장함수, 리스트와 튜플, 딕셔너리와 집합, 조건과 반복, 모듈 등을 학습해 파이썬의 다양한 자료구조로 소프트웨어 개발에 필요한 기본적인 프로그래밍 역량이 요구된다.

  • • 개발환경으로 python IDLE과 파이참(pycharm) 활용
  • • 주어진 예제를 기반으로 자신만의 코딩 예제를 구현해 공유 문서와 깃허브에 구축
2) 팀의 협업 학습을 위한 깃과 깃허브 활용: GT

커밋과 추가, 로그 이력의 깃 버전관리 기초 학습을 바탕으로 깃허브 저장소 구축 방법을 학습한다. 학습자는 팀 과제 수행과정에서 깃허브의 의사소통 핵심 수단인 이슈와 풀 요청을 활용할 수 있어야 한다. 특히 팀원 모두가 풀 요청에 참여해 팀 과제에 기여해야 한다.

  • • 학생 깃허브 구축으로 자신의 파이썬 프로그래밍 구축
  • • 깃허브의 이슈와 풀 요청을 활용해 팀웍 협업 활동으로 팀과제 구축

2-3 수업 모형의 운영과 일정

본 연구에서 설계한 수업 모형을 서울의 D 전문대학 3년제 컴퓨터정보공학과, 재직자과정 1학년 17명을 대상으로 2022년 1학기 주당 3시간인 ‘객체지향프로그래밍’ 강좌에서 운영하였다. 재직자과정은 특성화고를 졸업하고 바로 회사에 입사한 취업자를 대상으로 하는 과정으로 학생 대부분이 프로그래밍에는 초보자이다. 1학년 1학기 교과목인 객체지향프로그래밍은 파이썬의 문법 학습으로 프로그래밍 언어를 이해하고 파이썬 프로그래밍 실습을 위한 교과목이다.

코로나로 인해 수업은 온・오프라인 병행으로 진행하였다. 학교 정책에 따라 학기 전반 7주는 줌(zoom)으로 실시간 온라인 수업을 진행하였으며 후반 8주는 실습실에서 강의와 실습을 함께 대면 수업으로 진행하였다. 본 수업 모형에서 제안한 파이썬 문법과 프로그램 구현 학습역량 PY, 협업 학습을 위한 깃과 깃허브 학습역량 GT의 주간 일정을 다음 표 1에서 구체적으로 제시한다. 깃허브 활용을 위한 깃은 전반부에 학습하고 본격적인 깃허브 활용은 후반기에 팀 과제에 진행한다. 팀 과제는 학생이 스스로 팀을 구성하고 주어진 과제를 협업 학습을 통해 구현하고 팀 저장소에 구축하도록 하며, 13주차에 발표가 시행되었다. 학생에게 주어지는 개인 과제와 팀 과제는 모두 개인과 팀의 깃허브 저장소에 저장되도록 하고 학습자 모두 적극적으로 활용하도록 유도한다.

Week schedule of python programming teaching model using github


Ⅲ. 파이썬 프로그래밍 수업 모형 검증

3-1 사례 연구 대상과 설문 문항

본 연구에서 제안한 깃허브 활용 파이썬 프로그래밍 수업 모형의 학습역량 효과성 검증을 위해 객체지향프로그래밍 교과목에서 학기 초반과 마지막에 각각 설문을 시행했다. 17명으로 운영된 수업에서 사전·사후에 대응표본 t-검정 검사에 수강인원 모두 설문에 참여했다. 다음 표 2와 같은 설문을 사용하여 수강생의 학습역량 차이에 의미가 있는지 알아보았다.

Questionnaires for validating the effect of the proposed teaching model

수업 모형 검증을 위한 학생 설문은 ‘파이썬 문법과 프로그램 구현’을 위한 8개와 ‘팀의 협업 학습을 위한 깃과 깃허브 활용’을 위한 7개의 학습역량 검사 문항으로 총 15개의 문항으로 구성된다. 각 문항에서 ‘전혀 아니다’처럼 부정 결과는 1점으로, ‘매우 그렇다’처럼 긍정 결과는 5점으로 평정한다.

3-2 파이썬 역량 설문 결과

수업에서 파이썬 문법과 프로그램 구현 역량의 학습 효과를 파악하기 위해 수강생에게 대응표본 t-검정의 사전·사후 설문을 시행한 결과는 다음 표 3과 같다. 본 수업의 수강생은 특성화 고등학교를 졸업하고 회사에 재직하고 있는 학생이다. 약간의 학생이 파이썬을 경험한 학생이 있으므로 사전 조사도 8개 중 5개의 항목이 3점을 넘는다.

Results of PY paired t-test

설문 PY5의 사전·사후 차이 평균이 –1.000으로 8개 중 두 번째로 크다. 수업에서 리스트와 튜플의 중요성을 강조하고 많은 예제에서 다양한 리스트와 튜플을 다뤄 이에 대한 역량이 향상되었다고 추정한다. 설문 PY8의 차이 평균은 –1.118로 가장 크다. 이는 설문 바로 전주에 외부 모듈을 학습하고 모듈 numpy와 matplotlib 프로그래밍을 다뤄 가장 큰 향상 항목이 되었다고 추정한다. 모든 설문의 사전·사후검사에서 p<.05 수준의 통계적으로 유의미한 차이가 있었다. 이 수업을 수강한 학생들의 파이썬 역량이 향상되었다고 판단된다.

3-3 깃과 깃허브 역량 설문 결과

다음 표 4는 수업 운영에서 ‘팀의 협업 학습을 위한 깃과 깃허브 활용’ 역량이 향상되었는지를 파악하기 위해 수강생에게 대응표본 t-검정의 사전·사후 설문을 시행한 결과이다. 7개의 문항 중에서 4개 사전 설문이 3점 이상이다. 이는 학생이 재직자이므로 깃과 깃허브를 들어보거나 경험한 학생이 약간 있었기 때문이다. 깃허브의 이슈와 풀 요청에 대한 이해와 깃허브 협업 기능 활용 항목인 GT5와 GT6는 사전 설문이 2점 대로 깃허브 팀웍 활동에는 사전 이해도가 낮았다. 사전 조사에서 가장 낮은 GT2는 2.82로 깃의 세 가지 저장영역 이해 항목이다. 깃이 처음인 학습자에게는 깃 저장소와 스테이지 영역 등 용어부터가 생소하기 때문일 것이다.

Results of GT paired t-test

사후 조사에서 가장 높은 것은 4.24로 원격저장소 활용 GT4이다. 학기 후반기에 팀과제로 팀 저장소를 계속 활용했기 때문으로 파악된다. 학습역량의 수업 전·후 검사의 차이에 대한 대응표본 t-검정 결과, 팀원과 깃허브 활용 GT5와 이슈와 PR 활용 GT6, 깃 저장상태 이해 GT2, 원격저장소 활용 GT4 순으로 향상되었다고 볼 수 있다. 사전·사후 차이가 가장 작은 값은 -0.5880으로 GT1의 깃의 이해와 설치에 대한 이해도이다. 학기 초에 배우는 깃 개론과 설치 학습으로 사전 평점이 높아 사후 평가와의 차이가 크지 않기 때문이다.

3-4 수업의 정성적 설문

학기 초에는 구글 문서의 공유 시트를 통해 흥미와 관심을 유발하고 학생들 서로에게 경쟁심을 유발해 프로그래밍 실습의 사기 진작을 유도했다. 학기 중・하반기에는 팀 과제로 깃허브의 팀 저장소를 운영하고 깃허브의 협업 기능인 이슈와 풀 요청을 활용해 파이썬 프로그래밍 학습에서 협업 학습을 유도했다. 다음과 같은 학생의 정성적인 설문 평가를 통해 깃허브를 활용한 협업 학습이 프로그래밍 학습에서 긍정적이라는 것을 알 수 있었다.

‘혼자서 공부를 했다면 어려웠겠지만 수업에서 공유 시트와 깃허브를 활용한 수업 덕분에 조원들의 직접적인 도움과 설명으로 난관에서 벗어날 수 있었고 아직 부족한 부분을 돌아볼 수 있어서 좋았습니다.’

‘오늘 팀 프로젝트를 진행하면서 팀원을 도와주면서 나도 다시 한번 배우고 알던 내용도 한 번 더 알 수 있게 되어 유익했습니다. 머지와 PR에 대해 반복하다 보니 완벽히 이해를 한 것 같아서 좋습니다.’

‘오늘 수업에서 문제를 해결하는 과정에서 막힘이 있었지만, 팀원들과 함께 문제를 해결하면서 성취감을 느꼈다. 팀원들이 너무 좋다.’

일반적으로 전문대학 학생은 한 학기에 5-6개의 전공 교과목을 수강한다. 또한, 교과목이 기초 프로그래밍이며 대상자가 1학년인 것을 고려하면 본 수업 모형이 학생에게 학습 부담을 줄 수 있다. 다음과 같은 일부 학생의 설문 결과에서 학습량에 대한 부담감을 토로하고 있다.

‘여러 과목을 배우고 있고, 배우는 내용 또한 점점 많아지고 있어 갈수록 내용이 더 헷갈리는 것 같다. 프로그래밍을 충분히 학습하지 못하여 실습에 있어 다소 어려움이 있었다.’

‘여러 과목을 배우고 있고, 배우는 내용 또한 점점 많아지고 있어 갈수록 내용이 더 헷갈리는 것 같다.’


Ⅳ. 결 론

4차 산업혁명 시대를 위한 프로그래밍 교육에서 창의력과 비판적 사고, 팀원들 간 협업의 중요성이 강조되고 있다. 소프트웨어 개발자뿐만 아니라 미래의 소프트웨어 개발자를 꿈꾸는 학생에게도 프로그래밍에서의 협업은 매우 중요하다. 깃은 프로젝트의 소스 코드를 저장하고 해당 코드에 대한 모든 변경 사항의 전체 이력 추적에 사용된다. 또한, 깃허브는 소프트웨어 개발을 위해 프로젝트의 원격저장소를 제공하고 프로젝트개발의 협업을 지원하는 웹호스팅 플랫폼이다.

본 연구는 컴퓨터 전공학과에서 운영되는 기초 프로그래밍 관련 교과목에서 활용될 수 있는 깃허브 활용 파이썬 프로그래밍 수업 모형을 개발하였다. 본 수업 모형은 구글 공유 문서를 활용해 수업 참여와 흥미를 높이고 파이썬 문법 요소를 이해하기 위해 문법 강의의 함께 실습을 진행하는 방식으로 프로그래밍 실습을 강화하였으며, 깃허브 협업 기능인 이슈와 풀 요청을 활용해 학습자 자신의 학습 결과를 제시하고 팀 과제를 수행함으로써 협업 학습을 강화하였다. 본 수업 모델에서 학습자가 배워야 할 구체적인 학습역량은 크게 PY와 GT로 나누어 PY에서는 파이썬 문법과 프로그램 구현 역량을 키우고 GT에서는 팀의 협업 학습을 위한 깃과 깃허브 활용 역량을 함양시켰다. 본 연구의 수업 모형은 코로나로 인해 학기 전반기는 실시간 온라인으로 후반기는 오프라인 대면 수업으로 진행하였다. 수업 운영 중에 실시한 대응표본 t-검정에서 기초 프로그래밍 수업에서 협업 학습은 프로그래밍 언어의 문법 학습은 물론이고 프로그래밍 학습 자체에 긍정적인 영향을 미치는 유의미한 결과를 얻었다. 또한, 정성적인 설문 결과에서도 다수의 학생이 깃허브를 활용한 팀웍 활동 수업이 프로그래밍 학습에 많은 도움이 된다고 보고되었다. 본 수업 모형을 1학년을 대상으로 주당 3시간의 프로그래밍 수업에 적용하기에는 학습 분량이 많은 편이다. 만일 이전 학기에 깃과 깃허브 활용 교과목을 앞서 학습하고 파이썬 프로그래밍 수업과 함께 협업 학습을 한다면 학습 성과가 더 좋을 것으로 보인다.

교육부의 SW중심대학 사업으로 오픈소스 소프트웨어 교육이 강화되어 일반대학의 컴퓨터 전공학과 교육 과정에는 깃과 깃허브 관련 교과목이 활성화되었다. 그러나 전문대학의 경우, 오픈소스 소프트웨어 관련 교육이 거의 없는 상태이다. 본 연구의 수업 모형으로 서울 D 대학도 교육 과정에 프로그래밍 협업 학습을 위한 깃과 깃허브 교육이 도입된 의미 있는 연구라고 생각한다. 향후 버전관리 깃과 협업 학습을 위한 깃허브 교육을 목표로 하는 교과목에 관한 연구가 진행되기를 기대한다.

Acknowledgments

이 연구는 서울과학기술대학교 교내연구비의 지원으로 수행되었습니다.

References

  • S. H. Kang, J. T. Hwang, and S. M. Park, “The effect of external knowledge search on innovation performance: the moderating effect of knowledge protection and environment uncertainty,” Knowledge Management Research, Vol. 17, No. 3, pp. 117-136, September 2016. [https://doi.org/10.15813/kmr.2016.17.3.006]
  • H. C. Kim, “Open Source Software based Open Innovation Research and Development Capability Maturity Model,” Information and Communications Magazine, Vol. 36, No. 11, pp. 50-54, October 2019.
  • B. Zhang, “An Explorative Study of GitHub Repositories of AI Papers”, arXiv preprint arXiv, February 2019.
  • Microsoft, “Introduction to GitHub. Microsoft technical documentation,” [Internet]. Available: https://docs.microsoft.com/ko-kr/learn/modules/introduction-to-github/1-introduction
  • P. Huang and Z. Zhang, “Participation in Open Knowledge Communities and Job-hopping: Evidence from Enterprise Software,” MIS Quarterly, Vol. 40, No. 3, pp. 785-806, May 2016. [https://doi.org/10.25300/MISQ/2016/40.3.13]
  • S. Lee, H. Baek, and U. Lee, “Differences across countries in the impact of developers’ collaboration characteristics on performance : Focused on weak tie theory,” The Journal of Information Systems, Vol. 29, No. 2, pp. 149-171. June 2020. [https://doi.org/10.5859/KAIS.2020.29.2.149]
  • M. Jang, S. Lee, H. Baek, and Y. Jung, “Do Not Just Talk, Show Me in Action: Investigating the Effect of OSSD Activities on Job Change of IT Professional,” The Journal of Society for e-Business Studies, Vol. 26, No. 1, pp. 43-65, February 2021. [https://doi.org/10.7838/jsebs.2021.26.1.043]
  • J. Lawrance, S. Jung, and C. Wiseman, “Git on the cloud in the classroom,” in Proceeding of the 44th ACM technical symposium on Computer science education, pp. 639-644, March 2013. [https://doi.org/10.1145/2445196.2445386]
  • J. Kelleher, “Employing git in the classroom,” in 2014 World Congress on Computer Applications and Information Systems (WCCAIS), Hammamet, Tunisia, pp. 1-4, January 2014. [https://doi.org/10.1109/WCCAIS.2014.6916568]
  • Y.-C. Tum, V. Terragni, E. Tempero, A. Meads, N. Giacaman, A. Fowler, and K. Blincoe, “GitHub in the Classroom: Lessons Learnt,” in Proceedings of the 24th Australasian Computing Education Conference, Australia, pp. 163-172, February 2022. [https://doi.org/10.1145/3511861.3511879]
  • C.-Z. Kertesz, “Using GitHub in the classroom - a collaborative learning experience,” in IEEE 21st International Symposium for Design and Technology in Electronic Packaging (SIITME), pp. 381-386, October 2015. [https://doi.org/10.1109/SIITME.2015.7342358]
  • C. Hsing and V. Gennarelli, “Using GitHub in the Classroom Predicts Student Learning Outcomes and Classroom Experiences: Findings from a Survey of Students and Teachers,” in Proceedings of the 50th ACM Technical Symposium on Computer Science Education, Minneapolis, MN, USA, pp. 672-678, February 2019. [https://doi.org/10.1145/3287324.3287460]
  • J. Fiksel, L. R. Jager, J. S. Hardin, and M. A. Taub, “Using GitHub Classroom To Teach Statistics,” Journal of Statistics Education, Vol. 27, No. 2, pp. 110-119, June 2019. [https://doi.org/10.1080/10691898.2019.1617089]
  • B. Anbaroglu, “A collaborative GIS programming course using GitHub Classroom,” Transactions in GIS, Vol. 25, No. 6, pp. 3132-3158, July 2021. [https://doi.org/10.1111/tgis.12810]
  • H. S. Kang, J. H. Cho, and H. C. Kim, “Case Study on Software Education using Social Coding Sites,” Journal of Digital Convergence, Vol. 15, No. 5, pp. 37-48, May 2017. [https://doi.org/10.14400/JDC.2017.15.5.37]
  • D. Park, Y. Yang, G. Choi, S. Lee, and S. Kang, “A Multi-label Classification Bot for Issue Management System in GitHub,” Journal of KIISE, Vol. 48, No. 8, pp. 928-939. August 2021. [https://doi.org/10.5626/JOK.2021.48.8.928]
  • D. K. Kim, “Predicting Program Code Changes Using a CNN Model,” Journal of the Korea Convergence Society, Vol. 12, No. 9, pp. 11-19, September 2021. [https://doi.org/10.15207/JKCS.2021.12.9.011]
  • K. M. Koo, H. M. Baek, and S. R. Lee, “The Impact on Structures of Knowledge Creation and Sharing on Performance of Open Collaboration: Focus on Open Source Software Development Communities,” Knowledge Management Research, Vol. 18, No. 4, pp. 287-306, December 2017. [https://doi.org/10.15813/kmr.2017.18.4.012]
  • W. Lee and H. Lee, “Landscaping the R&D Trend of Artificial Intelligence with Open Source Project Data in Github,” Journal of the Korean Institute of Industrial Engineers, Vol. 46, No. 5, pp. 548-557, October 2020. [https://doi.org/10.7232/JKIIE.2020.46.5.548]
  • J. S. Chong, D. S. Kim, H. J. Lee, and J. W. Kim, “A Study on the Development Trend of Artificial Intelligence Using Text Mining Technique: Focused on Open Source Software Projects on Github,” Journal of Intelligence and Information Systems, Vol. 25, No. 1, pp. 1-19, March 2019. [https://doi.org/10.13088/jiis.2019.25.1.001]

저자소개

강환수(Hwan-Soo Kang)

1991년 : 서울대학교 대학원 (이학석사)

2002년 : 서울대학교 대학원 (공학박사 수료-컴퓨터그래픽스)

1992년~1998년: 삼성에스디에스

2009년~2010년: Indiana University - Purdue University Indianapolis(IUPUI) 초빙연구원

1998년~현 재: 동양미래대학교 인공지능소프트웨어학과 교수

※관심분야:컴퓨터교육, 인공지능교육, 객체지향, 프로그래밍언어

신용현(Yong-Hyeon Shin)

1988년 : 서울대학교 계산통계학과(학사)

1991년 : 서울대학교 계산통계학과(이학석사)

2004년 : 서울대학교 전기컴퓨터공학부(공학박사)

1993년~1998년: 한국통신 전임연구원

2005년~현 재: 서울과학기술대학교 컴퓨터공학과 교수

※관심분야:운영체제, 임베디드소프트웨어, 스토리지시스템

Table 1.

Week schedule of python programming teaching model using github

wk. Subject related Contents
1 PY • Introduction to lecture
• Introduction to python programming language
2 PY
GT
• history of python and features
• Introduction to computational thinking & coding
• Introduction to Git & GitHub with version control
3 PY
GT
• Using variables & data types, IO function
• Conducting a survey of pre-learning
• Using add, commit, log of basic commands in Git
4 PY
GT
• Using strings and standard function
• Saving source codes in local repositories
5 PY
GT
• Introduction to pycharm
• Using source code with version control in pycharm
6 PY
GT
• Using bool data and various operators
• Using basics in GitHub for web hosting services with remote repository & collaboration
7 PY
GT
• Using conditional and Iteration structure
• Publishing repository of source code in Github
8 EXAM Mid test
9 PY
GT
• Using lists and tuples
• Using issues and PR(Pull Requests) for collaboration in GitHub
10 PY
GT
• Using dictionaries
• Publishing team repository of source code for collaboration in GitHub
11 PY
GT
• Using sets and functions
• Developing team project with collaboration in GitHub
12 PY
GT
• Using lambda and arguments of functions
• Developing team project with collaboration in GitHub
13 PY
GT
• Using standard and external modules
• Presentation of team project
14 PY • Review to prepare for the final test
• Conducting a survey of post-learning
15 EXAM Final test

Table 2.

Questionnaires for validating the effect of the proposed teaching model

Area Item Item contents
python PY1 I can program Python using IDLE and pycharm.
PY2 I can understand and use data types and variables in Python.
PY3 I can understand sequences (list, tuple, etc.) and access them as subscripts and slicing.
PY4 I can understand and program conditional and repetitive statements.
PY5 I can understand and program list and dictionary.
PY6 I can understand and program function
PY7 I can understand and program modules and packages.
PY8 I can understand third-party library and use an external library.
Git & GitHub GT1 I can understand and install Git, a distributed version control system.
GT2 I can understand the working directory, staging area, and git repository of version control and and handle files with version control.
GT3 I can understand Git and GitHub and use local and remote repositories in conjunction.
GT4 I can understand clone, pull, and push in Git and GitHub and use it in local and remote storage.
GT5 I can use the remote repository managed with my team members with GitHub.
GT6 I can understand and use pull request and issue in GitHub.
GT7 I feel the need to use GitHub in programming language learning.

Table 3.

Results of PY paired t-test

Items Hourly Mean Std. dev Std. Error
Mean
t p
* : p<.05
PY1 Pre 3.24 1.033 -.529 -2.496 .024*
Post 3.76 .970
PY2 Pre 3.29 .686 -.765 -4.190 .001*
Post 4.06 .827
PY3 Pre 2.82 .883 -.706 -3.165 .006*
Post 3.53 .800
PY4 Pre 3.41 .939 -.765 -4.747 .000*
Post 4.18 .728
PY5 Pre 3.00 1.118 -1.000 -4.408 .000*
Post 4.00 .791
PY6 Pre 3.12 .928 -.647 -3.395 .004*
Post 3.76 .903
PY7 Pre 2.71 .985 -.765 -2.889 .011*
Post 3.47 .943
PY8 Pre 2.41 .939 -1.118 -3.498 .003*
Post 3.53 .800

Table 4.

Results of GT paired t-test

Item Hourly Mean Std. dev Std. Error
Mean
t p
* : p<.05
GT1 Pre 3.53 1.125 -.588 -2.416 .028*
Post 4.12 .857
GT2 Pre 2.82 1.185 -1.059 -3.246 .005*
Post 3.88 .928
GT3 Pre 3.06 1.144 -.882 -2.985 .009*
Post 3.94 1.029
GT4 Pre 3.18 1.185 -1.059 -4.243 .001*
Post 4.24 .752
GT5 Pre 2.94 1.197 -1.176 -4.288 .001*
Post 4.12 .781
GT6 Pre 2.94 1.197 -1.118 -4.968 .000*
Post 4.06 .827
GT7 Pre 3.24 1.300 -.882 -2.867 .011*
Post 4.12 .928