AP 컴퓨터과학

덤프버전 :



1. 개요
2. AP 컴퓨터과학 기본
3. AP 컴퓨터과학 A
3.1. 내용
3.2. 난이도
4. 둘러보기



1. 개요[편집]


AP Computer Science

미국 칼리지 보드에서 주관하는 고등학교 컴퓨터과학 교육과정 및 표준화 시험으로, AP 과목 중 하나다. AP 컴퓨터과학 기본AP 컴퓨터과학 A의 2개 과목으로 나뉜다. 한국어로는 앱컴싸라고도 한다.


2. AP 컴퓨터과학 기본[편집]


AP Computer Science Principles

AP 컴퓨터과학 A보다 좀 더 기초적이고 간단한 컴퓨터 지식을 다룬다.

74문제의 객관식 문제와 직접 프로그램을 만들어 제출해야 하는 프로젝트로 나뉜다. 객관식 문제는 총 점수의 70%, 프로젝트는 30%를 차지한다. 객관식 문제는 주로 의사코드를 보고 리턴값을 구하거나 빠진 코드 채우기, 인터넷이 어떻게 돌아가는지 같은 간단한 컴퓨터 관련 지식에 대해 나온다. 주의해야 할 점으로 코딩 좀 해 본 사람들이 오히려 당황할 수 있는 문제들이 가끔 있는데, 예를 들면 리스트의 index가 0이 아니라 1부터 시작한다. 시험 칠 때 문제에 나오는 의사코드에 대한 설명서 같은 것을 같이 주니 잘 읽어보자. 프로젝트는 아무 프로그래밍 언어를 써도 상관없으나[1] 반드시 입력과 출력이 있어야 하며 함수, 리스트 등 칼리지보드에서 요구하는 것들이 들어가야 고득점을 받을 수 있다.

난이도는 간단한 편이지만 그만큼 커트라인도 높다. 2021년의 경우 5점을 받으려면 점수가 90%이상이 되어야 한다! [2]

파일:CC-white.svg 이 문단의 내용 중 전체 또는 일부는
문서의 r8 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}}에서 가져왔습니다. 이전 역사 보러 가기
파일:CC-white.svg 이 문단의 내용 중 전체 또는 일부는 다른 문서에서 가져왔습니다.
[ 펼치기 · 접기 ]
문서의 r8 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)
문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)





3. AP 컴퓨터과학 A[편집]


AP Computer Science A

AP 컴퓨터과학 기본보다 심화된 내용을 다룬다. A와 AB가 있었지만 AB는 2009년도에 예산문제로 짤렸다. 보통 Precalculus를 이수한 뒤에 이수하거나 응시한다.

시험 이름만 컴퓨터 과학이고 사실상 Java 프로그래밍에 관한 문제들이라고 비아냥거리는 사람도 있는데, 사실상 컴퓨터 과학에서 언어는 말 그대로 알고리즘을 표현하는 방법일 뿐이다. AP Computer Science A에서는 프로그래밍의 이론적인 측면을 잘 이해하고 있는지를 테스트하는 문제들이 많은데, 재귀함수라든지 알고리즘의 Complexity라든지 Computability라든지, 사용하는 프로그래밍 언어에 구애받지 않는(Language-independent) 추상적인 내용을 강조하는 편. AP Computer Science는 이러한 기술들을 Java라는 언어를 사용해서 알아보고자 하는 것이다.

2020년대 이후 시대의 변화에 따라 대학에서 전산 및 컴퓨터 관련분야 전공 입문 과정 강의[3]에 사용되는 언어가 점차 변화함에 따라 Java 대신 Python 혹은 JavaScript를 도입하는 것이 논의되고 있다.

3.1. 내용[편집]


칼리지 보드 시험에는 AP Computer Science A Java Subset에 포함된 내용만 출제됨에 주의. 예를 들어 원시 자료형 중에는 int, double, boolean만 출제되고, char, byte, short, long, float 등은 출제되지 않는다. 물론 칼리지 보드 시험이 아닌 실제 고등학교 수업에서는 Subset 밖의 내용도 가르치는 경우가 흔하다.

  • Primitive Types - 원시 자료형. int, double, boolean 등 여러가지 원시 자료형들의 개념을 배운다.
  • Using Objects - 객체 사용하기. 객체 지향 프로그래밍을 배운다.
  • Boolean Expressions and if Statements - if, else if, else를 활용해서 조건부 프로그래밍을 하는 법을 배운다.
  • Iteration - for loop 과 while loop의 문법과 사용법을 배운다.
  • Writing Classes - 클래스 쓰는 법. constructor, getter, 그리고 setter method의 개념과 문법들을 배운다.
  • Array - 배열
  • ArrayList
  • 2D-Array
  • Inheritance - 상속(프로그래밍)
  • Recursion - 재귀함수


3.2. 난이도[편집]


Multiple-Choice 섹션은 총 40문제로 1시간 15분을 준다. 주로 코드를 주고 리턴 값을 알아내라고 하는 문제들이다. 시간이 많다고 느리게 하다 다 못 끝내는 학생들이 수두룩하니 절대로 느긋하게 풀어선 안된다.

Free-Response 섹션에서는 프로그래밍 언어로 자바 클라스를 써야 된다. FRQ의 난이도는 매년 어려워지는 추세다. 2019년에는 사실상 코딩 테스트에나 나올 법한 문제가 나왔다.

2016년 시험 기준으로 약 20%의 학생이 5점을 받으며 전체적인 난이도는 사람마다 천차만별이다. 컴퓨터를 좋아하고 수학적 감각이 있는 사람은 너무도 쉽게 5점을 받지만, 못하는 학생은 참 힘들다. 컴퓨터 과학이란 학문 자체가 잘하는 학생과 못하는 학생이 쉽게 구분되기 때문에, 프로그래밍을 못할 경우 응시를 재고해 보는 게 좋다. 수강 신청을 하기 전에 간단한 프로그램이라도 만들어보며 자신이 프로그래밍에 잘 맞는지 확인해 보길 추천한다.

AP 컴퓨터 과학에는 항상 학생들을 짜증나게 하는 문제들이 있는데, for과 if 구문을 복잡하게 꼬아서 내는 문제의 비율이 상당하다. 아쉽게도 3차원 배열이나 길이가 다른 배열의 배열이나 정렬 알고리즘을 써만드라는 것들은 시험엔 없다


4. 둘러보기[편집]


'''이론 컴퓨터 과학
{{{#fff

Theoretical Computer Science
'''

[ 펼치기 · 접기 ]
이론
기본 대상
수학기초론(수리논리학(논리 연산) · 계산 가능성 이론 · 범주론 · 집합론) · 이산수학(그래프 이론) · 수치해석학 · 확률론통계학] · 선형대수학
다루는 대상과 주요 토픽
계산 가능성 이론
재귀함수 · 튜링 기계 · 람다 대수 · 처치-튜링 명제 · 바쁜 비버
오토마타 이론
FSM · 푸시다운 · 튜링 머신(폰노이만 구조) · 정규 표현식 · 콘웨이의 생명 게임
계산 복잡도 이론
점근 표기법 · 튜링 기계^고전, PRAM, 양자, 비결정론적^ · 알고리즘 · 자료구조 · 알고리즘 패러다임(그리디 알고리즘, 동적 계획법)
수학적 최적화
조합 최적화
외판원 순회 문제 · 담금질 기법 · 유전 알고리즘 · 기계학습
볼록 최적화
내부점 방법 · 경사하강법
선형계획법
심플렉스법
정보이론
데이터 압축(무손실 압축 포맷 · 손실 압축 포맷) · 채널 코딩(채널 용량) · 알고리즘 정보 이론(AIT) · 양자정보과학
컴퓨팅 방법론
병렬 컴퓨팅(병렬 아키텍처 · 암달의 법칙 · 병렬 알고리즘) · 분산 컴퓨팅(분산 알고리즘 · 클러스터 컴퓨팅 · 그리드 컴퓨팅 · 클라우드 컴퓨팅) · 멀티코어 컴퓨팅 · 대칭형 다중 처리(SMP)
암호학
해시(MD5 · 암호화폐 · 사전 공격(레인보우 테이블) · SHA) · 양자 암호
대칭키 암호화 방식
블록 암호 알고리즘(AES · ARIA · LEA · Camellia) · 스트림 암호 알고리즘(RC4)
공개키 암호화 방식
공개키 암호 알고리즘(타원 곡선 암호 · RSA) · 신원 기반 암호 알고리즘(SM9)
프로그래밍 언어이론
프로그래밍 언어(함수형 언어 · 객체 지향 프로그래밍) · 메타 프로그래밍 · 형식언어 · 유형 이론 · 프로그래밍 언어 의미론 · 컴파일러 이론
주요 알고리즘 및 자료구조
기초
정렬 알고리즘 · 순서도 · 탐색 알고리즘
추상적 자료형 및 구현
배열^벡터^ · 리스트^연결 리스트^ · 셋(set)^레드-블랙 트리, B-트리^ · 우선순위 큐^, 피보나치 힙^
계산 수론 및 암호학
밀러-라빈 소수판별법 · Pollard-rho 알고리즘 · 쇼어 알고리즘 · LLL 알고리즘
계산기하학
볼록 껍질 · 들로네 삼각분할 및 보로노이 도형^Fortune의 line-sweeping 알고리즘^ · 범위 탐색^vp-tree, R-tree^ · k-NN
그래프 이론
탐색^BFS, DFS, 다익스트라 알고리즘, A* 알고리즘^ · 에드몬드-카프 · 크루스칼 알고리즘 · 위상 정렬 · 네트워크 이론
정리
정지 문제대각선 논법 · 암달의 법칙 · P-NP 문제미해결 · 콜라츠 추측미해결
틀:이산수학 · 틀:수학기초론 · 틀:컴퓨터공학




[ 펼치기 · 접기 ]
기반 학문
수학 (해석학 · 이산수학 · 수리논리학 · 선형대수학 · 미적분학 · 미분방정식 · 대수학 (환론 · 범주론) · 정수론) · 이론 컴퓨터 과학 · 암호학 · 전자공학 · 언어학 (형태론 · 통사론 · 의미론 · 화용론 · 음운론) · 인지과학
SoC · CPU · GPU(그래픽 카드 · GPGPU) · ROM · RAM · SSD · HDD · 참조: 틀:컴퓨터 부품
기술
기계어 · 어셈블리어 · C(C++ · C\#) · Java · Python · BIOS · 절차적 프로그래밍 · 객체 지향 프로그래밍(디자인 패턴) · 해킹 · ROT13 · OTP · IoT · 와이파이 · GPS · 임베디드 · 인공신경망 · OpenGL · EXIF · 마이크로아키텍처 · ACPI · UEFI · NERF · gRPC · 리버스 엔지니어링 · HCI · UI · UX · 대역폭 · DBMS · NoSQL · 해시(SHA · 브루트 포스 · 레인보우 테이블 · salt · 암호화폐) · RSA 암호화
연구및 기타 문서
논리 회로(보수기 · 가산기 · 논리 연산 · 불 대수 · 플립플롭) · 정보이론 · 임베디드 시스템 · 디자인 패턴 · 데이터베이스 · 프로그래밍 언어{컴파일러(어셈블러 · JIT) · 인터프리터 · 유형 이론} · 메타데이터 · 기계학습 · 빅데이터 · 폰노이만 구조 · 양자컴퓨터 · 행위자 모델 · 인코딩(유니코드 · MBCS) · 네트워크 · 컴퓨터 보안 · OCR · 슈퍼컴퓨터 · 튜링 머신 · FPGA · 딥러닝 · 컴퓨터 구조론 · 컴퓨터 비전 · 컴퓨터 그래픽스 · 인공지능 · 시간 복잡도(최적화) · 소프트웨어 개발 방법론 · 정보처리이론 · 재귀 이론 · 자연 언어 처리(기계 번역 · 음성인식)
}}}



파일:크리에이티브 커먼즈 라이선스__CC.png 이 문서의 내용 중 전체 또는 일부는 2023-10-20 01:26:48에 나무위키 AP 컴퓨터과학 문서에서 가져왔습니다.

[1] 스크래치같은 교육용 프로그램을 써도 된다[2] AP 컴퓨터과학 A의 경우는 75%다[3] CS1이라 불린다. 필수적으로 문제 해결을 위한 알고리즘의 작성, 이를 특정 언어를 이용하여 프로그램으로 작성하는 방법 (기본 입출력, 변수, 분기, 반복, 배열리스트, 함수), 재귀 알고리즘, 정렬 알고리즘, 알고리즘 분석(기초 asymptotic analysis) 등이 포함된다. 여기에 객체 지향 프로그래밍의 기본을 추가하기도 한다. CS1 이수 후에 수강하는 두 번째 강의는 CS2로 불리며 스택, , 해시 테이블, 트리(탐색트리, 자가 균형 트리 포함), 자료구조를 다룬다.