Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

OSS SW Basics Lecture 12: Open source in research fields

141 views

Published on

Lectures on Open-source SW Basics 2016 - 12: Open source in research fields

Published in: Education
  • Be the first to comment

OSS SW Basics Lecture 12: Open source in research fields

  1. 1. 강의 12/16: 연구와 오픈소스 신정규 2016년 11월 30일
  2. 2. 학계와 오픈소스 오픈소스는 학계에서 시작되었습니다.
  3. 3. 초기 오픈소스 되짚어보기 ▪ 초기 오픈소스 (1950~1960년대) ▪ 모든 소프트웨어가 오픈소스였음 ▪ 연구소 및 학계 주도의 컴퓨터 개발 ▪ 소스 교환에 대한 제약이 없었음 ▪ 예) UNIVAC -> A-2 -> UNIVAC ▪ 오픈소스 그룹 ▪ IBM (1967) / SHARE group ▪ DEC / DECUS group ▪ 개발자 = 사용자 = 연구자 = 설계자
  4. 4. 1970년대 부터의 연구용 오픈소스 ▪ 아직까지도 유지되는 연구 분야의 오픈소스 ▪ TeX (Donald Knuth) ▪ SPICE (UC Berkeley) ▪ BSD (Unix / UC Berkeley)
  5. 5. 유료 연구 소프트웨어의 시대 ▪ Mathematica (1988) ▪ Wolfram ▪ 첫 symbolic calculation software ▪ 예: 1차함수 ▪ NeXT용 소프트웨어로 시작 ▪ C, Java ▪ MATLAB (1984) ▪ Mathworks ▪ 계산 컴퓨팅용 언어 ▪ 포트란 wrapper로 시작 ▪ C -> Java ▪ IMSL (International Mathematics and Statistics Library)
  6. 6. 돌아온 오픈소스 연구 소프트웨어 ▪ Linux의 발전 ▪ 저렴한 UNIX: ▪ 다운사이징 / 클러스터링의 발전 ▪ 고전 소프트웨어들의 재개발 ▪ GSL (GNU Scientific Library) ▪ ROOT: Data analysis framework (CERN / 2003) ▪ Fortran 라이브러리들의 대체
  7. 7. 연구와 오픈소스 언어 / 프레임웍
  8. 8. 연구용 오픈소스 언어 / 컴파일러 ▪ FORTRAN ▪ 오래된 역사 ▪ 수치 해석 라이브러리 ▪ 오픈소스 구현체: gForrtran ▪ C ▪ 활발하게 사용되는 언어중 가장 오래됨 ▪ 많은 언어들의 기반 언어 ▪ 오픈소스 구현체: gcc ▪ R ▪ 통계 처리에 특화된 언어 ▪ 다양한 패키지를 쉽게 설치 가능 ▪ 오픈소스 언어
  9. 9. 연구용 언어 / 오픈소스 구현체 ▪ Mathematica ▪ Wolfram Research ▪ 수학에 특화된 언어 ▪ Symbolic calculation ▪ MATLAB ▪ 행렬 연산에 특화된 언어로 시작 ▪ 과학 연구용 언어로 각광 ▪ 다양한 연구 분야에 사용 ▪ Sage ▪ Mathematica의 오픈소스 구현체 ▪ 문법 호환 ▪ 추가 문법들이 있음 ▪ Octave ▪ MATLAB의 오픈소스 구현체 ▪ C++로 구현 ▪ 모듈 지원
  10. 10. 연구용 오픈소스 패키지 (python) ▪ Python ▪ Numpy ▪ FORTRAN의 수치해석 라이브러리의 파이썬 인터페이스 ▪ 행렬 연산에 특화됨 ▪ scipy ▪ numpy 및 기타 패키지를 이용해 만든 과학 계산용 모듈 ▪ matplotlib ▪ 행렬 플로팅 라이브러리 ▪ MATLAB 문법과의 호환성을 고려하여 개발함 ▪ scikit-learn ▪ 기계학습용 라이브러리 ▪ Scikit-image ▪ 이미지 처리용 라이브러리
  11. 11. 연구용 오픈소스 패키지 (python interface) ▪ PyGSL ▪ GSL 라이브러리 래퍼 ▪ Pandas ▪ 데이터 분석및 핸들링 라이브러리 ▪ PIL ▪ 파이썬 이미지 라이브러리 ▪ Spark ▪ 대규모 데이터 분석용 프레임웍 ▪ TensorFlow ▪ 딥러닝 연산 프레임웍 ▪ Keras ▪ TensorFlow 또는 Theano 인터페이스를 통합하는 프레임웍
  12. 12. 오늘의 Learn by run: 실습!
  13. 13. Learn by run: 연구용 코드 실습 ▪ 준비 ▪ codeonweb의 practice 에서 python3 언어를 고릅시다. ▪ 또는 컴퓨터에 jupyter를 설치하고 jupyter notebook을 실행합시다. ▪ Python+numpy로 행렬 연산해보기 ▪ 랜덤한 숫자가 든 4x4 행렬 두 개 만들기 (A, B) ▪ 기본적인 행렬 연산: 합, 차, 곱 ▪ transpose / inverse 계산하기 ▪ Python+numpy 내장 함수 사용하기 ▪ 1~100사이의 랜덤 숫자 1000개 만들기 ▪ 0~10 사이를 1000개로 나누어 1x1000 크기의 벡터 만들기
  14. 14. ▪ python+matplotlib로 그래프 그려보기 ▪ plot ▪ 앞에서 만든 0~10사이의 수 1000개로 sin / cos 그래프를 한 그림 위에 그리기 ▪ histogram ▪ 앞에서 만든 1~100사이의 랜덤 숫자 1000개로 분포 그려보기 (10단계) ▪ scatter plot ▪ 0~100사이의 정규 분포 숫자 1000개를 담은 두 벡터 x, y를 만들기 ▪ x,y 를 좌표로 하는 2차원 scatter plot 그리기
  15. 15. Next is... 13/16: Special Lecture (Deep learning) @inureyes Questions? inureyes@gmail.com OR https://www.codeonweb.com/circle/@oss-basics-hu

×