MIT에서도 python을 사용하고 있기 때문에 python을 좋은 프로그래밍 언어이다. 이렇게 얘기하는 분이 있습니다.
제가 프로그래밍 언어를 왠만하면 C언어부터 하라고 하는 것은 그래야 학부모님들이 학원에서 하는 수업 자체에 대한 검증이라도 할 수 있기 때문입니다.
python 자체도 좋은 프로그래밍 언어이기는 합니다. 파이썬을 사용하기에 적합한 대상은 대학 졸업 예정자나 혹은 현업에서 일하는 개발자들에게나 좋은 프로그래밍 언어이지, 대학에서 컴퓨터공학을 전공하려는 학생들에게는 그다지 적합한 프로그래밍 언어가 아닙니다.
왜 대부분의 대학의 전공에서 파이썬이라고 하는 프로그래밍 언어가 1학년 1학기 공통 교양 강좌에서 개설이 되는지를 생각을 해봐야할겁니다.
Columbia 대학 공대의 1학년 수업을 보면, 아래와 같이 여러 프로그래밍 언어 및 matlab이 동시에 개설되어 있는 것이 보편적인 커리큘럼입니다. 근데 대부분 이런 얘기는 없이, 그냥 대학에서 python 수업이 개설되어 있으니, 이 프로그래밍 언어를 공부하면 된다는 식으로 글을 작성하는 분들이 있습니다.
대부분의 대학의 교양 강좌에서 보통은 python, R, Matlab 이런 수업들은 비전공자들이 데이터 분석을 위해서 사용하는 프로그래밍 언어 혹은 도구일뿐입니다.
ENGI E1006: Introduction to computing for engineers and applied scientists
COMS UN1003: Introduction to computer science and programming in C
COMS UN1004: Introduction to computer science and programming in Java
COMS UN1005: Introduction To Computer Science and Programming In MATLAB
COMS UN1007: For students who have placed out of COMS 1004 with AP scores
컴퓨터공학 전공
C, C++, Java, python, matlab 정도는 모두 사용할 수 있어야, 전공 수업 따라갈 수 있습니다.
(python 하나 가지고 버틸 수 있는 전공 아닙니다.)
공학계열(전자/기계)
하드웨어를 제어하는 측면에서 C언어는 구조체와 함수포인터를 사용하는 수준까지는 알고 있어야 하며, C++의 클래스를 사용하는 방법을 익히고, C#이라고 하는 프로그래밍 언어를 익히면 됩니다. C#이라고 하는 프로그래밍 언어는 C/C++의 포인터를 알지 못하는 Java 개발자들이 windows 운영체제 기반의 프로그램을 개발할 수 있도록 만든 프로그래밍 언어입니다.
그래서 C++의 클래스 구조를 익히거나 혹은 Java를 공부하고 java의 graphic/swing 관련 개념들을 학습하고 C#으로 넘어가면 공부할 때 좀 수월하게 넘어갈 수 있을 겁니다.
전공 수업에서 데이터 분석을 위한 수치해석 프로그램 및 차트(그래프)그릴 때 필요한 프로그램으로 matlab이 필요하니, C/C++을 공부하고 matlab으로 넘어가야 합니다.
일부 대학에서 matlab 대신에 python으로 수업을 하는 경우들도 있으나, 3~4학년 전공과정이나 혹은 대학원 연구실에서 어떤 프로그램을 사용해서 데이터 분석을 하는지 그걸 확인을 하세요.
공학계열(Bio-informatics)
보통 컴퓨터공학 전공자들이 이 분야로 연구를 하게 되면, 가장 기본이 되는 과목들이
자료구조-알고리즘-패턴인식
이 과정이 기본적으로 학습을 해야 하는 내용이라고 보면 됩니다. 이 과정을 얼마나 많이 이해하고 있느냐에 따라서 할 수 있는것과 할수 없는 것이 구분이 될겁니다. 컴퓨터공학의 경우에는 데이터를 처리하는 과정과 DB화 시키는 과정에 초점이 맞춰져 있기 때문에 위의 과목과 DB에 대한 과목을 공부하고 난 이후 4학년 과정에서 보통 Bio-informatics 관련 분야쪽 개론 정도의 수업이 진행됩니다. 보통 이 분야는 대학원에서 공부해야할 과정이라고 보면 됩니다.
컴퓨터공학 전공이 아닌 Bio 관련 학과의 경우에는 프로그래밍 언어-자료구조-알고리즘에 대한 기본이 거의 안되어 있는 상태이기 때문에, python이나 R을 가지고 이미 만들어져 있는 라이브러리 사용하면서 이론적인 것을 익혀나가게 될겁니다.

이전에 인공지능 분야에 대한 글을 작성해놓은 것이 있는데, 거기에 보면 겹치는 내용들이 있을 겁니다.
https://cafe.naver.com/tatoobbc/48687
https://cafe.naver.com/tatoobbc/48643
Bio-informatics 분야의 경우에 데이터 해석 분야쪽에서 네트워크 해석,그리고 그래프 비교 알고리즘/계산/ 특징 추출이라고 되어 있을 겁니다. 그래프를 가지고 표현할 수 있는 하위 네크워크 중에서 clique, n-clique, clane, n-clan, k-plex, lamda set, community, component라는 개념이 있다고 얘기를 한 적이 있습니다. 이런 그래프 데이터 형태들을 처리하는 방법들을 알고 있어야, Bio-informatics 관련 분야로 들어가더라고 연구/개발이 가능하다고 보면 됩니다.
MIT의 과목 이수체계도
그래서 MIT의 과목 이수 체계도와 github를 통해서 MIT 수업에서 어떤 내용들이 수업에서 진행되고 있는지를 설명을 해드릴려고 합니다. MIT에서 python 기반으로 진행되는 수업의 강의계획서와 학생들이 과제한 내용들이 github에 올려져 있는것들이 있는데, 이걸 기준으로 설명을 해드리겠습니다.
이전에 작성한 글에서 자료구조와 알고리즘 전공 과목에서 어떤 내용들을 학습하는지 써놓은 글들이 있으니, 이걸 가지고 비교를 해보세요.
컴퓨터공학을 전공하는 대학생이라면, 자료구조와 알고리즘이라고 하는 수업에서 어떤 내용들을 학습하는지, 그걸 확인하고 공부 방향을 자 세워보세요.
댓글