보관물

Archive for the ‘Mathematica 매스매티카’ Category

Mathematica 9으로 하는 음악 연구

11월 30, 2012 1개의 댓글

Mathematica 9으로 하는 음악 연구

By James H. Choi
http://Korean.SabioAcademy.com
원문출처

https://dl.dropbox.com/u/6378458/Column/Graphics/mozartbachbeethoven.jpg

Mathematica 9 에는 내가 언제부터인가 학수고대하던 기능이 드디어 포함 되었다.  이 중요한 기능이건만 하도 다른 혁신적인 기능이 새로 등장하는 바람에 정작 이 중요한 기능은 광고에 나오지도 않는다.

이 기능은 음악을 연구하는데 아주 중요하다.  예를 들어 음악이 바하의 곡인지 모짜르트의 곡인지 자동으로 구분하는 인공 지능 알고리즘을 만들어 내는 연구를 하기 위해서는 컴퓨터에게 입력시킬 수 있는 바하의 음악과 모짜르트의 음악이 필요하다.

한데 이 재미있는 연구를 하기 위해서는 첫 난관이 있으니 어떻게 그 많은 음악을 컴퓨터에게 어떤 노트가 어떤 음으로 얼마나 오래 지속되었는가를 입력하냐는 것이다.  악보를 자동으로 읽어 낸다면 해결이 되겠다.  내가 멘토한 학생 Hyunjoon Song 이 한 연구가 바로 이 악보를 스캔해서 인식하는 연구였는데 이 연구로 ISEF에서 4등을 수상했다.  하지만 아직도 수많은 font와 크기와 style로 인쇄된 악보를 다 인식한다는 것은 아직 요원한 단계이다.

하지만 해결책은 아주 간단하다.  인쇄된 책 ↔ Word file 에 해당되는 악보 ↔ MIDI file 이 있다.  즉 MIDI (Musical Instrument Digital Interface)란 컴퓨터에게 모든 음표의 높이, 길이 그리고 강도를 정확히 전달해 주는 file이다.  명곡은 이미 거의 다 MIDI로 나와 있기 때문에 이 파일만 읽어낼 수 있다면 단숨에 모든 명곡의 모든 음표를 내 손에 거머쥐게 되는 것이다.

https://i1.wp.com/dl.dropbox.com/u/6378458/Column/Info/Korean/SpecialEvents/SpecialEvents.gif

Mathematica 는 여태까지 MIDI file을 생성을 할 수 있었지만 읽지는 못했다.  위에 언급한 Hyunjoon Song도 이 MIDI export 기능을 사용하여 자신이 읽은 악보를 연주할 수 있었다.  한데 이 학수고대하던 MIDI file import 기능이 이번 Mathematica 9에 조용히 등장한 것이다.  그동안 Wolfram Research에 이 기능이 필요하다고 수차 건의하고 “기능이 만들어지면 알려 드리겠습니다”라는 email도 받았는데 약속 어기고 통지도 없이 조용히 등장했다.  http://reference.wolfram.com/mathematica/ref/format/MIDI.html

내가 가르치는 학생 중에 음악에 심취한 학생이 많다.  이들은 과학 연구를 해도 음악과 관계 된 것을 하여 님도 보고 뽕도 따려고 한다.  이번 MIDI file을 읽는 기능과 함께 이 학생들에게는 엄청난 자료의 세계가 열린 것이고 그 방대한 자료로 무엇을 어떻게 연구 할 것인가는 각 학생이 즐겁게 고심해야 할 일이다.

이 글의 영어버젼: Musicology Research with Mathematica 9

매스매티카 메스메티카 매스메티가 메스매티카

https://i1.wp.com/dl.dropbox.com/u/6378458/Column/Info/English/Copyright.gif

과학고 학생사이 연구 수준 차이의 원인

과학고 학생사이 연구 수준 차이의 원인

By James H. Choi
http://Korean.SabioAcademy.com
원문출처

제가 가장 잘 아는 과학고 IMSA (Illinois Math and Science Academy) 에서는 수요일 수업이 없습니다. 모든 수업을 다른 날에 하고 수요일은 지역의 대학이나 기관의 연구실에 가서 연구를 하며 살아있는 교육을 받게 합니다. 다른 과학고도 이와 비슷한 제도가 있어 인텔 경시대회 입상자를 보면 단연 과학고 출신이 많습니다. 그래서 학부모님들은 학생들이 Bergen County Academies 같은 과학고에 가서 이런 산 교육과 현장 경험을 얻기를 바라십니다.

그러면 이 과학고에 들어가면 급우들과 함께 발전을 하여 과학경시대회에서 입상을 할 수준이 될까요? (참고: 경시수학에 강한 고등학교로 진학하면 진학생의 수학이 강해지나?)

인텔 입상자들의 자기 소개를 읽어 보면, 그리고 제가 ISEF 에서 심사 인터뷰를 하면서 높은 수준의 연구를 한 학생들에게 물어 보면 그들이 가진 근본적인 공통점은 과학고 출신이라는 것이 아니라 이들을 가이드 하는 누군가가 있었다는 것입니다. 그런 가이드가 있었기 때문에 과학고에 간 것이고 그런 가이드가 있었기 때문에 입상 수준의 연구를 할 수 있었던 것입니다. 그런 준비 없이 그런 지원 없이 과학고에만 들어가면 겉 무늬만 갖추는 것이지 정작 중요한 내용은 빠져있어 과학고 다니고서도 과학 경시대회에 출전도 못하는 90%의 학생 중에 하나가 되고 맙니다.

일주일에 하루를 연구하면서 보내는데 어째서 근사한 논문이 나오지 않을까요?

입장을 바꾸어 생각해 봅시다. 바쁜 교수가 과학고의 부탁을 받거나 과학고와 협정을 체결한 대학측의 압력으로 고등학생 인턴을 받기로 합니다. 고등학생이 일주일에 한번 와서 하루종일 일하며 배우는 것이 원래의 의도라 좋게 해석하면 무료 노동력으로 볼 수 있는데 교수의 입장에서 보면 별로 시킬 일이 없습니다. 위험한 화학 약품이나 중장비가 있는 실험실에서는 오히려 학생이 다칠까봐 신경만 쓰입니다. 연구라는 것은 고도의 지식으로 새로운 분야를 개척해 나가는 곳입니다. 며칠 트레이닝 받아 할 수 있는 일이라고는 잡다한 뒤치닥거리, 실험관 씻는일, 서류 들고 왔다갔다 할 수 있는 일 밖에 없습니다. 그 비싼 장비를 잘 못 건드려도 안되고 정확도가 불확실한 실험을 하여 두고 두고 그 자료가 의심스러워도 안됩니다.  (참고: 인턴쉽 1: 고등학생 인턴쉽이란 말도 안되는 일)

그것도 학생이 매일 오는 것이 아닙니다. IMSA 학생은 수요일만 옵니다. 하다 못해 여러명이 무거운 것 들어 올리려 하면 그 날은 목요일입니다. 수요일이 다가오면 학생이 해야 할 일을 찾아 내야 한다는 자체가 스트레스로 느껴집니다. (제가 별로 할 줄 아는 것이 없는 인턴을 고용해 본 경험담입니다.) 병원 같은 곳에서 자원봉사를 하는 경우에는 연구를 하러 온 것이 아니라 봉사를 하러 온 것이니 부담없이 서류 들고 왔다갔다 하는 일을 시킬 수 있는데 이런 연구를 배운다고 온 학생들은 잡일만 하고 있으라고 할 수도 없고 중요한 일을 맡길 수도 없는 한마디로 도움이 되기 보다는 방해가 될 가능성이 훨씬 큰 존재입니다.

그렇다고 1주일에 한번 오는 학생을 훈련 시킬 시간도 여력도 그리고 이유도 없습니다. 가르치려면 교수가 월급 줘가며 일시키는 대학원생들을 가르쳐야 하고 봉사를 하려면 어렵게 사는 학생들 가르치는 봉사를 하지 무엇하러 이런 호사스러운 과학고등학교에 다니는 잘사는 집 윤기흐르는 귀공자를 위해 봉사합니까?

이렇게 고등학생이 연구소에 가서 일하는 상황이 암담하다면 대체 대학 연구소에서 일하며 논문을 쓰고 인텔에서 입상하는 학생들은 어떤 학생들일까요? 저도 확실히는 모릅니다. 하지만 (자료도 통계도 없는) 제 짐작으로는 이 입상할 학생들이 과학고로 간 것이지 과학고 학생이 입상하는 것이 아니라고 생각합니다.
https://i1.wp.com/dl.dropbox.com/u/6378458/Column/Info/Korean/SpecialEvents/SpecialEvents.gif이 학생들은 연구소에 가서 배운 학생들이 아닙니다. 이 학생들이 연구소에 갔을 때는 이미 연구의 내용을 알고 있었고 자료분석을 할 줄 아는 학생들이었습니다. 한마디로 교수가 당장 사용할 수 있는 유용한 지식이나 기술을 가진 학생들이었습니다. 유용했기 때문에 일을 맡겼고 일을 맡았기 때문에 발전을 했고 발전을 했기 때문에 더 유용해졌고 더 유용해졌기 때문에 더 중요한 일을 하고, 그러다 급기야 실력과 운이 따르면 연구 발표에 저자의 한명으로 이름이 들어가는 수준까지 올라가는 것입니다. 이런 학생이 선망의 대학 10군데 다 동시 합격하게 됩니다. 그리고 대학가서도 선두에서 질주를 합니다.

어떻게 하면 이렇게 연구의 내용을 잘 파악하고 도움을 줄 수 있는 수준의 당장 유용한 학생이 될 수 있을까요? 연구소 책임 교수와 첫 인터뷰 하기 전에 다 배우고 가야 합니다. 인터뷰에서도 온상에서 자라 배려는 전혀 없고 자신밖에 모르는 사고방식을 고스란히 보이는 “여기서 일하면 제가 많이 배우고 대학 가는데 기록도 도움을 받을 것 같아요. 제가 아는 것이 없어서 답답하시겠지만 귀엽게 봐 주시고 많은 지도 편달 바랍니다” 라는 소리 하고 있지 말고 (위의 식의 발언은 한국에서는 겸손하다고 하고 미국에서는 저자세에 꾸뻑거릴 수록 한심하다고 합니다. 저도 저런 소리 하는 사람, 세상이 자신을 위해 존재한다고 굳게 믿는 사람 절대로 고용하지 않습니다.)

“제가 전에 관심이 있어 이런 저런 일을 이렇게 해 내었는데 (일의 샘플을 내밀면서) 교수님 하시는 이 연구의 이 부부분에 바로 적용이 될 것으로 보입니다. 이 부분을 이런 식으로 분석 하신다면 제가 맡아 도울 수 있습니다. (한 편지를 내 보이면서) 전 프로젝트를 감독하셨던 분이 저에 대해 이런 추천서도 써 주셨습니다.”라고 저절로 고용하고 싶은 마음이 우러나오는 프로다운 고용인 관점의 기특한 소리를 술술 해야 하고 또한 실지로 이런 “뻥”을 받쳐주는 경력과 지식과 자세와 각오를 가지고 있어야 합니다.

이런 배경을 알고 보면 애써서 과학고에 들어가는 것만 집중을 할 것이 아닙니다. 그것도 흔한 “선행학습”이라는 이름으로 똑 같은 내용을 두번씩 배우는 버릇만 가르쳐 놓으면 한번도 배우지 않은 문제를 줄기차게 접하는 연구실에서는 완전히 lost 가 되는 것이 당연하죠. 이런 학생들은 과학경시대회에 출전할 논문은 커녕 연구실에서 폐 안 끼치고 오늘도 무사히 넘기는 것이 목적이 됩니다. 매주 연구실로 가는 날이 두려워지기 시작할 수도 있습니다.

그러면 어디서 배울까요? 학교에서 배웠을 수도 있지만 학교의 수업만으로는 부족합니다. 과학고의 수업도 AP Computer Science 정도의 프로그래밍을 가르치는 정도의 수준이지 이런 고도의 과학연구자료 분석을 가르치지 않습니다. 이 학생들은 대부분 혼자 배웠거나 부모에게 배웠거나 형누나에게 배웠습니다. (“끼”가 있는 학생은 중학교때도 혼자 배워 프로그래밍을 하는데 그 시간과 정열을 어느날 교수한테 가서 “나는 이런 일을 했습니다”하고 내밀을 수준의 결과를 내는데 집중해야지 이것 저것 끄적거리면 프로그랭밍에 관심 없던 학생과 구별이 되지 않습니다.)

가족에게 배울 수 있는 행운을 타고 나지 못한 학생이더라도 의욕과 재능이 있으면 멘토를 찾아 얼마든지 극복하여 성공할 수 있습니다. 이런 큰 그릇이 될 학생은 매사에 장래를 위해 조언/가이드를 해 줄 사람이 필요한데 리더 보다는 멘토가 더 필요합니다. 멘토는 학생의 이익을 위해 충고해주는 사람이고 리더는 전체의 이익을 위해 충고해 주는 사람입니다. 예를 들어 전쟁이 나면 리더는 “나라를 위해 전선에 나가 적군과 싸워라!”라고 웅변을 토하지만 멘토는 “전쟁이 났으니 나라를 위해 통신망을 유지하는 엔지니어의 일을 하라. 그렇게 나라를 위해 봉사하고 나면 전쟁 끝나고 나서 재건설이 시작 될 때 연봉이 높은 직장을 쉽게 구하게 된다. 통신망 엔지니어 중에서도 이런이런 분야가 가장 유망하니 이 부서에의 이 위치에 지원하도록 해라.”라고 조용히 조언을 해 줍니다.

같은 나라를 위해 전쟁에 나가는 것도 이렇게 여러가지 수준이 있는데 경시대회를 위한 연구를 하는 것도 마찬가지 입니다. 같은 연구를 하더라도 학생이 제한된 시간에 발표할만한 결과를 낼 수 있는 주제를 찾아주는 것, 학생의 이상적인 포부에 찬물 끼얹어가며 김새는 소리 해가며 학생이 시간내에 성취할 수 있는 수준으로 목적을 끌어내려 주는 것, 다 멘토가 잘 도와주어야 할 일입니다. 아무리 기발난 아이디어라도 자료를 구할 수 없으면 막아야 하고 실험 비용을 감당할 수 없는 아이디어도 막아야 합니다. “네 꿈을 추구해라! 네가 원하면 길이 열릴 거야!”같은 무책임한 소리하는 리더 믿었다가는 이쪽 저쪽 구름 잡다 귀한 시간 몇 년 보내고 내놓을만한 연구 결과가 없게 됩니다.

학생의 재능을 잘 파악하고 현재의 과학 발전 상태를 잘 알고 있고 각 경시대회의 요구하는 조건을 잘 아는 멘토가 7학년 8학년 때 잘 가이드를 해 주면 학생은 고등학교 때 부터 연구소에서 활동을 하며 자발적으로 높은 수준으로 상승할 수 있습니다. 고등학교의 수학 트랙 들어가는 것과 유사하죠.

제가 몇년 전에 Missy USA에 처음으로 쓴 “미국 수학 과정의 다양한 트랙“이라는 글은 널리 읽혀 이제는 많은 학부모님들이 같은 학교의 같은 학년도 전혀 다른 수준의 수학을 하고 있다는 것을 아시게 되었습니다. 그와 마찬가지로 같은 과학 고등학교에서 같은 인턴 프로그램을 하고 있어도 이렇게 아주 큰 차이가 나는 수준의 일을 하고 있게 됩니다. 이 차이는 수학의 수준 차이보다 더 커서 같은 날 같은 시간을 보내면 일을 해도 한 학생은 인텔에서 입상할 수준의 연구를 하고 다른 학생은 우울하게 시간 채우고 오는 상황까지 갈 수 있습니다.

이 고등학생이 할 수 있는 연구의 수준은 연구소를 찾아가기 전에 이미 결정이 되어 있습니다. 앞으로 과학고를 지망하는 학부모님들은 과학고 입학 했다고 저절로 첨단 수준의 연구를 하게 되는 것이 아닌 것을 주지하시고 자제분이 연구소 첫 방문날 인터뷰 할 때 제가 위에 묘사한 두 학생중에 어느쪽이 되어 가고 있는가를 생각하시고 준비를 시키세요.

 

https://i1.wp.com/dl.dropbox.com/u/6378458/Column/Info/Korean/Copyright.gif


Computational Mathematics 컴퓨터 수학

Computational Mathematics 컴퓨터 수학

Written on March 30, 2011

By James H. Choi
http://Korean.SabioAcademy.com
원문출처

수학의 한 분야 중에 Computational Mathematics라는 분야가 있습니다. 한마디로 컴퓨터 수학인데 컴퓨터의 계산이 빠른 것을 이용하여 사람이 하려고 했던 계산을 더 쉽게 하는 것에서 그치지 않고 전에는 엄두도 내지 못한 계산, 상상도 하지 못한 계산을 하여 수의 성질을 발견하고 새로운 패턴을 발견하는 것입니다.

“필요한 것도 아니고 그냥 이렇게 저렇게 장난하다 나오는 패턴이 뭐가 중요한가? 하나의 게임일 뿐이 아닌가?”라고 항의하실 수 있는데 원래 수학이 그런 것입니다. 초중고등학생들에게는 수학이 얼마나 필요한 것인지 누누히 설득하면서 가르치지만 (모두 사실이지만) 정말 첨단 연구는 필요/수요와 거의 무관하고 교수의 흥미를 찾아 미지의 세계로 들어가고 있습니다. 제 학생도 과학 경시대회에 수학으로 출전하여 수학에 경험이 없는 심사위원이 “이것은 대체 무엇에 쓰는가?”라고 물어볼까봐 답을 준비해 가야 했습니다. 순수수학자에게 용도를 묻는다는 것은 상당히 무례한 질문인데 (축구나 체스와 마찬가지로 그 자체가 재미있는 것이지 어디에 사용하는 활동이 아닙니다) 요즘 세상에 무례한 사람들이 많아 방어준비를 해야 합니다. 다른 장난과 수학이 다른 것은 수학은 언젠가는 유용하게 됩니다. 많은 물리에 사용하는 수학은 심지어는 100년도 전에, 수학자가 심심풀이로 풀어놓은 문제가 바로 물리 실험에 관찰이 되어 사용하게 됩니다. 좋은 예로 일상생활에는 전혀 아무데도 쓸모가 없다고 생각하면서도 많은 수학자들이 재미로 연구한 prime number, prime factorization은 이제 인터넷에서 정보를 보호하는 기반이 되었습니다. Prime number의 성질을 사용하기 때문에 인테넷에서 암호도 사용할 수 있고 은행일도 가능한 것입니다.

순수 이론수학은 종이와 연필만 가지고 하는 수학입니다. 이론 물리 역시 종이와 연필만 가지고 우주의 구조를 밝혀내는 것이죠. 중고등학생이 그런 수준의 수학을 한다는 것은 무리입니다. 하지만 Computational Mathematics는 컴퓨터가 일을 대행해 주는 것이고 수의 세계에는 아직도 모르는 부분이 더 많기 때문에 학생의 상상력만 있고 컴퓨터에게 자신의 아이디어가 맞는지 점검해 달라고 시킬 수 있으면 무궁무진하고 흥미진진한 연구주제가 수 없이 등장합니다. 잘 알려진 Collatz Conjecture 도 3n+1 에서 끝나지 않고 pn + 1 으로 Generalize 시킬 수가 있습니다. 제 학생이 바로 그 주제로 이번 Regional 과학 경시대회에 나가 State로 가게 되었습니다. 지금 학부모님 세대가 생각하면 믿어지지 않는 “아무것도 똑딱거려 만드는 것도 없이 이런 저런 아이디어를 내어 일은 컴퓨터에게 다 시켜키고 뭔가 패턴이 나오면 연구 결과가 된다” 라는 시대가 지금의 학생들에게 도래한 것입니다.

한데 그 혜택을 누리는 학생은 극히 일부이고 나머지는 게임하느라 시간을 허송하고 있습니다.
https://i1.wp.com/dl.dropbox.com/u/6378458/Column/Info/Korean/SpecialEvents/SpecialEvents.gif중고등학생이 첨단 수학의 연구를 한다는 것은 거의 불가능합니다. 하지만 Recreational Math를 가지고 범위를 확장하여 더 큰 패턴을 찾아내는 것은 가능합니다. 연구 결과가 암을 치료하는 것도 아니고 기아를 해결하는 것도 아니지만 수학은 원래 그런 일을 해 내는 학문이 아닙니다. 재미있는 현상을 찾아내기만 해도 인정을 받는 학문입니다.

거의 모든 수학의 theorem 은 Generalization이 가능하고 그 Generalization 을 곰곰히 생각해보고 컴퓨터보고 많은 경우를 계산해 보라고 하고 결과를 보고 있으면 “아하!” 하고 영감을 얻게 됩니다. “혹시 이런 것이 아닐까?” 그러면 증명을 못 하더라도 “아무래도 항상 이렇게 될 것 같다”하는 기분이 듭니다. 컴퓨터로 1,000,000,000의 다른 경우를 테스트 해 봐도 항상 예측했던 대로의 결과가 나오면 그 때는 Conjecture를 만든 것입니다.

한가지 예로 피타고라스의 정리  에 해당되는 a, b, c 정수는 무한대로 많습니다. 예를 들면 3, 4, 5 또는 5, 12, 13. 그러면 당장 Generalize 할 수 있는 것이 입니다. 과연 이 방정식이 성립되는 정수 a, b, c 가 있을까요? 그 다음은  , 그러다가 급기야  (n 이 2보다 큰 경우) 까지 생각하는데 컴퓨터로 아무리 많은 a, b, c의 조합을 시도해 봐도 방정식이 성립되는 수가 없습니다. 이렇게 아무리 찾아도 해당되는 정수가 없으면 “방정식이 성립되는 정수를 못 찾겠다. 있을지도 모르지만 당신도 못 찾을 것이다.” 라는 Conjecture가 탄생하는 것입니다. 이것이 유명한 Fermat’s Last Theorem입니다. 1637년에 발표된 이 Conjecture를 증명한 것은 1995년이었습니다. 350년이 걸린 것이죠. 고등학생들이 이런 증명을 할 수는 없지만 무책임하게 Conjecture를 만들어 후세의 수학자들을 몇 백년동안 무지개를 쫓도록 만들 수 있습니다. 어떻게 생각하면 세상에 이런 신선노름도 없습니다.

과연 과학경시대회 국제결승전 (ISEF)에 올라오는 학생들은 어떤 Computational Mathematics 연구를 가지고 오는지, 그 중에서 누가 어떤 심사과정을 통해 승자로 선발 되는지가 궁금해 올해는 ISEF에서는 Computational Mathematics를 심사하게 되었습니다. 제 기분에 Computational Mathematics는 심사위원의 구성이 Computer Science에 비해 다를 것 같고 (거의 다 교수일 것 같습니다) 심사 기준도 다를 것 같은데 오는 5월 다녀오면 알려드리겠습니다.

이 Computational Mathematics는 수학을 좋아하지만 직접 계산을 해야 하는 것을 싫어하는 학생에게 적격입니다. 나이가 어려 아직 물리를 배우지 않았어도 그야말로 사칙의 연산말 할 수 있으면 그리고 컴퓨터를 프로그램만 할 수 있으면 연구를 시작할 수 있습니다.

이는 “너는 아이디어만 생각해 내고 힘든 일은 컴퓨터에게 시키면 된다”가 현실이 된 꿈만 같은 시대에 살고 있는 축복입니다. 그런 일하는 조건을 환영할 성향의 자제분이 있으시면 이런 분야의 연구를 찾아 시켜 보세요. 아시는 수학자에게 이 글을 보여주시면 제 의도를 이해하고 어떻게 지도해야 할지 알 것입니다. 일단 학생이 이 아이디어를 받아들이기만 하면 앞으로 얻는 것이 워낙 많아 아무리 무모해 보이더라도 한번 시도해 볼 가치가 있습니다.

추신: 2012년3월14일 제 학생이 Detroit 지역 Regional Science Fair에서 바로 이런 computational mathematics로 수학부분에서 1등을 했습니다.

 

https://i1.wp.com/dl.dropbox.com/u/6378458/Column/Info/Korean/Copyright.gif


Conrad Wolfram의 수학 교육 방법 강의

Conrad Wolfram의 수학 교육 방법 강의

Written on December 5, 2010

By James H. Choi
http://Korean.SabioAcademy.com
원문출처

Mathematica회사 창설자의 동생 답게 수학교육에 컴퓨터가 얼마나 중요한지를 누누히 강조합니다.

저는 이분의 말에 거의 다 동의를 하는데 기본 계산 능력도 컴퓨터가 대치할 수 있다는 것은 반대입니다.  이런 분들은, 그리고 Everyday Math 를 추진하는 분들은 이미 계산 능력을 갖추고 있고 수학적인 각도로 세상을 보는 것의 원동력이 기본 계산능력에서 온다는 것을 자각하지 못하고 있습니다.  그 뿐 아니라 자신의 계산 능력이 훈련으로 터득된 것이라는 것을 잊고 마치 사춘기에 외모에 관심을 보이듯 나이가 들면 계산 능력이 갖추어 지는 것으로 착각하고 있습니다.
https://i1.wp.com/dl.dropbox.com/u/6378458/Column/Info/Korean/SpecialEvents/SpecialEvents.gif계산은 컴퓨터가 하기 때문에 인간은 문제를 formulate 하는데 집중을 해야 하는 것은 맞는 말이지만 그 formulate 하는 능력의 상당 부분이 계산 훈련에서 오기 때문에 계산능력 연산능력을 간과해서는 안됩니다.

대학 교수 같은 분들은 대입 과정에서 이미 여과가 된 학생들만 보기 때문에 세상을 보는 눈이 다릅니다.  한마디로 딴 세상에서 살고 있습니다.  저 같이 그 여과 과정을 지켜보고 누가 통과하고 누가 걸러내어지는지를 보는 사람은 관점이 다릅니다.  필터를 통과한 학생들을 위한 교육이 아니라 필터를 통과할 능력을 기르는 교육을 생각하게 되지요.  그래서 조언을 들으실 때 그 조언을 제공하는 사람이 어떤 위치에서 어떤 각도에서 보고 있는지를 고려 하셔야 합니다.  즉 학부모님들은 정보수집력 외에도 분별력이 있으셔야 합니다.

https://i1.wp.com/dl.dropbox.com/u/6378458/Column/Info/Korean/Copyright.gif

MIT에서 온 SOS

MIT에서 온 SOS

By James H. Choi
http://Korean.SabioAcademy.com
원문출처

저녁을 먹고 있는데 text message 가 왔다.

올 해 MIT 2학년생이 된 보현양의 다급한 SOS 신호다.  학생들이 막판에 질문하는 것을 답 해버릇 하면 학생들이 막판까지 기다리는 것을 권장하는 것이 되어 나는 이런 학생의 숙제를 풀어 주지 않는다.  한데 이번에는 내 보스의 text message가 왔다.  도와주라고 하신다.  보현양은 내 보스의 따님이다.  즉 내 생계가 걸려 있기 때문에 원리원칙만 주장할 상황이 아니다.  Pragmatic 하기로 했다.  그래도 저녁 식사는 다 끝내고 천천히 사무실로 돌아가서 WebEx 세션을 열었다.

보현양의 질문은 다름이 아닌 Mathematica 에서 막힌 것을 도와달라는 것이다.  여다른 SOS와 다른 것이 보현양과 Mathematica는 특별한 관계가 있다.  한마디로 보현양이 싫다는 것을 내가 “꼭 필요할 것이다”라고 주장하여 가르쳤다.  웬만한 학생 같으면 그만 두었겠지만 원장님의 따님이고 원장님은 내 말을 믿기 때문에 보현양은 꼼짝없이 걸려 배웠다.

결국 Mathematica 를 잘 배워 나중에는 Mathematica로 인턴도 하고 Intel STS에도 출전했다.  (수상은 못했다. 한데 수상 발표 나기전에 MIT에 지원해서 합격했다.)

(참고로 요리사가 되는 야망을 가진 보현양은 6학년 때부터 나의 온갖 아직 검증되지 않는 요상한 수업에 끌려와서 별 희안한 것을 배우며 실험대상이 된 쓰라린 중고등학교 시절의 기억을 가지고 있다.  결국 보현양의 요리사 야망은 나의  세뇌에 넘어가서 포기/보류해 버리고 팔자에도 없던 엔지니어가 되고 싶다는 꿈으로 바뀌어 그동안 내가 시킨 활동을 바탕으로 MIT로 진학하게 되었다.  그래서 나는 지금도 혹시 언젠가 보현양이 자신의 요리사 인생을 망쳐버린 사람으로 내게 손가락을 point 할지 모른다는 우려가 있다.)

그 보현양이 MIT에서 1학년 과정으로 수학, 물리를 다 끝내고 이제 본격적으로 전공인 Material Science를 시작하는데 덜컥 Material Sciences 코스에서 Mathematica가 나타난 것이다.  (코스는 Mathematics for Material Scientists and Engineers이다.)  보현양을 밀어붙혀 Mathematica를 가르친 나로서는 “고봐라.  내말 듣기 잘했지?”라고 나의 선견지명을 상기시킬 절호의 찬스였다.

그래서 WebEx로 연결해서 숙제가 무엇인지 그리고 보현양이 여태까지 해 놓은 것에 대한 설명을 듣고 어디에서 막혔는지 설명을 들었다.  내가 보니 보현양이 막힌 부분은 내가 지금 학생들 20 수업을 가르쳐도 도달하지 않는 부분이다.  그리고 교수가 Mathematica를 프로그램 하는 스타일이 내 스타일과 달라 보현양이 고전을 하는 것도 무리가 아니었다.  한데 보현양은 그렇다 치고 급우들이 어떻게 Mathematica를 이 수준으로 아는지 궁금했다. 이 코스 전에 prerequisite 로 Mathematica 를 배웠어야 했나? 하고 물어보니 이 코스의 첫 2주는 Mathematica만 가르쳐 준비시켰단다.  물론 나는 1주일에 한번 가르치고 MIT는 매일 수업을 하지만 내가 20 수업에 가르치는 것을 MIT에서는 5 수업만에 다 이해를 해내야 하는 것이다.  MIT 답게 천부적인 소질을 가정하고 가르치는 코스다.  MIT 의 Syllabus

나는 보현양의 숙제를 보며 보현양이 막혔던 부분 왜 생각처럼 작동하지 않는지를 지적해 주었다.  (Local variable과 global variable의 scope를 이해 못한데서 오는 애로였다.)  그래서 막힌 부분이 해결 되었고 숙제를 시간 내에 마칠 수 있었다.
https://i1.wp.com/dl.dropbox.com/u/6378458/Column/Info/Korean/SpecialEvents/SpecialEvents.gif작별인사 하면서 혹시 보현양이 내가 억지로 Mathematica를 익히도록 한 것에 대한 감사를 할 것인가 궁금했는데 국물도 없었다.   감사를 받았건 못 받았건 내 결정이 옳았기 때문에 홀로 만족을 하기로 했다.

한데 나도 얻은 것이 있다.  이 숙제에 나온 문제가 아주 흥미로운 문제다.  내 머리로는 상상도 못할 문제인데 이 문제를 풀면서 많은 것을 배우게 되는 문제다.  내가 앞으로 가르치는 advanced 과학연구 코스는 이 MIT 코스의 문제를 응용하여 숙제를 내 주려고 이 코스의 모든 숙제를 다 전해 받았다.  내가 새로 만드는 Calculus, Physics e-Learning 코스는 모두 MIT의 교재와 과정을 따르고 MIT의 숙제를 응용하여 만드는데 이제는 Mathematica도 MIT의 엔지니어링 코스의 숙제를 인용하게 되었다.

https://i1.wp.com/dl.dropbox.com/u/6378458/Column/Info/Korean/Copyright.gif

Thomas Jefferson 토마스 제퍼슨 과학 고등학교의 Computational Physics

Thomas Jefferson 토마스 제퍼슨 과학 고등학교의 Computational Physics

By James H. Choi
http://Korean.SabioAcademy.com
원문출처

공립학교 중에서 최고 수준으로 유명한 Thomas Jefferson 토마스 제퍼슨고의 과학 코스중에 Computational Physics라는 코스가 있다.  http://physicstree.org/PhysicsTree/Computational_Physics_Course.html  이 코스는 Mathematica를 사용한다.

제목 그대로 컴퓨터를 사용하여 물리를 배우는 것인데 Thomas Jefferson 이 유명한 이유는 AP 코스가 아니라 바로 이런 코스를 운영할 선생님이 있고 이런 코스를 배워낼 수 있는 학생이 있기 때문이라고 생각한다.  (AP는 전국의 수천개의 고등학교에서 가르치니 학교에 AP코스가 없는 것이 불리한 상황이지 코스가 있는 것이 유리한 조건이 아니다.)

TJ과학고에서 이런 코스를 진행할 수 있는 것이 내게 인상적인 것은 나 자신이 내 학생들에게 three body problem을 프로그램 하도록 가르치는 것을 시도 하다가 극히 일부 학생만 해 내고 나머지 학생은 자포자기 지경에 이르게 되어 나는 내 코스에서 이 computational physics를 제외시켜야 했던 슬픈 경험이 있기 때문이다.  이 computational physics는 제대로 배우면 과학 경시대회에 출전할 연구 주제가 무궁무진하게 떠오르는 과목이기도 하다.

Thomas Jefferson의 코스에는 학생들에게 Mathematica Demonstration에 자신의 작품을 publish 하는 것을 requirement 로 하고 있는데 나도 이를 시도해 보았지만  학생들에게 요구는 할 수 없었고 추천 하는 정도에서 물러나야 했다.  내가 가르치는 학생들도 똑똑한 학생이 많은데 고등학생에게 이렇게 TJ 수준으로 요구를 하여 학생들을 높은 경지로 올리는 것이 무리인 이유는 아마도 내 수업과 숙제를 option으로 생각하기 때문이 아닌가 싶다.  즉 학교 숙제 안하면 큰일 나지만 내 숙제는 안해도 끄떡 없다는 정확한 계산에 의한 결정을 하는 것이라고 생각된다.
https://i1.wp.com/dl.dropbox.com/u/6378458/Column/Info/Korean/SpecialEvents/SpecialEvents.gif다행히 아직 시간이 있는 중학생들은 내가 요구하는 대로 추천하는 대로 다 해 내어 주고 있다.  심지어는 8학년도 기본 과정을 끝내 Research Intern으로 일을 할 수 있는 수준에 도달한 학생도 있다.  내 목적은 그들이 고등학교에 들어가면 내게 더 배울 것이 없이 그동안 배운 것으로 물리, 수학, 과학 연구에 재능을 발휘하게 하는 것이다.  그들이 Thomas Jefferson 같은 수준의 고등학교, MIT 수준의 대학교로 가게 되면 중학교 때 준비해온 실력이 그제서 배우기 시작한 급우의 실력에 비해 따라갈 수 없을 정도로 우월하게 되리라는 것이 내 계산이다.

수학 과학에 재능과 관심을 보이는 중학생의 학부모님은 앞으로 오는 KSEA NMC[1], Math Kangaroo[2] 수학 경시대회에 참가 하셔서 서 무료로 Mathematica를 받으시고 내가 준비중인 무료 Mathematica코스[3]를 활용 하셔서 자제분이 이런 세계에 눈이 뜨이고 재능을 발견하여 장래가 유망한 분야로 진출할 첫 단계를 만들어 주시기를 추천해 드린다.  그러면 고등학교 가서도 대학 가서도 특히 커리어를 시작하면서 부모님이 그런 남다르고 결정적인 준비를 시켜 주신 것을 감사할 것이다.

[1] KSEA NMC 에서 참가상으로 제공하는 Mathematica는 제가 주선하는 것입니다.  저는 모든 지부에게 제공하는데 수락하지 않는 지부가 있습니다.  지부의 수락에 관계 없이 원하는 학생은 받을 수 있도록 최선을 다 하겠습니다.  http://www.ksea.org/nmsc/

[2] Math Kangaroo에서 제공하는 Mathematica는 저와 관계가 없습니다.  http://mathkangaroo.org

[3] 제가 한국에서 Mathematica Competition을 개최하는 허락을 받았습니다.  한국에 거주하는 학생에게만 해당 됩니다.  출전자를 준비 시키기 위한 영어로 된 Mathematica 기본 사용법 강의를 2012 완성예상이나 아직 미정입니다.

https://i1.wp.com/dl.dropbox.com/u/6378458/Column/Info/Korean/Copyright.gif

Mathematica를 배우기 위해 필요한 시간

Mathematica를 배우기 위해 필요한 시간

By James H. Choi
http://Korean.SabioAcademy.com
원문출처

“Mathematica를 배우려면 시간이 얼마나 걸릴까요?”하는 질문을 받는다.

이 질문은 “피아노를 얼마나 배워야 할까요?”와 마찬가지로 목적과 재능에 따라 극과 극으로 다를 수 있다.

Java 나 C++ 같은 대부분의 컴퓨터 언어는 핵심이 되는 core 가 있고 그 위에 library라 하여 여러 사람이 만들어 놓은 코드를 여기저기서 가져와서 사용한다.  그래서 core를 배우고 나서 일단 “다 배웠다”라는 말을 할 수 있고 그 후 평생 다양한 종류의 문제를 다루면서 그때마다 필요한 library를 찾거나 만들어서 사용할 수 있다. Core  다 안다고는 할 수 있지만 그 언어의 library를 다 안다고는 할 수 없다.  세상 어디어 어떤 library가 있는지 아는 것도 불가능하고 매일 새로운 library가 만들어지고 있기 때문이다.  그리고 누구나 다 library를 만들 수 있기 때문에 같은 기능도 어떤 library를 사용하느냐에 따라 명령어도 다르고 성능도 차이가 난다.  그리고 언제 누가 만든 것이 멀쩡하게 잘 작동하다 내 자료를 분석할 때 조용히 오류를 낼지 아무도 모른다.  즉, 누가 썼는지도 확실치 않은 library 믿고 사용하다 발등을 찍힐 가능성도 있는 것이다.  나 같은 사람도 끄적끄적 써서 library 랍시고 인터넷에 올릴 수 있으니 “세상에 믿을 놈 하나도 없다”라는 격언을 새삼 상기하고 연륜이 있고 검증이 된 library를 잘 선택해서 사용해야 한다.
https://i1.wp.com/dl.dropbox.com/u/6378458/Column/Info/Korean/SpecialEvents/SpecialEvents.gifMathematica 는 핵심과 library가 구별 없이 수학 과학에 필요할만한 기능은 거의 다 내장이 되어있다.  (Matlab의 경우는 library를 Toolbox라고 하여 따로 구입하게 되어 있다.)  그래서 Mathematica의 명령어는 수 천개가 되고 새 버젼이 나올 때마다 수백개가 늘어 나온다.  예를 들어 Version 8부터는 Webcam을 직접 읽어 분석하는 명령어가 새로 등장했다.  이 library는 Mathematica 를 쓴 사람들이 만든 것이라 완전하지는 않지만 나 같은 사람이 만든 것 보다 믿을 수가 있고 따라서 나오는 결과를 믿고 사용할 수 있다.

Mathematica 만의 library를 내장하는 구조 때문에 “Mathematica를 안다”라고 선언하는 것이 애매하다.  여태까지 내가 Mathematica 프로그램 할 줄 아는 사람을 구했을 때 프로급 중에서도 내가 필요한 것을 아는 사람은 없었다.  나도 Mathematica로 학원 학생의 관리 software 까지 만들지만 다른 사람의 분야에서는 Mathematica에 어떤 명령어가 있는지 조차도 모르고 있다.

학 생이 주어진 실험실에 들어가 연구소장이 주는 자료를 자유자재로 열고 분석하고 visualize 해 내는 수준이 되기 위해서는 현재 총 40주의 세 코스로 나누어 가르치고 있다.  1주에 약 3시간에서 5시간이 소요된다고 가정을 하니 120~200시간이 되겠다.  하지만 이 40주의 세 코스도 3주만에 배워버리는 학생이 있고 (다른 언어를 배운 경험이 있거나 천부적인 소질이 있는 경우=50시간) 아무리 시간을 소요해도 배우지 못하고 마는 학생이 있다.

코스를 수료하고, 인턴쉽 준비 코스도 하고, 실험실 현장에서 일하는 학생은 매일 매시간 필요에 따라 새로운 명령어를 찾아내어 배운다.  교수에게 결과를 보이면 항상 나오는 주문이 “Great! 그러면 이렇게 배꿀 수 있나?” 이다.  그렇게 바꾸기 위해서 그에 해당되는 명령어를 찾아야 한다.  처음에는 subroutine을 쓰려고 하다가 나중에는 “여러사람이 필요할만한 기능은 반드시 Mathematica 명령어가 있을 것이다”라는 믿음을 가지게 되어 코드를 쓰는 대신 명령어와 사용법을 찾아내는데 집중을 한다.  그렇게 쓴 코드는 간결하고 빠르고 bug이 적고 읽기도 쉽다.  그래서 Mathematica는 하루종일 일하고도 코드 10줄을 쓰는 것이 고작인 경우가 흔하다.  하지만 그 10줄은 Java나 C++의 10페이지에 해당하는 기능을 해내고 문제도 훨씬 적게 된다.

이렇게 명령어가 많다고 겁먹을 일이 아니다.  인간의 언어와 마찬가지로 사전에 나온 단어를 다 알 필요도 없을 뿐 아니라 다 안다고 해서 그 언어에 유창한 것이 아니다.  내게 필요한 것을 그 때 찾아서 내가 가진 생각을 간결하면서도 정확하게 전달할 수 있는 능력이 가장 중요하다.

다시 원래 질문으로 돌아가서 “Mathematica를 얼마나 배워야 하나?”에 대한 비과학적 주먹구구식의 무책임한 답은 소질에 따라 “50시간에서 200시간” 이다.

https://i1.wp.com/dl.dropbox.com/u/6378458/Column/Info/Korean/Copyright.gif

%d 블로거가 이것을 좋아합니다: