Daybreakin Things

Posted
Filed under 살아가기, 생각하기

...숙제하다가 막히는 게 있어서 구글 검색을 하러 갔더니..

User inserted image

하아아...

.....OTL

Posted
Filed under 컴퓨터

하아... 드디어 대장정을 끝냈다. 전산과 2학년 전공 중에 SP(System Programming)와 함께 양대산맥을 이루는 가장 어려운 과목인 Problem Solving의 인공지능 토너먼트가 오늘 있었다. (게임 규칙은 이곳 참고) 준수, 상돈, 나로 구성된 우리팀은 이번 카포전에서 인공지능 대회 우승을 이끌었던 멤버들로 구성된 본좌팀(...)을 결승전에서 만나 아쉽게 1점 차이로 져서 2등을 기록했다.

지난 주 주말부터 조교님이 잘못(-_-) 짜신 Java Client 디버깅하느라 이틀 삽질하다 포기하고—조교님이 잘못 짜신 걸 고쳤음에도 결국 Java 소켓의 문제인 것 같다고 결론이 났지만—결국 C#으로 처음부터 아키텍처 다시 잡아서 시작, 지난 주 내내 알고리즘 설계하고 이번 주말 내내 알고리즘 구현 및 뒤집어엎기(;;)를 반복했다. 처음에는 현재 게임판의 상태만 보고 적당히 내가 다음 수를 확보할 수 있는 장소를 찾는 알고리즘을 쓰다가, 그걸 좀더 발전시켜서 내가 수를 확보하고 상대방 수를 막는 장소를, 그러다가 내가 어떤 수를 놓았을 때 상대방이 어떤 수를 놓을지 예측하고 내가 그 다음에 놓을 수가 어떻게 되며 그때의 score는 얼마가 되는지 계산하고 그 중 max값을 주는 수를 선택하는 것 등을 순차적으로 구현했다.

특히 마지막 방법은 Game Tree를 구성하는 것으로, 현재 게임판 상태로부터 내가 놓는 수에 따라 어떻게 게임이 진행될지를 미리 시뮬레이션해보는 것이라고 볼 수 있는데, recursive하게 돌리다보니 생각보다 처리 시간이 매우 오래 걸렸다. (게임 규칙으로 한 수를 놓는 데 10초 이내여야 한다는 제한이 있었음) 멀티쓰레드로 구성하여 인공지능 처리 시간이 9.5초를 넘을 경우 강제로 종료시키고 그때까지 구해진 최선의 수를 선택하도록 제한한 후 알고리즘에서 정확도는 높여주지만 시간을 많이 잡아먹는 부분을 조금 잘라냄으로써 그럭저럭 빠른 실행 속도를 구현할 수 있었다.

일단 예선 리그전에서 seed 배정 받을 때 그 본좌팀하고 맞붙지 않게 되었던 것이 운이 좋았고, 우리가 상대했던 팀들을 생각보다 쉽게(알고리즘이 중간부터 계속 꼬여서 많은 부분을 포기했기 때문에 솔직히 1승이나 하자고 했었으니까..) 이겼던 것이 도움이 되었다.

User inserted image

우리팀 클라이언트 화면 (Manual AI)

사실, 알고리즘에 그다지 자신이 없었기 때문에, "멋진 UI 점수" (프로젝트 홈페이지 참조)로 가산점을 받으려고 했으나, 그 본좌팀(...)에서 단 하루만에 DirectX를 이용한 3D 화면을 구현해버리는 바람에(.....) 그것도 2등으로 밀린 게 아쉬웠다. 하지만 UI 자체의 완성도나 편리함은 우리팀이 가장 좋았다고 말할 수 있겠다. 특히 AI 종류를 선택할 수 있도록 설계하여, Manual AI를 선택할 경우 블록 선택창이나 방해블록 배치, 다음 수 선택하는 것을 직관적으로 구현(마우스로 위치 잡고 클릭 가능하게 구성)했기 때문에 알고리즘 개발 과정에서 테스트할 때 큰 도움이 되었다. (다른 팀에게 이 Manual AI 부분만 사용할 수 있도록 한 버전을 공유하기도 했다) 또한 멀티쓰레드로 만들었기 때문에 GUI가 돌아가는 Main Thread, 그리고 서버 접속과 게임 진행을 관리하는 Game Thread, 거기서 파생되어 인공지능이 작동하는 AI Thread로 나누어 프로그램 안정성과 GUI 응답성을 높일 수 있었다.

어쨌든 그동안 쌓았던 각종 코딩 스킬을 총동원해본 프로젝트였고(특히 위의 그림에 나오는 것과 같은 마우스 선택 화면은 중학교 때 한창 맵에디터 만들어본답시고 삽질을 꽤 해봤던 것인지라..), 아쉽게 명예의 전당까지는 못 올라갔지만 그래도 노력한만큼 좋은 성적을 거둔 결과를 얻었다. 상당히 빡센 과목이었지만 그만큼 남는 것도 많고 알고리즘 생각하는 방법을 많이 배울 수 있었다. (그나마 ACM에서 삽질하고 숙제에서 삽질했던 것들을 기말 프로젝트로 메꿀 수 있게 되어서 다행이다 -_-)

덧. 기쁜 소식 하나 더. 영어2 Writing class에서 기말 에세이 시험 본 게 (완전 개발로 썼음에도 불구하고) 만점(..)이 나왔다. 그나저나 Reading class는 완전 본문 암기 시험일텐데...

덧2. 역시 콘로 CPU를 쓴 새 데탑이 위력을 발휘했다. 클라이언트 제작 과정에서 쓰레드 처리를 잘못하여 무한루프에 걸린 AI가 CPU를 100% 점유하는 경우가 종종 있었는데, 내 컴퓨터는 듀얼코어였기 때문에 전혀 먹통이 되지 않았지만 다른 팀원들 컴퓨터는 원격접속 상태에서 룸메한테 전화해 재부팅시켜달라고 여러번 부탁해야 했었다.

Posted
Filed under 살아가기, 생각하기

숙제들 중에서도 Problem Solving의 HeptaAI와 같이 어렵지만 하면서 재미를 느끼는 것이 있는가 하면, 별로 공부하는 데 별 도움도 안 되면서 매우 귀찮고 시간도 오래 걸리는 것들이 있는데, 바로 이번학기에 듣고 있는 영어II의 "매주 영어단어 100개씩 정리하기"다.

스스로 단어 정리를 하고 공부를 한다는 취지는 좋았으나, 100개라는 개수가 유발하는 귀차니즘은 숙제 효율을 무한히 떨어뜨리는 것 같다. (사람마다 단어를 맘대로 선택할 수 있기 때문에 어떤 사람은 쉬운 단어로 골라서 하기도 한다) 차라리 독해 본문에 나오는 단어들을 쭉 정리해서 시험을 보는 게 숙제 효율도 높아지고 머리에 남는 건 더 많을 것 같다.

그래도 숙제의 취지를 살리고자 나름대로 뜻도 세세하게 정리하고, TOEFL 단어집 같은 거 찾아서 어려운 단어들도 써놓고 있는데 효율이 떨어지는 건 어쩔 수 없다. 그나마 나중에 뭔가 남기려고 정리했던 단어들을 Naver 단어장 기능(내가 Naver에 가입하고 나서 지식인 조금 써보고 유일하게 쓰고 있는 서비스가 이것이다 -_-)을 이용해 쭉 쌓아두고 있는 정도. 하아;

차라리 너무 길지 않은 흥미있는 기사거리를 찾아서 그걸 번역한다거나 하는 숙제를 내줬다면 독해 공부에도 도움이 되고 좀더 즐겁게 할 수 있었을 것이다. (비록 시간은 좀 걸리더라도, 머리를 더 바쁘게 굴려야 하는 건 틀림없으니.)

이상 숙제하다가 자꾸 말려서 하는 푸념 끝. -_-

Posted
Filed under 살아가기, 생각하기

원래 2주년은 11월 23일이었는데 바로 아래 URP 글을 쓸 때까지도 까먹고 있었으니...-_-; 여튼 이제 daybreaker 등의 키워드에 대해 구글에서 첫번째로 검색될 정도가 됐고, 이것저것 검색하다가 들어왔다는 사람도 많아지는 걸 보면 페이지랭크(...)가 높아지긴 높아진 모양이다.

그나저나 요즘 근황은 이렇다.

PS 기말 프로젝트 - 1v1 보드게임 Hepta AI

처음에 조교님이 짜준 Java 클라이언트 예제는 달랑 프로토콜을 wrapping하는 PSConnector 클래스 및 GameData 클래스 뿐이었다. (VC++로 준 클라이언트 예제는 말 그대로 알고리즘만 채워넣으면 될 정도였는데 Java를 별로 안 쓸 거라고 생각했는지...) 게다가 PSConnector 클래스에 몇가지 심각한 버그가 있어 삽질을 좀 했다.

결국 조교님께 얘기하여 완전한 형태의 클라이언트 예제를 받아냈는데, 내가 그동안 짠 클라이언트와 정확히 똑같은 버그 - 방어팀 쪽에서 패킷을 깨진 채 받는 - 가 발생, 결국 gg를 치고 말았다. 일단 GUI에 대한 추가점수가 있었기 때문에 GUI를 만들기 편하면서도 Java와 매우 유사한 C#으로 가기로 했고 클라이언트를 밑바닥부터 다시(-_-) 만들었다.

이번에는 Java에서 안 됐던 것들은 잘 되는데, 또 다른 데서 문제가 발생하는 것이다. -_-;; 오늘 하루종일 삽질하다가 gg치고 성당 갔다오니 원인이 발견되었다. (역시 프로그래밍하다 막힐 땐 가끔 다른 일도 해주어야..) 매우 사소한 버그였는데, Java 쪽은 내가 짠 것이나 조교님이 짠 것이나 제대로 되어 있는 걸 보니 확실히 Java쪽은 뭔가 이상하다. (룸메 말로는 첫 게임은 밀려서 진행되고 두번째 게임부터 제대로 된다고 함-_-)

어쨌든 무려 multithread까지 써서 GUI 응답성까지 확보한 C# 클라이언트가 (거의) 완성됐다. 이제 나머지 팀원 2명이 짜고있는 Java AI 코드를 C#으로 포팅하여 테스트 및 최종 조율만 하면 될 것 같다.

.....그러나 이거 토너먼트 진행이 이번 금요일 오후 6시부터인데, 전날까지 숙제 2개 + 퀴즈, 그리고 그날 밤 12시까 또 숙제 1개... orz

동아리 회장 선거

11월은 동아리 회장, 총학생회 선거 등이 있는 달이다. 역시 내가 속한 SPARCS와 MR에서도 회장 선거가 있었다. MR의 경우는 종강 파티 겸 회장 선거를 하는 바람에 그날 스팍스 종강과 경곽 동문 기모임, 그리고 확률통계 숙제까지 겹치면서 결국 선거에 참여하지 못했다. SPARCS의 경우는 정모를 확대한 정기총회 형식으로 진행했기 때문에 무난히 참석할 수 있었다.

총 4명의 후보가 있었는데, 두 명은 자진 출마, 다른 두 명(나 포함)은 추천을 받아 출마했다. 첫번째 투표에서 과반수 이상을 얻으면 바로 당선되고, 그렇지 않을 경우 득표 순위 2등까지 뽑아 재투표, 한쪽이 과반수를 넘게 표를 얻을 때까지 계속 반복한다. 간단한(...이라고 하지만 무려 1시간이나 걸린) 정견 발표와 질의응답이 이어진 후 투표에서 아쉽게(?) 한 표 차이로 1차 투표에서 떨어졌다. 사실 이미 하려고 계획 중인 일들이 너무 많았기 때문에, '얼마나 시간 투자를 할 수 있는가'하는 질문에서 그 부분을 솔직하게 얘기했고, 내가 투자할 수 있는 시간이 어느 정도까지다라는 걸 밝혔기 때문에 그 정도면 잘 나온 거라고 볼 수 있겠다. 그렇게 해서 남은 2명의 후보를 가지고 무려 3번의 재투표를 거쳐 한 사람의 당선이 확정되었다.

갑자기 추천받는 바람에 미리 생각하지 못했었지만, 동아리 활동의 비중을 얼마만큼 조절할 것인가 하는 문제, 내가 하고 싶은 일들—TNF 활동, URP 연구, 부전공 코스? 등—의 우선순위를 어떻게 놓을 것인가 하는 문제들을 좀더 곰곰이 생각해볼 기회가 되었다. 결국 내가 내린 결론은, 여전히 학업이 1순위이며, 나머지 활동들은 유연하게 +- 하면서 가야겠다는 것이었다.

*

어쨌든 벌써 12월에 접어들었다. 올해는 정말 본격적인 전공과목의 시작으로 빡센 해였고, 운전면허와 유럽여행 등 새로운 경험들을 했던 해였다. 이제 남은 프로젝트·숙제·기말고사를 무사히 끝내고 나면 URP 연구가 시작될 것이고, 곧 Supreme Commander도 출시되겠지. 내년도 즐겁게 살아보자꾸나!;

Posted
Filed under 살아가기, 생각하기

얼마 전에 이 글에서 뭔가 로봇에 올인해보고싶다는 얘기를 했었는데, 마침 딱 적당한 기회가 찾아왔다. 바이오시스템학과 바이오컴퓨팅 연구실에서 진행하는 수중로봇개발!;;

포스터

연구 내용은 대략 이러하다.

개별연구 학점도 딸 수 있고, 연구비나 개발 장비 등도 모두 지원받을 수 있는 최적의 환경이다. 물론 주제가 주제이니만큼 꽤나 빡셀 것도 같지만, 나름 해보고 싶었던 것이라 기대 중이다.

MR 사람들 중에 관심 있는 사람들을 수소문해 로봇 개발에 관심이 많은 한 후배 녀석과 함께 신청했고, 전체 팀 인원은 우리를 포함하여 6명이다. 실제 URP 연구는 한 팀당 최대 3명까지라서 제어 및 시뮬레이션으로 1팀, 실제 구현 및 제작으로 1팀 이렇게 2팀으로 구성하여 신청했다. (다행히 최대 지원 가능한 연구과제 수보다 실제 신청된 과제 수가 적어서 탈락하는 일은 없을 것 같다) 나는 굳이 말하자면 제어 및 시뮬레이션 쪽을 하게 되지 않을까 생각하고 있다.

어쨌든 간만에 또 빡시면서 뭔가 남는 나날을 보낼 수 있을 것 같다.

Posted
Filed under 살아가기, 생각하기

지난 주에는 두 개의 모임이 있었다. 하나는 Kaistizen님의 소개로 SK 아이미디어의 김용오 이사님을 만난 것이었고, 다른 하나는 Tatter&Friends MT였다. 간단히 후기를 정리하자면 학교 안에서 보여지는 바깥 세상에 대해 좀더 잘 알게 되었다는 것이다. 숙제 내고, 학점 따고, 졸업 후 진로는 어떻게 하고.. 이런 일상적인 고민들과는 다른, 비즈니스 세계는 어떻게 움직이고, 기업들은 어떤 인재를 원하는지, 우리가 만든 것이 가치를 가지기 위해서는 어떤 조건이 필요할지, 앞으로 IT가 흘러갈 방향은 어떤 것일지 등에 대한 이야기들이었다.

SK 아이미디어의 캠퍼스 미팅

(딱히 모임에 붙여줄 이름이 생각나지 않아서 일단은 이렇게 적는다.) SK 계열로 새로 시작한지 얼마 안 된 게임 개발사인 SK 아이미디어의 이사를 맡고 있는 김용님이 KAIST 전산과 학생 몇명과 함께 저녁 식사를 하며 '인재 구하기'와 함께 회사 소개 등을 했던 자리였다. 이런저런 잡담도 하고, 그 회사가 어떤 인재를 바라고 있는지 알려주기도 했다. "일하고자 하는 사람에겐 즐거운 회사지만, 출근하고자 하는 사람들에게는 가차없이 혹독한 회사가 될 것이다"라는 게 가장 기억에 남았다.

사실 그 이사님보다는, 함께 왔던 소프트웨어 개발경력 15년차이셨던 분(명함은 받았는데 따라오신 두 분 중 어느 분인지 기억이..-_-;;)과 이야기를 더 많이 나누었다. 개발경력 15년이라면 30대 중후반부터 소프트웨어 업계에서 대부분 관리직으로 넘어가는 현실을 생각했을 때 우리나라에서는 매우 드문 경우다. 네트워크, 모바일, 게임 등 다양한 분야의 경험을 가진 분이었다. 최근의 이공계 기피와 관련해서 여러 이야기들을 해주셨는데, 이제 사회는 어떤 직종을 하더라도 편하게 살게 놔두지는 않을 것이며, 다만 기본 baseline의 높낮이 차이가 있을지라도, baseline이 상대적으로 낮은 IT나 공학 관련 업종은 그만큼 사람들의 spectrum이 크기 때문에 KAIST 학생 정도라면 그 spectrum에서 상위에 올라설 능력이 충분히 있을 거라는 얘기였다. 그리고 무엇보다 중요한 건 baseline과 삶의 질은 반드시 일치하는 것은 아니라는 점이었다. 우스갯소리로 "의사는 본인이 행복한 게 아니라 그 가족들이 행복한 거다"라는 이야기도 했다. 현재 철밥통으로 여겨지는 공무원 사회조차 빠르면 10년 내에 지금의 형태로 유지될 수 없을 것임을 보고 있다고 했다. Kaistizen님의 경우도, 병특으로 몇 군데 업체에서 일해보고 느낀 것이, 자신의 능력으로 일정 수준의 회사들을 선택할 수 있는 권리가 있음을 깨달았을 때 미래에 대한 불안감이 사라졌다고 했다. 그전까지는 자신이 없었지만 이젠 자신감이 생겼다는 것이다.

아직 내가 연구를 하게 될지, 취업을 해서 살게 될 지는 모르겠지만, 분명히 이 사회는 본인의 능력으로 '신분'을 바꿀 수 있는 곳이고, 따라서 KAIST라는 베이스를 가지고 있다면 충분히 승산이 있는 곳이라는 얘기였다. 그 예로 그 개발자 분은 삼성전자 임원을 들었는데, 물론 임원이 된 후에도 삶은 계속 피곤하고, 그 자리에 오르기까지, 오른 후에도 계속되는 경쟁이 있겠지만, 그 사람의 능력이 그만큼 인정받았다면 그런 정도는 해야 하지 않겠는가라는 거였다. 넓은 spectrum에서 자신의 위치를 찾아나가는 것. 그것이 중요하다는 뜻이었다.

Tatter&Friends MT

지난 4월 14일 TNF 포럼이 만들어진 후로 처음 있는 MT였다. TNC/TNF 합쳐서 16명 정도(laziel님 소개로 미니보드 개발하시는 분도 오셨다)가 연세대 정문에 모여(마침 리처드 스톨만의 강연회가 있었기 때문인데, 숙제-_-때문에 못 간 것이 아쉽다.) 경기도 양평의 한 펜션으로 이동했다. 즐거운 잡담과 놀이 분위기도, 또 심각하게 태터툴즈의 미래에 대해 이야기해보기도 했다. 밖에서 바베큐 파티도 하고, 사람들과 함께 적분게임, 베스킨라빈스 등의 놀이도 하고, 또 모닥불을 지피고 둘러앉아 심각한 이야기들을 나누었다. 온라인에서만 서로 보다가 오프라인에서 만나는 재회의 기분도 느껴보고, 태터툴즈 1.1 발표와 관련한 이야기들도 하고...

태터툴즈로 '무언가'를 해보려면 우선 블로고스피어의 전체 참여자의 절대 수치가 늘어야 한다—현재 나타나는 시스템적인 문제들 중 상당수는 시간과 인원수가 해결할 수 있을 것이다, 항상 사용자의 입맛에 맞추려고만 하다보면 정작 우리의 색깔을 잃어버리고 표류할 수도 있다—설령 쓰기가 어려워도 그걸 감수할 만한 가치를 느낄 수 있도록 해야 한다, 명품 자동차를 사는 사람은 그 자동차가 가진 세세한 기능이나 장점들을 다 인식·사용하지 않는다—단지 그렇다는 느낌을 사는 것이다, 우리는 태터툴즈가 (실제로 다 사용하지는 않더라도) 무한한 확장이 가능한 publishing platform으로 인식되도록(실제로도 그렇게) 해야 한다, 사용자 지원 부분을 갈아엎을 필요가 있다, 나는 패러다임이 변하는 이 시기에 내 아들이 '아빠는 그때 뭐했어요?'라고 물었을 때 자신있게 대답할 만한 것을 하고 싶다…….

모닥불에 둘러앉아 각자 돌아가면서 말한 것들이다. 짤막짤막한 이야기들이었지만, 대한민국에서 가장 주목받는 블로깅 툴을 만드는 사람들이, 그렇게 된 이유를 알 수 있었다. 또한 현재와 과거를 바라보지 않고 항상 그 다음을 보는 것. Blog 다음은 무엇이 될까? Blog를 이용한 커뮤니티의 발전? 그 다음은? 나로서는 정말 느끼고 배울 것이 많았던 대화였다.

돌아오는 길에, 노정석님의 차를 타고 이야기를 나누었다. 과거 전설적인 해킹 사건의 주인공이기도 하셨고, 보안업체 Inzen의 설립에 참여하기도 하셨으며, 한때는 자동차 경주에 푹 빠져 레이서 생활까지 한, 매우 특이한 경력을 가진 분이다. 지난 LiveBlog 때 처음 만난 이후로 지금까지 TNF를 통해 계속 연을 맺어왔는데, 이때 좀더 심도있는 이야기를 나눌 수 있었다. 여러 분야에 관심이 많다면 다른 것들을 모두 잊어버리고 한 분야에 1~2년 정도 투신했던 것이, 많은 것들을 잃긴 했지만 반대로 자신을 사람들에게 각인시키는 데에는 큰 도움이 되었다는 얘기부터, '앞으로 자신이 다른 사람들에게 어떤 사람으로 기억되길 바라는가'하는 질문도 남기셨다. 또한 세상은 소위 '공부 잘하는 사람들'에 의해 돌아가는 것이 아님을 깨닫기까지, 가장 어려운 게 사람 공부라는 이야기도 해주셨다. 이른바 비즈니스를 해온 분으로서 자본주의에 기반한 사회 시스템에 대해 상당히 예리한 시각을 가지고 있음을 알 수 있었다. (겉으로는 아닌 척 하시지만 딱 드러나는 것 같다.)

*

가끔은 학업에서 벗어나(....덕분에 이번 PS 숙제는 말렸다! 하하-_-) 이렇게 다양한 사람들을 만나고 보다 넓은 세상에 대해 이야기를 들어보는 것도 좋은 경험이다. 학교 안에서 당장 다음 학기 무슨 과목 듣지 이런 고민을, 숙제 듀 걱정하고... 하지만 궁극적으로 내가 무엇을 위해서 그것들을 하는지 되짚어보고, 내가 세상에 가치있는 사람으로 남기 위해서 어떤 일들을 할 수 있을지 잘 생각해봐야겠다.

Posted
Filed under 살아가기, 생각하기

오늘 PS 수업 시간은 여느 때와 마찬가지로 진행되었다. 마지막에 시간이 좀 남아서, 전에 숙제로 풀었던 ACM ICPC 예선문제들을 어떻게 풀었는지 설명하는 시간을 만들었는데, 그 중 F번 금고 문제를 푸는 것에 대한 이야기가 오갔다. 가장 typical하게 푸는 해법은 대충 다들 알고 있는 분위기였다. 그러다가 전부터 두각(?)을 나타냈던 한 학생(아마도 한 살 많은 3학년인 것 같음)이 Linear Algebra(-_-)로 문제를 더 확장한 임의의 경우에 대하여 polynomial 시간 안에 푸는 방법을 제시했다.

그 분이 약 20여분 간 설명하면서, 물리학에서는 이런 테크닉을 일반적으로 쓰는데(물리과 복수전공임-_-) 이 문제에 적용하면 어떨까 했더니 order of n^6 안에 이런 류의 문제를 모두 풀 수 있을 것이라는 결론을 얻었고, 문제 특성을 이용한 최적화를 통해 n^2까지 줄였다면서 설명한 주요 골자는 금고 grid를 하나의 vector로 표현하고, 문제에서 금고 손잡이 돌리는 동작을 다시 하나의 vector로 표현해 n^2 x n^2 matrix를 만들어서 문제에서 제시된 현재 상태로부터 초기 상태까지 가는 operation을 어찌어찌 잘 하면 구할 수 있다는 것이었다. 그러면서 이런 방법이 Pattern reconginition 분야에서 많이 쓰이고 있으며, 필기 인식을 4x4 matrix 정도로도 상당한 정확도로 계산할 수 있다는 설명까지 덧붙였다. -_-;

다른 사람들은 그 설명을 보면서 다들 감동 or 관광(...)타는 분위기였고, 교수님도 extra point를 주라며 조교한테 얘기하셨다. (뭐, 이미 지금까지 해온 숙제들을 보면 A+이 아닌 게 이상하겠지만..)

역시 세상은 넓고 머리 좋은 사람은 많다. (우리들 사이에서는 '본좌'라고 부른다.) 검색엔진을 개발하시는 고감자님의 블로그를 보면서 선형대수학과 확률 통계의 중요성을 새삼 느끼고 있던 차였는데, 이런 문제도 선형대수학 테크닉을 활용해서 저렇게 멋지게 풀어낼 수 있는 걸 보니 정말 수학의 중요성을 절감할 수 있었다. 하아.. 그나저나 이번 선대개 재수강은...ㅠ_ㅠ

ps. 역시 polarnara님처럼 선대를 한 네 번은 들어야 하는 것일까. (....)

ps2. 이참에 물리과 복수전공을...?! ;;;

Posted
Filed under 살아가기, 생각하기

드디어 MR 20주년 총회가 끝났다. 사실 뒷풀이로 술을 더 마실까 했었으나 이미 폭탄주 한 잔 마시고 속이 좀 안 좋았던 터라, 또 노트북 등등 짐도 가져와야 해서 먼저 들어왔다. (그래도 술 마시기 전 뷔페를 잔뜩 먹어놔서 그나마 좀 낫다-_-) 전에 틀만 대강 잡아놓고 본격적인 작업은 어제 오후에서야 시작했던 웹회지는 그야말로 초벼락치기로 얼추 마무리했다;; (무려 시작 1시간 전에 완성, 지욱형 컴퓨터에 있는 초고속 레코더로 구우니 660MB짜리가 약 130초만에 구워져 30여장을 만들어내는 기염을 토했다.)

20주년...이라고 하면 1기 선배가 86학번, 2기 선배가 87학번이다. 내가 87년생이니 그야말로 까마득하다. 선배들이 했던 많은 이야기들 중에 생각나는 건, 자기들도 20년 후에 이런 날이 올 거라고 전혀 생각지 않았는데 막상 이런 날을 맞고 보니 기록(사진 등)을 잘 남겨두는 것이 정말 중요하더라, 엔지니어가 여러분 인생의 전부가 아니다—보다 많은 분야에서 이공계 출신을 원하고 있다, 젊을 때 투자할 수 있는 가장 큰 자산은 바로 시간이다—뭔가 건더기를 남길 만한 것에 투자해라 등. 몇몇 선배분들의 인생 세미나(..)와 자신이 하는 일에 대한 소개(전자공학이나 로봇 등)도 있었다. 그 당시의 사회상과 지금의 사회상, 또 그분들이 인식하셨던 세상과 우리가 인식하는 세상에는 분명 차이가 있었지만, 순수하게 무언가를 좋아해서 자신의 시간과 노력을 쏟아부을 수 있는 열정만은 같음을 확인할 수 있었다. 국내 최초의 미로 로봇 대회 주최, 로봇축구대회 주최 등의 역사와 그에 실제로 참여했던 선배들을 보면서, 또 심지어는 8051칩용 상용 컴파일러가 비싸다는 이유로 직접 컴파일러를 만들었다(....)는 선배도 보면서, 순수한 열정으로 이뤄내는 것에는 그 가능성이 무한하다는 것도 새삼 느꼈다.

*

한편, 내가 담당했던 이번 웹회지는 python의 도움을 크게 받았다. 이번에는 로컬에서 수동으로 일일이 html을 파일을 만들지 않고, 웹서버에서 php를 이용해 반복되는 부분들을 깔끔하게 처리하고, (통째로 다운받았을 때) 디렉토리의 구조화를 위해 .htaccess로 mod_rewrite 설정을 사용했다. 그런 다음 WebCopier라는 프로그램으로 통째로 다운받고, 용량 문제로 1byte짜리 가짜 파일로 처리했던 이미지나 동영상 등을 실제 데이터로 바꿔주었다.

이 과정에서 이름이 모두 제각각이었던 사진 파일들의 이름을 대량으로 변경하는 것과, WebCopier 프로그램의 버그로 인해 일부 css나 링크의 상대 주소가 제대로 처리되지 않는 문제들을 python 스크립트를 이용해 아주 간편하게 해결할 수 있었다. 만약 이걸 몰랐더라면 엄청난 노가다질을 해야 했을 것이다. 예전 같으면 과학전람회 실험데이터 처리용으로 만들었던 macro 프로그램을 썼겠지만 새 컴퓨터에 VB 런타임 까는 게 귀찮아서 python으로 짠 게 결과적으로 더 빨리 결과를 얻을 수 있었다. 파이썬 만세!;

또한 이번엔 mootools를 사용하여 간편하게 javascript 애니메이션을 구현했다. 예전에 prototype을 쓸 때와는 사용방법이 좀 다른 것들이 있어서 삽질을 좀 했지만, 다행히 시간 내에 모두 해결할 수 있었다. 또한 php를 써서 중복 부분을 처리했기에 지난번 회지처럼 노가다를 줄이기 위해 iframe을 사용할 필요가 없어 인쇄용 stylesheet도 매우 깔끔하게 만들 수 있었다. 다만 역시 문제는 Internet Explorer. 그나마 7.0이 나와서 조금 낫긴 하지만 만들다 만 듯한 느낌은 어쩔 수 없었다. 시간 관계 상(하루만에 벼락치기했으므로-_-) IE6 이하 버전에 대한 hack 지원은 포기했다.;;;

*

사실 나도 어떤 한 주제의 로봇을 딱 정해놓고 올인해서 만들어보고 싶은 생각이 있다. 선배들이 그러했던 것처럼 학점이나 다른 자기 시간을 포기하고 그렇게 해볼 수 있을까. 어렸을 때 레고로 도시를 조립하면서 태어나서 처음으로 밤을 새봤던 기억이 난다. 물론 SPARCS에서 진행하고 있는 각종 프로젝트나 Tattertools, MetaBBS와 같은 프로젝트도 마찬가지지만, 역시 직접 손으로 만져볼 수 있는 물건을 만드는 것은 소프트웨어를 만드는 것과는 다른, 뭐랄까, 좀더 인간적인 애착이 강하게 느껴지는 것 같다.

로봇을 만들고 싶었던 어렴풋한 로망을 한 번 불태워보고 싶다. (그러나 숙제와 프로젝트가...ㅠ_ㅠ)

*

어쨌든 20주년 총회는 끝났다. 첫번째 10년은 마이크로마우스, 두번째 10년은 로봇축구였다면, 다음 10년은 무엇이 동아리의 메인 테마가 될까. 사뭇 궁금해진다.

Posted
Filed under 살아가기, 생각하기
요즘 서남표 총장의 학부교육 개혁안 때문에 말이 많다. 전과목 영어강의화, 재수강 3개 제한 등 논란이 많은 것들부터 시작해서, 리더십 강화를 위한 각종 프로그램 등을 도입한다는 얘기도 있고, 학과장들이 학과 운영을 자율적으로 할 수 있게 한다든가 하는 긍정적인 변화들도 보인다.

그러나 KAISTIZEN님이 지적하신 것 중에 마음에 와닿는 것이 하나 있었다. 바로 동아리에 관한 것이다.

SPARCS에서 매년 나오는 얘기였고, 지금도 한창 논의되고 있는 것이 "동아리의 정체성"을 어떻게 가져가야 할 것인가 하는 주제다. 시스템 프로그래밍을 다루긴 하지만 실제로 하는 프로젝트들은 전부 웹에 관한 것들이고, 실제로 도움이 되는 걸 하려면 어떤 내용을 다루어야 하겠는가, 학교 수업에서 배울 수 없는 부분들을 커버하려면 신입생들에게 어떤 것들을 가르쳐주면 좋을까 등등.

그러나 가장 결정적인 문제는, 어떤 내용을 다루든 어떤 것을 가르치든 어떤 프로젝트를 하든, 동아리원들이 마음 놓고 동아리활동에 전념할 수 있는 시간이 있어야 한다는 것이다. 그나마 교내에서 활발한 활동으로 가장 실질적인 성과를 보이는 동아리 중 하나인 SPARCS에서조차 이런 고민을 하고 있을 정도다. MR의 경우도, 지난날 화려한 과거(로봇축구대회 등등)를 뒤로 한 채, 최근 몇 년 동안 이렇다 할 활동이나 성과를 내지 못하고 있는 건, 정말 밤새서 로봇에 대한 열정을 불태울 만한 "용기"가 이젠 필요해졌기 때문이다.

나는 KAIST 전체 학생들로 봤을 때 학점으로 치자면 중상위권에 속한다. 그런 만큼 학점 관리를 위해서나, 내 자신의 공부에 대한 만족을 위해서나, 학업 자체에 들여야 하는 시간이 매우 많다. (그나마 과학고를 졸업했기 때문에 KAISTIZEN님에 비해서는 유리한 위치에 있다고 볼 수 있겠지만, 그럼에도 불구하고 이만한 학업 성적을 계속 유지해간다는 것은 꽤나 어려운 일이다.) 그렇지만 동아리 활동을 통해서 얻은 것은 학교 수업만으로는 절대로 채워질 수 없는 귀중한 경험과 기술들이었다. 하지만 막상 동아리 활동을 하면서도, "이런 것을 해보겠다"라고 말만 해놓고 정작 실제로 실행하지 못한 것들이 너무나 많다.

그렇다고 해서, 수업을 널럴하게 해야 된다고 주장하고 싶지는 않다. 다만 "학생들이 나태한가"하는 문제는 굉장히 심사숙고해봐야 할 문제라는 것이다. 실제로 나태한 생활을 하는 학생들이 없는 것은 아니다. 오히려 과학고를 나온 아이들 중에 그런 경우가 더 많을지도 모르겠다. (초반에 적응이 쉬웠으니까.)

내가 보기에, 근본적으로 학부 교육을 개선하려면, 학생들이 KAIST에 대한 자부심과 긍지를 가지고, 자신의 목표를 확립해갈 수 있도록 유도해주어야 한다. 과학고에서 KAIST를 오는 경우, 상당수의 학생들이 "남들이 가니까"라고 따라오는 경우가 많고, 학과를 선택할 때도 "내가 이런 것을 잘 해왔으니까" 혹은 "고등학교 때 경시를 이쪽 분야를 했으니까"라고 선택하는 경우가 꽤 있다. 나는 비록 KAIST는 묻혀서 왔을지라도, 학과 선택이나 매 학기 수강 신청 등은 정말로 내 진로를 계속 고민하면서 했고, 그렇기에 하나하나에 최선을 다해 참여하고 있다. 보다 많은 학생들이 그러한 자세를 가지고, 나 또한 더욱 의욕을 불태울 수 있게 하려면, 학생들이 학교에 대한 자부심과 긍지를 가질 수 있도록 해야 한다. (그렇다고 학생들이 긍지가 없다는 건 아니나, 좀더 열정적인 면이 발휘될 수 있도록 해야 한다는 뜻이다) 가뜩이나 빡센 전공 수업들을 들으며 목표를 확립하지 못하고 여기저기 방황하게 놔두지 말아야 한다는 것이지, 수업 자체를 더욱 빡세게 만들어야 하는 것은 아니라는 뜻이다.

오히려 학부 교육을 개선하겠다면, 수업 자체의 질을 개선하는 쪽으로 갔으면 한다. 질을 개선하는 것과 학업에 대한 부담을 가중시키는 것과는 근본적으로 다른 문제다. (현재 총장이 제안하는 정책들이 모두 그렇다는 건 아니지만, 몇몇 정책은 상당한 위험성을 내포하고 있고, 좀더 긴 관찰 기간이 필요하다.) 이미 기존 동아리의 활동이 위협받을 정도로 학업에 대한 부담은 상당하다. 다만 학업을 아예 포기하게 만드느냐, 아니면 모두가 열심히 노력할 수 있게 잘 이끌어주느냐. 잘 생각해봐야 할 문제다. 동아리를 통해 학교로부터 얻을 수 없는 다른 무언가를 얻을 기회 또한 제공해야 한다. 마지막으로 자신이 그렇게 공부를 함으로써 어떤 가치를 얻을 수 있는가에 대한 확신을 심어주는 것이 필요할 것이다.

ps. 덤으로, 제발 식당밥 좀 맛있게 해줬으면 좋겠다. -_-
Posted
Filed under 살아가기, 생각하기
어제 택배 송장 번호를 받고 오늘 아침에 택배 직원한테 전화가 왔다. 심리학개론 수업에 간 사이 배달된 모니터.

책상 주변 물건들의 위치도 바꾸고 청소기도 돌리면서 끙끙대며 설치해놓고 보니 완전 후덜덜이다. ;;;;;
원래 20인치 정도로 얌전하게(?) 가려고 했는데 TNF 교주님의 뽐뿌질에 넘어가 질러버린 DELL 2407WFP. -_-;; 막상 그래놓고서 그분은 내가 정말로(..) 사버린 걸 보고 역으로 뽐뿌질 받아 돈모으려고 열심히 알바 중이시라고 한다.;

현재 디카가 없어서 아쉽게도 설치 상태를 찍어서 올리진 못하겠지만, 어쨌든 다행히(?) 기숙사 책상 위에 놓을 만한 크기라는 것.; 스피커 두 개를 옆에 끼워넣자니 살짝 모자라다. 대신에 좋은 건 USB 단자가 모니터에 내장되어 있고 무려 SD/CF 리더기까지 달려있다는 것이다. (앞으로 리더기가 필요 없을 듯?)

일단 화면을 보면 아직까지는 불량화소는 특별히 눈에 띄지 않는 것 같고, 굳이 찾으려고 해도 쉽지 않을 듯(...)하다. 현재 노트북 LCD가 실수로 두어번 충격 준 데다 키보드 바꿔끼우면서 가운데가 불룩해져 LCD를 압박하는 등의 이유로 상태가 별로 안 좋은데, 새로 산 모니터의 LCD를 보니 아주 환상적이다. 일단 검정과 흰색의 구분이 명확하고 밝기도 당연히 훨씬 밝다. 또한 1920x1200 해상도임에도 노트북보다 픽셀이 커서 의자에 앉아 등을 똑바로 펴고 앉아도 작은 글자를 보는 게 더 편해졌다. (다만 흰색/검정인 경우 대비가 너무 높아서 오히려 약간 회색을 쓰는 게 나을 듯하다)

어쨌든 비싼(...) 물건이니만큼 품질이나 성능은 확실한 것 같다. 앞으로 확실하게 잘 써야지.

ps. 모니터를 큰 걸 사서 책상이 좁아지지 않을까 하는 걱정을 주변에서 했지만, 오히려 노트북 본체가 차지하는 공간이 없어져서 실제 사용할 수 있는 공간은 더 넓어졌다. :)
Posted
Filed under 살아가기, 생각하기
저번 월요일에 베타를 설치한 후, 내 노트북에서 실행해보려고 안간힘을 썼으나 계속 실패하여 좌절하고 있던 터에, 다행히 IRC에서 어느 분의 도움으로 베타 키를 얻어 gpg 포럼을 뒤질 수 있었다. black screen에 관한 이슈가 상당히 많았는데, 그 중에 전체화면 모드에서 화면이 깜빡거리면 그래픽카드 드라이버 업데이트를 해보라는 얘기가 있었다. 내가 딱 그렇길래 바로 업데이트 ㄱㄱ 했는데, 노트북이니 그래픽카드는 Radeon 9600 Mobility였고, 최신 드라이버를 찾는 데 한참이나 헤매야 했다. 다행히 설치 후 실행은 잘 되었다.

베타키를 얻은 사람들과 2v2 멀티를 했는데, 처음엔 그럭저럭 할 만 했으나 옵션 조절하는 법을 몰라 기본 옵션으로 그대로 했더니 테크3 타고나서부터는 fps가 1 이하(......)로 떨어지면서 거의 컴퓨터를 통제할 수 없는 상태가 되었다. (클릭을 하면 한 4초쯤 후에 반응이 온다) -_- 그렇다고 중간에 나가자니 다른 사람들이 게임 중이어서 좀 그렇고.. 마침 졸리기까지 해서 그냥 자버렸다;;;; 아침에 일어나보니 게임이 끝나서 disconnect가 떠 있었다. (승패는 확인 못함) 어쨌든 돌아간다는 것 자체는 확인이 된 셈이다. (그러고나서 리플레이 모드에서 최저 옵션으로 맞추니 어제보다 2배쯤? 빨리 돌아가더라...라고는 해도 8fps 정도. orz)

그러던 와중, 드디어 새 컴퓨터가 도착했다! (...) 조립 + WinXP Pro 설치까지 해주었는데, 아주 환상적이다. (XP 라이센스는 학교 공용 라이센스로 살짜쿵 변경을..-_-) 아직 모니터가 배송이 안 되어, 잠시 룸메 모니터를 빌려 세팅을 했는데, 완전 반응속도가 다르다; 3년 가까이 노트북만 써오다가 콘로 E6600 + RAM 2G (DDR2 800MHz) 데스크탑으로 갈아타니 거의 속도가..-_-;;; 이제 월요일에 모니터가 도착하면 수프림커맨더를 돌려보는 일만 남았다;; 그러면 그래픽카드 성능도 확인할 수 있을 것이다. 흐흐.. (지금은 원격데스크탑으로 접속해서 쓰고 있는데, 역시 내 노트북에 접속해서 쓸 때보다 빠르다)

어쨌든, 이제 좀 즐거운(?) 컴퓨터 라이프를 즐길 수 있게 되었다.
Posted
Filed under 살아가기, 생각하기
시험도 끝났고 하니(...) 간만에 말림성 포스팅을 좀 해봐야겠다;

일단 내가 있는 과는 전산과. 보통 다른 대학에서는 컴퓨터공학과라고 해서 전자공학이랑 전산학이랑 같이 섞어서 배우는 경우가 많은데 우리학교는 둘이 엄연히 다르다. 2학년 전공 과목 중에 디지털 시스템 및 실험이나, 3학년 전공인 전산기구조(일명 architecture) 과목은 내용이 비슷하게 겹치지만, 그 외는 상당히 다르다.

※ 내가 비교적 잘 아는 과목 위주로 적었음.

[1학년(무학과) 과목]
CS101 기초프로그래밍 -_-
과목의 존재 이유를 잘 알 수 없는 과목. 프로그래밍을 좀 해본 사람들한테는 귀찮을 정도로 쉽고, 프로그래밍을 전혀 안 해본 사람들한테는 매우 어렵게 느껴지는 과목이다. 이 과목을 듣는다고 해서 프로그래밍에 대한 이해가 높아진다거나 하는 것 같진 않다; 나는 프로그래밍을 배우고 싶다는 사람이 있으면 CS101 듣느니(어차피 기초필수라 다 듣지만-_-) 2학년 전공인 데이터구조를 들으라고 권한다.

[2학년 과목]
CS204 이산구조
전산학에서 다루는 다양한 이론들을 맛보기 형식으로 배우는 과목이다. 전산과 전공이 아니더라도 들어두면 도움이 될 때가 있는 것 같다. 수학과의 이산수학과 학점교환이 되는데, 이산수학은 훨씬 빡쎄다;; 주로 다루는 내용은 집합, Logic, Graph, 재귀수열, Bool 대수, 알고리즘 기초, Relation, Tree 등의 수학과 관련된 것들이다.

CS206 데이터구조(Data Structure; DS)
프로그래밍을 하는 데 있어서 뼈와 살이 되는 것들을 배우는 과목으로, 본격적인 전산과 코딩을 시작하게 된다. (코딩 스킬을 어느 정도 확립할 수 있기 때문에 타과생들도 많이 듣는 편이다) Stack, Queue, Tree, Recursion 등과 함께 Java의 object와 reference에 관한 개념도 같이 배운다. 내가 수강한 Otfried 교수님 수업 프로젝트는 변수와 함수 선언이 가능한 계산기 짜기나 간단한 게임 만들기, 한자 패턴 인식 알고리즘 개발이 있었다. (....) 다른 교수님들의 경우는 상대적으로 프로젝트가 널럴하다.

CS202 문제해결기법(Problem Solving; PS)
전공선택 과목으로, 말 그대로 정보경시에 나오는 문제들만 죽어라 숙제로 푸는 과목이다. 정보경시를 했던 아이들이나 수학적 머리가 뛰어난 사람들이 가장 기를 펼 수 있는 과목(...)이기도 하다.; (이번 학기에 듣고 있는데, 물리과에서 온 분이 거의 관광하다시피 하고 있는 듯? -_-) 자연히 숙제 로드가 상당히 세지만 그만큼 재미도 있다. 5번 숙제를 제출하기도 전에 7번 숙제까지 나오는 압박스러움이 좀 있지만;

CS230 시스템 프로그래밍(System Programming; SP)
누가 말했던가. '어둠의 마법 방어술'이라고 비유할 수 있을 정도로 교수님에 따른 편차가 심한 과목. K모 교수님과 S모 교수님 두 분이 번갈아 가며 강의하시는데 그 난이도 차이는 상상을 초월한다. -_-;;; S모 교수님은 우선 '당구는 이론으로 치지 않는다'라는 사상과 함께 철학적인 토론 수업 + 스스로 학습하는 실전 삽질 코딩(체감로드 9학점 이상)을 가르치시는 반면 K모 교수님은 성경이라고 불릴 정도로 잘 정리된 수업 자료와 물 흐르듯 흘러가는 명강의로 유명하다. 배우는 내용은 Linux에서 system call이라 불리는 API를 사용해 프로그래밍하는 것이고 주로 shell을 기본적으로 짜게 된다.
나는 지난 학기에 S모 교수님 강의를 들었는데 역대 최고의 로드를 자랑했다. 이제 리눅스에서 프로그램 짜는 거 두렵지 않아~라는 말이 나올 정도.; 전공선택임에도 사실상 전공필수로서 전산과의 문턱이 되는 과목으로, 잘만 통과하면 확실히 전산과에 적응할 자격이 주어진다고들 말한다.

[3학년 과목]
CS300 알고리즘
2학년 때 PS로 삽질했던 것을 체계적인 이론과 함께 배우는 수업이다. Introduction to Algorithms를 교재로 쓴다. 로드가 좀 있는 편이지만 확실히 익혀두면 두고두고 써먹는 과목인만큼 전공 필수. 배우는 내용은 Divide & Conquer, Recursion, Search & Matching, Dynamic Programming, Backtracking 등의 알고리즘 설계 기법과 알고리즘의 시간복잡도나 공간복잡도를 분석하는 방법들이다.

CS311 전산기조직(Architecture of Computer;아키)
CPU에 들어가는 명령어 set이 어떻게 구성되는가라든지, 기초적인 전자회로를 이용하여 원하는 operation을 구현하는 방법, 연산/제어/입출력 장치 등을 배운다. 전자과적인 면이 짙지만 잘 알아두면 프로그래밍을 할 때 두고두고 도움이 되는 내용들이다. 임베디드 관련 계통을 할 생각이 있다면 정말로 중요한 과목. 전산과 과목 중에 유일하게 코딩을 하지 않아도 되는 과목이다.;

CS320 프로그래밍 언어(Programming Language; PL)
Prolog, Lisp, ML 등 함수형 언어 등 평상시 잘 접하지 않게 되는 다양한 프로그래밍 언어를 배운다. 또한 프로그래밍 언어를 설계하는 데 있어서 필요한 개념이나 자료 구조에는 어떤 것들이 있는지, 각 패러다임(functional인지 object-oriented인지 등)에 따라 어떤 issue들이 있는지를 개괄적으로 배운다. 전산과 과목 중 가장 코딩이 적은 과목 중 하나. 컴파일러의 선수과목이라고 볼 수 있다.

CS322 형식 언어 및 오토마타
프로그래밍 언어의 구성을 좀더 이론적으로(집합이라든가) 배우고, 이산구조 때 맛보기로 했던 오토마타를 본격적으로 다룬다. 오토마타는 쉽게 설명하자면 입력에 따라 자동으로 자신의 상태를 바꾸어가며 문제를 해결하는 자동 기계 정도로 생각하면 되겠다.; (가장 대표적인 예로 한글입력기를 들 수 있겠다)

CS330 운영체제 및 실험(OS)
전산과 전공필수 중 가장 고비가 되는 과목이다. 실습용 프레임워크 위에서 SP에서 사용했던 다양한 system call들, thread manager, virtual memory manager, filesystem 등을 직접 구현한다. 이 과목을 들을 때는 15학점 이하를 권장하고 있다.;; 다만 조별 프로젝트이기 때문에 학점이 반드시 실력과 비례하지는 않는다.;

CS360 데이터베이스 개론(Introduction to Database Systems; DB)
이건 H모 교수님과 K모 교수님(위와 다른 분)이 번갈아 강의하시는데 역시 어느 분이냐에 따라 수업 내용이 완전히 다르다.; 일명 황DB라고 불리는 H모 교수님 수업은 SQL Parser부터 시작하여 직접 DBMS를 구현하는 것이 한 학기의 목표고, K모 교수님은 SQL을 어떻게 하면 잘 사용할 수 있을까에 관한 수업이다. -_-; (이로부터 전자는 프로젝트가 빡세고, 후자는 숙제와 시험이 귀찮다는 것을 알 수 있다)

[4학년 과목]
CS420 컴파일러 설계
전산과 과목 중 가장 빡센 과목이다. 말 그대로 소스코드를 컴파일해 실행파일을 만드는 컴파일러를 만든다. Lexical analysis부터 시작해서 optimization에 이르기까지.. 정확히는 모르지만 C/Java를 변형한 스타일의 고유한 언어를 컴파일하게 된다고 한다.

CS441 전산망 개론(Network)
TCP/IP를 구성하는 각 네트워크 레이어에 대해서 차례로 배운다. 전산과 과목이 언제나 그렇듯 프로젝트의 압박이 좀 있는 과목.

CS480 컴퓨터 그래픽스
3D 그래픽을 DirectX 등을 쓰지 않고 직접 구현해보기도 하고, 간단한 지형 표현 엔진이나 미니 게임 등을 만들기도 한다. 꼭 들어보고 싶은 과목이나 로드가 만만치 않다. 기계과의 CAD/CAM과 학점교환이 된다고 알고 있다.

...

자, 이 정도면 대충 내가 아는 과목들은 소개한 것 같다. 물론 이 외에도 유명한 과목들이 더러 있기는 하지만, 전산과에서 대충 이러한 내용을 배운다는 것을 알 수는 있을 것이다.

근데, 다른 사람들 얘기 들어보면 울학교가 제일 빡신 것 같다. ㄱ-;
Posted
Filed under 살아가기, 생각하기
오늘부로 중간고사가 끝났다.;
이번 시험 기간의 총평 : 시험기간엔 IRC 켜지 말자. ㅠ_ㅠ

그러니까, 주말에는 뭐 이것저것 밀린 일거리도 좀 처리하고 말려준 다음(...) 월요일부터 착실하게 공부를 할 생각이었는데, IRC창에 뜬 Supreme Commander Beta Client가 돌돌 말아버렸던 것이다. 무려 룸메 컴퓨터에까지 설치해가며(아쉽게도 내 노트북에서는 그래픽 카드 호환 문제로 실행조차 되지 않음.. orz) 말려준 덕분에, 오늘 아침 8시까지 확률통계 공부하느라 밤새고(중간에 2시간 정도 자주긴 했지만)... 그나마 다행인 건 밤잠을 많이 못 잤음에도 시험 볼 때 컨디션은 나쁘지 않았다는 것. 긴장하면 역시 잠재력(?)이 발휘되는 것 같다.;;

확률통계 및 응용
이번 확률통계 시험은 시험지 앞장은 쉽고, 뒷장이 어려웠는데 책이나 숙제에 나오지 않았던 형태의 증명 문제가 있어서 곤혹스러웠다. 그 문제를 못 푼 사람이 상당히 많았던 것 같고, 나머지 유도 2문제는 살짝 공부 부족. 그나마 Central Limit Theorem을 이용한 30점짜리 증명문제는 풀어서 다행이다. (그러나 위에서 말한 3문제는 40점씩이라는 거-_- 참고로 만점은 300점) 결국 반타작인 셈이다.;

영어II
아침에 봤던 영어2는 완전..-_- 실력으로 푸는 게 아니라 말 그대로 닥치고 본문을 외워야 풀 수 있는 유형이었다. 문제는 '다음 중 문법 상 맞지 않는 것을 골라 바르게 고치시오'라지만 빈칸 뻥뻥은..... 매너염.

데이터베이스개론
마지막으로 봤던 김 교수님의 데이터베이스 개론은 완전 노가다였다. 프로그램 짤 때 레퍼런스 보면서 짜지 누가 그걸 다 외워서 짜나? 근데 그걸 100% 손코딩. -_-;;; 문제가 어렵진 않은데 일일이 쓰느라 시간 맞추기가 힘들 정도였다. (특히나 copy&paste가 가능할 정도면서 미묘하게 다른 Java JDBC와 C#.NET OLEDB 코드를 둘 다 쓰라는 건... 헷갈려서 꽤나 고생했다) 게다가 확률통계 공부하느라 며칠 전에 ppt 한 번 훑은 거 외에는 별도로 암기를 하지 않았으니... PL-SQL쪽의 stored procedure에서 예외 처리 부분은 완전 안드로메다로 가버렸다.;

심리학개론
어제 봤던 심리학개론은... 어찌된 게 인지과학입문의 주관식 서술형 문제보다 더 어려운 객관식 + 단답식 암기문제들 위주였다. 게다가 문제 수도 많아서 원래 같으면 1시간 반이면 여유있게 끝날 만한 시험이 아슬아슬하게 꽉 채워야 할 정도였다. 족보를 보진 않았지만 기존에 문제를 내던 방식을 완전히 뒤집는다고 하셨던 게 바로 이런 것인 모양이다. -_-

결국, 이번 시험에서 제대로 건진 과목은 선형대수학개론 하나 뿐인 것 같다. 나머지는 혼전이라 결과가 나와봐야 알 수 있을 듯하다. 과목 특성에 따른 공부 방법을 적용하지 못했다는 점이 가장 큰 실패(라고 아직 단정지을 순 없지만) 요인인 것 같다. 기말고사 때는 닥치고 다 외워주마! (...)
Posted
Filed under 살아가기, 생각하기
요 근래 한 2주 동안 숙제에 치여 살던 관계로 시험기간임을 알리는 포스팅조차 생략해린 상태. ㄱ-

일단 아까 오후 7시~10시까지 선형대수학개론 중간고사를 치고 왔다.;; 어제서야 겨우 숙제가 끝났던지라 시험공부는 말 그대로 벼락치기.. 했는데 그래도 재수강빨이 있는지(-_-) 일단 모르는 문제는 없이 다 풀었다. 역시 변수는 계산 실수를 얼마나 덜 했느냐 하는 것.

확실히 평상시에 빡세긴 해도 숙제가 꼬박꼬박 나오는 게 공부는 더 많이 하게 되는 것 같다. 그리고 수업 시간에 교수님이 '3x3 rotation transformation 주고 회전축과 회전각 구하는 문제가 나올 것'이라고 해서 그 부분을 집중적으로 봐뒀던 것이 큰 도움이 되었다.

저번 선대개와는 달리 교수님이 증명 위주로 문제를 내고 노가다를 많이 줄여서 상당히 좋았다. 초수강생들한테는 오히려 그게 어려웠을지도 모르겠지만, 나한테는 그게 훨 낫다. 행렬 계산은 최대 4x4를 넘지 않았고, 중간중간에 개념 증명이나 theorem들을 이용해서 간단하게 풀리는 것들이 꽤 있었다. (계산에서 가장 지저분(?)했던 게 분모가 11이 나오는 경우였는데, 초수강 당시 시험에서 6x6 determinant 구하다가 수백 단위까지 갔던 거 생각하면...-_-)

마지막 문제가 10점짜리 증명 2개였는데, 처음엔 바로 생각이 안 났다가 종료 15분전에 극적(...)으로 생각이 나서 후다닥 써서 낼 수 있었다. 다만 그 중 한 문제는 수식으로 유도하지 않고 기하학적 설명만 해놔서 살짝 깎일지도 모르겠다.

어쨌든 시험은 잘 본 편인듯 싶은데, 대강당에서 보는 시험은 그 후유증이 왜이리 심한지.. 좁은 좌석에서 쭈구린 채 시험지를 3시간 동안 들여다보고 있으니 왼쪽 목 뒤도 아프고 허리도 쑤신다. 중간중간에 스트레칭을 해줘도 긴장 상태라서 그런지 큰 효과는 없는 것 같다. 수강생이 워낙 많은 대형강의라서 어쩔 수 없긴 하지만서도 시험보는 환경은 최악이라고 해야 될까.

이제 남은 건 화요일 오후에 보는 심리학개론(원래 수요일인데 다른 시험이랑 겹쳐서 옮김), 그리고 수요일 하루 종일 보는 영어II, 확률과 통계, DB 개론이다. 확률 통계 족보를 사왔는데 생각보다 공부를 많이 해야 할 것 같다. 특히 exponential distribution과 조건부 확률 개념을 확실히 정립해야 할 것 같은 느낌. 고등학교 때 배운 것들과 상당 부분 겹치지만 moment generating function 등은 완전히 새로운 것이어서 공부가 좀 필요하다. DB개론은 SQL+Relational algebra 만들기 노가다 + 개념 암기라서 ppt와 교과서를 꼼꼼히 봐야겠고, 영어II는 본문만 잘 정리하면 별 문제 없을 것 갈다. 심리학개론은 은근슬쩍 양이 방대한데다 이 교수님이 교양수업 중에서는 시험을 어렵게 내시는 편이라 좀 로드가 있겠다. (결론은 다 열심히...-_-)

마지막으로, 이 모든 것이 끝나면 드디어 새 컴퓨터가 온다! -_-;
Posted
Filed under 살아가기, 생각하기
티스토리에 쓴 글인데 거기에만 두기에는 아까워서 링크.

"프로그래밍을 다른 사람들과 공유한다는 것"

ps. 확실히 긴 글을 쓴다는 건 상당한 정력을 요하는 일이다. 한 2시간 반에 걸쳐서 쓰고 되짚어보고 고치고를 계속 반복했더니 금새 피곤해졌다. (사실 시간도 새벽 3시니..-_-)