해결해야 할 문제를 컴퓨터에게 정확하고 상세히 설명하는 작업 적절한 자료구조/함수를 이용하고 흐름을 제어하는 코드를 통해 문제를 해결하는 방법
컴퓨터가 전달 받은 명령을 실행할 수 있도록 하기 위해, 프로그래밍 언어로 작성된 프로그램을 compiler or interpreter를 통해 기계어로 변환하는 방법을 사용할 수 있음