모든 컴퓨터 프로그램은 작업의 작은 부분으로 계산합니다. 100 개의 항목을 세는 것은 컴퓨터 없이도 오랜 시간이 걸리지 않습니다. 그러나 일부 컴퓨터는 10 억 개 이상의 항목을 계산해야 할 수 있습니다. 계산이 효율적으로 수행되지 않으면 몇 분 밖에 걸리지 않는 프로그램에서 보고서를 완료하는 데 며칠이 걸릴 수 있습니다. 예를 들어, 모든 복권의 당첨 복권 번호 계산에는 해당 특정 티켓에 대한 정확한 번호의 최소 수에 도달 할 수 없을 때 티켓 수를 중지해야합니다. 각 티켓의 복권 번호를 미리 정렬하면 분할 및 정복 전략을 통해 매우 빠르게 계산할 수 있습니다. 조합 학이라고하는 수학 분야는 학생들에게 프로그램의 실행 시간을 줄이는 지름길을 포함하는 카운팅 프로그램을 코딩하는 데 필요한 이론을 제공합니다.
카운트가 완료된 후에는 카운트의 실제 숫자로 무언가를하는 작업이 필요합니다. 작업을 완료하는 데 필요한 단계 수를 최소화해야 컴퓨터가 많은 작업에 대해 결과를 더 빨리 반환 할 수 있습니다. 다시 말하지만, 작업을 20 회만 수행하면 가장 느린 컴퓨터에서도 오래 걸리지 않습니다. 그러나 작업을 수십억 번 수행해야하는 경우 단계가 너무 많은 비효율적 인 알고리즘은 백만 달러짜리 컴퓨터에서도 완료하는 데 몇 시간이 아닌 며칠이 걸릴 수 있습니다. 예를 들어, 정렬되지 않은 숫자 목록을 가장 낮은 숫자에서 가장 높은 숫자로 정렬하는 방법은 여러 가지가 있지만 일부 알고리즘은 너무 많은 단계를 거쳐 프로그램이 필요한 것보다 훨씬 오래 실행될 수 있습니다. 알고리즘이면의 수학을 배우면 학생들은 프로그램에서 효율적인 단계를 만들 수 있습니다.
컴퓨터의 문제는 계산과 알고리즘보다 훨씬 더 큽니다. Automata 이론은 다양한 확률의 잠재적 결과가 유한하거나 무한한 문제를 연구합니다. 예를 들어, 하나 이상의 정의를 가진 단어의 의미를 이해하려는 컴퓨터는 전체 문장 또는 문단을 분석해야합니다. 문장이나 문단에 대한 계산과 알고리즘이 모두 끝나면 올바른 정의를 결정하는 규칙이 필요합니다. 이러한 규칙의 생성은 오토마타 이론의 일부입니다. 단락에 대한 알고리즘 부분의 결과에 따라 각 정의에 확률이 할당됩니다. 이상적으로 확률은 100 %와 0 %에 불과하지만 많은 실제 문제는 특정 결과없이 복잡합니다. 컴퓨터 컴파일러 설계, 구문 분석 및 인공 지능은 자동 이론을 많이 사용합니다.