권정인 교수의 <br> ‘문제해결과 알고리즘’

권정인 교수의
‘문제해결과 알고리즘’

  • 371호
  • 기사입력 2017.05.15
  • 취재 이가은 기자
  • 편집 최재영 기자
  • 조회수 7447

우리 학교 1학년이라면 SW기초 영역의 교양 수업을 수강해야 한다. 1학기에는 ‘컴퓨팅사고와 SW코딩’을 2학기에는 ‘문제해결과 알고리즘’을 배운다. 대학에 오기 전 SW에 대해 배울 기회가 없었던 만큼 1학년 때 수강하는 SW과목이 마냥 쉽지는 않을 것이다. 이를 부담스럽게 여기는 1학년들이 꽤 많은 것으로 안다. ‘컴퓨팅사고와 SW코딩’ 수업의 절반을 들은 5월, 어떤 학생들은 생각보다 할 만하다는 생각에 부담을 지웠을지 모르나 어떤 학생들은 다가올 2학기의 ‘문제해결과 알고리즘’ 수업을 벌써 걱정하고 있을지도 모른다. 이번 ‘수업 속으로’는 작년 2학기에 진행됐던 권정인 교수의 ‘문제해결과 알고리즘’수업을 소개한다.

SW기초 영역 수업들은 작년에 신설되어 올해가 두 번째라 수업의 체계가 완전히 잡히지 않았다. 작년에 진행된 수업을 토대로 올해 수업에는 보완된 사항이 여럿 있다고 한다. 같은 이름의 과목이긴 하나 작년의 수업과 비교했을 때 달라진 점이 꽤 있다. 작년에는 파이썬을 2학기부터 사용했지만 올해는 1학기부터 파이썬을 배우는 등의 변화가 있다. 그렇다고 해서 이 기사 읽기를 여기서 그만두지는 말자. 몇 세부사항에 변화가 있긴 하지만 작년이나 올해나 이 수업의 큰 틀은 그대로다. ‘먼저 이 수업을 들은 선배는 그 수업에 대해 이렇게 말하더라.’ 정도로 참고하면 좋을 것이다.

수업 진행 방식은 1학기의 ‘컴퓨팅 사고와 SW코딩’과 똑같다. 한 주에 두 번 있는 수업 중 하루는 이론, 하루는 실습수업으로 진행된다. 이론 수업은 교수가 진행하고 실습수업은 조교들이 진행한다. 이론 수업은 대 강의로 진행되는 반면 실습수업은 비교적 적은 인원으로 진행되므로 강의자와 소통할 기회가 훨씬 많다. 이를 적극적으로 이용하는 것이 좋다. 코딩을 하다가 어려운 부분이 있다면 질문하기를 주저하지 말고 조교들에게 도움을 요청하는 것이 좋다. 교재 역시 1학기와 마찬가지로 아이캠퍼스에 교안을 교수가 올리면 학생이 내려 받아 사용하는 식이다.

수업계획서에 따르면, 출석 10% 과제 10% 중간고사 25% 기말고사 25% 평소학습 20% 기타 10%로 평가요소가 구성된다.

출석 10%. 생각보다 만만하지 않다. 이 수업은 직권배정 수업이라 수업의 시간대나 교강사를 학생이 선택할 수 없다. 수강정정기간을 통해 다른 수업으로 옮길 수 있긴 하지만 거의 엘씨나 과 단위로 듣는 수업이라 거의 직권배정 받은 대로 수업을 듣는다. 어쨌거나 이러한 이유로 자신이 원하는 시간대의 수업을 듣지 못할 가능성이 높다. 이 수업은 오전에 배정된 경우가 많아 원치 않았음에도 괴로운 1교시 수업을 들었다. 1교시에 배정된 분반의 학생들은 늦잠의 유혹 때문에 지각과 결석을 하기 쉬운데 출석 점수를 놓치지 않도록 유의해야겠다. 1교시가 정 힘들 것 같다면 미리 수강정정기간을 통해 다른 시간대의 수업으로 탈주를 추천한다. (다른 엘씨나 과 친구들과 섞여 수업 듣는 것이 외로울 것 같다면 미리 친구를 꼬셔두길 바란다.)

권 교수의 수업에서는 실습수업마다 발생하는 평소학습 과제 이외에도 따로 코딩 과제가 5개 더 있다. 과제가 잦아 당황스럽긴 한데 평소 수업을 잘 따라간다면 오랜 시간을 들이지 않고 할 수 있는 과제들이므로 그렇게 걱정할 필요는 없다. 또한 실습 조교들이 평소학습 과제와 그 외의 코딩 과제에 대해 다시 한 번 더 자세히 설명해준다. 앞서 말한 것처럼 실습수업은 이론수업과 달리 적은 인원으로 진행되므로 강의자와 소통하기 쉬우니 과제하는 데 있어 어려움이 발생하면 주저 말고 조교들에게 도움을 요청하자.

중간고사와 기말고사는 문제 유형이 유사한데, 객관식과 주관식이 두루 섞여 출제된다. 학생들의 말을 빌리자면 다른 교수들의 시험보다 어렵다. 권 교수가 출제하는 문제들은 지엽적인 개념을 묻는 문제보다 개념을 이해하고 이를 적용할 수 있는지를 묻는 문제들이 훨씬 많다. 이 과목의 이름이 ‘문제해결과 알고리즘’인 만큼 ‘문제 해결’을 할 수 있는 가를 확인하는 것이다. 학생들이 대개 가장 어려워하는 문제는 뒷부분의 서술형 문제들인데, 문제지에 직접 코딩하는 문제들이다. 실습수업의 내용, 평소학습으로 했던 코딩 과제들을 시험 전에 꼭 정리해두길 바란다. 개념만 달달 외우기보다 개념을 잘 ‘적용’할 수 있도록 하는 데 초점을 두고 공부하는 것이 좋다.

기타는 학기말 프로젝트에 대한 평가인데, 이 프로젝트는 학생들이 팀을 꾸려 프로그램을 코딩하고 이를 러닝페어에 전시해 보이는 것이다. 다른 교수는 이 기말 프로젝트에 점수 비중을 높게 두고 이에 대해 까다롭게 점수를 매기기도 하는데, 권 교수는 그렇지 않다. 평소에 과제가 많았던 대신 이 기말프로젝트는 좀 수월하다. 교수가 제시하는 몇 가지 기준만 충족하면 만점이기 때문이다. 기준 충족 그 이상의 퀄리티를 뽑아내기 위해 너무 공들일 필요는 없다. 그렇다고 이 팀프로젝트에 대충 이름만 얹듯 참여할 생각은 말아야 한다. 마지막에 팀원 평가를 했을 때 프리라이더로 그대의 이름이 오를 수 있다.

익명으로 학우들이 사연을 올리는 페이스북 페이지인 ‘성균관대학교 대나무숲’에서 작년에도 그렇고 올해도 그렇고 시험기간이면 “아, 도대체 이 SW수업은 왜 하는 지 전혀 모르겠네. 공부하기 싫다ㅠㅠ” 따위의 글이 올라오는 것을 자주 볼 수 있었다. 더불어 많은 학우들의 높은 ‘좋아요’ 수까지 말이다.

그렇다. 처음 배우는 이 SW 코딩이 쉽지 않은 것이 사실이다. 그러나 우리 학우들에게 보다 다양하고 선진화된 교육을 제공하기 위해 학교가 시행하는 이 수업을 좀 더 긍정적인 생각을 갖고 듣는다면 생각보다 얻어가는 것이 많을 것이다. 수업에서 배우는 컴퓨팅적 사고와 이를 바탕으로 한 문제 해결 절차는 단지 컴퓨터 프로그래밍에만 사용되는 것이 아니라 우리의 일상생활에서도 충분히 적용된다. 뿐만 아니라 이 수업을 통해 생각지도 못했던 분야에의 흥미를 알게 되는 경우도 있어 이 수업을 수강한 후 SCSC, C-school 등의 연계전공이나 컴퓨터공학 복수전공을 선택하려는 학우들도 더러 있다. 보다 열린 마음으로 열심히 수업에 임한다면 학점 뿐 아니라 얻을 수 있는 것이 많다.