반응형

지난 주에 사내 강좌로 3 일간 SW Algorithm 이란 과목을 들었는데, 강사가 서울대학교 문병로 교수님이었다.

듣기로는 요새는 사내 교육에 대한 투자가 늘어서 사내 강의에도 현직 교수님들을 초빙하곤 한다는데... 참 흔치않은 좋은 기회를 잡은 느낌이다.

문병로 교수님은 실제로 뵙는 것은 이번이 처음이었지만 "쉽게 배우는 알고리즘" 이란 교재로 지면을 통해 만나뵌 적이 있었고, 인터넷을 떠도는 "나의 꿈" 이란 글을 읽은 적이 있어서 매우 친근한 느낌이다.

3일이란 짧은 교육시간이지만, 하루 8 시간의 강의니까 일반 학부 강의가 주당 3 시간이라고 하면 대략 시간상 한 학기의 절반 정도는 커버하는 분량이 아닌가 싶다. 이론 위주로만 강의가 진행 되었는데, 강의 시간을 좀더 늘리고 직접 코딩도 해 보는 시간을 가졌으면 더 좋았을 뻔 했다.

그래도 지금까지 들었던 알고리즘 강의들 중에서 가장 훌륭한 강의였다. 가르치는 사람의 지식 수준과 해당 내용의 이해도에 따라서 배우는 사람의 학업성취도에도 차이가 있기 마련인데, 예전에 강의를 들을때는 정확하게 이해하지 못하고 넘어갔거나 평소에 궁금하던 의문점들이 많이 해소가 되어서 무척 의미있는 시간이었다.
 
기억나는 몇가지 소득을 적어보자면...
우선  점근적 복잡도 분석에 대한 명확한 이해... 예전에 한번
포스트를 한 적이 있는 퀵 소트의 시간복잡도에 대한 부분. Worst Case 에서 O(N^2), Average Case 에서 세타(N log N) 이란 차이를 이제 정확하게 구분지을 수 있었다.
세타 표기법(상한과 하한이 일치하는 경우, tight bound) , 빅오 표기법(많아야, Tight or loose upper bound), 오메가 표기법(적어도, Tight or loose lower bound)에 대한 명쾌한 설명은 사실 예전 학부에서 들었던 자료구조 수업이나 알고리즘 수업때는 듣지 못한 내용이었다.

그리고 sort 에 대해서도 심도있게 생각해 보는 시간을 가질 수 있었다. sort 는 사실 자료구조나 알고리즘에서 워낙 잘 알려진 주제라서 이미 여러번 책과 강의를 통해서 배워왔던 내용이지만, 이런 새로운 관점에서도 sort 에 대해 생각해 볼 수 있다는 사실이 매우 재미있었다. sort 가 갖는 재귀적 성질,  In-Place Sorting, external sorting 의 차이 ( 예전 수업시간을 돌이켜 보면 정렬에 대해서 배울때 항상 이상하게도 이 부분은 스킵하는 경우가 많다 ), 비교정렬이 아닌 O(n) 소트 ( 논문을 통해서 O(n) 소트들에 대해서 읽어본 적은 있었지만 강의를 통해서 새롭게 리뷰를 하니 무척 흥미로웠다. ),
 
Radix Sort 에서 digit 가 아닌 문자열이나 다른 data type 도 정렬이 가능하다는 것.

Hash table 에서 load factor 와 Rehash 에 대한 상세한 소개.

그리고 반도체 설계에서 저항의 위치를 결정하는 방법에서 Minimum Spanning Tree 를 사용한다는 이야기 등.. ( 이 부분은 교수님이 예전에 LG 전자 반도체 사업부에 근무할 당시의 경험을 토대로 이야기 하시는 것 같다. )

특히 강의 중간에 algorithmic trading 에 대한 소개와 함께 연구실에서 진행하고 있는 성과에 대해서 잠시 설명을 해 주셨는데 요즘 논문 때문에 고민이 많던차에 많은 영감을 얻을 수 있었다.

개인적으로는 그간 받아 본 여러 사내 교육 중 최고였다.



+ Recent posts