brunch

You can make anything
by writing

C.S.Lewis

by 뀰사마 Dec 12. 2021

빡신 코스와 밀려오는 현타(CSE6242)

Data Analytics Visualisation 후기 

    요즘 대학원 코스 이수로 바쁘게 지내고 있다. 저번 학기엔 디지털 마케팅 CRO분석 코스라서 어차피 현업과 관련이 있으니까 무난하게 여름학기로 들었었다. 한 학기에 1과목만 듣는데도 왜 이렇게 힘이 드는건지..공부할 머리가 아닌데 억지로 공부하러 하드캐리하느라 죽겠다. 나는 생업으로 활동하며 돈 버는 걸 좋아하지 공부는 안 좋아하는데 어쩌다보니 먹고살기 위해 계속 자격증 콜렉팅-석사의 길을 밟고 있다. 어쩔수 없다. 후에 나이 먹어 정보보안 디렉터나 마케팅 테크 디렉터 혹은 아키텍쳐, Trademark or Patent Attorney로 전환 혹은 승진하려면 기본이 석사 이상 자격을 갖춰야한다. 드러워서..이러니까 현 회사 사장 둘은 치사빤쮸라며 창업을 한 거겠지. 


    사족은 여기서 그치고, 죠지아테크 데이터 아날리틱스 석사 코스를 등록하면 필수로 들어야할 과목이 있다. 자세한 건 커리큘럼을 모아놓은 사이트에서 다루겠지만 그 중 가장 많은 사람들이 갈려나가는 코스는..


십중팔구 DAV(CSE6242)라고 단언할 수 있다. 


이번 학기서부턴 gradescope를 돌입했는데 이 auto-grading 시스템이 어마어마한 적폐다. 


    이전 학기에는 최소한 프로젝트 코드를 제출하고 그 코드가 돌아가기만 하면 일단은 되는 것이었다. 그래서 저번 학기때 들었던 수강생들의 리뷰 블로그나 과제할 때 소감 같은 걸 키워드로 검색해서 유사한 알고리즘 풀이를 찾아내 다시 내 방식으로 리팩토링을 하고 과제를 끝낼 준비를 만반에 끝내고 있었다. 이번 수업은 껌이네ㅋㅋ라고 미소를 지으며. 


인생사가 그렇게 쉽게 굴러갈리가 없지, 뀰사마 인생에. 


죠지아테크 DAV수업 전담교수 및 강사진은...갑자기 무뜬금 저번 학기에도 도입하지 않았던 Auto Grader 시스템을 도입한 것이다. Gradescope는 학생들이 제출한 과제를 서브미션한 코드들을 분석하며 어느 학생들이 치팅을 했는지 치팅을 잡아내는 과제물 제출 서비스이다. 그래, 데이터애널리스트 석사이수의 필수 코스인데 수강생도 많을 거고 그거 일일이 TA들이 다 cheating을 잡아내는 것도 힘들거겠지. 그건 이해가 간다. 


그런데 대체 서브미션에 Unit Testing은 왜 집어 넣은건데. 


심지어 그 Unit Testing의 도출 방식이 단순히 어느 문제가 있는데 프로그램을 굴렸을 때 결과값이 예측가능한 범위로 추려냈는가,의 수준도 아니다. 


일일이 프로그래밍이 어느 순서대로 cascating하느냐, 니가 추려낸 프로그래밍에서 딕셔너리를 추출할 때 Array의 갯수가 우리가 예측한 대로 정립되느냐 등.


일일이 하나하나 다 Unit testing 시나리오를 걸어놓은 것이다. 이게 말이 되니?? 아니 프로그래밍의 묘미가 무엇인가. 모로가도 서울만 가면 된다는 Flexible함이 코딩의 Discpline아닌가? 프로그래밍의 방식은 여러 사람마다 전개나 추상화적 논지 전개나 구성이 다 다를지언데, 이렇게 접근 방식이나 중간 프로세스의 자료구조를 Unit Testing 시나리오에 넣어버리면..특정 방식의 프로그래밍만 허용한다는 것이 된다. 이런식이면 애초에 Graderscope를 통해 표절을 잡아내는 의미도 없지 않은가. 


가령 예를 들면 과제 중에 D3로 CSV를 임포트해서 차트를 그려내는 과제가 있다. 프론트엔드 개발자라면 알겠지만 브라우저의 UI를 시각적으로 구현하는 방식엔 여러가지가 있다. 사람마다 HTML의 시멘틱 마크업의 순서도 다르고 자바스크립트의 DOM 트라버싱을 요래조래 굴려가며 정교한 차트를 그려내는 데는 여러 방식이 있다. 


그런데 이 수업에선 그걸 바라면 안된다. 


가령 어느 게이머 커뮤니티의 게임 랭킹을 토대로 어마한 데이터가 입력된 CSV가 있다 치자. 그 CSV에 대한 평균값과 나라별 게이머 랭킹을 나누고 드롭다운 메뉴를 넣어서 차트를 그려내는 D3과제가 있다. 프론트엔드 개발자라면 Div태그 하나 Placeholder로 걸고 엘레멘트 뒤에 엘레멘트를 Adjant 할 수도 있고 GetElementID나 뭐 기타 등등 쿼리찾기를 응용해서 Dom의 순번을 살짝 비틀어 차트 레이어를 그릴수도 있고 뭐 방식은 여러가지로 생각해낼 수 있다. 


하지만 이 수업에서 점수를 따려면 그렇게 접근하면 안된다. 


무.조.건. 수업에서 명시하는 DOM트리대로 정확하게 그래프를 마크업의 순번도도 일치하게 그려야하고 심지어 노드 갯수도 정확히 맞춰야한다. 


..아니 대체 뭐 땀시????


그래서 본인의 Localhost환경에는 정확하게 과제가 요구한대로 그래프를 그렸음에도 Gradescope에 과제물을 넣는 순간 빵점이 나오는 사태가 벌어진다. 심지어 이 unit testing 시나리오는 파이썬과 셀레니움 기반으로 짰는데 테스팅 시나리오자체가 엄청 타이트하고 예외 용인하는 부분을 넣지도 않아서 얼척없게 Extra space를 넣었다는 이유만으로 테스팅이 실패하기도 하고 별 가지각색의 방법으로 테스팅이 실패해서 진짜 과제를 낼 때마다 너무나 울고 싶었다. 


과제의 난이도도 사실 딱히 쉽지는 않은데 (과제중에 엔트로피와 의사결정트리를 응용하여 예측값을 0.7 이상 올려 추리는 것도 있는데 엔트로피 개념을 아무리 뒤져봐도 속 시원하게 알려주는 글을 찾기가 힘들었다ㅠㅠ) 거기다 Gradescope의 극악한 테스팅 모듈을 통과해야하므로 난이도가 더 올라가는 것이다. 


그 와중에 이 코스는 단순히 파이썬의 활용만 요구하는 것이 아니라 각종 visualisation툴의 활용도 및 클라우딩 컴퓨팅까지 요구한다. 나는 Docker, 데이터브릭과 구글 클라우드 플랫폼, Aws를 부랴부랴 급조해서 익히느라 머리에 쥐가 나는 줄 알았다ㅠㅠ 클라우딩 컴퓨팅 셋업에서 끝나는 것이 아니라 과제에 맞게 Ipython 환경을 구축해야하고 그 환경에서 과제에서 요구하는 정답을 추리는 파이썬 코드를 작성 후에 서브미션 파일로 또 컴파일링을 하고 그 파일을 Gradescope에 내야하는데..


하...진짜...이 수업이 필수전공만 아니었으면 절대 수강신청을 안 했을 것 같다. 


수업에서 부랴부랴 따라가야할 스킬이나 테크들도 많은데 그 와중에 과제가 요구하는 분석력과 결과물도 높다. 애초에 클라우드 컴퓨팅, 파이썬, 스칼라, SQL, D3는 기초만 훑고 가도 몇개월이 훌쩍 갈 주제들인데 이 와중에 Gradescope에 얼토당토 안하는 천편일률적인 Unit Testing 도입에..과제 문제 자체의 난이도도 높아서 게시판 Piazza에는 '아니 내가 사실 컴싸 전공이고 현업에 일하는 사람인데 이 수업 대체 목적이 뭐냐? 난이도는 왜 이렇게 높고 요구하는 방식은 한가지인가?'라는 불만글도 보였다. 


+ 당신은 조별과제를 수행해야한다. 처음 수업을 등록하면 몇주간 팀원들을 부리나케 찾아 꾸려야하고 저 험난한 과제들을 내는 도중에 데이터 분석 시각화의 리포트와 프레젠테이션을 준비해야한다. 나는 다행히 팀원들을 잘 만나서 나는 포스터 디자인과 프레젠테이션 디자인, 그리고 시각화를 맡았고 상대적으로 모델링과 리포트 라이팅을 잘하는 멤버들은 그걸 전담하고, 비디오를 빠르게 짜내는 멤버는 프레젠테이션 영상을 맡았다. 


그런데 얼추 보면 도중에 팀 멤버들이 과제의 난이도에 기겁하며 탈주해서 팀이 무산되는 경우도 있는거 같다(..)이 경우 레포트, 프레젠테이션, 포스터 디자인, 발표비디오 녹음 등을 소수, 혹은 최악인경우 혼자 하는 경우도 생기는데..와...이건 진짜 최악의 시나리오인듯. 이 프로젝트는 초반 프로포절, 중간 레포트, 파이널 레포트 이렇게 프로젝트를 모델링하는 과정과 결과물을 적어내야 한다. 이 조별 과제물을 다 끝내고 나면 이번엔 개개인이 각자 그 리포트와 포스터를 바탕으로 3분 이내에 영상 프레젠테이션을 만들어야하고,,,


후에는 그걸 심지어 채점까지 해야한다(...) #내향인_살려


지금 이 글을 쓰는 이유는..추후 CSE6242 수업을 들으실 분들..특히 나같이 직장을 병행하며 들으실 분들은..




미리 마음의 준비를 좀 하시라는 의미에서 포스팅을 한다. 


나는 멋도 모르고 기초 인트로 수업 다 재끼고 이 수업을 바로 들었다가..지금 피눈물을 흘리고 있다. 그래도 팀원들을 잘 만나서 프로젝트를 무사히 수행하여 최소한 B는 받을 수 있겠지만..Slack에서 얼추 눈팅하며 반응을 보니까 다들 C만 받아도 감사하다는 마음으로 이 수업을 진행하는 눈치이다. (나같아도 그럴 듯) 


무뜬금 등장한 Gradescope의 테스팅 모듈 도입으로 인해 이전보다 난이도가 훅 올라간 CSE6242. 혹시 다음 학기에 들을 예정이었다면 마음의 준비를..좀 하시고..본인이 Python 문제해결이 좀 모자르다 싶으면 유예하길 조언한다. 나는..Python이 정말 약한데..이번에 진짜 백엔드 개발자의 똥꼬쓰린 아픔을 잘 이해했다.


(하지만 프론트엔드는 디자이너,기획자,결정권자랑 직접적으로 강냉이를 걸고 싸우는 자리니까 우리의 고통이 적다 하진 않겠습니다.) 



 
















브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari