1. 자료와 정보
- 자료: 현실 세계에서 관찰이나 측정을 통해서 수집된 값(value)이나 사실(fact).
- 우리의 생활에서 실제로 만질 수 있거나 볼 수 있는 것(길이, 무게, 부피 등을 측정할 수 있는 대상)에 대해서 정량적인 단위(물리적인 단위)로 표현하여 얻어질 수 있는 내용.
- 정보: 어떤 상황에 대해 적절한 의사결정(decision)을 할 수 있게 하는 지식(knowledge)으로서, 자료의 유효한 해설(interpretation)이나 자료 상호 간의 관계(relationship)를 표현하는 내용.
- 어떠한 상황에 적절한 결정이나 판단에 사용될 수 있는 형태로 가공되거나 분류되기 위해 '처리과정'을 거쳐서 정리되고 정돈된 <자료>의 2차 처리 결과물.
2. 추상화의 개념
- 자료의 추상화: 다양한 대상을 컴퓨터에서 저장하고 처리하기 위해 그 대상들의 의미와 구조에 대해서 공통의 특징만을 뽑아 정의한 것.
- 머릿속의 그림처럼 떠올리는 것 (머릿속에 그림을 그리는 일)
- 추상화: 공통적인 개념을 이용하여 같은 종류의 다양한 객체를 정의하는 것.
- 추상화를 통해 말하는 사람의 의사를 간결하게 전달할 수 있게 되는 것.
3. 자료구조와 알고리즘
- 자료구조(data structure): 자료의 추상화를 통해 알고리즘에서 사용할 자료의 논리적 관계를 구조화한 것.
- 자료의 추상화, 구조화가 적절히 이루어지지 못하면 -> 소프트웨어는 비효율적으로 수행되거나 소프트웨어 확장성에 문제가 생길 수 있음.
- .....
4. 알고리즘의 개념과 조건
- 알고리즘(algorithm): 컴퓨터가 특정한 일을 수행하는 명령어들의 유한집합.
- 컴퓨터에게 일을 시키기 위한 (추상화된) 명령어의 연속된 덩어리.
- 컴퓨터에 일을 시키는 명령물의 모음.
- 컴퓨터가 수행할 명령어의 유한집합이 사람의 머릿속에 추상화되어 존재하는 것.
- 컴퓨터에게 시킬 일(프로그램)을 머릿속에서 추상화시켜서 대략적으로 상상해 놓은 것.
- 알고리즘의 조건
- 출력: 알고리즘을 수행하고 나면 적어도 한 가지 결과를 생성해야 함.
- 유효성: 반드시 실행가능해야 함.
- 입력: 외부/내부 입력값은 유한해야 하며, 반드시 입력 형태가 정의될 수 있어야 함.
- 명확성: 각 명령들은 명확하고, 애매모호 하지 않아야 함.
- 유한성: 반드시 종료가 명확하게 정의되어 있어야 함.
5. 알고리즘의 성능
- 알고리즘 실행 시간의 예측
(성능분석: 알고리즘을 실행하는데 필요한 시간과 공간(메모리)을 추정하여 알고리즘의 성능을 분석(performance analysis)- 알고리즘 실행횟수를 표현하는 방법 중 하나 -> O(n)
- 같은 O(n)을 가진다고해서 같은 실행시간을 갖는 것이 아니라, 실행 시간의 유사한 증가 경향을 보인다는 표현.
- 실행 시간의 측정
(성능측정: 컴퓨터가 실제로 프로그램을 실행하는 데 걸리는 시간을 측정하여 알고리즘의 성능을 측정(performance measurement))- 시스템 시계를 이용함
- 실제로 실행시간을 시계로 잰다는 것
- 실제로 실행될 수 있는 프로그램(실행파일)이 있어야 함.
- 일반적으로 학교에서는 실행시간의 예측을 통해 알고리즘을 선택하고 평가하는 방법을 배움.