KR102235690B1 - 인공지능 기반의 프로그램 코드 평가 시스템 및 방법 - Google Patents

인공지능 기반의 프로그램 코드 평가 시스템 및 방법 Download PDF

Info

Publication number
KR102235690B1
KR102235690B1 KR1020200068635A KR20200068635A KR102235690B1 KR 102235690 B1 KR102235690 B1 KR 102235690B1 KR 1020200068635 A KR1020200068635 A KR 1020200068635A KR 20200068635 A KR20200068635 A KR 20200068635A KR 102235690 B1 KR102235690 B1 KR 102235690B1
Authority
KR
South Korea
Prior art keywords
features
program code
evaluation
quality
learning
Prior art date
Application number
KR1020200068635A
Other languages
English (en)
Inventor
한경식
김우정
임소영
이상민
이환희
Original Assignee
주식회사 코딩로봇연구소
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 코딩로봇연구소 filed Critical 주식회사 코딩로봇연구소
Priority to KR1020200068635A priority Critical patent/KR102235690B1/ko
Application granted granted Critical
Publication of KR102235690B1 publication Critical patent/KR102235690B1/ko
Priority to PCT/KR2021/006763 priority patent/WO2021246742A1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/10Services
    • G06Q50/20Education
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3624Software debugging by performing operations on the source code, e.g. via a compiler
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09BEDUCATIONAL OR DEMONSTRATION APPLIANCES; APPLIANCES FOR TEACHING, OR COMMUNICATING WITH, THE BLIND, DEAF OR MUTE; MODELS; PLANETARIA; GLOBES; MAPS; DIAGRAMS
    • G09B19/00Teaching not covered by other main groups of this subclass
    • G09B19/0053Computers, e.g. programming

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Tourism & Hospitality (AREA)
  • Software Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Educational Technology (AREA)
  • Educational Administration (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Molecular Biology (AREA)
  • Economics (AREA)
  • Human Resources & Organizations (AREA)
  • Marketing (AREA)
  • Primary Health Care (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

인공지능 기반의 프로그램 코드 평가 방법에서, 프로그램 코드의 실행과 관련되는 복수의 실행 피처들 및 프로그램 코드의 품질과 관련되는 복수의 품질 피처들을 사용하여 프로그램 코드의 레벨을 추정하는 프로그래밍 레벨 추정 모델을 생성하고, 평가 프로그램 코드에 대해 복수의 실행 피처들 및 복수의 품질 피처들에 각각 대응되는 복수의 실행 평가 피처들 및 복수의 품질 평가 피처들을 결정하고, 프로그래밍 레벨 추정 모델과 평가 프로그램 코드의 복수의 실행 평가 피처들 및 복수의 품질 평가 피처들에 기초하여 평가 프로그램 코드의 레벨을 결정한다.

Description

인공지능 기반의 프로그램 코드 평가 시스템 및 방법{SYSTEM AND METHOD FOR EVALUATING PROGRAM CODE BASED ON ARTIFICIAL INTELLIGENCE}
본 발명은 인공지능(Artificial Intelligence; AI) 기반의 프로그램 코드 평가 시스템 및 방법에 관한 것으로, 보다 상세하게는 인공지능 기반으로 컴퓨터 프로그램 코드를 평가하여 컴퓨터 프로그램 코드의 수준을 평가하는 시스템 및 방법에 관한 것이다.
4차 산업이 발전함에 따라 현대 사회는 하드웨어 중심 사회에서 소프트웨어 중심 사회로 빠르게 변화하고 있다. 따라서 초등학교에서부터 소프트웨어 교육 과정이 개설되는 등 소프트웨어 교육의 중요성이 매우 커지고 있다.
이로 인해 클라우드 기반으로 컴퓨터 프로그래밍 교육을 제공하는 시스템에 대한 연구가 활발히 이루어지고 있다.
그러나 기존의 클라우드 기반 컴퓨터 프로그래밍 교육 시스템은 작성된 프로그램 코드를 미리 정해놓은 답안과 단순 비교하여 프로그램 코드를 평가하므로, 학습자들마다 다양하게 작성된 프로그램 코드를 제대로 평가하기 어렵다는 문제점이 있다.
한편, 학습자들마다 다양한 형태로 작성된 프로그램 코드를 정확하게 평가하기 위해 사람이 직접 프로그램 코드를 평가하는 경우도 있으나, 사람이 직접 프로그램 코드를 평가하는 경우 프로그램 코드를 평가하는 데에 소요되는 시간이 매우 증가한다는 문제점이 있다. 또한, 평가하는 사람들마다 평가의 기준이 상이하기 때문에 프로그램 코드 평가의 일관성이 유지되기 어렵다는 문제점이 있다.
상기와 같은 문제점을 해결하기 위한 본 발명의 일 목적은 인공지능(Artificial Intelligence; AI) 기반으로 컴퓨터 프로그램 코드를 평가함으로써 프로그램 코드를 다면적으로 평가할 수 있고 평가의 일관성도 유지할 수 있는 인공지능 기반의 프로그램 코드 평가 시스템 및 방법을 제공하는 것이다.
상술한 본 발명의 일 목적을 달성하기 위하여, 본 발명의 일 실시예에 따른 인공지능 기반의 프로그램 코드 평가 방법에서, 프로그램 코드의 실행(execution)과 관련되는 복수의 실행 피처들(features) 및 상기 프로그램 코드의 품질(quality)과 관련되는 복수의 품질 피처들을 사용하여 상기 프로그램 코드의 레벨을 추정하는 프로그래밍 레벨 추정 모델을 생성하고, 평가 프로그램 코드에 대해 상기 복수의 실행 피처들 및 상기 복수의 품질 피처들에 각각 대응되는 복수의 실행 평가 피처들 및 복수의 품질 평가 피처들을 결정하고, 상기 프로그래밍 레벨 추정 모델과 상기 평가 프로그램 코드의 상기 복수의 실행 평가 피처들 및 상기 복수의 품질 평가 피처들에 기초하여 상기 평가 프로그램 코드의 레벨을 결정한다.
일 실시예에 있어서, 상기 프로그래밍 레벨 추정 모델을 생성하는 단계는, 상기 프로그램 코드의 상기 복수의 실행 피처들 및 상기 복수의 품질 피처들과 상기 프로그램 코드의 가독성(readability)과 관련되는 복수의 가독성 피처들을 함께 사용하여 상기 프로그래밍 레벨 추정 모델을 생성하는 단계를 포함하고, 상기 인공지능 기반의 프로그램 코드 평가 방법은 상기 평가 프로그램 코드에 대해 상기 복수의 가독성 피처들에 대응되는 복수의 가독성 평가 피처들을 결정하는 단계를 더 포함하며, 상기 평가 프로그램 코드의 레벨을 결정하는 단계는, 상기 프로그래밍 레벨 추정 모델과 상기 평가 프로그램 코드의 상기 복수의 실행 평가 피처들, 상기 복수의 가독성 평가 피처들, 및 상기 복수의 품질 평가 피처들에 기초하여 상기 평가 프로그램 코드의 레벨을 결정하는 단계를 포함할 수 있다.
상기 프로그래밍 레벨 추정 모델을 생성하는 단계는, 복수의 학습자들이 복수의 프로그램 문제들에 대해 작성한 복수의 학습 프로그램 코드들 각각에 대해 상기 복수의 실행 피처들, 상기 복수의 가독성 피처들, 및 상기 복수의 품질 피처들을 결정하는 단계 및 제1 머신 러닝(machine learning) 모듈에 대해 상기 복수의 학습 프로그램 코드들 각각의 상기 복수의 실행 피처들, 상기 복수의 가독성 피처들, 및 상기 복수의 품질 피처들을 제1 내지 제n(n은 양의 정수) 레벨들 중의 하나로 분류하는 학습을 수행하여 상기 프로그래밍 레벨 추정 모델을 결정하는 단계를 포함할 수 있다.
상기 제1 머신 러닝 모듈에 대해 상기 복수의 학습 프로그램 코드들 각각의 상기 복수의 실행 피처들, 상기 복수의 가독성 피처들, 및 상기 복수의 품질 피처들을 상기 제1 내지 제n 레벨들 중의 하나로 분류하는 학습을 수행하여 상기 프로그래밍 레벨 추정 모델을 결정하는 단계는, 상기 제1 머신 러닝 모듈에 포함되는 제1 인공 신경망이 상기 복수의 실행 피처들, 상기 복수의 가독성 피처들, 및 상기 복수의 품질 피처들에 상응하는 학습 프로그램 코드를 작성한 학습자의 프로그래밍 경력 기간에 기초하여 상기 복수의 실행 피처들, 상기 복수의 가독성 피처들, 및 상기 복수의 품질 피처들을 상기 제1 내지 제n 레벨들 중의 하나로 분류하도록 상기 제1 인공 신경망을 학습시키는 단계 및 상기 학습이 완료된 제1 인공 신경망을 상기 프로그래밍 레벨 추정 모델로 결정하는 단계를 포함할 수 있다.
상기 제1 인공 신경망이 상기 복수의 실행 피처들, 상기 복수의 가독성 피처들, 및 상기 복수의 품질 피처들에 상응하는 학습 프로그램 코드를 작성한 학습자의 상기 프로그래밍 경력 기간에 기초하여 상기 복수의 실행 피처들, 상기 복수의 가독성 피처들, 및 상기 복수의 품질 피처들을 상기 제1 내지 제n 레벨들 중의 하나로 분류하도록 상기 제1 인공 신경망을 학습시키는 단계는, 프로그래밍 경력 기간을 1년 이상의 간격으로 제1 내지 제n 구간들로 구분하고, 상기 상응하는 학습 프로그램 코드를 작성한 학습자의 상기 프로그래밍 경력 기간이 제i(i는 n 이하의 양의 정수) 구간에 포함되는 경우, 상기 제1 인공 신경망이 상기 복수의 실행 피처들, 상기 복수의 가독성 피처들, 및 상기 복수의 품질 피처들을 제i 레벨로 분류하도록 상기 제1 인공 신경망을 학습시키는 단계를 포함할 수 있다.
상기 복수의 학습 프로그램 코드들 각각의 상기 복수의 실행 피처들은, 상응하는 학습 프로그램 코드가 복수의 테스트 케이스들에 대해 실행되어 출력되는 복수의 출력값들 중에서 정답의 개수에 기초하여 결정되는 점수 피처를 포함하고, 상기 복수의 테스트 케이스들은 상기 복수의 프로그램 문제들 별로 미리 정해질 수 있다.
상기 복수의 학습 프로그램 코드들 각각의 상기 복수의 실행 피처들은, 상기 상응하는 학습 프로그램 코드가 상기 복수의 테스트 케이스들에 대해 실행되어 상기 복수의 출력값들을 출력하는 데에 소요되는 시간에 기초하여 결정되는 실행시간 피처, 및 상기 상응하는 학습 프로그램 코드에 대응되는 프로그램 문제와 동일한 프로그램 문제에 대해 작성된 학습 프로그램 코드들의 상기 점수 피처들에 대한 통계값에 기초하여 결정되는 난이도 피처를 더 포함할 수 있다.
상기 복수의 학습 프로그램 코드들 각각의 상기 복수의 가독성 피처들은, 상응하는 학습 프로그램 코드의 라인 당 평균 단어 수 및 단어 당 평균 음절 수에 기초하여 결정되는 제1 가독성 피처를 포함할 수 있다.
상기 복수의 학습 프로그램 코드들 각각의 상기 복수의 가독성 피처들은, 상응하는 학습 프로그램 코드에 포함되는 단어들 중에서 3음절 이상 단어의 비율에 기초하여 결정되는 제2 가독성 피처를 포함할 수 있다.
상기 복수의 학습 프로그램 코드들 각각의 상기 복수의 가독성 피처들은, 상응하는 학습 프로그램 코드에 포함되는 단어들 중에서 미리 정해진 표준 단어 리스트에 포함되지 않는 단어들의 비율에 기초하여 결정되는 제3 가독성 피처를 포함할 수 있다.
상기 복수의 학습 프로그램 코드들 각각의 상기 복수의 품질 피처들은, 상응하는 학습 프로그램 코드에 구현된 함수들에 포함되는 조건 분기점들의 개수에 기초하여 결정되는 제1 품질 피처를 포함할 수 있다.
상기 복수의 학습 프로그램 코드들 각각의 상기 복수의 품질 피처들은, 상응하는 학습 프로그램 코드에 포함되는 라인들의 개수에 기초하여 결정되는 제2 품질 피처를 포함할 수 있다.
상기 복수의 학습 프로그램 코드들 각각의 상기 복수의 품질 피처들은, 상응하는 학습 프로그램 코드에서 미리 정해진 특정 위치들에 삽입된 스페이스의 개수의 표준 편차에 기초하여 결정되는 제3 품질 피처를 포함할 수 있다.
이 때, 상기 특정 위치들은, 각 라인의 시작 지점, 각 라인의 종료 지점, 함수의 시작을 나타내는 괄호의 직후, 및 함수의 종료를 나타내는 괄호의 직전 중의 적어도 하나를 포함할 수 있다.
상기 복수의 학습 프로그램 코드들 각각의 상기 복수의 품질 피처들은, 상응하는 학습 프로그램 코드에 포함되는 주석들의 개수 및 상기 주석들 각각의 문자 개수에 기초하여 결정되는 제4 품질 피처를 포함할 수 있다.
상기 복수의 학습 프로그램 코드들 각각의 상기 복수의 품질 피처들은, 상응하는 학습 프로그램 코드에 포함되는 비어 있는 조건문의 개수, 사용되지 않는 변수의 개수, 및 중복되는 조건 연산자의 개수에 기초하여 결정되는 제5 품질 피처를 포함할 수 있다.
상기 프로그래밍 레벨 추정 모델을 생성하는 단계는, 상기 복수의 학습자들이 상기 복수의 학습 프로그램 코드들을 작성할 때 상기 복수의 프로그램 문제들 별로 상기 복수의 학습자들에게 제공된 베이스 코드에 대해 상기 복수의 가독성 피처들 및 상기 복수의 품질 피처들을 결정하는 단계 및 상기 복수의 학습 프로그램 코드들 각각의 상기 복수의 가독성 피처들 및 상기 복수의 품질 피처들에서 상기 복수의 학습 프로그램 코드들 각각에 상응하는 상기 베이스 코드의 상기 복수의 가독성 피처들 및 상기 복수의 품질 피처들을 차감하여 상기 복수의 학습 프로그램 코드들 각각의 상기 복수의 가독성 피처들 및 상기 복수의 품질 피처들을 보정하는 단계를 더 포함할 수 있다.
상기 인공지능 기반의 프로그램 코드 평가 방법은 상기 복수의 학습 프로그램 코드들 중에서 상기 점수 피처의 값이 최대값을 갖는 학습 프로그램 코드들을 만점 학습 프로그램 코드들로 추출하는 단계, 상기 만점 학습 프로그램 코드들 각각의 상기 복수의 실행 피처들, 상기 복수의 가독성 피처들, 및 상기 복수의 품질 피처들을 사용하여 프로그램 코드의 비정상 여부를 추정하는 비정상 코드 탐지 모델을 생성하는 단계, 및 상기 비정상 코드 탐지 모델과 상기 평가 프로그램 코드의 상기 복수의 실행 평가 피처들, 상기 복수의 가독성 평가 피처들, 및 상기 복수의 품질 평가 피처들에 기초하여 상기 평가 프로그램 코드의 비정상 여부를 결정하는 단계를 더 포함할 수 있다.
상기 만점 학습 프로그램 코드들 각각의 상기 복수의 실행 피처들, 상기 복수의 가독성 피처들, 및 상기 복수의 품질 피처들을 사용하여 프로그램 코드의 비정상 여부를 추정하는 상기 비정상 코드 탐지 모델을 생성하는 단계는, 상기 만점 학습 프로그램 코드들 각각의 상기 복수의 품질 피처들 중에서 코드의 복잡성과 관련되는 품질 피처를 제외한 나머지 품질 피처들을 복수의 수정 품질 피처들로 결정하는 단계, 상기 만점 학습 프로그램 코드들 중에서 동일한 프로그램 문제에 대해 작성된 만점 학습 프로그램 코드들에 상응하는 상기 제외된 품질 피처들의 평균을 상기 동일한 프로그램 문제의 평균 복잡도로 결정하는 단계, 상응하는 만점 학습 프로그램 코드의 상기 제외된 품질 피처의 값과 상기 상응하는 만점 학습 프로그램 코드에 대응되는 프로그램 문제의 상기 평균 복잡도를 비교하여 상기 상응하는 만점 학습 프로그램 코드의 비정상 플래그를 결정하는 단계, 제2 머신 러닝 모듈에 포함되는 제2 인공 신경망이 상기 만점 학습 프로그램 코드들 각각의 상기 비정상 플래그에 기초하여 상기 만점 학습 프로그램 코드들 각각의 상기 복수의 실행 피처들, 상기 복수의 가독성 피처들, 및 상기 복수의 수정 품질 피처들을 정상 코드 및 비정상 코드 중의 하나로 분류하도록 상기 제2 인공 신경망을 학습시키는 단계, 및 상기 학습이 완료된 제2 인공 신경망을 상기 비정상 코드 탐지 모델로 결정하는 단계를 포함할 수 있다.
상기 비정상 코드 탐지 모델과 상기 평가 프로그램 코드의 상기 복수의 실행 평가 피처들, 상기 복수의 가독성 평가 피처들, 및 상기 복수의 품질 평가 피처들에 기초하여 상기 평가 프로그램 코드의 비정상 여부를 결정하는 단계는, 상기 평가 프로그램 코드의 상기 복수의 품질 평가 피처들 중에서 코드의 복잡성과 관련되는 품질 피처를 제외한 나머지 품질 평가 피처들을 복수의 수정 품질 평가 피처들로 결정하는 단계, 상기 평가 프로그램 코드의 상기 복수의 실행 평가 피처들, 상기 복수의 가독성 평가 피처들, 및 상기 복수의 수정 품질 평가 피처들을 상기 비정상 코드 탐지 모델에 입력하는 단계, 및 상기 비정상 코드 탐지 모델로부터 출력되는 결과에 기초하여 상기 평가 프로그램 코드가 정상 코드인지 비정상 코드인지 여부를 결정하는 단계를 포함할 수 있다.
상술한 본 발명의 일 목적을 달성하기 위하여, 본 발명의 일 실시예에 따른 인공지능 기반의 프로그램 코드 평가 시스템은 제1 전처리부, 제2 전처리부, 및 제1 머신 러닝 모듈을 포함한다. 상기 제1 전처리부는 복수의 학습자들이 복수의 프로그램 문제들에 대해 작성한 복수의 학습 프로그램 코드들 각각에 대해 프로그램 코드의 실행과 관련되는 복수의 실행 피처들 및 상기 프로그램 코드의 품질과 관련되는 복수의 품질 피처들을 결정한다. 상기 제2 전처리부는 평가 프로그램 코드에 대해 상기 복수의 실행 피처들 및 상기 복수의 품질 피처들에 각각 대응되는 복수의 실행 평가 피처들 및 복수의 품질 평가 피처들을 결정한다. 상기 제1 머신 러닝 모듈은 상기 복수의 학습 프로그램 코드들 각각의 상기 복수의 실행 피처들 및 상기 복수의 품질 피처들을 제1 내지 제n 레벨들 중의 하나로 분류하는 학습을 수행하여 프로그래밍 레벨 추정 모델을 생성하고, 상기 프로그래밍 레벨 추정 모델을 사용하여 상기 평가 프로그램 코드의 상기 복수의 실행 평가 피처들 및 상기 복수의 품질 평가 피처들을 상기 제1 내지 제n 레벨들 중의 하나로 분류하여 상기 분류된 레벨을 상기 평가 프로그램 코드의 레벨로 결정한다.
본 발명의 실시예들에 따른 인공지능(Artificial Intelligence; AI) 기반의 프로그램 코드 평가 시스템 및 인공지능 기반의 프로그램 코드 평가 방법은 머신 러닝을 사용하여 프로그램 코드를 평가하므로, 프로그램 코드를 다면적으로 평가할 수 있고, 평가의 속도를 향상시킬 수 있으며, 평가의 일관성을 유지할 수 있다.
도 1은 본 발명의 일 실시예에 따른 인공지능(Artificial Intelligence; AI) 기반의 프로그램 코드 평가 시스템을 나타내는 도면이다.
도 2는 본 발명의 일 실시예에 따른 인공지능 기반의 프로그램 코드 평가 방법을 나타내는 순서도이다.
도 3은 도 2의 프로그래밍 레벨 추정 모델을 생성하는 단계의 일 예를 나타내는 순서도이다.
도 4는 도 1의 제1 머신 러닝 모듈에 포함되는 제1 인공 신경망의 일 예를 나타내는 도면이다.
도 5는 도 2의 프로그래밍 레벨 추정 모델을 생성하는 단계의 다른 예를 나타내는 순서도이다.
도 6은 본 발명의 다른 실시예에 따른 인공지능 기반의 프로그램 코드 평가 시스템을 나타내는 도면이다.
도 7은 본 발명의 다른 실시예에 따른 인공지능 기반의 프로그램 코드 평가 방법을 나타내는 순서도이다.
도 8은 도 7의 비정상 코드 탐지 모델을 생성하는 단계의 일 예를 나타내는 순서도이다.
본문에 개시되어 있는 본 발명의 실시예들에 대해서, 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 실시예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 실시예들은 다양한 형태로 실시될 수 있으며 본문에 설명된 실시예들에 한정되는 것으로 해석되어서는 아니 된다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는바, 특정 실시예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로 사용될 수 있다. 예를 들어, 본 발명의 권리 범위로부터 이탈되지 않은 채 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미이다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미인 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 일 실시예에 따른 인공지능(Artificial Intelligence; AI) 기반의 프로그램 코드 평가 시스템을 나타내는 도면이다.
도 1에 도시된 인공지능 기반의 프로그램 코드 평가 시스템(10)은 프로그램 코드의 다양한 특징들을 분석하여 복수의 피처들을 결정하고, 머신 러닝(machine learning)을 통해 상기 복수의 피처들을 사용하여 상기 프로그램 코드의 수준을 평가하는 학습을 수행하여 프로그램 평가 모델을 생성한다.
이후, 인공지능 기반의 프로그램 코드 평가 시스템(10)은 평가를 하고자 하는 프로그램 코드를 분석하여 상기 복수의 피처들을 결정하고, 상기 복수의 피처들을 상기 프로그램 평가 모델에 입력한다.
상기 프로그램 평가 모델은 상기 입력된 복수의 피처들에 기초하여 상기 프로그램 코드의 평가 결과를 출력한다.
따라서 본 발명의 실시예들에 따른 인공지능 기반의 프로그램 코드 평가 시스템(10)은 프로그램 코드의 다양한 특징들에 기초하여 상기 프로그램 코드를 다면적으로 평가할 수 있다.
또한, 인공지능 기반의 프로그램 코드 평가 시스템(10)은 머신 러닝을 통해 학습된 평가 모델을 사용하여 프로그램 코드들을 평가하므로, 평가의 일관성도 유지할 수 있다.
도 2는 본 발명의 일 실시예에 따른 인공지능 기반의 프로그램 코드 평가 방법을 나타내는 순서도이다.
도 2를 참조하면, 본 발명의 일 실시예에 따른 인공지능 기반의 프로그램 코드 평가 방법에서, 프로그램 코드를 분석하여 결정되는 상기 프로그램 코드의 실행(execution)과 관련되는 복수의 실행 피처들(features) 및 상기 프로그램 코드의 품질(quality)과 관련되는 복수의 품질 피처들을 사용하여 상기 프로그램 코드의 레벨을 추정하는 프로그래밍 레벨 추정 모델을 생성한다(단계 S100).
한편, 상기 프로그래밍 레벨 추정 모델을 생성하기 위해 상기 프로그램 코드에 대해 수행했던 분석과 동일한 분석을 평가 대상인 평가 프로그램 코드에 대해 수행하여 상기 복수의 실행 피처들 및 상기 복수의 품질 피처들에 각각 대응되는 복수의 실행 평가 피처들 및 복수의 품질 평가 피처들을 결정한다(단계 S200).
이후, 상기 프로그래밍 레벨 추정 모델과 상기 평가 프로그램 코드의 상기 복수의 실행 평가 피처들 및 상기 복수의 품질 평가 피처들에 기초하여 상기 평가 프로그램 코드의 레벨을 결정한다(단계 S300).
일 실시예에 있어서, 도 2에 도시된 인공지능 기반의 프로그램 코드 평가 방법은 상기 프로그램 코드의 가독성(readability)과 관련되는 복수의 가독성 피처들을 추가적으로 사용하여 상기 프로그래밍 레벨 추정 모델을 생성할 수 있다(단계 S100).
예를 들어, 본 발명의 일 실시예에 따른 인공지능 기반의 프로그램 코드 평가 방법은 상기 프로그램 코드의 상기 복수의 실행 피처들, 상기 복수의 가독성 피처들, 및 상기 복수의 품질 피처들을 종합적으로 사용하여 상기 프로그램 코드의 레벨을 추정하는 상기 프로그래밍 레벨 추정 모델을 생성할 수 있다.
이 경우, 상기 프로그래밍 레벨 추정 모델을 생성하기 위해 상기 프로그램 코드에 대해 수행했던 분석과 동일한 분석을 상기 평가 프로그램 코드에 대해 수행하여 상기 복수의 가독성 피처들에 대응되는 복수의 가독성 평가 피처들을 추가적으로 결정할 수 있다(단계 S200).
이후, 상기 프로그래밍 레벨 추정 모델과 상기 평가 프로그램 코드의 상기 복수의 실행 평가 피처들, 상기 복수의 가독성 평가 피처들, 및 상기 복수의 품질 평가 피처들에 기초하여 상기 평가 프로그램 코드의 레벨을 결정할 수 있다(단계 S300).
도 2에 도시된 인공지능 기반의 프로그램 코드 평가 방법은 도 1의 인공지능 기반의 프로그램 코드 평가 시스템(10)을 통해 수행될 수 있다.
이하, 도 1 및 2를 참조하여 인공지능 기반의 프로그램 코드 평가 시스템(10)의 구성 및 동작과 인공지능 기반의 프로그램 코드 평가 시스템(10)에 의해 수행되는 인공지능 기반의 프로그램 코드 평가 방법에 대해 상세히 설명한다.
도 1을 참조하면, 인공지능 기반의 프로그램 코드 평가 시스템(10)은 학습 데이터 데이터베이스(TRAINING DATA DB)(100), 제1 전처리부(PREPROCESSOR1)(200), 제1 머신 러닝 모듈(MACHINE LEARNING MODULE1)(300), 및 제2 전처리부(PREPROCESSOR2)(400)를 포함할 수 있다.
학습 데이터 데이터베이스(100)는 복수의 학습자들이 복수의 프로그램 문제들에 대해 작성한 복수의 학습 프로그램 코드들(T_CDs)을 저장할 수 있다.
예를 들어, 상기 복수의 프로그램 문제들 중의 적어도 일부가 상기 복수의 학습자들 각각에게 제공되고, 상기 복수의 학습자들 각각이 제공된 프로그램 문제들에 대해 작성한 프로그램 코드들은 복수의 학습 프로그램 코드들(T_CDs)로서 학습 데이터 데이터베이스(100)에 저장될 수 있다.
도 3은 도 2의 프로그래밍 레벨 추정 모델을 생성하는 단계(S100)의 일 예를 나타내는 순서도이다.
도 1 내지 3을 참조하면, 제1 전처리부(200)는 학습 데이터 데이터베이스(100)에 저장된 복수의 학습 프로그램 코드들(T_CDs)을 순차적으로 독출하고, 독출된 학습 프로그램 코드(T_CD)의 특징들을 분석하여 독출된 학습 프로그램 코드(T_CD)의 실행과 관련되는 복수의 실행 피처들(E_Fs), 독출된 학습 프로그램 코드(T_CD)의 가독성과 관련되는 복수의 가독성 피처들(R_Fs), 및 독출된 학습 프로그램 코드(T_CD)의 품질과 관련되는 복수의 품질 피처들(Q_Fs)을 결정할 수 있다(단계 S110).
일 실시예에 있어서, 제1 전처리부(200)는 상응하는 학습 프로그램 코드(T_CD)의 실행 결과를 분석하여 복수의 실행 피처들(E_Fs)을 결정할 수 있다.
일 실시예에 있어서, 복수의 실행 피처들(E_Fs)은 상응하는 학습 프로그램 코드(T_CD)가 복수의 테스트 케이스들에 대해 실행되어 출력되는 복수의 출력값들 중에서 정답의 개수에 기초하여 결정되는 점수 피처를 포함할 수 있다.
예를 들어, 상기 복수의 프로그램 문제들 별로 상기 복수의 테스트 케이스들 및 상기 복수의 테스트 케이스들 각각에 대한 정답이 미리 정해질 수 있다.
일 실시예에 있어서, 상기 복수의 프로그램 문제들 별로 미리 정해진 상기 복수의 테스트 케이스들 및 상기 복수의 테스트 케이스들 각각에 대한 정답은 학습 데이터 데이터베이스(100)에 저장될 수 있다.
이 경우, 제1 전처리부(200)는 상응하는 학습 프로그램 코드(T_CD)에 대응되는 프로그램 문제의 상기 복수의 테스트 케이스들 및 상기 복수의 테스트 케이스들에 대한 정답을 학습 데이터 데이터베이스(100)로부터 독출하고, 상응하는 학습 프로그램 코드(T_CD)를 상기 복수의 테스트 케이스들에 대해 실행시켜 상응하는 학습 프로그램 코드(T_CD)로부터 출력되는 상기 복수의 출력값들 중에서 상기 정답과 일치하는 개수를 카운트하여 상기 점수 피처를 결정할 수 있다.
따라서 상기 점수 피처는 상응하는 학습 프로그램 코드(T_CD)의 정확성에 대한 척도를 나타낼 수 있다.
이상, 제1 전처리부(200)가 상응하는 학습 프로그램 코드(T_CD)를 상기 복수의 테스트 케이스들에 대해 실행시켜 상기 점수 피처를 결정하는 것으로 설명하였으나, 본 발명은 이에 한정되지 않는다.
실시예에 따라서 복수의 학습 프로그램 코드들(T_CDs) 각각을 상응하는 복수의 테스트 케이스들에 대해 실행시켜 결정되는 상기 점수 피처는 복수의 학습 프로그램 코드들(T_CDs) 각각과 연관되어 학습 데이터 데이터베이스(100)에 미리 저장될 수 있다. 이 경우, 제1 전처리부(200)는 상응하는 학습 프로그램 코드(T_CD)의 상기 점수 피처를 학습 데이터 데이터베이스(100)로부터 독출하여 획득할 수 있다.
일 실시예에 있어서, 복수의 실행 피처들(E_Fs)은 상응하는 학습 프로그램 코드(T_CD)가 상기 복수의 테스트 케이스들에 대해 실행되어 상기 복수의 출력값들을 출력하는 데에 소요되는 시간에 기초하여 결정되는 실행시간 피처를 더 포함할 수 있다.
예를 들어, 제1 전처리부(200)는 상응하는 학습 프로그램 코드(T_CD)가 상기 복수의 테스트 케이스들에 대해 실행되어 상기 복수의 출력값들을 출력하는 데에 소요되는 시간들의 평균을 상기 실행시간 피처로 결정할 수 있다.
따라서 상기 실행시간 피처는 상응하는 학습 프로그램 코드(T_CD)의 효율성에 대한 척도를 나타낼 수 있다.
일 실시예에 있어서, 복수의 실행 피처들(E_Fs)은 상응하는 학습 프로그램 코드(T_CD)에 대응되는 프로그램 문제와 동일한 프로그램 문제에 대해 작성된 학습 프로그램 코드들(T_CDs)의 상기 점수 피처들에 대한 통계값에 기초하여 결정되는 난이도 피처를 더 포함할 수 있다.
예를 들어, 제1 전처리부(200)는 동일한 프로그램 문제에 대해 작성된 학습 프로그램 코드들(T_CDs)에 대한 상기 점수 피처들의 평균값을 상기 동일한 프로그램 문제에 상응하는 학습 프로그램 코드들(T_CDs)의 상기 난이도 피처로 결정할 수 있다.
따라서 상기 난이도 피처는 상응하는 학습 프로그램 코드(T_CD)에 대응되는 프로그램 문제의 난이도를 나타낼 수 있다.
일 실시예에 있어서, 제1 전처리부(200)는 상응하는 학습 프로그램 코드(T_CD)에 사용된 C, JAVA, PYTHON 등과 같은 프로그래밍 언어에 무관하게, 상응하는 학습 프로그램 코드(T_CD)에 포함되는 텍스트의 가독성을 분석하여 복수의 가독성 피처들(R_Fs)을 결정할 수 있다.
일 실시예에 있어서, 복수의 가독성 피처들(R_Fs)은 상응하는 학습 프로그램 코드(T_CD)의 라인 당 평균 단어 수 및 단어 당 평균 음절 수에 기초하여 결정되는 제1 가독성 피처를 포함할 수 있다.
일 실시예에 있어서, 복수의 가독성 피처들(R_Fs)은 상응하는 학습 프로그램 코드(T_CD)에 포함되는 단어들 중에서 3음절 이상 단어의 비율에 기초하여 결정되는 제2 가독성 피처를 포함할 수 있다.
일 실시예에 있어서, 복수의 가독성 피처들(R_Fs)은 상응하는 학습 프로그램 코드(T_CD)에 포함되는 단어들 중에서 미리 정해진 표준 단어 리스트에 포함되지 않는 단어들의 비율에 기초하여 결정되는 제3 가독성 피처를 포함할 수 있다.
실시예에 따라서, 제1 전처리부(200)는 상응하는 학습 프로그램 코드(T_CD)에 대해 일반적인 텍스트의 가독성 지표로 사용되는 Flesch Reading Ease, Flesch-Kincaid Grade Level, Coleman-Liau Index, Gunning Fog Index, SMOG Index 등을 계산하여 복수의 가독성 피처들(R_Fs)로 결정할 수도 있다.
따라서 복수의 가독성 피처들(R_Fs)은 상응하는 학습 프로그램 코드(T_CD)가 얼마나 읽기에 편안하게 작성되어 있는지에 대한 척도를 나타낼 수 있다.
일 실시예에 있어서, 제1 전처리부(200)는 상응하는 학습 프로그램 코드(T_CD)의 복잡도 및 잠재적인 오류 가능성을 분석하여 복수의 품질 피처들(Q_Fs)을 결정할 수 있다.
일 실시예에 있어서, 복수의 품질 피처들(Q_Fs)은 상응하는 학습 프로그램 코드(T_CD)에 구현된 함수들에 포함되는 조건 분기점들의 개수에 기초하여 결정되는 제1 품질 피처를 포함할 수 있다.
여기서, 상기 조건 분기점들은 if, while, for 등과 같은 구문들을 포함할 수 있다.
일 실시예에 있어서, 복수의 품질 피처들(Q_Fs)은 상응하는 학습 프로그램 코드(T_CD)에 포함되는 라인들의 개수에 기초하여 결정되는 제2 품질 피처를 포함할 수 있다.
일 실시예에 있어서, 복수의 품질 피처들(Q_Fs)은 상응하는 학습 프로그램 코드(T_CD)에서 미리 정해진 특정 위치들에 삽입된 스페이스의 개수의 표준 편차에 기초하여 결정되는 제3 품질 피처를 포함할 수 있다.
여기서, 상기 특정 위치들은 각 라인의 시작 지점, 각 라인의 종료 지점, 함수의 시작을 나타내는 괄호의 직후, 함수의 종료를 나타내는 괄호의 직전, 구조체의 시작을 나타내는 괄호의 직후, 및 구조체의 종료를 나타내는 괄호의 직전 중의 적어도 하나를 포함할 수 있다.
일 실시예에 있어서, 복수의 품질 피처들(Q_Fs)은 상응하는 학습 프로그램 코드(T_CD)에 포함되는 주석들의 개수 및 상기 주석들 각각의 문자 개수에 기초하여 결정되는 제4 품질 피처를 포함할 수 있다.
일 실시예에 있어서, 복수의 품질 피처들(Q_Fs)은 상응하는 학습 프로그램 코드(T_CD)에 포함되는 비어 있는 조건문의 개수, 사용되지 않는 변수의 개수, 중복되는 코드, 및 중복되는 조건 연산자의 개수 중의 적어도 하나에 기초하여 결정되는 제5 품질 피처를 포함할 수 있다.
실시예에 따라서, 제1 전처리부(200)는 상응하는 학습 프로그램 코드(T_CD)에 대해 일반적으로 프로그램 코드의 복잡성 지표로 사용되는 Cyclomatic complexity, Halstead's metrics 등을 계산하여 복수의 품질 피처들(Q_Fs)로 결정할 수도 있다.
다른 실시예에 따라서, 제1 전처리부(200)는 일반적으로 프로그램 코드의 잠재적인 오류 가능성을 분석하는 데에 사용되는 OCLint 툴을 사용하여 상응하는 학습 프로그램 코드(T_CD)를 분석하여 산출되는 지표를 복수의 품질 피처들(Q_Fs)로 결정할 수도 있다. OCLint 툴은 널리 공지된 툴이므로, OCLint 툴의 동작 및 OCLint 툴로부터 산출되는 지표에 대한 상세한 설명은 생략한다.
다시 도 1 및 3을 참조하면, 제1 전처리부(200)는 복수의 학습 프로그램 코드들(T_CDs) 각각의 복수의 실행 피처들(E_Fs), 복수의 가독성 피처들(R_Fs), 및 복수의 품질 피처들(Q_Fs)을 제1 머신 러닝 모듈(300)에 제공하고, 제1 머신 러닝 모듈(300)은 복수의 학습 프로그램 코드들(T_CDs) 각각의 복수의 실행 피처들(E_Fs), 복수의 가독성 피처들(R_Fs), 및 복수의 품질 피처들(Q_Fs)을 제1 내지 제n(n은 양의 정수) 레벨들(LV1~LVn) 중의 하나로 분류하는 학습을 수행하여 상기 프로그래밍 레벨 추정 모델을 결정할 수 있다(단계 S140).
일 실시예에 있어서, 학습 데이터 데이터베이스(100)는 복수의 학습 프로그램 코드들(T_CDs) 각각을 작성한 학습자의 프로그래밍 경력 기간(CR)을 상응하는 학습 프로그램 코드(T_CD)와 연관시켜 미리 저장할 수 있다.
이 경우, 제1 전처리부(200)는 복수의 학습 프로그램 코드들(T_CDs) 각각의 복수의 실행 피처들(E_Fs), 복수의 가독성 피처들(R_Fs), 및 복수의 품질 피처들(Q_Fs)을 상응하는 프로그래밍 경력 기간(CR)과 함께 제1 머신 러닝 모듈(300)에 제공하고, 제1 머신 러닝 모듈(300)은 복수의 학습 프로그램 코드들(T_CDs) 각각의 프로그래밍 경력 기간(CR)에 기초하여 복수의 학습 프로그램 코드들(T_CDs) 각각의 복수의 실행 피처들(E_Fs), 복수의 가독성 피처들(R_Fs), 및 복수의 품질 피처들(Q_Fs)을 제1 내지 제n 레벨들(LV1~LVn) 중의 하나로 분류하는 학습을 수행하여 상기 프로그래밍 레벨 추정 모델을 결정할 수 있다.
일 실시예에 있어서, 제1 머신 러닝 모듈(300)은 제1 인공 신경망(artificial neural network)을 포함할 수 있다.
도 4는 도 1의 제1 머신 러닝 모듈에 포함되는 제1 인공 신경망의 일 예를 나타내는 도면이다.
일 실시예에 있어서, 상기 제1 인공 신경망은 one-hot 인코딩 방식으로 인코딩된 결과 데이터를 생성할 수 있다.
이 경우, 도 4에 도시된 바와 같이, 상기 제1 인공 신경망은 복수의 실행 피처들(E_Fs), 복수의 가독성 피처들(R_Fs), 및 복수의 품질 피처들(Q_Fs)의 개수와 동일한 개수의 입력 노드들을 포함하는 입력층(INPUT LAYER), 복수의 노드들을 포함하는 적어도 하나의 은닉층(HIDDEN LAYER), 및 n개의 출력 노드들을 포함하는 출력층(OUTPUT LAYER)을 포함할 수 있다.
복수의 실행 피처들(E_Fs), 복수의 가독성 피처들(R_Fs), 및 복수의 품질 피처들(Q_Fs) 각각은 상기 제1 인공 신경망의 상기 입력층에 포함되는 상기 입력 노드들 각각에 입력되고, 상기 제1 인공 신경망은 상기 출력층에 포함되는 상기 출력 노드들로부터 출력되는 값을 통해 제1 내지 제n 레벨들(LV1~LVn) 중의 하나를 나타낼 수 있다.
도 4에는 예시적으로 상기 제1 인공 신경망이 하나의 은닉층을 포함하는 것으로 도시되어 있으나, 본 발명은 이에 한정되지 않으며, 실시예에 따라서 상기 제1 인공 신경망은 복수의 은닉층들을 포함할 수도 있다.
제1 머신 러닝 모듈(300)은 상기 제1 인공 신경망이 복수의 실행 피처들(E_Fs), 복수의 가독성 피처들(R_Fs), 및 복수의 품질 피처들(Q_Fs)에 상응하는 학습 프로그램 코드를 작성한 학습자의 프로그래밍 경력 기간(CR)에 기초하여 복수의 실행 피처들(E_Fs), 복수의 가독성 피처들(R_Fs), 및 복수의 품질 피처들(Q_Fs)을 제1 내지 제n 레벨들(LV1~LVn) 중의 하나로 분류하도록 상기 제1 인공 신경망을 학습시킬 수 있다.
예를 들어, 상기 복수의 학습자들의 프로그래밍 경력 기간을 1년 이상의 간격으로 제1 내지 제n 구간들로 구분하고, 상기 상응하는 학습 프로그램 코드를 작성한 학습자의 프로그래밍 경력 기간(CR)이 제i(i는 n 이하의 양의 정수) 구간에 포함되는 경우, 제1 머신 러닝 모듈(300)은 복수의 실행 피처들(E_Fs), 복수의 가독성 피처들(R_Fs), 및 복수의 품질 피처들(Q_Fs)을 상기 제1 인공 신경망의 상기 입력층에 포함되는 상기 입력 노드들에 제공한 상태에서, 상기 제1 인공 신경망의 상기 출력층에 포함되는 i번째 출력 노드는 1을 출력하고 나머지 출력 노드들은 0을 출력함으로써 복수의 실행 피처들(E_Fs), 복수의 가독성 피처들(R_Fs), 및 복수의 품질 피처들(Q_Fs)을 제i 레벨로 분류하도록 상기 제1 인공 신경망을 학습시킬 수 있다.
제1 머신 러닝 모듈(300)은 복수의 학습 프로그램 코드들(T_CDs)에 상응하는 복수의 실행 피처들(E_Fs), 복수의 가독성 피처들(R_Fs), 및 복수의 품질 피처들(Q_Fs)을 사용하여 상기 학습을 완료한 후, 상기 학습이 완료된 제1 인공 신경망을 상기 프로그래밍 레벨 추정 모델로 결정할 수 있다.
도 5는 도 2의 프로그래밍 레벨 추정 모델을 생성하는 단계(S100)의 다른 예를 나타내는 순서도이다.
일 실시예에 있어서, 상기 복수의 학습자들이 복수의 학습 프로그램 코드들(T_CDs)을 작성할 때 상기 복수의 프로그램 문제들 별로 베이스 코드가 상기 복수의 학습자들에게 제공되고, 상기 복수의 학습자들은 상기 베이스 코드에 기초하여 복수의 학습 프로그램 코드들(T_CDs)을 작성할 수 있다.
이 경우, 제1 전처리부(200)로부터 생성되는 복수의 학습 프로그램 코드들(T_CDs) 각각의 복수의 가독성 피처들(R_Fs) 및 복수의 품질 피처들(Q_Fs)에는 상기 베이스 코드에 의한 영향이 포함될 수 있다.
따라서, 도 5에 도시된 바와 같이, 제1 전처리부(200)는 도 3을 참조하여 상술한 방법과 동일한 방법으로 복수의 학습 프로그램 코드들(T_CDs) 각각에 대한 복수의 실행 피처들(E_Fs), 복수의 가독성 피처들(R_Fs), 및 복수의 품질 피처들(Q_Fs)을 결정한 후(단계 S110), 복수의 학습 프로그램 코드들(T_CDs) 각각의 상기 베이스 코드에 기초하여 복수의 가독성 피처들(R_Fs) 및 복수의 품질 피처들(Q_Fs)을 보정하는 동작을 더 수행할 수 있다(단계 S120 및 단계 S130).
구체적으로, 제1 전처리부(200)는 상기 복수의 프로그램 문제들 별로 상기 복수의 학습자들에게 제공된 상기 베이스 코드에 대한 복수의 가독성 피처들(R_Fs) 및 복수의 품질 피처들(Q_Fs)을 결정하고(단계 S120), 복수의 학습 프로그램 코드들(T_CDs) 각각의 복수의 가독성 피처들(R_Fs) 및 복수의 품질 피처들(Q_Fs)에서 복수의 학습 프로그램 코드들(T_CDs) 각각에 상응하는 상기 베이스 코드의 복수의 가독성 피처들(R_Fs) 및 복수의 품질 피처들(Q_Fs)을 차감하여 복수의 학습 프로그램 코드들(T_CDs) 각각의 복수의 가독성 피처들(R_Fs) 및 복수의 품질 피처들(Q_Fs)을 보정할 수 있다(단계 S130).
따라서 보정된 복수의 가독성 피처들(R_Fs) 및 복수의 품질 피처들(Q_Fs)은 상응하는 학습 프로그램 코드(T_CD)의 특징을 더욱 명확하게 반영할 수 있다.
이후, 제1 전처리부(200)는 복수의 학습 프로그램 코드들(T_CDs) 각각의 복수의 실행 피처들(E_Fs), 보정된 복수의 가독성 피처들(R_Fs), 및 보정된 복수의 품질 피처들(Q_Fs)을 제1 머신 러닝 모듈(300)에 제공하고, 제1 머신 러닝 모듈(300)은 복수의 학습 프로그램 코드들(T_CDs) 각각의 복수의 실행 피처들(E_Fs), 보정된 복수의 가독성 피처들(R_Fs), 및 보정된 복수의 품질 피처들(Q_Fs)을 제1 내지 제n 레벨들(LV1~LVn) 중의 하나로 분류하는 학습을 수행하여 상기 프로그래밍 레벨 추정 모델을 결정할 수 있다(단계 S140).
다시 도 1 및 2를 참조하면, 인공지능 기반의 프로그램 코드 평가 시스템(10)이 제1 전처리부(200) 및 제1 머신 러닝 모듈(300)을 통해 상기 프로그래밍 레벨 추정 모델을 생성한 후, 제2 전처리부(400)는 평가 대상에 상응하는 평가 프로그램 코드(E_CD)를 수신할 수 있다.
제2 전처리부(400)는 평가 프로그램 코드(E_CD)의 특징들을 분석하여 평가 프로그램 코드(E_CD)에 대한 복수의 실행 평가 피처들(EE_Fs), 복수의 가독성 평가 피처들(RE_Fs), 및 복수의 품질 평가 피처들(QE_Fs)을 결정할 수 있다(단계 S200).
일 실시예에 있어서, 제2 전처리부(400)는 도 3을 참조하여 상술한 제1 전처리부(200)의 동작과 동일한 동작을 수행하여 평가 프로그램 코드(E_CD)에 대한 복수의 실행 평가 피처들(EE_Fs), 복수의 가독성 평가 피처들(RE_Fs), 및 복수의 품질 평가 피처들(QE_Fs)을 결정할 수 있다.
따라서 평가 프로그램 코드(E_CD)에 대한 복수의 실행 평가 피처들(EE_Fs), 복수의 가독성 평가 피처들(RE_Fs), 및 복수의 품질 평가 피처들(QE_Fs)은 학습 프로그램 코드(T_CD)에 대한 복수의 실행 피처들(E_Fs), 복수의 가독성 피처들(R_Fs), 및 복수의 품질 피처들(Q_Fs)에 각각 대응될 수 있다.
일 실시예에 있어서, 제2 전처리부(400)는 평가 프로그램 코드(E_CD)에 대응되는 프로그램 문제에 대한 복수의 테스트 케이스들 및 상기 복수의 테스트 케이스들에 대한 정답을 평가 프로그램 코드(E_CD)와 함께 외부로부터 수신할 수 있다.
이 경우, 제2 전처리부(400)는 평가 프로그램 코드(E_CD)를 상기 복수의 테스트 케이스들에 대해 실행시켜 복수의 실행 평가 피처들(EE_Fs)에 포함되는 상기 점수 피처 및 상기 실행시간 피처를 결정할 수 있다.
다른 실시예에 있어서, 제2 전처리부(400)는 평가 프로그램 코드(E_CD)에 대한 상기 점수 피처 및 상기 실행시간 피처를 외부로부터 수신할 수도 있다.
한편, 실시예에 따라서, 제2 전처리부(400)는 평가 프로그램 코드(E_CD)에 상응하는 프로그램 문제의 난이도 레벨(DIFF_L)을 더 수신할 수도 있다.
이 경우, 제2 전처리부(400)는 외부로부터 수신되는 난이도 레벨(DIFF_L)을 복수의 실행 평가 피처들(EE_Fs)에 포함되는 상기 난이도 피처로 결정할 수 있다.
제2 전처리부(400)는 평가 프로그램 코드(E_CD)에 대해 결정된 복수의 실행 평가 피처들(EE_Fs), 복수의 가독성 평가 피처들(RE_Fs), 및 복수의 품질 평가 피처들(QE_Fs)을 제1 머신 러닝 모듈(300)에 제공할 수 있다.
제1 머신 러닝 모듈(300)은 상기 프로그래밍 레벨 추정 모델과 평가 프로그램 코드(E_CD)의 복수의 실행 평가 피처들(EE_Fs), 복수의 가독성 평가 피처들(RE_Fs), 및 복수의 품질 평가 피처들(QE_Fs)에 기초하여 평가 프로그램 코드(E_CD)의 레벨을 결정할 수 있다(단계 S300).
일 실시예에 있어서, 제1 머신 러닝 모듈(300)은 상기 프로그래밍 레벨 추정 모델을 사용하여 평가 프로그램 코드(E_CD)의 복수의 실행 평가 피처들(EE_Fs), 복수의 가독성 평가 피처들(RE_Fs), 및 복수의 품질 평가 피처들(QE_Fs)을 제1 내지 제n 레벨들(LV1~LVn) 중의 하나로 분류하여 상기 분류된 레벨을 평가 프로그램 코드(E_CD)의 레벨로 결정할 수 있다.
예를 들어, 제1 머신 러닝 모듈(300)은 평가 프로그램 코드(E_CD)의 복수의 실행 평가 피처들(EE_Fs), 복수의 가독성 평가 피처들(RE_Fs), 및 복수의 품질 평가 피처들(QE_Fs)을 상기 프로그래밍 레벨 추정 모델에 입력한 후, 상기 프로그래밍 레벨 추정 모델로부터 출력되는 결과에 기초하여 평가 프로그램 코드(E_CD)의 레벨을 제1 내지 제n 레벨들(LV1~LVn) 중의 하나로 결정할 수 있다.
도 1 내지 5를 참조하여 상술한 바와 같이, 본 발명의 실시예들에 따른 인공지능 기반의 프로그램 코드 평가 시스템(10) 및 인공지능 기반의 프로그램 코드 평가 방법은 프로그램 코드를 다방면으로 분석하여 프로그램 코드의 실행과 관련되는 복수의 실행 피처들(E_Fs), 프로그램 코드의 가독성과 관련되는 복수의 가독성 피처들(R_Fs), 및 프로그램 코드의 품질과 관련되는 복수의 품질 피처들(Q_Fs)을 결정하고, 복수의 실행 피처들(E_Fs), 복수의 가독성 피처들(R_Fs), 및 복수의 품질 피처들(Q_Fs)에 기초하여 프로그램 코드의 레벨을 결정하므로, 프로그램 코드를 다면적으로 평가할 수 있다.
또한, 본 발명의 실시예들에 따른 인공지능 기반의 프로그램 코드 평가 시스템(10) 및 인공지능 기반의 프로그램 코드 평가 방법은 제1 머신 러닝 모듈(300)을 통해 학습된 상기 프로그래밍 레벨 추정 모델을 사용하여 프로그램 코드를 평가하므로, 평가의 속도를 향상시키면서도 평가의 일관성을 유지할 수 있다.
도 6은 본 발명의 다른 실시예에 따른 인공지능 기반의 프로그램 코드 평가 시스템을 나타내는 도면이다.
도 6을 참조하면, 인공지능 기반의 프로그램 코드 평가 시스템(20)은 학습 데이터 데이터베이스(TRAINING DATA DB)(100), 제1 전처리부(PREPROCESSOR1)(200), 제1 머신 러닝 모듈(MACHINE LEARNING MODULE1)(300), 제2 전처리부(PREPROCESSOR2)(400), 제3 전처리부(PREPROCESSOR3)(500), 제2 머신 러닝 모듈(MACHINE LEARNING MODULE2)(600), 및 제4 전처리부(PREPROCESSOR4)(700)를 포함할 수 있다.
도 6에 도시된 인공지능 기반의 프로그램 코드 평가 시스템(20)은 도 1에 도시된 인공지능 기반의 프로그램 코드 평가 시스템(10)에서 제3 전처리부(500), 제2 머신 러닝 모듈(600), 및 제4 전처리부(700)를 더 포함하여 구성될 수 있다.
도 7은 본 발명의 다른 실시예에 따른 인공지능 기반의 프로그램 코드 평가 방법을 나타내는 순서도이다.
도 7에 도시된 인공지능 기반의 프로그램 코드 평가 방법은 도 2에 도시된 인공지능 기반의 프로그램 코드 평가 방법에서 일부 단계들(S400, S500, S600)을 더 포함하여 구성될 수 있다.
도 7에 도시된 인공지능 기반의 프로그램 코드 평가 방법은 도 6의 인공지능 기반의 프로그램 코드 평가 시스템(20)을 통해 수행될 수 있다.
도 6의 인공지능 기반의 프로그램 코드 평가 시스템(20)에 포함되는 학습 데이터 데이터베이스(100), 제1 전처리부(200), 제1 머신 러닝 모듈(300), 및 제2 전처리부(400)의 구성 및 동작은 인공지능 기반의 프로그램 코드 평가 시스템(10)에 포함되는 학습 데이터 데이터베이스(100), 제1 전처리부(200), 제1 머신 러닝 모듈(300), 및 제2 전처리부(400)의 구성 및 동작과 동일하다.
인공지능 기반의 프로그램 코드 평가 시스템(10)에 포함되는 학습 데이터 데이터베이스(100), 제1 전처리부(200), 제1 머신 러닝 모듈(300), 및 제2 전처리부(400)의 구성 및 동작(단계 S100, S200, S300)에 대해서는 도 1 내지 5를 참조하여 상술하였으므로, 여기서는 인공지능 기반의 프로그램 코드 평가 시스템(20)에 포함되는 학습 데이터 데이터베이스(100), 제1 전처리부(200), 제1 머신 러닝 모듈(300), 및 제2 전처리부(400)의 구성 및 동작(단계 S100, S200, S300)에 대한 중복되는 설명은 생략하고, 인공지능 기반의 프로그램 코드 평가 시스템(20)에 포함되는 제3 전처리부(500), 제2 머신 러닝 모듈(600), 및 제4 전처리부(700)의 구성 및 동작(단계 S400, S500, S600)에 대해서만 상세히 설명한다.
일반적으로, 주어진 모든 테스트 케이스들에 대해 정답을 출력하여 정확성 측면에서 만점인 프로그램 코드라 할지라도 효율성과 재사용성을 고려하지 않고 정답만을 맞추기 위한 목적으로 작성된 프로그램 코드는 좋은 코드라고 할 수 없다.
도 6에 도시된 인공지능 기반의 프로그램 코드 평가 시스템(20) 및 도 7에 도시된 인공지능 기반의 프로그램 코드 평가 방법은 특정 프로그램 코드의 복잡도가 동일한 프로그램 문제에 대해 다른 학습자들에 의해 작성된 프로그램 코드들의 평균적인 복잡도보다 월등히 높은지 여부에 기초하여 상기 특정 프로그램 코드가 정상 코드인지 비정상 코드인지 여부를 판단할 수 있다.
구체적으로, 도 6 및 7을 참조하면, 제3 전처리부(500)는 제1 전처리부(200)로부터 복수의 학습 프로그램 코드들(T_CDs) 각각의 복수의 실행 피처들(E_Fs), 복수의 가독성 피처들(R_Fs), 및 복수의 품질 피처들(Q_Fs)을 수신할 수 있다.
제3 전처리부(500)는 복수의 학습 프로그램 코드들(T_CDs) 중에서 복수의 실행 피처들(E_Fs)에 포함되는 상기 점수 피처의 값이 최대값을 갖는 학습 프로그램 코드들(T_CDs)을 만점 학습 프로그램 코드들로 추출할 수 있다(단계 S400).
이후, 제3 전처리부(500) 및 제2 머신 러닝 모듈(600)은 상기 만점 학습 프로그램 코드들 각각의 복수의 실행 피처들(E_Fs), 복수의 가독성 피처들(R_Fs), 및 복수의 품질 피처들(Q_Fs)을 사용하여 프로그램 코드의 비정상 여부를 추정하는 비정상 코드 탐지 모델을 생성할 수 있다(단계 S500).
도 8은 도 7의 비정상 코드 탐지 모델을 생성하는 단계(S500)의 일 예를 나타내는 순서도이다.
도 8을 참조하면, 제3 전처리부(500)는 상기 만점 학습 프로그램 코드들 각각의 복수의 품질 피처들(Q_Fs) 중에서 코드의 복잡성과 관련되는 품질 피처를 제외한 나머지 품질 피처들을 복수의 수정 품질 피처들(MQ_Fs)로 결정할 수 있다(단계 S510).
예를 들어, 제3 전처리부(500)는 상기 만점 학습 프로그램 코드들 각각의 복수의 품질 피처들(Q_Fs) 중에서 Cyclomatic complexity 및 Halstead's metrics에 상응하는 품질 피처들을 제외한 나머지 품질 피처들을 복수의 수정 품질 피처들(MQ_Fs)로 결정할 수 있다.
또한, 제3 전처리부(500)는 상기 만점 학습 프로그램 코드들 중에서 동일한 프로그램 문제에 대해 작성된 만점 학습 프로그램 코드들에 상응하는 상기 제외된 품질 피처들의 평균을 상기 동일한 프로그램 문제의 평균 복잡도로 결정할 수 있다(단계 S520).
이후, 제3 전처리부(500)는 상기 만점 학습 프로그램 코드들 각각에 대해, 상응하는 만점 학습 프로그램 코드의 상기 제외된 품질 피처의 값과 상기 상응하는 만점 학습 프로그램 코드에 대응되는 프로그램 문제의 상기 평균 복잡도를 비교하여 상기 상응하는 만점 학습 프로그램 코드의 비정상 플래그(ANF)를 결정할 수 있다(단계 S530).
예를 들어, 상응하는 만점 학습 프로그램 코드의 상기 제외된 품질 피처의 값이 상기 상응하는 만점 학습 프로그램 코드에 대응되는 프로그램 문제의 상기 평균 복잡도보다 일정 비율 이상 큰 경우, 상기 상응하는 만점 학습 프로그램 코드를 비정상 코드로 분류하기 위해 상기 상응하는 만점 학습 프로그램 코드의 비정상 플래그(ANF)를 제1 값으로 결정하고, 상기 상응하는 만점 학습 프로그램 코드의 상기 제외된 품질 피처의 값이 상기 상응하는 만점 학습 프로그램 코드에 대응되는 프로그램 문제의 상기 평균 복잡도보다 일정 비율 이상 크지 않은 경우, 상기 상응하는 만점 학습 프로그램 코드를 정상 코드로 분류하기 위해 상기 상응하는 만점 학습 프로그램 코드의 비정상 플래그(ANF)를 제2 값으로 결정할 수 있다.
이후, 제3 전처리부(500)는 상기 만점 학습 프로그램 코드들 각각의 복수의 실행 피처들(E_Fs), 복수의 가독성 피처들(R_Fs), 복수의 수정 품질 피처들(MQ_Fs), 및 비정상 플래그(ANF)를 제2 머신 러닝 모듈(600)에 제공할 수 있다.
일 실시예에 있어서, 제2 머신 러닝 모듈(600)은 제2 인공 신경망을 포함할 수 있다.
이 경우, 제2 머신 러닝 모듈(600)은 상기 제2 인공 신경망이 상기 만점 학습 프로그램 코드들 각각의 비정상 플래그(ANF)에 기초하여 상기 만점 학습 프로그램 코드들 각각의 복수의 실행 피처들(E_Fs), 복수의 가독성 피처들(R_Fs), 및 복수의 수정 품질 피처들(MQ_Fs)을 정상 코드(NM) 및 비정상 코드(ANM) 중의 하나로 분류하도록 상기 제2 인공 신경망을 학습시킬 수 있다(단계 S540).
예를 들어, 제2 머신 러닝 모듈(600)은 비정상 플래그(ANF)가 상기 제1 값인 경우, 상기 제2 인공 신경망이 복수의 실행 피처들(E_Fs), 복수의 가독성 피처들(R_Fs), 및 복수의 수정 품질 피처들(MQ_Fs)을 비정상 코드(ANM)로 분류하고, 비정상 플래그(ANF)가 상기 제2 값인 경우, 상기 제2 인공 신경망이 복수의 실행 피처들(E_Fs), 복수의 가독성 피처들(R_Fs), 및 복수의 수정 품질 피처들(MQ_Fs)을 정상 코드(NM)로 분류하도록 상기 제2 인공 신경망을 학습시킬 수 있다.
제2 머신 러닝 모듈(600)은 상기 만점 학습 프로그램 코드들에 상응하는 복수의 실행 피처들(E_Fs), 복수의 가독성 피처들(R_Fs), 및 복수의 수정 품질 피처들(MQ_Fs)을 사용하여 상기 학습을 완료한 후, 상기 학습이 완료된 제2 인공 신경망을 상기 비정상 코드 탐지 모델로 결정할 수 있다(단계 S550).
다시 도 6 및 7을 참조하면, 제4 전처리부(700)는 제2 전처리부(400)로부터 평가 프로그램 코드(E_CD)에 대한 복수의 실행 평가 피처들(EE_Fs), 복수의 가독성 평가 피처들(RE_Fs), 및 복수의 품질 평가 피처들(QE_Fs)을 수신할 수 있다.
이후, 제4 전처리부(700) 및 제2 머신 러닝 모듈(600)은 상기 비정상 코드 탐지 모델과 평가 프로그램 코드(E_CD)의 복수의 실행 평가 피처들(EE_Fs), 복수의 가독성 평가 피처들(RE_Fs), 및 복수의 품질 평가 피처들(QE_Fs)에 기초하여 평가 프로그램 코드(E_CD)가 정상 코드(NM)인지 비정상 코드(ANM)인지 여부를 결정할 수 있다(단계 S600).
일 실시예에 있어서, 제4 전처리부(700)는 제2 전처리부(400)로부터 수신되는 평가 프로그램 코드(E_CD)의 복수의 품질 평가 피처들(QE_Fs) 중에서 코드의 복잡성과 관련되는 품질 피처를 제외한 나머지 품질 피처들을 복수의 수정 품질 평가 피처들(MQE_Fs)로 결정할 수 있다.
예를 들어, 제4 전처리부(700)는 평가 프로그램 코드(E_CD)의 복수의 품질 평가 피처들(QE_Fs) 중에서 Cyclomatic complexity 및 Halstead's metrics에 상응하는 품질 피처들을 제외한 나머지 품질 피처들을 복수의 수정 품질 평가 피처들(MQE_Fs)로 결정할 수 있다.
이후, 제4 전처리부(700)는 평가 프로그램 코드(E_CD)의 복수의 실행 평가 피처들(EE_Fs), 복수의 가독성 평가 피처들(RE_Fs), 및 복수의 수정 품질 평가 피처들(MQE_Fs)을 제2 머신 러닝 모듈(600)에 제공할 수 있다.
제2 머신 러닝 모듈(600)은 상기 비정상 코드 탐지 모델과 평가 프로그램 코드(E_CD)의 복수의 실행 평가 피처들(EE_Fs), 복수의 가독성 평가 피처들(RE_Fs), 및 복수의 수정 품질 평가 피처들(MQE_Fs)에 기초하여 평가 프로그램 코드(E_CD)가 정상 코드(NM)인지 비정상 코드(ANM)인지 여부를 결정할 수 있다.
예를 들어, 제2 머신 러닝 모듈(600)은 평가 프로그램 코드(E_CD)의 복수의 실행 평가 피처들(EE_Fs), 복수의 가독성 평가 피처들(RE_Fs), 및 복수의 수정 품질 평가 피처들(MQE_Fs)을 상기 비정상 코드 탐지 모델에 입력한 후, 상기 비정상 코드 탐지 모델로부터 출력되는 결과에 기초하여 평가 프로그램 코드(E_CD)가 정상 코드(NM)인지 비정상 코드(ANM)인지 여부를 결정할 수 있다.
도 6 내지 7을 참조하여 상술한 바와 같이, 본 발명의 실시예들에 따른 인공지능 기반의 프로그램 코드 평가 시스템(20) 및 인공지능 기반의 프로그램 코드 평가 방법은 머신 러닝 기반으로 프로그램 코드를 다방면으로 평가하여 상기 프로그램 코드의 레벨을 제공할 뿐만 아니라, 상기 프로그램 코드의 복잡도가 동일한 프로그램 문제에 대해 다른 학습자들에 의해 작성된 프로그램 코드들의 평균적인 복잡도보다 월등히 높은지 여부에 기초하여 상기 특정 프로그램 코드가 정상 코드인지 또는 효율성과 재사용성을 고려하지 않고 정답만을 맞추기 위한 목적으로 작성된 비정상 코드인지 여부도 제공할 수 있다.
따라서 본 발명의 실시예들에 따른 인공지능 기반의 프로그램 코드 평가 시스템(20) 및 인공지능 기반의 프로그램 코드 평가 방법은 프로그램 코드에 대해 보다 정확하고 상세한 평가 결과를 제공할 수 있다.
본 발명은 컴퓨터 프로그램 코드를 다면적으로 평가하면서도 평가의 속도를 향상시키고 평가의 일관성을 유지하는 데에 유용하게 이용될 수 있다.
상술한 바와 같이, 본 발명의 바람직한 실시예를 참조하여 설명하였지만 해당 기술 분야에서 통상의 지식을 가진 자라면 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
10, 20: 프로그램 코드 평가 시스템 100: 학습 데이터 데이터베이스
200: 제1 전처리부 300: 제1 머신 러닝 모듈
400: 제2 전처리부 500: 제3 전처리부
600: 제2 머신 러닝 모듈 700: 제4 전처리부

Claims (21)

  1. 인공지능 기반의 프로그램 코드 평가 시스템에 의해 수행되는 인공지능 기반의 프로그램 코드 평가 방법으로서,
    제1 전처리부가 복수의 학습자들이 복수의 프로그램 문제들에 대해 작성한 복수의 학습 프로그램 코드들 각각에 대해 상기 학습 프로그램 코드의 실행(execution)과 관련되는 복수의 실행 피처들(features), 상기 학습 프로그램 코드의 품질(quality)과 관련되는 복수의 품질 피처들, 및 상기 학습 프로그램 코드의 가독성(readability)과 관련되는 복수의 가독성 피처들을 결정하는 단계;
    제1 머신 러닝(machine learning) 모듈이 상기 복수의 학습 프로그램 코드들 각각의 상기 복수의 실행 피처들, 상기 복수의 품질 피처들, 및 상기 복수의 가독성 피처들을 제1 내지 제n(n은 양의 정수) 레벨들 중의 하나로 분류하는 학습을 수행하여 프로그램 코드의 레벨을 추정하는 프로그래밍 레벨 추정 모델을 생성하는 단계;
    제2 전처리부가 평가 프로그램 코드에 대해 상기 복수의 실행 피처들, 상기 복수의 품질 피처들, 및 상기 복수의 가독성 피처들에 각각 대응되는 복수의 실행 평가 피처들, 복수의 품질 평가 피처들, 및 복수의 가독성 평가 피처들을 결정하는 단계; 및
    상기 제1 머신 러닝 모듈이 상기 프로그래밍 레벨 추정 모델과 상기 평가 프로그램 코드의 상기 복수의 실행 평가 피처들, 상기 복수의 품질 평가 피처들, 및 상기 복수의 가독성 평가 피처들에 기초하여 상기 평가 프로그램 코드의 레벨을 결정하는 단계를 포함하고,
    상기 복수의 프로그램 문제들 별로 복수의 테스트 케이스들 및 상기 복수의 테스트 케이스들 각각에 대한 정답이 미리 정해지고,
    상기 복수의 학습 프로그램 코드들 각각의 상기 복수의 실행 피처들은, 상응하는 학습 프로그램 코드가 상기 복수의 테스트 케이스들에 대해 실행되어 출력되는 복수의 출력값들 중에서 정답의 개수에 기초하여 결정되는 점수 피처를 포함하고,
    제3 전처리부가 상기 복수의 학습 프로그램 코드들 중에서 상기 점수 피처의 값이 최대값을 갖는 학습 프로그램 코드들을 만점 학습 프로그램 코드들로 추출하는 단계;
    상기 제3 전처리부 및 제2 머신 러닝 모듈이 상기 만점 학습 프로그램 코드들 각각의 상기 복수의 실행 피처들, 상기 복수의 품질 피처들, 및 상기 복수의 가독성 피처들을 사용하여 프로그램 코드의 비정상 여부를 추정하는 비정상 코드 탐지 모델을 생성하는 단계; 및
    제4 전처리부 및 상기 제2 머신 러닝 모듈이 상기 비정상 코드 탐지 모델과 상기 평가 프로그램 코드의 상기 복수의 실행 평가 피처들, 상기 복수의 품질 평가 피처들, 및 상기 복수의 가독성 평가 피처들에 기초하여 상기 평가 프로그램 코드의 비정상 여부를 결정하는 단계를 더 포함하는 인공지능 기반의 프로그램 코드 평가 방법.
  2. 삭제
  3. 삭제
  4. 제1 항에 있어서, 상기 제1 머신 러닝 모듈이 상기 복수의 학습 프로그램 코드들 각각의 상기 복수의 실행 피처들, 상기 복수의 가독성 피처들, 및 상기 복수의 품질 피처들을 상기 제1 내지 제n 레벨들 중의 하나로 분류하는 학습을 수행하여 상기 프로그래밍 레벨 추정 모델을 결정하는 단계는,
    상기 제1 머신 러닝 모듈에 포함되는 제1 인공 신경망이 상기 복수의 실행 피처들, 상기 복수의 가독성 피처들, 및 상기 복수의 품질 피처들에 상응하는 학습 프로그램 코드를 작성한 학습자의 프로그래밍 경력 기간에 기초하여 상기 복수의 실행 피처들, 상기 복수의 가독성 피처들, 및 상기 복수의 품질 피처들을 상기 제1 내지 제n 레벨들 중의 하나로 분류하도록 상기 제1 인공 신경망을 학습시키는 단계; 및
    상기 학습이 완료된 제1 인공 신경망을 상기 프로그래밍 레벨 추정 모델로 결정하는 단계를 포함하는 인공지능 기반의 프로그램 코드 평가 방법.
  5. 제4 항에 있어서, 상기 제1 인공 신경망이 상기 복수의 실행 피처들, 상기 복수의 가독성 피처들, 및 상기 복수의 품질 피처들에 상응하는 학습 프로그램 코드를 작성한 학습자의 상기 프로그래밍 경력 기간에 기초하여 상기 복수의 실행 피처들, 상기 복수의 가독성 피처들, 및 상기 복수의 품질 피처들을 상기 제1 내지 제n 레벨들 중의 하나로 분류하도록 상기 제1 인공 신경망을 학습시키는 단계는,
    프로그래밍 경력 기간을 1년 이상의 간격으로 제1 내지 제n 구간들로 구분하고, 상기 상응하는 학습 프로그램 코드를 작성한 학습자의 상기 프로그래밍 경력 기간이 제i(i는 n 이하의 양의 정수) 구간에 포함되는 경우, 상기 제1 인공 신경망이 상기 복수의 실행 피처들, 상기 복수의 가독성 피처들, 및 상기 복수의 품질 피처들을 제i 레벨로 분류하도록 상기 제1 인공 신경망을 학습시키는 단계를 포함하는 인공지능 기반의 프로그램 코드 평가 방법.
  6. 삭제
  7. 제1 항에 있어서, 상기 복수의 학습 프로그램 코드들 각각의 상기 복수의 실행 피처들은,
    상기 상응하는 학습 프로그램 코드가 상기 복수의 테스트 케이스들에 대해 실행되어 상기 복수의 출력값들을 출력하는 데에 소요되는 시간에 기초하여 결정되는 실행시간 피처, 및
    상기 상응하는 학습 프로그램 코드에 대응되는 프로그램 문제와 동일한 프로그램 문제에 대해 작성된 학습 프로그램 코드들의 상기 점수 피처들에 대한 통계값에 기초하여 결정되는 난이도 피처를 더 포함하는 인공지능 기반의 프로그램 코드 평가 방법.
  8. 제1 항에 있어서, 상기 복수의 학습 프로그램 코드들 각각의 상기 복수의 가독성 피처들은,
    상응하는 학습 프로그램 코드의 라인 당 평균 단어 수 및 단어 당 평균 음절 수에 기초하여 결정되는 제1 가독성 피처를 포함하는 인공지능 기반의 프로그램 코드 평가 방법.
  9. 제1 항에 있어서, 상기 복수의 학습 프로그램 코드들 각각의 상기 복수의 가독성 피처들은,
    상응하는 학습 프로그램 코드에 포함되는 단어들 중에서 3음절 이상 단어의 비율에 기초하여 결정되는 제2 가독성 피처를 포함하는 인공지능 기반의 프로그램 코드 평가 방법.
  10. 제1 항에 있어서, 상기 복수의 학습 프로그램 코드들 각각의 상기 복수의 가독성 피처들은,
    상응하는 학습 프로그램 코드에 포함되는 단어들 중에서 미리 정해진 표준 단어 리스트에 포함되지 않는 단어들의 비율에 기초하여 결정되는 제3 가독성 피처를 포함하는 인공지능 기반의 프로그램 코드 평가 방법.
  11. 제1 항에 있어서, 상기 복수의 학습 프로그램 코드들 각각의 상기 복수의 품질 피처들은,
    상응하는 학습 프로그램 코드에 구현된 함수들에 포함되는 조건 분기점들의 개수에 기초하여 결정되는 제1 품질 피처를 포함하는 인공지능 기반의 프로그램 코드 평가 방법.
  12. 제1 항에 있어서, 상기 복수의 학습 프로그램 코드들 각각의 상기 복수의 품질 피처들은,
    상응하는 학습 프로그램 코드에 포함되는 라인들의 개수에 기초하여 결정되는 제2 품질 피처를 포함하는 인공지능 기반의 프로그램 코드 평가 방법.
  13. 제1 항에 있어서, 상기 복수의 학습 프로그램 코드들 각각의 상기 복수의 품질 피처들은,
    상응하는 학습 프로그램 코드에서 미리 정해진 특정 위치들에 삽입된 스페이스의 개수의 표준 편차에 기초하여 결정되는 제3 품질 피처를 포함하는 인공지능 기반의 프로그램 코드 평가 방법.
  14. 제13 항에 있어서, 상기 특정 위치들은,
    각 라인의 시작 지점, 각 라인의 종료 지점, 함수의 시작을 나타내는 괄호의 직후, 및 함수의 종료를 나타내는 괄호의 직전 중의 적어도 하나를 포함하는 인공지능 기반의 프로그램 코드 평가 방법.
  15. 제1 항에 있어서, 상기 복수의 학습 프로그램 코드들 각각의 상기 복수의 품질 피처들은,
    상응하는 학습 프로그램 코드에 포함되는 주석들의 개수 및 상기 주석들 각각의 문자 개수에 기초하여 결정되는 제4 품질 피처를 포함하는 인공지능 기반의 프로그램 코드 평가 방법.
  16. 제1 항에 있어서, 상기 복수의 학습 프로그램 코드들 각각의 상기 복수의 품질 피처들은,
    상응하는 학습 프로그램 코드에 포함되는 비어 있는 조건문의 개수, 사용되지 않는 변수의 개수, 및 중복되는 조건 연산자의 개수에 기초하여 결정되는 제5 품질 피처를 포함하는 인공지능 기반의 프로그램 코드 평가 방법.
  17. 제1 항에 있어서,
    상기 제1 전처리부가 상기 복수의 학습자들이 상기 복수의 학습 프로그램 코드들을 작성할 때 상기 복수의 프로그램 문제들 별로 상기 복수의 학습자들에게 제공된 베이스 코드에 대해 상기 복수의 가독성 피처들 및 상기 복수의 품질 피처들을 결정하는 단계; 및
    상기 제1 전처리부가 상기 복수의 학습 프로그램 코드들 각각의 상기 복수의 가독성 피처들 및 상기 복수의 품질 피처들에서 상기 복수의 학습 프로그램 코드들 각각에 상응하는 상기 베이스 코드의 상기 복수의 가독성 피처들 및 상기 복수의 품질 피처들을 차감하여 상기 복수의 학습 프로그램 코드들 각각의 상기 복수의 가독성 피처들 및 상기 복수의 품질 피처들을 보정하는 단계를 더 포함하는 인공지능 기반의 프로그램 코드 평가 방법.
  18. 삭제
  19. 제1 항에 있어서, 상기 제3 전처리부 및 상기 제2 머신 러닝 모듈이 상기 만점 학습 프로그램 코드들 각각의 상기 복수의 실행 피처들, 상기 복수의 가독성 피처들, 및 상기 복수의 품질 피처들을 사용하여 프로그램 코드의 비정상 여부를 추정하는 상기 비정상 코드 탐지 모델을 생성하는 단계는,
    상기 제3 전처리부가 상기 만점 학습 프로그램 코드들 각각의 상기 복수의 품질 피처들 중에서 코드의 복잡성과 관련되는 품질 피처를 제외한 나머지 품질 피처들을 복수의 수정 품질 피처들로 결정하는 단계;
    상기 제3 전처리부가 상기 만점 학습 프로그램 코드들 중에서 동일한 프로그램 문제에 대해 작성된 만점 학습 프로그램 코드들에 상응하는 상기 제외된 품질 피처들의 평균을 상기 동일한 프로그램 문제의 평균 복잡도로 결정하는 단계;
    상기 제3 전처리부가 상응하는 만점 학습 프로그램 코드의 상기 제외된 품질 피처의 값과 상기 상응하는 만점 학습 프로그램 코드에 대응되는 프로그램 문제의 상기 평균 복잡도를 비교하여 상기 상응하는 만점 학습 프로그램 코드의 비정상 플래그를 결정하는 단계;
    상기 제2 머신 러닝 모듈이 상기 제2 머신 러닝 모듈에 포함되는 제2 인공 신경망이 상기 만점 학습 프로그램 코드들 각각의 상기 비정상 플래그에 기초하여 상기 만점 학습 프로그램 코드들 각각의 상기 복수의 실행 피처들, 상기 복수의 가독성 피처들, 및 상기 복수의 수정 품질 피처들을 정상 코드 및 비정상 코드 중의 하나로 분류하도록 상기 제2 인공 신경망을 학습시키는 단계; 및
    상기 제2 머신 러닝 모듈이 상기 학습이 완료된 제2 인공 신경망을 상기 비정상 코드 탐지 모델로 결정하는 단계를 포함하는 인공지능 기반의 프로그램 코드 평가 방법.
  20. 제19 항에 있어서, 상기 제4 전처리부 및 상기 제2 머신 러닝 모듈이 상기 비정상 코드 탐지 모델과 상기 평가 프로그램 코드의 상기 복수의 실행 평가 피처들, 상기 복수의 가독성 평가 피처들, 및 상기 복수의 품질 평가 피처들에 기초하여 상기 평가 프로그램 코드의 비정상 여부를 결정하는 단계는,
    상기 제4 전처리부가 상기 평가 프로그램 코드의 상기 복수의 품질 평가 피처들 중에서 코드의 복잡성과 관련되는 품질 피처를 제외한 나머지 품질 평가 피처들을 복수의 수정 품질 평가 피처들로 결정하는 단계;
    상기 제2 머신 러닝 모듈이 상기 평가 프로그램 코드의 상기 복수의 실행 평가 피처들, 상기 복수의 가독성 평가 피처들, 및 상기 복수의 수정 품질 평가 피처들을 상기 비정상 코드 탐지 모델에 입력하는 단계; 및
    상기 제2 머신 러닝 모듈이 상기 비정상 코드 탐지 모델로부터 출력되는 결과에 기초하여 상기 평가 프로그램 코드가 정상 코드인지 비정상 코드인지 여부를 결정하는 단계를 포함하는 인공지능 기반의 프로그램 코드 평가 방법.
  21. 복수의 학습자들이 복수의 프로그램 문제들에 대해 작성한 복수의 학습 프로그램 코드들 각각에 대해 상기 학습 프로그램 코드의 실행과 관련되는 복수의 실행 피처들, 상기 학습 프로그램 코드의 품질과 관련되는 복수의 품질 피처들, 및 상기 학습 프로그램 코드의 가독성과 관련되는 복수의 가독성 피처들을 결정하는 제1 전처리부;
    평가 프로그램 코드에 대해 상기 복수의 실행 피처들, 상기 복수의 품질 피처들, 및 상기 복수의 가독성 피처들에 각각 대응되는 복수의 실행 평가 피처들, 복수의 품질 평가 피처들, 및 복수의 가독성 평가 피처들을 결정하는 제2 전처리부; 및
    상기 복수의 학습 프로그램 코드들 각각의 상기 복수의 실행 피처들, 상기 복수의 품질 피처들, 및 상기 복수의 가독성 피처들을 제1 내지 제n 레벨들 중의 하나로 분류하는 학습을 수행하여 프로그램 코드의 레벨을 추정하는 프로그래밍 레벨 추정 모델을 생성하고, 상기 프로그래밍 레벨 추정 모델을 사용하여 상기 평가 프로그램 코드의 상기 복수의 실행 평가 피처들, 상기 복수의 품질 평가 피처들, 및 상기 복수의 가독성 평가 피처들을 상기 제1 내지 제n 레벨들 중의 하나로 분류하여 상기 분류된 레벨을 상기 평가 프로그램 코드의 레벨로 결정하는 제1 머신 러닝 모듈을 포함하고,
    상기 복수의 프로그램 문제들 별로 복수의 테스트 케이스들 및 상기 복수의 테스트 케이스들 각각에 대한 정답이 미리 정해지고,
    상기 복수의 학습 프로그램 코드들 각각의 상기 복수의 실행 피처들은, 상응하는 학습 프로그램 코드가 상기 복수의 테스트 케이스들에 대해 실행되어 출력되는 복수의 출력값들 중에서 정답의 개수에 기초하여 결정되는 점수 피처를 포함하고,
    상기 복수의 학습 프로그램 코드들 중에서 상기 점수 피처의 값이 최대값을 갖는 학습 프로그램 코드들을 만점 학습 프로그램 코드들로 추출하고, 상기 만점 학습 프로그램 코드들 각각의 상기 복수의 품질 피처들 중에서 코드의 복잡성과 관련되는 품질 피처를 제외한 나머지 품질 피처들을 복수의 수정 품질 피처들로 결정하고, 상기 만점 학습 프로그램 코드들 중에서 동일한 프로그램 문제에 대해 작성된 만점 학습 프로그램 코드들에 상응하는 상기 제외된 품질 피처들의 평균을 상기 동일한 프로그램 문제의 평균 복잡도로 결정하고, 상응하는 만점 학습 프로그램 코드의 상기 제외된 품질 피처의 값과 상기 상응하는 만점 학습 프로그램 코드에 대응되는 프로그램 문제의 상기 평균 복잡도를 비교하여 상기 상응하는 만점 학습 프로그램 코드의 비정상 플래그를 결정하는 제3 전처리부;
    상기 평가 프로그램 코드의 상기 복수의 품질 평가 피처들 중에서 코드의 복잡성과 관련되는 품질 피처를 제외한 나머지 품질 평가 피처들을 복수의 수정 품질 평가 피처들로 결정하는 제4 전처리부; 및
    상기 만점 학습 프로그램 코드들 각각의 상기 비정상 플래그에 기초하여 상기 만점 학습 프로그램 코드들 각각의 상기 복수의 실행 피처들, 상기 복수의 가독성 피처들, 및 상기 복수의 수정 품질 피처들을 정상 코드 및 비정상 코드 중의 하나로 분류하는 학습을 수행하여 프로그램 코드의 비정상 여부를 추정하는 비정상 코드 탐지 모델을 생성하고, 상기 비정상 코드 탐지 모델과 상기 평가 프로그램 코드의 상기 복수의 실행 평가 피처들, 상기 복수의 가독성 평가 피처들, 및 상기 복수의 수정 품질 평가 피처들에 기초하여 상기 평가 프로그램 코드의 비정상 여부를 결정하는 제2 머신 러닝 모듈을 더 포함하는 인공지능 기반의 프로그램 코드 평가 시스템.
KR1020200068635A 2020-06-05 2020-06-05 인공지능 기반의 프로그램 코드 평가 시스템 및 방법 KR102235690B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020200068635A KR102235690B1 (ko) 2020-06-05 2020-06-05 인공지능 기반의 프로그램 코드 평가 시스템 및 방법
PCT/KR2021/006763 WO2021246742A1 (ko) 2020-06-05 2021-05-31 인공지능 기반의 프로그램 코드 평가 시스템 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200068635A KR102235690B1 (ko) 2020-06-05 2020-06-05 인공지능 기반의 프로그램 코드 평가 시스템 및 방법

Publications (1)

Publication Number Publication Date
KR102235690B1 true KR102235690B1 (ko) 2021-04-02

Family

ID=75466394

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200068635A KR102235690B1 (ko) 2020-06-05 2020-06-05 인공지능 기반의 프로그램 코드 평가 시스템 및 방법

Country Status (2)

Country Link
KR (1) KR102235690B1 (ko)
WO (1) WO2021246742A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021246742A1 (ko) * 2020-06-05 2021-12-09 주식회사 코딩로봇연구소 인공지능 기반의 프로그램 코드 평가 시스템 및 방법
KR102472715B1 (ko) * 2021-11-11 2022-12-01 주식회사 모비젠 데이터 품질 보정을 통해 로우데이터의 품질저해요소를 추정하는 방법 및 시스템

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115268860B (zh) * 2022-06-21 2023-04-28 北京浩泰思特科技有限公司 一种智能教学诊断方法及系统
CN114816963B (zh) * 2022-06-28 2022-09-20 南昌航空大学 嵌入式软件质量评估方法、系统、计算机及可读存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180136163A (ko) * 2017-06-14 2018-12-24 슈어소프트테크주식회사 소프트웨어 통합 품질 평가 방법 및 이를 실행하기 위한 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체
KR101963756B1 (ko) * 2018-11-19 2019-03-29 세종대학교산학협력단 소프트웨어 취약점 예측 모델 학습 장치 및 방법, 소프트웨어 취약점 분석 장치 및 방법
KR102013955B1 (ko) * 2018-05-30 2019-08-23 (주)미래융합정보기술 소프트웨어 전문가 실무교육과 평가를 위한 스마트 교육 시스템 및 그 서비스 제공 방법
KR102102418B1 (ko) * 2018-12-10 2020-04-20 주식회사 티포러스 인공지능 솔루션을 테스트하는 장치 및 방법

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102235690B1 (ko) * 2020-06-05 2021-04-02 주식회사 코딩로봇연구소 인공지능 기반의 프로그램 코드 평가 시스템 및 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180136163A (ko) * 2017-06-14 2018-12-24 슈어소프트테크주식회사 소프트웨어 통합 품질 평가 방법 및 이를 실행하기 위한 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체
KR102013955B1 (ko) * 2018-05-30 2019-08-23 (주)미래융합정보기술 소프트웨어 전문가 실무교육과 평가를 위한 스마트 교육 시스템 및 그 서비스 제공 방법
KR101963756B1 (ko) * 2018-11-19 2019-03-29 세종대학교산학협력단 소프트웨어 취약점 예측 모델 학습 장치 및 방법, 소프트웨어 취약점 분석 장치 및 방법
KR102102418B1 (ko) * 2018-12-10 2020-04-20 주식회사 티포러스 인공지능 솔루션을 테스트하는 장치 및 방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021246742A1 (ko) * 2020-06-05 2021-12-09 주식회사 코딩로봇연구소 인공지능 기반의 프로그램 코드 평가 시스템 및 방법
KR102472715B1 (ko) * 2021-11-11 2022-12-01 주식회사 모비젠 데이터 품질 보정을 통해 로우데이터의 품질저해요소를 추정하는 방법 및 시스템

Also Published As

Publication number Publication date
WO2021246742A1 (ko) 2021-12-09

Similar Documents

Publication Publication Date Title
KR102235690B1 (ko) 인공지능 기반의 프로그램 코드 평가 시스템 및 방법
Vogelsang et al. Requirements engineering for machine learning: Perspectives from data scientists
Winkler et al. Automatic classification of requirements based on convolutional neural networks
US8312440B2 (en) Method, computer program product, and hardware product for providing program individuality analysis for source code programs
US7685082B1 (en) System and method for identifying, prioritizing and encapsulating errors in accounting data
US11790256B2 (en) Analyzing test result failures using artificial intelligence models
US20230032058A1 (en) Ann-based program testing method, testing system and application
US20060167866A1 (en) Automatic inspection tool
US20160103754A1 (en) Method and system for grading a computer program
US11385988B2 (en) System and method to improve results of a static code analysis based on the probability of a true error
US20210011714A1 (en) System, method and computer-accessible medium for predicting a team's pull request comments to address program code concerns before submission
CN114239589A (zh) 语义理解模型的鲁棒性评估方法、装置及计算机设备
US6889219B2 (en) Method of tuning a decision network and a decision tree model
Shynkarenko et al. Application of constructive modeling and process mining approaches to the study of source code development in software engineering courses
Zaman et al. Prefix imputation of orphan events in event stream processing
CN113821251B (zh) 基于人工智能的代码优化方法、装置、设备和存储介质
Nguyen et al. Exploring metrics for the analysis of code submissions in an introductory data science course
CN115454841A (zh) 基于程序测试和分析的多维度代码质量综合评价方法及系统
Ferlin et al. An automated method for the study of human reliability in railway supervision systems
Hoerl et al. What Managers Should Ask About AI Models and Data Sets
YURTKAN et al. Student Success Prediction Using Feedforward Neural Networks
Ping Latent variable interactions and quadratics
Alexandra-Cristina et al. Material survey on source code plagiarism detection in programming courses
Davis A framework for pragmatic reliability
Takabayashi et al. The detection of fault-prone program using a neural network

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant