Supplementary Materials
MIT OpenCourseWare - Intro to CS & Programming in Python
1. What is Computation?
프로그래밍은 개념 이해만으로 익힐 수 없으므로, 직접 코드를 작성하고 실행한다. (개념 지식 + 문제 해결 + 반복 연습 → 프로그래밍 능력)
로봇 프로세스 자동화(RPA, Robotic Process Automation)는 사람이 컴퓨터로 처리하는 단순하고 반복적인 업무를 소프트웨어 로봇(Bot)을 통해 자동화
1. Programming
컴퓨터
컴퓨터가 하는 기본적인 일은 두 가지이다.
- 계산을 수행한다.
- 계산 결과를 기억한다.
컴퓨터는 언어에 내장된 연산과 프로그래머가 정의한 연산을 수행하지만, 명시적으로 지시받지 않은 일은 할 수 없다.
선언적 지식과 절차적 지식
지식은 다음 두 종류로 구분할 수 있다.
- 선언적 지식: 무엇이 참인지 나타내는 사실
- 절차적 지식: 결과를 얻는 방법이나 순서
예를 들어 “인 가 의 제곱근이다”는 선언적 지식이다. 반면 추측값을 반복해서 개선하는 방법은 절차적 지식이다.
컴퓨터는 작성된 명령을 정확히 실행할 뿐, 작성자의 의도를 스스로 추측하지 않는다.
알고리즘
알고리즘은 다음 세 요소를 갖춘 계산 절차이다.
- 단순한 단계들의 순서
- 각 단계를 언제 실행할지 정하는 제어 흐름
- 반복을 언제 끝낼지 결정하는 종료 조건
제곱근을 구하는 예에서는 추측값 g를 다음과 같이 계속 갱신한다.
- 새로운 추측값 = (g + x/g) / 2
x = 16일 때3 → 4.17 → 4.0035 → 4.000002처럼 4에 가까워진다.- 이는 알고리즘이 “정답에 도달하는 레시피”라는 점을 보여주는 예이다.
프로그램을 실행하는 방식
프로그램 (Program)
- 문제 해결 절차인 알고리즘을 프로그래밍 언어로 표현한 것이다.
- 컴퓨터가 수행할 명령어(instruction)들을 포함한다.
저장 프로그램 컴퓨터는 명령어를 메모리에 저장하고 순서대로 실행한다.
기본 구조는 다음 요소로 구성된다.
- 메모리: 명령과 데이터를 저장
- 제어 장치: 다음 명령을 선택하고 실행을 조정
- 산술논리장치: 계산과 논리 연산 수행
- 입력과 출력
명령어의 기본 종류는 산술·논리 연산, 조건 검사, 데이터 이동이다.
인터프리터는 명령을 순서대로 실행하며, 조건에 따라 실행 흐름을 바꾸고 종료 조건이 충족되면 멈춘다.
프로그래밍 언어의 구성
프로그래밍 언어
- 컴퓨터는 사람의 말을 이해하지 못하고 기계어만 이해한다.
- 그래서 사람은 프로그래밍 언어로 작성하고, 컴파일러(또는 인터프리터)가 이를 기계어로 번역해 준다.
- 대표 언어로 파이썬, 자바, C, BASIC 등이 있다.
프로그래밍 언어에는 세 가지 중요한 측면이 있다.
- 기본 요소: 숫자, 문자열, 연산자 등
- 문법: 기호를 올바른 순서로 작성하는 규칙
- 의미: 올바르게 작성된 코드가 실제로 뜻하는 것
오류도 이에 따라 구분된다.
- 문법 오류: 코드 형식이 잘못됨
- 정적 의미 오류: 형식은 맞지만 연산의 조합이 유효하지 않음
- 논리 오류: 코드는 실행되지만 프로그래머가 의도한 결과와 다름 (논리 오류는 프로그램이 중단되거나 무한히 실행되는 형태뿐 아니라, 그럴듯하지만 틀린 답을 내는 형태로도 나타날 수 있다.)
2. Python 소개
파이썬 (Python)
- Python 프로그램은 정의와 명령문으로 구성되며 인터프리터가 이를 평가하고 실행한다.
- 코드는 대화형 셸에 직접 입력하거나 파일로 저장해 실행할 수 있다.
- 1991년 귀도 반 로섬(Guido van Rossum) 개발
특징
생산성
- 문법이 간결하고 쉬워 프로그램을 빠르게 작성할 수 있다.
- C의 여러 줄짜리 Hello World가
print("Hello World!")한 줄이면 끝
인터프리터 언어
- 코드를 한 줄씩 실행하고 결과를 즉시 확인할 수 있어 초보자에게 적합
라이브러리가 풍부하고 설치가 쉽다.
- 데이터 과학(Matplotlib, Pandas)
- 인공지능(Keras)
- 웹 크롤링(Requests)
- OpenCV, scikit-learn, BeautifulSoup 등
실행 모드
대화형 모드(interactive mode)
- 콘솔에서 한 줄씩 입력·즉시 실행
- 간단한 계산·테스트에 적합
스크립트 모드(script mode)
- 파일(.py)로 저장 후 한 번에 전부 실행
- 코드가 복잡할 때 필수
Python 개발 환경
아나콘다(Anaconda)
- 인기 라이브러리(numpy, pandas, scipy, sklearn 등)가 거의 다 포함된 배포판
- 설치가 쉽고 관리가 편하다.
- anaconda.com에서 내려받아 설치
스파이더(Spyder)
- 파이썬으로 만들어진 개발 도구(IDE)
- 에디터, IPython 콘솔, 변수 탐색기, 프로파일러, 디버거, 도움말 제공
Jupyter Notebook
- 웹 브라우저 상에서 코드 실행과 설명(문서)을 함께 작성할 수 있는 도구
- 코드와 설명(마크다운)을 한 문서에 담는 환경
Google Colab
- 클라우드 기반의 주피터 노트북 환경으로 별도 설치 없이 사용 가능하다.
- 브라우저에서 실행되고 구글 드라이브에 저장·공유된다.