ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 컴퓨터공학과 3학년 2학기 수강 후기
    카테고리 없음 2020. 12. 19. 23:46

    전면 비대면 수업

     

    질병의 시대의 한복판에 던져진 학교는, 익숙치 않은 사이버대 학습을 시행하고 있었습니다. 서울대입구에서 서울대까지는 머나먼 길로도 유명하고, 서울대에서도 컴퓨터공학과의 수업이 있는 302동, 301동은 더 깊숙히 숨겨져 있습니다.

    서울대입구에서 윗공대, 302동까지 가는 데에는 버스로 40분이 걸립니다. 과 특성상 노트북이 반드시 필요하기에, 무거운 3Kg 노트북을 들고 관악02 마을버스에 다닥다닥 타서 30분 이상 올라가야 합니다.

     

    윗공대로 가는 거의 유일한 방책이라고 할 수 있는 관악02. 대부분의 수요자는 윗공대생으로 정해져 있건만 굽이굽이 경사진 곳을 휘어져 올라가게 됩니다. 당연히 멀미가 나고 체력이 쭉쭉 빠집니다. 비대면 수업은 이런 애로사항에 대해서 자유롭게 하는 면이 있었습니다.

     

     

    "소프트웨어 개발과 실제"에 이은 "창의력 통합 설계"

    컴퓨터공학과 학생의 졸업요건을 채워야 하는 수업은 저마다의 이유로 불행합니다. 이 두 과목은 피할 수 없다는 면에서 단연 특별합니다.

    "소프트웨어 개발과 실제" 는 4인 1조의 졸업필수 팀 프로젝트 과목입니다. 장고와 리액트로 되어 있는 SNS 웹 어플리케이션을 배포하는 것이 목적입니다. 저는 3년 전에 이 과목을 수강했습니다. 조마다 한두명씩은 생기는 프리라이더에게 뒤통수를 맞으며 꾸역꾸역 장고와 리액트를 개발해나가게 됩니다.

    장고와 리액트 모두 러닝 커브가 상당해서 3학점 과목에 동시에 배워나가는 것 자체가 무리가 있는데, 최근 ML 구현과 기말고사가 추가되면서 그 악랄함이 더해졌다고 했습니다. 다행인 점은 저는 그 전에 수강했다는 것이고, 불행인 점은 그럼에도 불구하고 충분히 끔찍했다는 것입니다.

    "창의력 통합 설계"는 3인 1조의 졸업필수 팀 프로젝트 과목입니다. 3년 전 기억을 되살려보면, 3인 1조로 기업들과 연결되어 프로젝트를 하는데, 조원, 주제, 기업별로 성향이 극도로 차이가 나서 복불복이라는 소문을 들었습니다.

    제가 복학을 했을 때와 달리, 시류는 학부생도 너도나도 딥러닝을 할 줄 아는 세계로 변했던 모양입니다. 대부분의 기업연계 프로젝트들이 딥러닝 지식의 깊은 이해와 적용을 요구하고 있었습니다.

    저는 딥러닝에 대한 이해가 전혀 없는 상태였고, 굳이 이 과목을 하면서 딥러닝을 배우고자 하는 의지가 전혀 없었습니다. 따라서 딥러닝 프로젝트 전부를 피하고, 유니티로 작업할만한 프로젝트를 하나 골라서 올라타게 되었습니다.

     

     

    "창의력 통합 설계" 가 불합리하게 설계되었다고 느끼긴 했습니다. 이게 다른 대학교에서는 '졸업 프로젝트'쯤에 해당할 텐데, 자기가 직접 하고 싶은 걸 고르는 게 아니라 회사에서 정해 주는 개발을 졸업을 위해 한다고 하니까 영 내키지가 않습니다. 매칭되는 기업에 따라서 다르겠으나, 적극적인 개발지도를 해주는 기업은 그렇게 많지 않으며, 보통은 연락도 잘 안되는 경우가 많습니다. 대놓고 말해서 아무것도 안 가르쳐주면서 결과를 내놓으라고 하는 못된 팀프로젝트입니다.

    이 과목의 프로젝트를 진행하면서 극도의 의욕 부진을 겪었습니다. 사실상 별로 관심이 없는 과목이다 보니까, 별다른 도리가 없습니다.

     

     

    "컴퓨터 비전"

    이번 수강한 '컴퓨터 비전' 비대면 녹화 강의였습니다. 굳이 수업시간에 맞추어 강의를 들어야 하지 않아도 됩니다. 컴퓨터 비전은 정기고사 없이, 개인과제 5회와 조별과제 1회로 진행되었습니다. 수강하는 것이 시험에 나오지 않고 다시 들을 수 있기에 수업에 대한 부담이 없었습니다.

    opencv 라이브러리가 주로 수행하는 휴리스틱 이미지 매칭, 선 인식, 점 인식, 파노라마 생성 등의 알고리즘 강의가 주되었습니다. 과제 5개는 다음과 같이 제시되었습니다.

    1. 가우시안, 라플라시안 피라미드 제작과 이미지 병합
    2. 허프만 변환을 이용한 라인 추출과 세그먼트 작성
    3. 이미지 와핑을 이용한 파노라마 이미지 작성
    4. 루카스-카나데-알파인 알고리즘을 이용한 동적 움직임 작성
    5. Bag of Words 기법을 이용한 이미지 카테고리 추출

    3번 과제 예씨결과물

    과제를 해보면서 검색해본 결과, 대부분의 과제가 영미권의 웰노운 과제를 그대로 제시한 느낌을 받았습니다. 다만 본래 과제들은 매트랩을 이용해 풀게 하고, 우리 과제는 파이선 넘파이를 이용해 구현하는 것이 달랐습니다.

    또한 원본 과제 자체도 솔루션을 제공하지 않기 않기 때문에, 참고할 코드가 없다는 점에서, 직접 제로에서 짜내는 것이 올바른 선택입니다.

    일견 무난해보이는 이 과목에서는 저는 다음과 같은 어려움을 겪었습니다.

    1. 파이선에 대한 무지로 인해 최적화 고생

    고학년 강의다보니까 따로 조교세션으로 넘파이에 대한 따로 강의를 제공해주지 않습니다. 이미지 프로세싱의 시간복잡도가 상당한데, 파이선의 나이브한 for 루프를 이용하면 시간 지연이 엄청나게 벌어집니다. 따라서 만족할만한 시간 복잡도를 내려면, for loop의 개수를 줄이고 대응되는 넘파이의 메소드를 가능한 활용해야 됩니다. 이것을 몰라서 과제 초반부를 그대로 제출했고, 시간복잡도에서 상당한 감점을 받았습니다.

     

    2.이미지 프로세스의 디버깅 어려움과, 하이퍼파라미터 조정의 어려움

     

    일반적인 과제는 중간에 까보면서 결과가 잘 나오는지 조정할 수가 있는데, 이미지 프로레스는 개발 도중의 단위 테스트를 해볼 여건이 안 됩니다. 따라서 끝까지 돌려보고 나서 결과가 나오는 것을 보면서 조정해야 합니다.

    또 올바른 알고리즘을 이용해 짜내도, 하이퍼파라미터 수치에 따라서 올바르지 않은 결과가 나오는 경우가 나오지 않는 경우가 많았습니다. 이런 이유로 인해서 개발과 결과 확인, 하이퍼파라미터 조정 등에서 많은 고생을 했습니다.

     

    "알고리즘"

     

    졸업필수인 과목으로, 매 학기 열립니다만 봄학기와 가을학기 교수님의 과제 스타일과 시험 스타일이 극명하게 다릅니다.

    봄학기 알고리즘은 과제가 프라브럼 솔빙(PS)에 관련된 코드 작성에 집중되고, 시험문제도 CLRS의 연습문제를 변형한 오픈북 형식으로 출제됩니다. 시험범위는 NP까지 CLRS를 훅 훑고 넘어갑니다.

    가을학기 알고리즘은 과제가 연습문제 풀이에 집중되고, 치팅 시트를 포함한 간단한 알고리즘 실행을 묻는 클로즈드북 형식으로 출제됩니다. 시험범위는 그래프 이론까지로만 딱 끊깁니다.

    제가 수강한 쪽은 가을학기쪽으로, 영어강의라서 수업에 도통 집중하질 못해서 고생했습니다만, 연습문제 풀이와 쉬운 시험범위에 무난하게 수강할 수 있었습니다.

    다만 전체 문제에서 한 개 틀리면 평균 아래로 이탈하는 무시무시한 난이도입니다.

     

     

    "모바일 컴퓨팅과 그 응용"

    생경한 비졸업필수 전공 과목입니다.

    중간고사와 개인 조별과제가 없는 조별과제지향 과목입니다. 수업에는 프레젠테이션으로 모바일 관련 위치센서 등의 논문 소개를 하고, 중간중간마다 조교의 안드로이드 실습세션이 있습니다.

    4인 1조의 조별과제가 있어서, 안드로이드 어플리케이션을 개발하는 중간발표, 최종발표에 걸쳐서 발표를 진행합니다.

    저는 안드로이드 개발에 경험이 있었기 때문에, 조별과제는 무난하게 진행할 수 있었습니다. webrtc 를 이용한 화상 통화 어플리케이션을 하나 제작해서 플레이스토어에 배포하고, 발표를 진행했습니다.

    개발 경험이 있어서 조별과제의 난이도가 그렇게 높은 편은 아니었습니다만, 앱 개발이라는 게 본질적으로 저난이도의 개발을 시간 박아서 많은 코드를 집어 넣는 행위입니다. 조별과제 코드 작성에 상당한 시간을 소요하긴 했습니다.

    시간박치기한 조별과제

     

     

    "오토마타 이론"

    "Introduction to Automata Theory, Languages, and Computation" 얇은 교과서 하나를 충실히 풀어가는 과목입니다. 번역본이 없습니다만 과목 자체가 뭐 그렇게 어렵지는 않아서 상관없습니다.

    과제는 5회로, 오토마타 연습문제를 푸는 형식이었습니다. chegg에서 적당히 검색만 조금만 하면 답안이 나오는 수준이기도 하고, 어느 정도는 풀만한 수준이라고 느꼈습니다. 중간고사와 기말고사는 평이한 수준이었습니다.

Designed by Tistory.