AP 과목 일람 | ||
{{{#!wiki style="margin: 0 -10px -5px" {{{#!folding [ 펼치기 · 접기 ] {{{#!wiki style="text-align: left; margin: -6px -1px -11px" | <colbgcolor=#A1C761> 형식과학 | Precalculus · 미적분학(AB · BC) · 통계학 · 컴퓨터과학(기본 · A) |
자연과학 | 물리학(1 · 2 · C: 역학 · C: 전자기학) · 화학 · 생물학 · 환경과학 | |
인문·사회과학 | 미국정부정치학 · 비교정부정치학 · 미시경제학 · 거시경제학 · 미국사 · 유럽사 · 세계사 · 인문지리학 · 심리학 | |
언어·문학 | 영어학 · 영문학 · 스페인어와 문화 · 스페인문학 · 프랑스어와 문화 · 독일어와 문화 · 이탈리아어와 문화 · 중국어와 문화 · 일본어와 문화 · 라틴어 | |
예술 | 미술사 · 스튜디오 미술(드로잉 · 2D 디자인 · 3D 디자인) · 음악이론 | |
캡스톤 | 세미나 · 리서치 |
1. 개요
AP Computer Science미국 칼리지 보드에서 주관하는 고등학교 컴퓨터과학 교육과정 및 표준화 시험으로, AP 과목 중 하나다. AP 컴퓨터과학 기본과 AP 컴퓨터과학 A의 2개 과목으로 나뉜다. 한국어로는 앱컴싸라고도 한다.
2. AP 컴퓨터과학 기본
AP Computer Science PrinciplesAP 컴퓨터과학 A보다 좀 더 기초적이고 간단한 컴퓨터 지식을 다룬다.
74문제의 객관식 문제와 직접 프로그램을 만들어 제출해야 하는 프로젝트로 나뉜다. 객관식 문제는 총 점수의 70%, 프로젝트는 30%를 차지한다. 객관식 문제는 주로 의사코드를 보고 리턴값을 구하거나 빠진 코드 채우기, 인터넷이 어떻게 돌아가는지 같은 간단한 컴퓨터 관련 지식에 대해 나온다. 주의해야 할 점으로 코딩 좀 해 본 사람들이 오히려 당황할 수 있는 문제들이 가끔 있는데, 예를 들면 리스트의 index가 0이 아니라 1부터 시작한다. 시험 칠 때 문제에 나오는 의사코드에 대한 설명서 같은 것을 같이 주니 잘 읽어보자. 프로젝트는 아무 프로그래밍 언어를 써도 상관없으나[1] 반드시 입력과 출력이 있어야 하며 함수, 리스트 등 칼리지보드에서 요구하는 것들이 들어가야 고득점을 받을 수 있다.
난이도는 간단한 편이지만 그만큼 커트라인도 높다. 2021년의 경우 5점을 받으려면 점수가 90%이상이 되어야 한다! [2]
3. AP 컴퓨터과학 A
AP Computer Science AAP 컴퓨터과학 기본보다 심화된 내용을 다룬다. 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 구문을 복잡하게 꼬아서 내는 문제의 비율이 상당하다.
4. 둘러보기
'''이론 컴퓨터 과학 {{{#!wiki style="display: inline-block; font-family:Times New Roman, serif;font-style:italic"''' | |||||
{{{#!wiki style="margin: 0 -10px -5px; min-height: calc(1.5em + 5px)" {{{#!folding [ 펼치기 · 접기 ] {{{#!wiki style="margin: -5px -1px -11px" | <colbgcolor=#a36> 이론 | ||||
기본 대상 | 수학기초론{수리논리학(논리 연산) · 계산 가능성 이론 · 범주론 · 집합론} · 이산수학(그래프 이론) · 수치해석학 · 확률론 및 통계학 · 선형대수학 | ||||
다루는 대상과 주요 토픽 | |||||
계산 가능성 이론 | 재귀함수 · 튜링 머신 · 람다대수 · 처치-튜링 명제 · 바쁜 비버 | ||||
오토마타 이론 | FSM · 푸시다운 · 튜링 머신(폰노이만 구조) · 정규 표현식 · 콘웨이의 생명 게임 · 형식언어 | ||||
계산 복잡도 이론 | 점근 표기법 · 튜링 기계^고전, 양자, 비결정론적, 병렬 임의접근 기계^ · 알고리즘 · 자료구조 · 알고리즘 패러다임(그리디 알고리즘, 동적 계획법) | ||||
정보이론 | 데이터 압축(무손실 압축 포맷 · 손실 압축 포맷) · 채널 코딩(채널 용량) · 알고리즘 정보 이론(AIT) · 양자정보과학 | ||||
프로그래밍 언어이론 | 프로그래밍 언어(함수형 언어 · 객체 지향 프로그래밍 · 증명보조기) · 메타 프로그래밍 · 유형 이론 · 프로그래밍 언어 의미론 · 파싱 · 컴파일러 이론 | ||||
주요 알고리즘 및 자료구조 | |||||
기초 | 정렬 알고리즘 · 순서도 · 탐색 알고리즘 | ||||
추상적 자료형 및 구현 | 배열^벡터^ · 리스트^연결 리스트^ · 셋(set)^레드-블랙 트리, B-트리^ · 우선순위 큐^힙, 피보나치 힙^ | ||||
수학적 최적화 | 조합 최적화 | 외판원 순회 문제 · 담금질 기법 · 유전 알고리즘 · 기계학습 | |||
볼록 최적화 | 내부점 방법 · 경사하강법 | ||||
선형계획법 | 심플렉스법 | ||||
계산 수론 및 암호학 | 밀러-라빈 소수판별법 · Pollard-rho 알고리즘 · 쇼어 알고리즘 · LLL 알고리즘 · 해시(MD5 · 암호화폐 · 사전 공격(레인보우 테이블) · SHA) · 양자 암호 | ||||
대칭키 암호화 방식 | 블록 암호 알고리즘(AES · ARIA · LEA · Camellia) · 스트림 암호 알고리즘(RC4) | ||||
공개키 암호화 방식 | 공개키 암호 알고리즘(타원 곡선 암호 · RSA) · 신원 기반 암호 알고리즘(SM9) | ||||
계산기하학 | 볼록 껍질 · 들로네 삼각분할 및 보로노이 도형^Fortune의 line-sweeping 알고리즘^ · 범위 탐색^vp-tree, R-tree^ · k-NN | ||||
그래프 이론 | 탐색^BFS, DFS, 다익스트라 알고리즘, A* 알고리즘^ · 에드몬드-카프 · 크루스칼 알고리즘 · 위상 정렬 · 네트워크 이론 | ||||
정리 | |||||
정지 문제대각선 논법 · 암달의 법칙 · P-NP 문제미해결 · 콜라츠 추측미해결 | |||||
틀:이산수학 · 틀:수학기초론 · 틀:컴퓨터공학 | }}}}}}}}} |
[[컴퓨터공학|컴퓨터 과학 & 공학
Computer Science & Engineering
]]- [ 펼치기 · 접기 ]
- ||<tablebgcolor=#fff,#1c1d1f><tablecolor=#373a3c,#ddd><colbgcolor=#0066DC><colcolor=white> 기반 학문 ||수학(해석학 · 이산수학 · 수리논리학 · 선형대수학 · 미적분학 · 미분방정식 · 대수학(환론 · 범주론) · 정수론) · 이론 컴퓨터 과학 · 암호학 · 전자공학 · 언어학(형태론 · 통사론 · 의미론 · 화용론 · 음운론) · 인지과학 ||
하드웨어 구성 SoC · CPU · GPU(그래픽 카드 · GPGPU) · ROM · RAM · SSD · HDD · 참조: 틀:컴퓨터 부품 기술 기계어 · 어셈블리어 · C/C++ · C# · Java · Python · BIOS · 절차적 프로그래밍 · 객체 지향 프로그래밍 · 해킹 · ROT13 · 일회용 비밀번호 · 사물인터넷 · 와이파이 · GPS · 임베디드 · 인공신경망 · OpenGL · EXIF · 마이크로아키텍처 · ACPI · UEFI · NERF · gRPC · 리버스 엔지니어링 · HCI · UI · UX · 대역폭 · DBMS · NoSQL · 해시(SHA · 브루트 포스 · 레인보우 테이블 · salt · 암호화폐) · RSA 암호화 · 하드웨어 가속 연구
및
기타논리 회로(보수기 · 가산기 · 논리 연산 · 불 대수 · 플립플롭) · 정보이론 · 임베디드 시스템 · 운영 체제 · 데이터베이스 · 프로그래밍 언어{컴파일러(어셈블러 · JIT) · 인터프리터 · 유형 이론 · 파싱 · 링커 · 난해한 프로그래밍 언어} · 메타데이터 · 기계학습 · 빅데이터 · 폰노이만 구조 · 양자컴퓨터 · 행위자 모델 · 인코딩(유니코드 · MBCS) · 네트워크 · 컴퓨터 보안 · OCR · 슈퍼컴퓨터 · 튜링 머신 · FPGA · 딥러닝 · 컴퓨터 구조론 · 컴퓨터 비전 · 컴퓨터 그래픽스 · 인공지능 · 시간 복잡도(최적화) · 소프트웨어 개발 방법론 · 디자인 패턴 · 정보처리이론 · 재귀 이론 · 자연어 처리(기계 번역 · 음성인식) · 버전 (버전 관리 시스템 · Git · GitHub)
[1] 스크래치같은 교육용 프로그램을 써도 된다[2] AP 컴퓨터과학 A의 경우는 75%다[3] CS1이라 불린다. 필수적으로 문제 해결을 위한 알고리즘의 작성, 이를 특정 언어를 이용하여 프로그램으로 작성하는 방법 (기본 입출력, 변수, 분기, 반복, 배열과 리스트, 함수), 재귀 알고리즘, 정렬 알고리즘, 알고리즘 분석(기초 asymptotic analysis) 등이 포함된다. 여기에 객체 지향 프로그래밍의 기본을 추가하기도 한다. CS1 이수 후에 수강하는 두 번째 강의는 CS2로 불리며 스택, 큐, 해시 테이블, 트리(탐색트리, 자가 균형 트리 포함), 힙 등 자료구조를 다룬다.