전국의 컴퓨터과학과 학우들이 한 자리에 모여 직접 개발한 프로그램을 소개하는 ‘한마당대회 & 소프트웨어경진대회’가 8월 26일 대전 KT인재개발원에서 열렸다. 팬데믹 이후 오프라인 대회는 4년 만이다. 치열한 예선을 통과한 10개 팀이 강의에서 배운 최신 기술과 지식을 활용해 프로그램을 개발한 시연 영상까지 발표해 눈길을 끌었다. 발표자들은 어떤 문제의식으로 프로그램을 기획하게 됐는지, 또 실제 구현 과정에서 겪은 어려움을 추후 어떻게 개선할 것인지 등을 발표했다. 개별 발표가 끝나면 바로 교수진과 객석의 학우들이 궁금한 점을 질문했고, 답변이 오가는 가운데 교수진의 날카로운 코멘트가 더해져 현장에 모인 학우들이 지식과 최신 기술을 공유했다. 팬데믹 이후 첫 오프라인으로 열린 소프트웨어 경진대회 수상작을 소개한다(대상, 금상, 은상, 동상·인기상 가나다순).
대전=윤상민 기자 cinemonde@knou.ac.kr

대상 컴퓨터과학과 학생의 비밀노트
전상훈 학우 외 1(서울 남부)
“대상 받을 줄 정말 몰랐는데 감사하다. 챗GPT를 실제로 접목해 개발하면서 AI의 발전에 놀랐으며, 다른 프로그램도 개발하고 싶은 열망이 생겼다. 더욱 정진하겠다.”
2023년 전 세계인을 놀라게 한 AI프로그램 챗GPT를 학업에 도움이 되는 프로그램으로 접목해 대상의 영광을 안았다. 학우들이 평소 수업이나 프로그래밍을 하면서 겪는 에러나 고충을 해결하기 위해 만든 프로그램이다. 공부하며 필요한 SQL 관련 문제나 오류 해결, 함수 생성과 같은 과제를 쉽게 해결할 수 있도록 했다. ‘컴퓨터과학과 학생의 비밀노트’라는 이름에 맞게 @knou.ac.kr 도메인의 이메일 인증을 통과한 사용자만 이용 가능하도록 인증기능도 추가했다.
대표적인 기능은 △오류해결사 △쿼리메이커 △함수메이커 △쿼리메이커_advance이다. 요구사항을 기입하고 이에 대한 해답을 챗GPT API를 통해 받는 방식으로 구현했다. 특히 쿼리메이커_advance의 경우, 질의를 통해 얻은 SQL문을 토대로 실제 DB를 조회해 확보한 결과를 직접 확인 가능하도록 구현했는데, 이를 통해 더욱 쉽게 SQL문을 작성할 수 있게 됐다.
프로그램 실행을 위해서는 로그인을 먼저 해야 하고, ID/PW 입력 및 조회여부를 통해 회원가입을 하도록 했다. 이메일 인증을 통해 로그인을 하면 화면으로 넘어가고, 각 카테고리에서 API-KEY 저장여부를 체크하고, 입력창 입력 여부를 체크 후 입력된 오류 코드를 기반으로 openAI의 text-davinci-003 모델에 질의한다(답변은 json, SQL 쿼리, 함수 형태로 요청). 이후 챗GPT가 질문에 대한 답변을 각각의 형태로 도출해 확인할 수 있도록 했다.
이 프로그램은 별도 환경설정을 하지 않은 PC에서도 실행이 가능하다. pymysql 라이브러리를 사용해 db서버에 접속한 후, 로컬 PC에서 실행하더라도 로그인을 하면 사용할 수 있도록 구성한 것도 특징이다. 「파이썬 프로그래밍」 수업 내용을 참고해 함수 생성, impor 방식, 개발 환경 세팅을 했고, 「데이터베이스시스템」 과목에서 배운 mysql connection 설정, 쿼리 작성 기술을 사용했다.
사용언어 및 툴: Python, pyqt6, mysql 등
금상 MOVE DUST
화성남: 장찬희 학우 외 1(경기)
“게임을 만들고 싶었지만, 게임 개발 C#에 관한 경험이 없어서 ‘모르면 배우면 되지’라는 마인드로 부딪혔다. 앞으로 더 많은 프로젝트에 참여해 더 멋진 경험을 쌓고 싶다.”
‘터치 앤 드래그’ 방식의 유쾌한 모바일 2D 게임을 만들자는 목표로 뭉쳤다. 오픈채팅방에서 만난 웹개발자와 VR앱 개발자로 이뤄진 ‘화성남’ 팀은 재미있고, 직관적이며, 가볍게 즐길 수 있어야 한다는 큰 전제하에 협업했다. 중력으로 끊임없이 아래로 떨어지는 귀여운 먼지 덩어리가 우주 등의 공간에서 UFO, 블랙홀 같은 다양한 장애물을 피하면서 최대한 내려가면 되는 단순한 설정이다. 초기 디자인을 구성한 후 이미지, 사운드 모두를 직접 제작해 눈길을 끌었다.
초기에는 가로 모드로 구상했다가, 조작이 불편하다는 점을 고려해 세로 모드로 변경했다. 배경화면은 우주에서 밤하늘로, 노을지는 바닷가로, 바닷속에서 다시 우주로 자연스럽게 무한 반복되도록 했다. 화면을 터치해 그리는 선의 길이와 방향에 따라 캐릭터가 이동한다. 장애물이 등장할 때 순발력 있게 선을 그려 장애물을 피해야 한다. 한 번에 그릴 수 있는 선의 길이는 제한돼 있다. 추후 코인 아이템을 추가해 앱으로 출시할 계획.
질의응답 시간에는 ‘터치베이스는 길이와 방향으로만 연결된 것인가?’, ‘길이는 어떻게 측정하도록 했는가?’, ‘터치만 하면 먼지 캐릭터의 동작은 없는 것인가?’, ‘이동 방향은 선으로만 가능한가, 원으로는 불가능한가’ 등의 질문이 이어졌다.
사용언어 및 툴: C#, Unity, hotoshop, Logic Pro X 등
은상 Line No.2(2호선)
과카몰리: 김찬영 학우 외 3(서울)
5월 31일 새벽을 깨운 위급재난문자. 정정문자가 도착하기까지 걸린 시간은 20분이었다. 이를 단순한 해프닝으로 여긴 이들이 대부분이었지만, 과카몰리 스터디는 ‘실제 공습이 발생했다면, 셀 수 없는 사람이 목숨을 잃었을 것’이라는 데 주목했다. 접근성이 좋은 게임을 만들어 사람들에게 안전에 대한 경각심을 환기하기 위해서다.
‘Line No.2’는 싱글플레이 생존·탈출 게임이다. 주인공이 공습경보를 받자마자 지하철역으로 대피한다. 엄청난 폭격이 끝나고 주인공이 지상으로 올라가려 하지만 지하철 출구가 커다란 돌로 막혀서 나갈 수 없는 상황. 열차가 다니는 통로도 무너졌다. 주인공은 2호선 지하철역 안에서 식량과 음료를 찾아 생존하고, 통로를 막고 있는 커다란 돌을 파괴한 뒤 지상으로 탈출해야 한다.
Unity UGUI를 활용한 UI를 설계로 실제 게임 화면을 구성했다. 랜덤으로 생성되는 스테이지들은 BSP(이진 공간 분할법) 알고리즘을 적용했다. 시간의 흐름에 따라 자동으로 배고픔과 갈증을 느끼는 시스템을 적용했으며, 아이템과 인벤토리 시스템은 유니티의 ScriptableObject, Prefab 기능을 활용했다. 플레이어 입력과 애니메이션 시스템에는 탐험을 위한 손전등 등 조명 효과와 카메라 효과를 위해 시네머신을 사용해 구현했다.
질의응답 시간에는 ‘헬프 기능이 있나’, ‘전체 맵을 지원하나’, ‘미션은 탈출 하나인가, 다른 스토리는 없나’, ‘세이브 기능은 있나’ 등의 질문이 나왔다.
사용언어 및 툴: Unity, blender, Github, Notion 등
은상 Virtual Fitting Room
최형석 학우 외 3(대전·충남)
팬데믹을 지나면서 온라인 구매 수요는 폭증했다. 이 가운데 최형석 학우는 ‘옷’에 주목했다. 물품의 특성상 입어보고 사면 가장 좋은 게 옷이지만, 온라인 구매는 쉽고 빠르다는 장점이 있다. 사이즈는 해당 사이트에서 알려주는 치수로 어느 정도 맞출 수 있지만, 과연 이 옷이 자신에게 어울릴지는 확신할 수 없다. 이런 일상생활의 불편함을 AI와 파이썬 강의를 활용해 프로그램으로 개발했다. 핵심 모듈 3개를 이용한 것이 중요 포인트.
먼저 Openpose 모듈을 이용해 사진 속 모델의 인물 포즈를 관절 15개로 구분한다. 이어 U2NET 모듈을 사용해 모델이 입고 있는 옷의 색을 빼준다. 마지막으로 핵심 모듈인 Self-Correction-Human_Parsing을 사용해 모델의 옷, 팔, 얼굴 등의 부분을 구분한다. 실행 예를 보면 처음 모델과 구매하려는 옷을 매칭한 후 모델이 구매하려는 옷을 입은 결과물이 합성돼 도출된다. 처음 AI를 사용해 개발하다 보니, 모델 포즈에서 손이 분리되지 않아 어색한 부분도 생겼다.
처음 계획한 기능을 모두 구현하지 못해 아쉽지만, AI와 파이썬이라는 언어를 ‘맨땅에 헤딩하는 심정’으로 팀원과 협업하는 과정에서 큰 성취감을 얻었다. ‘모르는 분야를 새롭게 개척하는 재미, 시행착오조차 값지다’는 결론에 도달했다. 추후 다양성 측면에서는 더 다양한 데이터를 확보하고, 기술적 측면에서는 머신러닝 알고리즘을 활용하며, 모바일에서도 가볍게 구동할 수 있도록 보완할 계획이다.
질의응답 시간에는 ‘소프트웨어경진대회에 잘 출품되지 않는 유형이다, 특별한 동기가 있었는가’, ‘3개의 굵직한 모듈을 사용했는데, 적용하면서 가장 어려웠던 점은 무엇이었나?’, ‘치마나 바지 등 하체 피팅도 시도했나’, ‘4명의 팀원이 각자 어떤 역할을 맡았는가?’ 등의 질문이 나왔다.
사용언어 및 툴: Linux, PyCharm, Python 3.11, U2NET 등
은상 ALLOC(학습/활동 계산기)
강은영 학우(서울 남부)
‘공부 계획을 짜는 것이 너무 어려워요!’ 알록(ALLOC)의 개발 배경은 단순하다. 1학기에 자격증 시험을 준비하던 강은영 학우는 다이어리에 공부할 목록을 수기로 빼곡하게 적어나가다가 아이디어를 떠올렸다.
웹사이트 이름 알록은 allocation, 할당, 배당이라는 뜻이다. 어떤 목표를 이루기 위해 어떤 일정으로 해당 활동을 매일 얼마만큼 해야 할지, 매회 활동량을 할당해주는 계산기다. 웹사이트를 방문하는 누구나 사용할 수 있도록 했다. 단, 계산 결과를 마이페이지 ‘나의 일정’에 저장하고 달성도를 기록 및 추적하기 위해서는 회원가입을 해야 한다.
개발기간을 기획/세팅-사용자 요구사항 분석-최소 기능 개발-심화 기능 개발-문서화 등 5개 스프린트로 구분했고, 칸반보드로 To-Do list와 우선순위를 관리했다. 서버를 구축하고 배포자동화(DevOps)를 했으며, GitHub 협업 및 프로젝트 관리 도구를 활용해 작업 단위를 기재하고 일정을 관리했다.
프로그램 개발에서 가장 중요하게 생각한 부분은 활동이 측정 가능한 것인가, 어려운 것인가에 대한 구분이다. 읽어야 할 교재 페이지 수, 써야 할 원고 매수, 들어야 하는 강의 수 등은 측정 가능하지만, 바디프로필 찍기, 곰인형 만들기 같은 활동은 측정이 어렵다. 이 경우는 알록에서 분량을 제공하지는 못하지만, 챗GPT를 활용해 수행 목록을 제공하도록 보완했다. 경진대회까지는 기능 구현에 집중했지만, 추후 성능 최적화 작업과 축적 데이터를 분석해 맞춤형으로 활용할 수 있도록 할 계획이다.
질의응답 시간에는 ‘챗GPT로 분량 목록을 받아올 때 파싱은 어떻게 했나’ 등의 질문이 있었다.
사용언어 및 툴: java-17-openj아-17.0.7, Git, Notion, Apache Tomcat 10.1.11 등
동상 · 인기상 뉴트럴 파스처
최인혁 학우(서울 남부)
편리한 스마트폰, PC, 노트북을 장시간 사용하다 보면, 어느덧 자세가 무너진다. 불균형한 자세로 목, 허리 통증으로 고생하는 최인혁 학우는 이제 다섯 살이 된 딸이 혹시나 자신을 닮아 거북목 증상이 오지 않을까 고민했다. 모두가 사용하는 스마트폰을 이용한 자세 교정 앱 ‘뉴트럴 파스처’의 탄생 배경이다.
앱을 실행하면 프로그램의 주요 내용은 △자세 분석 배우기(골반 경사, 척추 굽음, 목 각도) △자세 촬영하기(사용자 체형 진단) △교정 운동 배우기(이론→3D 애니메이션→AR 활용한 교정운동 배우기) 순으로 진행된다. 자세 분석에서 대표적인 불균형한 네 개의 자세를 확인한 후, 화면의 노란 선에 복숭아뼈를 맞춰 사용자의 사진을 찍어 이상적 자세와 비교하게끔 했다.
교정 운동 배우기에서는 애니메이션 효과로 전체 동작을 ‘움짤’ 이미지로 만들었다. 운동 화면은 상단 인터페이스를 통해 크기 및 각도 변경, 회전이 가능하며 녹화도 할 수 있다. 필라테스 강사인 아내의 자문으로 전문성을 높였다고 말해 박수를 받았다.
사용언어 및 툴: Android, Kotlin, Sceneview, Filament 등






