제한된 프로그램 소스 집합에서 표절 탐색을 위한 적응적 알고리즘

An Adaptive Algorithm for Plagiarism Detection in a Controlled Program Source Set

  • 지정훈 (부산대학교 컴퓨터공학과) ;
  • 우균 (부산대학교 컴퓨터공학과) ;
  • 조환규 (부산대학교 컴퓨터공학과)
  • 발행 : 2006.12.15

초록

본 논문에서는 대학생들의 프로그래밍 과제물이나 프로그래밍 경진대회에 제출된 프로그램과 같이 동일한 기능을 요구받는 프로그램 소스 집합들에서 표절행위가 있었는지를 탐색하는 새로운 알고리즘을 제시하고 있다. 지금까지 보편적으로 사용되어 온 대표적인 알고리즘은 부분 스트링간의 완전 일치를 통한 Greedy-String-Tiling이나 두 스트링간의 지역정렬(local alignment)을 이용한 유사도 분석이 주된 방법론이었다. 본 논문에서는 해당 프로그램 소스의 집합에서 추출된 키워드들의 빈도수에 기반한 로그 확률값을 가중치로 하는 적응적(adaptive) 유사도 행렬을 만들어 이를 기반으로 주어진 프로그램의 유사구간을 탐색하는 새로운 방법을 소개한다. 우리는 10여개 이상의 프로그래밍 대회에서 제출된 실제 프로그램으로 본 방법론을 실험해 보았다. 실험결과 이 방법은 이전의 고정적 유사도 행렬(match이면 +1, mismatch이면 -1, gap이면 -2)에 의한 유사구간 탐색에 비하여 여러 장점이 있음을 알 수 있었으며, 제시한 적응적 유사도 행렬을 보다 다양한 표절탐색 목적으로 사용할 수 있음을 알 수 있었다.

This paper suggests a new algorithm for detecting the plagiarism among a set of source codes, constrained to be functionally equivalent, such are submitted for a programming assignment or for a programming contest problem. The typical algorithms largely exploited up to now are based on Greedy-String Tiling, which seeks for a perfect match of substrings, and analysis of similarity between strings based on the local alignment of the two strings. This paper introduces a new method for detecting the similar interval of the given programs based on an adaptive similarity matrix, each entry of which is the logarithm of the probabilities of the keywords based on the frequencies of them in the given set of programs. We experimented this method using a set of programs submitted for more than 10 real programming contests. According to the experimental results, we can find several advantages of this method compared to the previous one which uses fixed similarity matrix(+1 for match, -1 for mismatch, -2 for gap) and also can find that the adaptive similarity matrix can be used for detecting various plagiarism cases.

키워드

참고문헌

  1. 조동욱, 소정, 김진용, 최병갑, 김선영, 김지영, 프로그램 표절 감정 툴에 대한 비교 분석 및 개발 툴에 대한 방향제시, 제20회 한국정보처리학회 추계학술대회논문집, 10권, pp. 757,760, 2003
  2. Brenda Cheang, Andy Kumia, Andrew Lim, and Wee-Chong Oon. On automated grading of programming assignments .n an academic institution. Computer and Education, 41:121-131, 2003 https://doi.org/10.1016/S0360-1315(03)00030-7
  3. David Jackson. A software system for grading student computer programs. Computer Education, 27(3/4):171-180, 1996 https://doi.org/10.1016/S0360-1315(96)00025-5
  4. Janet Garter. Collaboration or plagiarism: What happens when students work together. In Proceeding of the 4th Annual SIGCSE/SIGCUE Conference on Innovation and Technology in Computer Science Eduwtion(ITICSE-99), volume 31 of SIGCSE Bulletin inroads, page 52-55, N.Y., June 27- July 1 1999. ACM Press https://doi.org/10.1145/305786.305848
  5. Paul Clough. Plagiarism in natural and programming languages: An overview of current tools and technologies. Technical report, University of Sheffield, Department of Computer Science, June 2000
  6. R. James, C. McInnis, and M. Devlin. Plagiarism detection software: How effective is it?, 2002. Except from R. James, C. McInnis, and M. Devlin, ?Assessing Leaming in Australian Universities: Ideas, strategies and resources for quality in student assessment. Centre for the Study of Higher Education, Australian Universities Teaching Committee, Melbourne, ustralia, 2002 (http://www.cshe.unimelb.edu.au/assessingleaming/ docs/PlagSoft ware.pdf)
  7. Thomas Schmidt and Jens Stoye. Quadratic time algorithms for finding common intervals in two and more sequences. In Proceedings of the 15th Annual Symposium on Combinatorial Pattem Matching(CPM 2004), volume 3109 of Lecture Notes in Computer Science, pages 347-358. Springer, 2004.
  8. 이효섭, 도경구, 프로그램 표절 검출 방법에 대한 조사, 한국정보과학회 한국컴퓨터종합학술대회 2005 논문집(B), 32권, pp, 916-917, 2005
  9. Kristina L. Verco and Michael J. Wise. Software for detecting suspected plagiarism: Comparing structure and attribute-counting systems. In Proceedings of the 1st Australian Conference on Computer Science Education, pages 130-134, Sydney, Australia, July 1996
  10. M. Joy and M. Luck. Plagiarism in programming assignments. IEEE Transactions of Education, 42(2):129-133, May 1999 https://doi.org/10.1109/13.762946
  11. Jeong-Woo Soon, Seong-Bae Park, and SeYoung Park. Program plagiarism detection using parse tree kernels. In Proceedings of the 9th Pacific Him International Conference on Artificial Intelligence (PHICAI 2006), volume 4099 of Lecture Notes in Computer Science, pages 1000-1004. Springer, August 2006
  12. Lutz Prechelt, Guido Malpohl, and Michael Philippsen. Finding plagiarisms among a set of programs with JPlag. Journal of Universal Computer Science, 8(11):1016-1038, 2002
  13. Xin Chen, Brent Francia, Ming Li, Brian McKinnon, and Amit Seker. Shared information and program plagiarism detection. IEEE Transactions on Information Theory, 50(7):1545-1551, 2004 https://doi.org/10.1109/TIT.2004.830793
  14. 강은미, 황미녕, 조환규, 유전체 서열의 정렬 기법을 이용한 소스 코드 표절 검사, 정보과학회 논문지: 컴퓨팅의 실제, 9(3):352-367, June 2003