Skip to content · ⁨본문 바로가기⁩
Subjects · ⁨과목⁩

AP Computer Science Principles · ⁨AP 컴퓨터 과학 원리⁩

Tips · ⁨팁⁩

AP 컴퓨터 과학 원리는 광범위한 컴퓨팅 과정입니다: 데이터와 그 표현, 알고리즘과 추상화, 프로그래밍, 인터넷, 그리고 사회에 미치는 컴퓨팅의 영향. 코드는 어떤 언어로든 작성되며, 시험에서는 언어 중립적인 가짜 코드를 사용하므로 문법이 아닌 아이디어가 중요합니다.

평가에는 두部分组成가 있습니다. 작업 제작 수행 과제는 수업 시간에 구축하고 문서화한 프로그램이며, 과정 종료 시험은 객관식입니다.

본인 프로그램에 대한 서술형 답변에서 점수가 빠집니다. 본인이 작성한 알고리즘을 설명하고, 선택한 추상화를 자신의 말로 정확하게 정당화하라는 질문이 나옵니다.

노트는 데이터부터 영향까지 주요 개념들을 다루며, 여기에서 실행할 수 있는 코드 예제를 포함합니다. 라이브러리에는 시험 문제 예시와 작업制作 수행 과제 관련 노트가 있으며, 이는 시험뿐만 아니라 본인 프로그램과 서술형 답변을 기준으로 평가됩니다.

  • 1

    Creative Development · ⁨창작적 개발⁩

    Watch lesson · ⁨수업 보기⁩
    1.1

    Collaboration · ⁨협업⁩

    Syllabus
    English

    Enduring Understanding (CRD-1): Incorporating multiple perspectives through collaboration improves computing innovations as they are developed.

    Learning Objective CRD-1.A: Explain how computing innovations are improved through collaboration. [Skill 1.C]

    • CRD-1.A.1 A computing innovation includes a program as an integral part of its function.
    • CRD-1.A.2 A computing innovation can be physical (e.g., self-driving car), nonphysical computing software (e.g., picture editing software), or a nonphysical computing concept (e.g., e-commerce).
    • CRD-1.A.3 Effective collaboration produces a computing innovation that reflects the diversity of talents and perspectives of those who designed it.
    • CRD-1.A.4 Collaboration that includes diverse perspectives helps avoid bias in the development of computing innovations.
    • CRD-1.A.5 Consultation and communication with users are important aspects of the development of computing innovations.
    • CRD-1.A.6 Information gathered from potential users can be used to understand the purpose of a program from diverse perspectives and to develop a program that fully incorporates these perspectives.

    Learning Objective CRD-1.B: Explain how computing innovations are developed by groups of people. [Skill 1.C]

    • CRD-1.B.1 Online tools support collaboration by allowing programmers to share and provide feedback on ideas and documents.
    • CRD-1.B.2 Common models such as pair programming exist to facilitate collaboration.

    Learning Objective CRD-1.C: Demonstrate effective interpersonal skills during collaboration. [Skill 1.C]

    • CRD-1.C.1 Effective collaborative teams practice interpersonal skills, including but not limited to:
      • communication
      • consensus building
      • conflict resolution
      • negotiation
    한국어

    지속적 이해(CRD-1): 협업을 통해 다각적인 관점을 통합하면 컴퓨팅 혁신이 개발됨에 따라 개선됩니다.

    학습 목표 CRD-1.A: 협업을 통해 컴퓨팅 혁신이 어떻게 개선되는지 설명합니다. [기술 1.C]

    • CRD-1.A.1 컴퓨팅 혁신에는 기능의 핵심 일부로서 프로그램이 포함됩니다.
    • CRD-1.A.2 컴퓨팅 혁신은 물리적(예: 자율주행 자동차), 비물리적 컴퓨팅 소프트웨어(예: 이미지 편집 소프트웨어), 또는 비물리적 컴퓨팅 개념(예: 전자상거래)일 수 있습니다.
    • CRD-1.A.3 효과적인 협업은 설계자의 다양한 재능과 관점을 반영하는 컴퓨팅 혁신을 산출합니다.
    • CRD-1.A.4 다각적인 관점이 포함된 협업은 컴퓨팅 혁신 개발에서 편향을 피하는 데 도움이 됩니다.
    • CRD-1.A.5 사용자와의 상담 및 소통은 컴퓨팅 혁신 개발의 중요한 aspects입니다.
    • CRD-1.A.6 잠재적 사용자로부터 수집된 정보는 다양한 관점에서 프로그램의 목적을 이해하고, 이러한 관점을 완전히 반영하는 프로그램을 개발하는 데 사용할 수 있습니다.

    학습 목표 CRD-1.B: 사람들이 모인 그룹이 어떻게 컴퓨팅 혁신을 개발하는지 설명합니다. [기술 1.C]

    • CRD-1.B.1 온라인 도구는 프로그래머가 아이디어와 문서를 공유하고 피드백을 제공할 수 있도록 함으로써 협업을 지원합니다.
    • CRD-1.B.2 페어 프로그래밍과 같은 일반적인 모델은 협업을 촉진하기 위해 존재합니다.

    학습 목표 CRD-1.C: 협업 중 효과적인 대인 관계를 보여줍니다. [기술 1.C]

    • CRD-1.C.1 효과적인 협업 팀은 다음을 포함한 대인 관계 기술을 실천합니다:
      • 의사소통
      • 합의 형성
      • 갈등 해결
      • 협상

    Source: College Board AP Course and Exam Description · ⁨출처: College Board AP Course and Exam Description⁩

    English

    Computing is a collaborative 协作 activity. Working in a team brings more perspectives, catches more errors, and produces better programs than working alone. Good collaboration uses consensus building, clear communication, and each member's strengths. Pair programming 结对编程 – two people at one computer, one typing and one reviewing – is a common practice. On the exam, you should be able to explain how collaboration improved a program (more ideas, fewer bugs, wider testing).

    한국어
    진행 중인 조립 퍼즐: 협업 및 모듈 설계가 해결책을 완성합니다
    진행 중인 조립 퍼즐: 협업 및 모듈 설계가 해결책을 완성합니다

    컴퓨팅은 협업적인 활동입니다. 팀으로 작업하면 더 많은 관점을 제공하고, 더 많은 오류를 발견하며, 혼자 일할 때보다 더 나은 프로그램을 생성합니다. 좋은 협업은 합의 형성, 명확한 의사소통, 각 구성원의 강점을 활용합니다. 페어 프로그래밍 – 두 사람이 하나의 컴퓨터 앞에서, 한 사람은 타이핑하고 한 사람은 검토함 – 은 일반적인 관행입니다. 시험에서는 협업이 프로그램을 어떻게 개선했는지(더 많은 아이디어, 더 적은 버그, 더 넓은 테스트) 설명할 수 있어야 합니다.

    1.2

    Program Function and Purpose · ⁨프로그램 기능 및 목적⁩

    Syllabus
    English

    Enduring Understanding (CRD-2): Developers create and innovate using an iterative design process that is user-focused, that incorporates implementation/feedback cycles, and that leaves ample room for experimentation and risk-taking.

    Learning Objective CRD-2.A: Describe the purpose of a computing innovation. [Skill 1.A]

    • CRD-2.A.1 The purpose of computing innovations is to solve problems or to pursue interests through creative expression.
    • CRD-2.A.2 An understanding of the purpose of a computing innovation provides developers with an improved ability to develop that computing innovation.

    Learning Objective CRD-2.B: Explain how a program or code segment functions. [Skill 4.A]

    • CRD-2.B.1 A program is a collection of program statements that performs a specific task when run by a computer. A program is often referred to as software.
    • CRD-2.B.2 A code segment is a collection of program statements that is part of a program.
    • CRD-2.B.3 A program needs to work for a variety of inputs and situations.
    • CRD-2.B.4 The behavior of a program is how a program functions during execution and is often described by how a user interacts with it.
    • CRD-2.B.5 A program can be described broadly by what it does, or in more detail by both what the program does and how the program statements accomplish this function.

    Learning Objective CRD-2.C: Identify input(s) to a program. [Skill 3.A]

    • CRD-2.C.1 Program inputs are data sent to a computer for processing by a program. Input can come in a variety of forms, such as tactile, audio, visual, or text.
    • CRD-2.C.2 An event is associated with an action and supplies input data to a program.
    • CRD-2.C.3 Events can be generated when a key is pressed, a mouse is clicked, a program is started, or any other defined action occurs that affects the flow of execution.
    • CRD-2.C.4 Inputs usually affect the output produced by a program.
    • CRD-2.C.5 In event-driven programming, program statements are executed when triggered rather than through the sequential flow of control.
    • CRD-2.C.6 Input can come from a user or other programs.

    Learning Objective CRD-2.D: Identify output(s) produced by a program. [Skill 3.A]

    • CRD-2.D.1 Program outputs are any data sent from a program to a device. Program output can come in a variety of forms, such as tactile, audio, visual, or text.
    • CRD-2.D.2 Program output is usually based on a program's input or prior state (e.g., internal values).
    한국어

    지속적 이해(CRD-2): 개발자는 사용자 중심이며, 구현/피드백 사이클을 포함하고, 실험 및 위험 감수에 충분한 여지를 남겨두는 반복적 설계 프로세스를 사용하여 컴퓨팅 혁신을 만들고 혁신합니다.

    학습 목표 CRD-2.A: 컴퓨팅 혁신의 목적을 설명합니다. [기술 1.A]

    • CRD-2.A.1 컴퓨팅 혁신의 목적은 창의적 표현을 통해 문제를 해결하거나 관심을 추구하는 것입니다.
    • CRD-2.A.2 컴퓨팅 혁신의 목적에 대한 이해는 개발자가 해당 컴퓨팅 혁신을 개발하는 능력을 향상시킵니다.

    학습 목표 CRD-2.B: 프로그램 또는 코드 세그먼트가 어떻게 작동하는지 설명합니다. [기술 4.A]

    • CRD-2.B.1 프로그램은 컴퓨터에서 실행될 때 특정 작업을 수행하는 프로그램 문장의 모음입니다. 프로그램은 보통 소프트웨어라고 불립니다.
    • CRD-2.B.2 코드 세그먼트는 프로그램의 일부인 프로그램 문장의 집합입니다.
    • CRD-2.B.3 프로그램은 다양한 입력과 상황에 대해 올바르게 작동해야 합니다.
    • CRD-2.B.4 프로그램의 동작은 실행 중 프로그램이 어떻게 기능하는지를 의미하며, 일반적으로 사용자가它与 interacts하는 방식에 의해 설명됩니다.
    • CRD-2.B.5 프로그램은 수행하는 기능에 대해 포괄적으로 설명하거나, 프로그램이 무엇을 수행하는지 및 프로그램 문장이 이 기능을 어떻게 달성하는지에 대해 구체적으로 설명할 수 있습니다.

    학습 목표 CRD-2.C: 프로그램의 입력을 식별함. [기술 3.A]

    • CRD-2.C.1 프로그램 입력은 프로그램에 의해 처리되도록 컴퓨터로 전송되는 데이터입니다. 입력은 촉각, 오디오, 시각 또는 텍스트 등 다양한 형태로 제공될 수 있습니다.
    • CRD-2.C.2 *이벤트(event)*는 동작과 관련되어 있으며 프로그램에 입력 데이터를 제공합니다.
    • CRD-2.C.3 키를 누르거나 마우스를 클릭하거나, 프로그램을 시작하거나, 실행 흐름에 영향을 미치는 기타 정의된 동작이 발생했을 때 이벤트가 생성될 수 있습니다.
    • CRD-2.C.4 입력은 일반적으로 프로그램이 생성하는 출력에 영향을 미칩니다.
    • CRD-2.C.5 이벤트 기반 프로그래밍에서는 제어의 순차적 흐름 대신 트리거가 발생했을 때 프로그램 문장이 실행됩니다.
    • CRD-2.C.6 입력은 사용자나 다른 프로그램으로부터 올 수 있습니다.

    학습 목표 CRD-2.D: 프로그램이 생성하는 출력을 식별함. [기술 3.A]

    • CRD-2.D.1 프로그램 출력은 프로그램으로부터 장치로 전송되는 모든 데이터입니다. 프로그램 출력은 촉각, 오디오, 시각 또는 텍스트 등 다양한 형태로 제공될 수 있습니다.
    • CRD-2.D.2 프로그램 출력은 일반적으로 프로그램의 입력이나 이전 상태(예: 내부 값)에 기반합니다.

    Source: College Board AP Course and Exam Description · ⁨출처: College Board AP Course and Exam Description⁩

    English

    Every program is written for a purpose – it solves a problem or pursues an interest. A program takes input 输入, processes it, and produces output 输出. Inputs can come from a user, a device, a file, or another program; outputs can be visual, audible, textual, or a signal to a device. Being able to state a program's purpose, and describe its inputs and outputs clearly, is a core skill (and part of the Create performance task).

    한국어

    모든 프로그램은 특정 목적을 위해 작성됩니다. 문제를 해결하거나 관심을 추구합니다. 프로그램은 입력을 받아 처리하고 출력을 생성합니다. 입력은 사용자, 장치, 파일 또는 다른 프로그램에서 올 수 있으며, 출력은 시각적, 청각적, 텍스트 형식이거나 장치로의 신호일 수 있습니다. 프로그램의 목적을 명시하고 입력 및 출력을 명확하게 기술할 수 있는 것은 핵심 스이며(CREATE 수행 평가의 일부입니다).

    모든 프로그램은 입력, 처리, 출력으로 분해됩니다
    모든 프로그램은 입력, 처리, 출력으로 분해됩니다
    모든 프로그램은 입력-처리-출력 모델을 따릅니다
    모든 프로그램은 입력-처리-출력 모델을 따릅니다
    Explore · ⁨탐색하기⁩

    Explore the input → processing → output model · ⁨입력 → 처리 → 출력 모델을 탐색해 보십시오⁩

    Step through the IPO model. Every program takes some input, performs processing on it by following its instructions, then produces output — trace one weather-app example along the pipeline. · ⁨IPO 모델을 단계별로 따라가십시오. 모든 프로그램은 어떤 입력을 받아 지시에 따라 처리를 수행한 후 출력을 생성합니다 — 날씨 앱 예제를 파이프라인을 따라 추적해 보십시오.⁩

    1.3

    Program Design and Development · ⁨프로그램 설계 및 개발⁩

    Syllabus
    English

    Enduring Understanding (CRD-2): Developers create and innovate using an iterative design process that is user-focused, that incorporates implementation/feedback cycles, and that leaves ample room for experimentation and risk-taking.

    Learning Objective CRD-2.E: Develop a program using a development process. [Skill 1.B]

    • CRD-2.E.1 A development process can be ordered and intentional, or exploratory in nature.
    • CRD-2.E.2 There are multiple development processes. The following phases are commonly used when developing a program:
      • investigating and reflecting
      • designing
      • prototyping
      • testing
    • CRD-2.E.3 A development process that is iterative requires refinement and revision based on feedback, testing, or reflection throughout the process. This may require revisiting earlier phases of the process.
    • CRD-2.E.4 A development process that is incremental is one that breaks the problem into smaller pieces and makes sure each piece works before adding it to the whole.

    Learning Objective CRD-2.F: Design a program and its user interface. [Skill 1.B]

    • CRD-2.F.1 The design of a program incorporates investigation to determine its requirements.
    • CRD-2.F.2 Investigation in a development process is useful for understanding and identifying the program constraints, as well as the concerns and interests of the people who will use the program.
    • CRD-2.F.3 Some ways investigation can be performed are as follows:
      • collecting data through surveys
      • user testing
      • interviews
      • direct observations
    • CRD-2.F.4 Program requirements describe how a program functions and may include a description of user interactions that a program must provide.
    • CRD-2.F.5 A program's specification defines the requirements for the program.
    • CRD-2.F.6 In a development process, the design phase outlines how to accomplish a given program specification.
    • CRD-2.F.7 The design phase of a program may include:
      • brainstorming
      • planning and storyboarding
      • organizing the program into modules and functional components
      • creation of diagrams that represent the layouts of the user interface
      • development of a testing strategy for the program

    Learning Objective CRD-2.G: Describe the purpose of a code segment or program by writing documentation. [Skill 4.A]

    • CRD-2.G.1 Program documentation is a written description of the function of a code segment, event, procedure, or program and how it was developed.
    • CRD-2.G.2 Comments are a form of program documentation written into the program to be read by people and do not affect how a program runs.
    • CRD-2.G.3 Programmers should document a program throughout its development.
    • CRD-2.G.4 Program documentation helps in developing and maintaining correct programs when working individually or in collaborative programming environments.
    • CRD-2.G.5 Not all programming environments support comments, so other methods of documentation may be required.

    Learning Objective CRD-2.H: Acknowledge code segments used from other sources. [Skill 1.C]

    • CRD-2.H.1 It is important to acknowledge any code segments that were developed collaboratively or by another source.
    • CRD-2.H.2 Acknowledgement of a code segment(s) written by someone else and used in a program can be in the program documentation. The acknowledgement should include the origin or original author's name.
    한국어

    지속적 이해(CRD-2): 개발자는 사용자 중심이며, 구현/피드백 사이클을 포함하고, 실험 및 위험 감수에 충분한 여지를 남겨두는 반복적 설계 프로세스를 사용하여 컴퓨팅 혁신을 만들고 혁신합니다.

    학습 목표 CRD-2.E: 개발 과정을 사용하여 프로그램을 생성하기. [기술 1.B]

    • CRD-2.E.1 개발 과정은 순차적이고 의도적일 수 있으며, 탐구적인 성격을 가질 수도 있다.
    • CRD-2.E.2 여러 가지 개발 과정이 존재한다. 프로그램을 개발할 때 일반적으로 사용되는 단계는 다음과 같다:
      • 조사 및 성찰
      • 설계
      • 프로토타입 제작
      • 테스트
    • CRD-2.E.3 반복형 개발 과정은 피드백, 테스트 또는 성찰을整个过程에 걸쳐 개선하고 수정하는 것을 요구한다. 이는 이전 단계를 다시 방문해야 할 수 있다.
    • CRD-2.E.4 증분형 개발 과정은 문제를 작은 부분으로 나누어 전체에 통합하기 전에 각 부분이 올바르게 작동함을 확인하는 과정이다.

    학습 목표 CRD-2.F: 프로그램과 사용자 인터페이스를 설계하기. [기술 1.B]

    • CRD-2.F.1 프로그램의 설계는 필요 사항을 파악하기 위한 조사를 포함한다.
    • CRD-2.F.2 개발 과정에서의 조사는 프로그램의 제약 조건을 이해하고 식별하는 데 유용하며, 또한 프로그램 사용자의 concern(관심사)과関心(관심)을 파악하는 데 도움이 된다.
    • CRD-2.F.3 조사를 수행하는 방법에는 다음이 포함된다:
      • 설문조사를 통한 데이터 수집
      • 사용자 테스트
      • 인터뷰
      • 직접 관찰
    • CRD-2.F.4 프로그램의 요구 사항은 프로그램의 기능 방식에 대해 설명하며, 프로그램이 제공해야 하는 사용자 상호작용에 대한 설명을 포함할 수 있다.
    • CRD-2.F.5 프로그램의 명세서는 프로그램에 대한 요구 사항을 정의한다.
    • CRD-2.F.6 개발 과정에서 설계 단계는 주어진 프로그램 사양을 어떻게 달성할지를 설명합니다.
    • CRD-2.F.7 프로그램의 설계 단계에는 다음이 포함될 수 있습니다:
      • 브레인스토밍
      • 계획 수립 및 스토리보딩
      • 프로그램을 모듈과 기능적 구성 요소로 조직화
      • 사용자 인터페이스 레이아웃을 나타내는 도표 생성
      • 프로그램에 대한 테스트 전략 개발

    학습 목표 CRD-2.G: 문서화를 통해 코드 섹션이나 프로그램의 목적을 설명함. [기술 4.A]

    • CRD-2.G.1 프로그램 문서化은 코드 섹션, 이벤트, 절차 또는 프로그램의 기능과 그것이 어떻게 개발되었는지에 대한 서면 설명입니다.
    • CRD-2.G.2 주석은 사람에 의해 읽히도록 프로그램에 작성된形式的인 문서화 형태이며, 프로그램 실행 방식에는 영향을 주지 않습니다.
    • CRD-2.G.3 프로그래머는 프로그램 전체 개발 기간 동안 문서화를 해야 합니다.
    • CRD-2.G.4 프로그래밍 문서화는 개인 작업 시나 협력적 프로그래밍 환경에서 올바른 프로그램을 개발하고 유지하는 데 도움이 됩니다.
    • CRD-2.G.5 모든 프로그래밍 환경이 주석을 지원하지 않으므로, 다른 문서화 방법이 필요할 수 있습니다.

    학습 목표 CRD-2.H: 다른 출처에서 사용된 코드 섹션을 인정함. [기술 1.C]

    • CRD-2.H.1 협업으로 개발되었거나 다른 출처에서 제공된 코드 섹션에 대해 인정하는 것이 중요합니다.
    • CRD-2.H.2 다른 사람이 작성하여 프로그램에 사용된 코드 섹션에 대한 인정은 프로그램 문서화에 포함될 수 있습니다. 인정 내용에는 원천이나 초기 저자의 이름이 포함되어야 합니다.

    Source: College Board AP Course and Exam Description · ⁨출처: College Board AP Course and Exam Description⁩

    English

    Programs are built through an iterative 迭代 process, not in one straight line: investigate the problem and users, design (often with a diagram or written plan), implement in code, and test – then repeat. A large problem is broken into smaller pieces (decomposition 分解). Comments 注释 and clear naming document the design so others (and your future self) can understand it. Development is incremental – build and test a small piece, then add the next.

    Investigating what users actually need

    Before any code is written, the developer investigates the problem and the people who will use the program. Three ways to do that:

    • surveys 调查问卷 sent to potential users, which collect data from many people quickly;
    • interviews and direct observation of users doing the task by hand;
    • studying existing solutions to see what already works and what frustrates people.

    The findings are turned into a design. Two artefacts do that: a program requirements list saying exactly what the program must do, and diagrams representing the layout of the user interface 用户界面 — sketches showing which controls appear where, and what each one does when used. Designing the interface on paper first is cheaper than discovering after coding that the buttons are in the wrong place.

    Events, and programs that wait

    Not every program runs straight through from top to bottom. An event 事件 is generated when a key is pressed, a mouse is clicked, a program is started, or any other defined action occurs — and an event changes the flow of execution: the program pauses what it was doing and runs the code attached to that event, called an event handler 事件处理程序.

    This is why a program with a graphical interface can appear to be doing nothing: it is waiting for the next event. The order in which those events arrive is decided by the user, not by the programmer, so the same program can run its blocks in a different order each time it is used.

    한국어
    프로그래머가 멀티 모니터 워크스테이션에서 디버깅 중 – 반복적 설계 및 테스트
    프로그래머가 멀티 모니터 워크스테이션에서 디버깅 중 – 반복적 설계 및 테스트

    프로그램은 한 줄의 직선적인 과정이 아닌 반복적으로 구축됩니다: 문제와 사용자를 조사하고, 설계(보통 도표 또는 서면 계획으로)하며, 코드로 구현하고, 테스트한 뒤 이를 반복합니다. 큰 문제는 작은 부분으로 나뉩니다(분해). 주석과 명확한 명명법은 설계를 문서화하여 다른 사람(그리고 미래의 당신)이 이해할 수 있게 합니다. 개발은 증분적입니다: 작은 부분을 만들고 테스트한 후 다음 단계를 추가합니다.

    프로그램 개발 단계 및 테스트를 통한 수정 및 정제 피드백
    프로그램 개발 단계 및 테스트를 통한 수정 및 정제 피드백
    소프트웨어는 반복적이고 증분적인 개발 프로세스를 통해 구축됩니다
    소프트웨어는 반복적이고 증분적인 개발 프로세스를 통해 구축됨

    사용자가 실제로需要什么的是什么 (사용자가 실제로 필요로 하는 것 조사)

    코드를 작성하기 전에 개발자는 문제와 프로그램을 사용할 사람들을 조사합니다. 그 방법은 세 가지입니다:

    • 잠재적 사용자에게 발송되는 설문조사로 많은 people로부터 빠르게 데이터를 수집함;
    • 사용자의 작업 수행을 직접 관찰하는 인터뷰 및 수작업 경험;
    • 기존 해결책 연구로 이미 작동하는 것과 user를 frustrate시키는 것을 파악함.

    조사는 설계로 전환됩니다. 두 가지 산출물이 이를 가능하게 합니다: 프로그램이 정확히 무엇을 해야 하는지를 명시하는 program requirements(프로그램 요구사항) 목록과 user interface 레이아웃을 나타내는 도표 — 어떤 컨트롤이 어디에出现在하고 각 컨트롤이 사용될 때 어떤 기능을 하는지 보여주는 스케치입니다. 코딩 후에 버튼이 잘못된 위치에 있음을 발견하는 것보다 먼저 종이에 인터페이스를 디자인하는 것이 저렴합니다.

    이벤트 및 대기하는 프로그램

    모든 프로그램이 위에서 아래로 순차적으로 실행되지 않습니다. 키가 누르거나 마우스가 클릭되거나 프로그램이 시작되거나 기타 정의된 action이 발생하면 이벤트가 생성되며, 이는 실행 흐름을 변경합니다: 프로그램이 하던 작업을 일시정지하고 해당 이벤트에 연결된 code인 이벤트 핸들러를 실행합니다.

    그래픽 인터페이스가 있는 프로그램이 아무것도 Doing하는 것처럼 보이는 이유는 다음 이벤트를 Waiting하기 때문입니다. 이러한 이벤트가 도착하는 순서는 프로그래머가 아니라 사용자가 결정하므로, 같은 프로그램이라도 사용될 때마다 블록을 다른 순서로 실행할 수 있습니다.

    Explore · ⁨탐색하기⁩

    Loop through the iterative development process · ⁨반복적 개발 프로세스를 순환해 보십시오⁩

    Development is iterative — you repeat the stages, improving the program a little on each pass. Step around the loop and notice it returns to the start rather than ending after one run. · ⁨개발은 반복적입니다 — 단계를 반복하며 각 회차마다 프로그램을 조금씩 개선합니다. 루프를 돌아보면 한 번의 실행으로 끝나는 것이 아니라 시작점으로 돌아감을注意到하십시오.⁩

    1.4

    Identifying and Correcting Errors · ⁨오류 식별 및 수정⁩

    Syllabus
    English

    Enduring Understanding (CRD-2): Developers create and innovate using an iterative design process that is user-focused, that incorporates implementation/feedback cycles, and that leaves ample room for experimentation and risk-taking.

    Learning Objective CRD-2.I: For errors in an algorithm or program: a. Identify the error. [Skill 4.C] b. Correct the error. [Skill 4.C]

    • CRD-2.I.1 A logic error is a mistake in the algorithm or program that causes it to behave incorrectly or unexpectedly.
    • CRD-2.I.2 A syntax error is a mistake in the program where the rules of the programming language are not followed.
    • CRD-2.I.3 A run-time error is a mistake in the program that occurs during the execution of a program. Programming languages define their own run-time errors.
    • CRD-2.I.4 An overflow error is an error that occurs when a computer attempts to handle a number that is outside of the defined range of values.
    • CRD-2.I.5 The following are effective ways to find and correct errors:
      • test cases
      • hand tracing
      • visualizations
      • debuggers
      • adding extra output statement(s)

    Learning Objective CRD-2.J: Identify inputs and corresponding expected outputs or behaviors that can be used to check the correctness of an algorithm or program. [Skill 4.C]

    • CRD-2.J.1 In the development process, testing uses defined inputs to ensure that an algorithm or program is producing the expected outcomes. Programmers use the results from testing to revise their algorithms or programs.
    • CRD-2.J.2 Defined inputs used to test a program should demonstrate the different expected outcomes that are at or just beyond the extremes (minimum and maximum) of input data.
    • CRD-2.J.3 Program requirements are needed to identify appropriate defined inputs for testing.
    한국어

    지속적 이해(CRD-2): 개발자는 사용자 중심이며, 구현/피드백 사이클을 포함하고, 실험 및 위험 감수에 충분한 여지를 남겨두는 반복적 설계 프로세스를 사용하여 컴퓨팅 혁신을 만들고 혁신합니다.

    학습 목표 CRD-2.I: 알고리즘이나 프로그램의 오류에 대해 다음을 수행함: a. 오류를 식별함. [기술 4.C] b. 오류를 수정함. [기술 4.C]

    • CRD-2.I.1 논리 오류는 알고리즘이나 프로그램에 대한 실수로, 프로그램이 예상치 못하게 또는 잘못 작동하게 만드는 원인이 됩니다.
    • CRD-2.I.2 구문 오류는 프로그래밍 언어의 규칙을 준수하지 않아 발생하는 프로그램 내의 오류입니다.
    • CRD-2.I.3 실행 시 오류는 프로그램 실행 중 발생하는 오류입니다. 각 프로그래밍 언어는 자체적인 실행 시 오류를 정의합니다.
    • CRD-2.I.4 *오버플로우 오버플로우(overflow error)*는 컴퓨터가 정의된 값 범위를 벗어난 숫자를 처리하려고 할 때 발생하는 오류입니다.
    • CRD-2.I.5 다음은 오류를 탐지하고 수정하는 효과적인 방법들입니다:
      • 테스트 케이스
      • 핸드 트레이싱(손으로 추적)
      • 시각화
      • 디버거
      • 추가 출력 문장 추가

    학습 목표 CRD-2.J: 알고리즘이나 프로그램의 정확성을 검증하는 데 사용할 수 있는 입력과 그에 대응되는 예상 출력 또는 동작을 식별함. [기술 4.C]

    • CRD-2.J.1 개발 과정에서 테스트는 정의된 입력을 사용하여 알고리즘이나 프로그램이 예상되는 결과를 Outputs하는지 확인합니다. 프로그래머는 테스트에서 얻은 결과를 바탕으로 알고리즘이나 프로그램을 수정합니다.
    • CRD-2.J.2 프로그램을 테스트하기 위해 사용하는 정의된 입력은 입력 데이터의 극단(최소값 및 최대값)에 해당하거나 그 바로 너머에 있는 다양한 예상 결과를 보여줘야 합니다.
    • CRD-2.J.3 테스트에 적합한 정의된 입력을 식별하기 위해서는 프로그램 요구사항이 필요합니다.

    Source: College Board AP Course and Exam Description · ⁨출처: College Board AP Course and Exam Description⁩

    English

    A bug is an error in a program; debugging 调试 is finding and fixing it. Three kinds:

    • a syntax error 语法错误 breaks the language's rules, so the program will not run;
    • a runtime error 运行时错误 crashes the program while it runs (e.g. dividing by zero);
    • a logic error 逻辑错误 lets it run but gives the wrong result.

    Find bugs by testing with different inputs, adding print statements to see values, and hand-tracing the code. Choose the test inputs deliberately: they should demonstrate the different expected outcomes at or just beyond the extremes — the minimum and maximum values the program should accept, and a value just outside each of them. A program that works on ordinary data very often fails on an empty list, a zero, or a value one past the end of a range, so those are the inputs worth trying first. Fixing one bug at a time and re-testing is the reliable method.

    Exam skill: be able to name the type of an error and describe a testing strategy that would catch it – a recurring multiple-choice and Create-task theme.

    Worked example. A program meant to print the average of two numbers instead runs avg = a + b / 2. Tracing the order of operations, / runs before +, so it computes $a+\tfrac{b}{2}$ rather than the average. Add parentheses to fix it: avg = (a + b) / 2. Testing with $a=4,\ b=6$ confirms the fix — the buggy line gives $4+3=7$, the corrected line gives $\tfrac{10}{2}=5$. Testing with known inputs is exactly how you find and confirm a logic error.

    한국어

    **버그(bug)**는 프로그램 내의 오류이며, 디버깅(debugging) 은 이를 찾아서 수정하는 것입니다. 세 가지 유형이 있습니다:

    트레이스 표는 버그를 찾기 위해 프로그램 실행 시 각 변수의 값을 기록합니다
    trace table은 버그를 찾기 위해 프로그램이 실행될 때 각 변수의 값을 기록함
    • **구문 오류(syntax error)**는 언어의 규칙을 위반하므로 프로그램이 실행되지 않습니다;
    • ** runtime 오류(runtime error)**는 실행 중程序를 Crash시킵니다(예: 0으로 나누기);
    • **논리 오류(logic error)**는 실행은允许하지만错误的结果을给出。

    다양한 입력으로 테스트하고, print statements를 추가하여 값을 확인하며, 수작업 trace를 통해 버그를 찾습니다. 테스트 입력을 의도적으로 선택하십시오: They should demonstrate the different expected outcomes at or just beyond the extremes — 프로그램이 accept해야 할 minimum 및 maximum values와 각 value 바로 바깥에 있는 값입니다. ordinary data에서는 잘 작동하지만 빈 list, 0, 또는 range의 끝 value 하나 이상일 때 thường fails하므로, those inputs을 먼저 시도할 가치가 있습니다. One bug at a time and re-testing하는 것이 reliable method입니다.

    Exam skill: 오류의 type을 이름으로 지칭하고 이를 포착할 testing strategy를 설명할 수 있어야 함 – repeated multiple-choice 및 Create-task의 theme.

    세 가지 유형의 프로그래밍 오류: 구문, 논리, 실행 시간
    세 가지 유형의 프로그래밍 오류: 구문, 논리, runtime

    Worked example. 두 수의 average를 print하도록 designed된 프로그램이 avg = a + b / 2를 실행합니다. operations의 order를 tracing하면, /이 +보다先に run되므로 average 대신 $a+\tfrac{b}{2}$을 compute합니다. parentheses를 추가하여 fix하십시오: avg = (a + b) / 2. Testing with $a=4,\ b=6$이 fix를 confirms합니다 – buggy line이 $4+3=7$을 give하고, corrected line이 $\tfrac{10}{2}=5$을 give합니다. Known inputs으로 testing하는 것이 바로 logic error를 find하고 confirm하는 방법입니다.

    Explore · ⁨탐색하기⁩

    Trace the guessing-game logic and spot a logic error · ⁨추측 게임 로직을 추적하고 논리적 오류를 찾아내십시오⁩

    Drag the guess and watch which branch runs. A logic error would send the same guess down the wrong branch — the program still runs, but gives the wrong message. The secret number here is 50. · ⁨추측값을 드래그하여 브랜치가 실행되는 것을 확인하세요. 논리 오류는 같은 추측값이 잘못된 브랜치로 들어가는 경우입니다. 프로그램은 여전히 실행되지만 잘못된 메시지를 출력합니다. 여기서의 비밀 번호는 50입니다.⁩

    Vocabulary · ⁨어휘⁩ Train · ⁨연습하기⁩
    English 한국어
    collaborative/kəˈlæbrətɪv/ 협업적
    Pair programming/peə ˈprəʊɡræmɪŋ/ 짝 프로그래밍(Pair programming)
    input/ˈɪnpʊt/ 입력(input)
    output/ˈaʊtpʊt/ 输出
    debugging/ˈdiːbʌɡɪŋ/ 디버깅
    syntax error/ˈsɪntæks ˈerə/ 문법 오류(syntax error)
    runtime error/ˈrʌntaɪm ˈerə/ 실행 중 오류(runtime error)
    logic error/ˈlɒdʒɪk ˈerə/ 논리 오류(logic error)
    1.4

    Exam tips · ⁨시험 팁⁩

    English
    • Much of CSP is assessed through the Create and written performance tasks — explain your reasoning clearly, not just your result.
    • Know the benefits of collaboration and how diverse perspectives reduce bias in a program.
    • Use precise vocabulary (iterative development, program requirements) when you describe a design process.
    • Give and take feedback constructively; credit collaborators and sources.
    • Break a large problem into smaller modules that a team can build in parallel.
    한국어
    • CSP의很大一部分通过Create任务及书面performance tasks进行assessed——解释你的reasoning,而不仅仅是result。
    • collaboration의 benefits와 diverse perspectives가 program의 bias를 줄이는 방법을 알고 있습니다.
    • design process를 기술할 때 iterative development, program requirements와 같은 precise vocabulary를 사용합니다.
    • constructive하게 feedback을 주고 받으며, collaborators 및 sources에게 credit합니다.
    • large problem을 smaller modules로 분해하여团队可以并行构建。
    Vocabulary · ⁨어휘⁩ Train · ⁨연습하기⁩
    English 한국어
    iterative/ˈɪtərətɪv/ 반복적(iterative)
    decomposition/ˌdiːkɒmpəˈzɪʃn/ 분해
    Comments/ˈkɒments/ 주석
    surveys/ˈsɜːveɪz/ 설문조사(Surveys)
    diagrams representing the layout of the user interface 사용자 인터페이스 레이아웃을 나타내는 도표
    event/ɪˈvent/ 事件
    event handler/ɪˈvent ˈhændlə/ 이벤트 핸들러(event handler)
  • 2

    Data · ⁨데이터⁩

    Watch lesson · ⁨수업 보기⁩
    2.1

    Binary Numbers

    Syllabus
    Enduring UnderstandingLearning ObjectiveEssential Knowledge

    DAT-1
    The way a computer represents data internally is different from the way the data are interpreted and displayed for the user. Programs are used to translate data into a representation more easily understood by people.

    DAT-1.A
    Explain how data can be represented using bits. [Skill 3.C]

    • DAT-1.A.1 Data values can be stored in variables, lists of items, or standalone constants and can be passed as input to (or output from) procedures.
    • DAT-1.A.2 Computing devices represent data digitally, meaning that the lowest-level components of any value are bits.
    • DAT-1.A.3 Bit is shorthand for binary digit and is either 0 or 1.
    • DAT-1.A.4 A byte is 8 bits.
    • DAT-1.A.5 Abstraction is the process of reducing complexity by focusing on the main idea. By hiding details irrelevant to the question at hand and bringing together related and useful details, abstraction reduces complexity and allows one to focus on the idea.
    • DAT-1.A.6 Bits are grouped to represent abstractions. These abstractions include, but are not limited to, numbers, characters, and color.
    • DAT-1.A.7 The same sequence of bits may represent different types of data in different contexts.
    • DAT-1.A.8 Analog data have values that change smoothly, rather than in discrete intervals, over time. Some examples of analog data include pitch and volume of music, colors of a painting, or position of a sprinter during a race.
    • DAT-1.A.9 The use of digital data to approximate real-world analog data is an example of abstraction.
    • DAT-1.A.10 Analog data can be closely approximated digitally using a sampling technique, which means measuring values of the analog signal at regular intervals called samples. The samples are measured to figure out the exact bits required to store each sample.

    DAT-1.B
    Explain the consequences of using bits to represent data. [Skill 1.D]

    • DAT-1.B.1 In many programming languages, integers are represented by a fixed number of bits, which limits the range of integer values and mathematical operations on those values. This limitation can result in overflow or other errors.
    • DAT-1.B.2 Other programming languages provide an abstraction through which the size of representable integers is limited only by the size of the computer's memory; this is the case for the language defined in the exam reference sheet.
    • DAT-1.B.3 In programming languages, the fixed number of bits used to represent real numbers limits the range and mathematical operations on these values; this limitation can result in round-off and other errors. Some real numbers are represented as approximations in computer storage.
      • Exclusion statement: Specific range limitations for real numbers are outside the scope of this course and the AP Exam.

    DAT-1.C
    For binary numbers:
    a. Calculate the binary (base 2) equivalent of a positive integer (base 10) and vice versa. [Skill 2.B]
    b. Compare and order binary numbers. [Skill 2.B]

    • DAT-1.C.1 Number bases, including binary and decimal, are used to represent data.
    • DAT-1.C.2 Binary (base 2) uses only combinations of the digits zero and one.
    • DAT-1.C.3 Decimal (base 10) uses only combinations of the digits $0 - 9$.
    • DAT-1.C.4 As with decimal, a digit's position in the binary sequence determines its numeric value. The numeric value is equal to the bit's value (0 or 1) multiplied by the place value of its position.
    • DAT-1.C.5 The place value of each position is determined by the base raised to the power of the position. Positions are numbered starting at the rightmost position with 0 and increasing by 1 for each subsequent position to the left.

    Source: College Board AP Course and Exam Description · ⁨출처: College Board AP Course and Exam Description⁩

    Binary digits on a display — all digital data is ultimately stored as 0s and 1s
    Binary digits on a display — all digital data is ultimately stored as 0s and 1s

    Computers store everything as bits 位 – each a 0 or 1. A group of 8 bits is a byte 字节. Numbers are stored in binary 二进制 (base 2), where each place is a power of two ($1, 2, 4, 8, 16, \dots$) instead of the powers of ten in decimal 十进制. For example, binary 1011 is $8+2+1=11$.

    An 8-bit place-value chart: the 1s sit under the values that add to the number
    An 8-bit place-value chart: the 1s sit under the values that add to the number

    Worked example. To convert binary 1101 to decimal, write the place values 8 4 2 1 under the bits 1 1 0 1 and add the ones that have a 1: $8+4+0+1=13$. Going the other way, convert 19 to binary by subtracting the largest power of two that fits: $19-16=3$, then $3-2=1$, then $1-1=0$, so the bits sit at the 16, 2, and 1 places $\rightarrow$ 10011 (check: $16+2+1=19$).

    Because a computer has a finite number of bits, it can represent only a limited range of values. This causes two effects tested on the exam:

    • Overflow error 溢出错误: a number too large for the available bits cannot be stored correctly.
    • Round-off (rounding) error 舍入错误: numbers with decimals (real numbers) can only be approximated, because infinitely many real values must map onto finitely many bit patterns.

    All data – text, images, sound – is ultimately encoded as binary. An image is a grid of pixels 像素, each stored as numbers for its colors; sound is stored as numbers sampled many times per second.

    Explore · ⁨탐색하기⁩

    Convert between binary and decimal · ⁨이진수 및 십진수 변환⁩

    Computers store numbers in binary (base 2). Each bit is a power of two; add the place values of the 1-bits to read the decimal number. · ⁨컴퓨터는 numbers를 이진수(2진법)로 저장합니다. 각 비트는 2의 승에 해당하며, 1인 비트들의 자리 수 값을 더하면 십진수를 읽을 수 있습니다.⁩

    Vocabulary · ⁨어휘⁩ Train · ⁨연습하기⁩
    English 한국어
    bits/bɪts/ 비트
    byte/baɪt/ 바이트
    binary/ˈbaɪnəri/ 이진
    decimal/ˈdesɪml/ 소수점
    Overflow error/ˌəʊvəˈfləʊ ˈerə/ 오버플로우 오류
    Round-off (rounding) error/raʊnd ɒf ˈerə/ 반올림 (사각) 오차
    pixels/ˈpɪkslz/ 픽셀들
    Watch lesson · ⁨수업 보기⁩
    2.2

    Data Compression

    Syllabus
    English

    Enduring Understanding (DAT-1): The way a computer represents data internally is different from the way the data are interpreted and displayed for the user. Programs are used to translate data into a representation more easily understood by people.

    Learning Objective DAT-1.D: Compare data compression algorithms to determine which is best in a particular context. [Skill 1.D]

    • DAT-1.D.1 Data compression can reduce the size (number of bits) of transmitted or stored data.
    • DAT-1.D.2 Fewer bits does not necessarily mean less information.
    • DAT-1.D.3 The amount of size reduction from compression depends on both the amount of redundancy in the original data representation and the compression algorithm applied.
    • DAT-1.D.4 Lossless data compression algorithms can usually reduce the number of bits stored or transmitted while guaranteeing complete reconstruction of the original data.
    • DAT-1.D.5 Lossy data compression algorithms can significantly reduce the number of bits stored or transmitted but only allow reconstruction of an approximation of the original data.
    • DAT-1.D.6 Lossy data compression algorithms can usually reduce the number of bits stored or transmitted more than lossless compression algorithms.
    • DAT-1.D.7 In situations where quality or ability to reconstruct the original is maximally important, lossless compression algorithms are typically chosen.
    • DAT-1.D.8 In situations where minimizing data size or transmission time is maximally important, lossy compression algorithms are typically chosen.
    한국어

    지속적 이해 (DAT-1): 컴퓨터가 내부적으로 데이터를 표현하는 방식은 사용자가 데이터를 해석하고 표시하는 방식과 다릅니다. 프로그램은 사람들이 더 쉽게 이해할 수 있는 형태로 데이터를 변환하는 데 사용됩니다.

    학습 목표 DAT-1.D: 특정 맥락에서哪种算法最優来确定数据压缩算法。[技能 1.D]

    • DAT-1.D.1 데이터 압축은 전송되거나 저장되는 데이터의 크기(비트 수)를 줄일 수 있습니다.
    • DAT-1.D.2 비트 수가 적다就一定意味着信息更少吗?不,不一定。
    • DAT-1.D.3 압축으로 인한 크기 감소량은 원본 데이터 표현의 중복량과 적용된 압축 알고리즘 모두에 따라 달라집니다.
    • DAT-1.D.4 무손실(lossless) 데이터 압축 알고리즘은 일반적으로 저장되거나 전송되는 비트 수를 줄일 수 있으며, 동시에 원본 데이터의 완전한 재구성을 보장합니다.
    • DAT-1.D.5 유손실(lossy) 데이터 압축 알고리즘은 저장되거나 전송되는 비트 수를 크게 줄일 수 있지만, 원본 데이터의 근사치만 재구성할 수 있습니다.
    • DAT-1.D.6 유손실 데이터 압축 알고리즘은 일반적으로 무손실 압축 알고리즘보다 저장되거나 전송되는 비트 수를 더 많이 줄일 수 있습니다.
    • DAT-1.D.7 품질 또는 원본 복원 가능성이 최우선인 상황에서는 무손실 압축 알고리즘이 일반적으로 선택됩니다.
    • DAT-1.D.8 데이터 크기 축소 또는 전송 시간이 최우선인 상황에서는 손실 압축 알고리즘이 일반적으로 선택됩니다.

    Source: College Board AP Course and Exam Description · ⁨출처: College Board AP Course and Exam Description⁩

    Hard-disk platters and head: data compressed and stored as magnetic patterns
    Hard-disk platters and head: data compressed and stored as magnetic patterns

    Compression 压缩 reduces the number of bits needed to store or send data. Two kinds:

    Compression methods: lossless versus lossy, with common examples
    Compression methods: lossless versus lossy, with common examples
    • Lossless compression 无损压缩 lets you restore the exact original data (used for text and programs, where every bit matters).
    • Lossy compression 有损压缩 throws away some data to shrink the size further (used for photos, music, video, where a small quality loss is acceptable).

    Choosing between them trades size against fidelity: lossless keeps everything but saves less; lossy saves more but loses detail permanently. Prefer lossless when the data must be exact.

    Explore · ⁨탐색하기⁩

    Compress a run of repeats · ⁨연속된 반복 패턴 압축하기⁩

    Run-length encoding is a lossless compression: a long run of the same symbol is replaced by the symbol and a count, shrinking the data with no information lost. · ⁨런 레인지 인코딩(Run-length encoding) 은 무손실 압축 방식입니다. 동일한 기호의 긴 연속 패턴을 기호와 개수로 교체하여 데이터를 줄이지만 정보는 잃지 않습니다.⁩

    Vocabulary · ⁨어휘⁩ Train · ⁨연습하기⁩
    English 한국어
    Compression/kəmˈpreʃn/ 압축
    Lossless compression/ˈlɒsləs kəmˈpreʃn/ 무손실 압축
    Lossy compression/ˈlɒsi kəmˈpreʃn/ 무손실 압축
    Watch lesson · ⁨수업 보기⁩
    2.3

    Extracting Information from Data

    Syllabus
    English

    Enduring Understanding (DAT-2): Programs can be used to process data, which allows users to discover information and create new knowledge.

    Learning Objective DAT-2.A: Describe what information can be extracted from data. [Skill 5.B]

    • DAT-2.A.1 Information is the collection of facts and patterns extracted from data.
    • DAT-2.A.2 Data provide opportunities for identifying trends, making connections, and addressing problems.
    • DAT-2.A.3 Digitally processed data may show correlation between variables. A correlation found in data does not necessarily indicate that a causal relationship exists. Additional research is needed to understand the exact nature of the relationship.
    • DAT-2.A.4 Often, a single source does not contain the data needed to draw a conclusion. It may be necessary to combine data from a variety of sources to formulate a conclusion.

    Learning Objective DAT-2.B: Describe what information can be extracted from metadata. [Skill 5.B]

    • DAT-2.B.1 Metadata are data about data. For example, the piece of data may be an image, while the metadata may include the date of creation or the file size of the image.
    • DAT-2.B.2 Changes and deletions made to metadata do not change the primary data.
    • DAT-2.B.3 Metadata are used for finding, organizing, and managing information.
    • DAT-2.B.4 Metadata can increase the effective use of data or data sets by providing additional information.
    • DAT-2.B.5 Metadata allow data to be structured and organized.

    Learning Objective DAT-2.C: Identify the challenges associated with processing data. [Skill 5.D]

    • DAT-2.C.1 The ability to process data depends on the capabilities of the users and their tools.
    • DAT-2.C.2 Data sets pose challenges regardless of size, such as:
      • the need to clean data
      • incomplete data
      • invalid data
      • the need to combine data sources
    • DAT-2.C.3 Depending on how data were collected, they may not be uniform. For example, if users enter data into an open field, the way they choose to abbreviate, spell, or capitalize something may vary from user to user.
    • DAT-2.C.4 Cleaning data is a process that makes the data uniform without changing their meaning (e.g., replacing all equivalent abbreviations, spellings, and capitalizations with the same word).
    • DAT-2.C.5 Problems of bias are often created by the type or source of data being collected. Bias is not eliminated by simply collecting more data.
    • DAT-2.C.6 The size of a data set affects the amount of information that can be extracted from it.
    • DAT-2.C.7 Large data sets are difficult to process using a single computer and may require parallel systems.
    • DAT-2.C.8 Scalability of systems is an important consideration when working with data sets, as the computational capacity of a system affects how data sets can be processed and stored.
    한국어

    지속적 이해 (DAT-2): 프로그램을 사용하여 데이터를 처리하면 사용자가 정보를 발견하고 새로운 지식을 생성할 수 있습니다.

    학습 목표 DAT-2.A: 데이터에서 어떤 정보를 추출할 수 있는지 설명하시오. [기술 5.B]

    • DAT-2.A.1 정보는 데이터에서 추출된 사실과 패턴의 집합입니다.
    • DAT-2.A.2 데이터는 경향 파악, 연결성 확인 및 문제 해결에 대한 기회를 제공합니다.
    • DAT-2.A.3 디지털로 처리된 데이터는 변수 간의 상관관계를 나타낼 수 있습니다. 데이터에서 발견된 상관관계가 반드시 인과 관계를 의미하는 것은 아닙니다. 정확한 관계의 성격을 이해하기 위해 추가적인 연구가 필요합니다.
    • DAT-2.A.4 종종 단일 출처에는 결론을 도출所需的数据가 포함되어 있지 않습니다. 결론을 수립하기 위해 다양한 출처의 데이터를 결합해야 할 수도 있습니다.

    학습 목표 DAT-2.B: 메타데이터에서 어떤 정보를 추출할 수 있는지 설명하시오. [기술 5.B]

    • DAT-2.B.1 메타데이터는 데이터에 대한 데이터입니다. 예를 들어, 데이터는 이미지일 수 있으며, 메타데이터는 생성 날짜나 이미지의 파일 크기 등을 포함할 수 있습니다.
    • DAT-2.B.2 메타데이터에 가한 변경 및 삭제는 주요 데이터 자체를 변경하지 않습니다.
    • DAT-2.B.3 메타데이터는 정보의 검색, 정리 및 관리에 사용됩니다.
    • DAT-2.B.4 메타데이터는 추가 정보를 제공하여 데이터 또는 데이터 세트의 유효한 사용을 높일 수 있습니다.
    • DAT-2.B.5 메타데이터는 데이터를 구조화하고 정리할 수 있게 합니다.

    학습 목표 DAT-2.C: 데이터 처리와 관련된 과제를 식별하시오. [기술 5.D]

    • DAT-2.C.1 데이터를 처리할 수 있는 능력은 사용자와 THEIR 도구들의 기능에 달려 있습니다.
    • DAT-2.C.2 데이터 세트는 크기에 상관없이 다음과 같은 과제를 제기합니다:
      • 데이터 클리닝 필요성
      • 불완전한 데이터
      • 무효 데이터
      • 데이터 출처 결합 필요성
    • DAT-2.C.3 데이터 수집 방식에 따라 일관성이 없을 수 있습니다. 예를 들어, 사용자가 개방형 필드에 데이터를 입력할 경우, 약어, 철자법, 대문자 사용 방식을 선택하는 방식이 사용자마다 다를 수 있습니다.
    • DAT-2.C.4 데이터 클리닝은 데이터의 의미를 변경하지 않으면서(예: 동일한 단어로 모든 등가 약어, 철자법, 대문자 표기를 교체) 데이터를 일관되게 만드는 과정입니다.
    • DAT-2.C.5 편향 문제는 주로 수집되는 데이터의 유형이나 출처에 의해 발생합니다. 단순히 더 많은 데이터를 수집한다고 해서 편향이 사라지는 것은 아닙니다.
    • DAT-2.C.6 데이터 세트의 크기는そこから 추출할 수 있는 정보의 양에 영향을 미칩니다.
    • DAT-2.C.7 대규모 데이터 세트는 단일 컴퓨터로 처리하기 어려울 수 있으며 병렬 시스템이 필요할 수 있습니다.
    • DAT-2.C.8 데이터 세트를 다룰 때 시스템의 확장성은 중요한 고려 사항입니다. 시스템의 컴퓨팅 용량은 데이터 세트를如何处理 및 저장하는지에 영향을 미치기 때문입니다.

    Source: College Board AP Course and Exam Description · ⁨출처: College Board AP Course and Exam Description⁩

    Data 数据 becomes useful when we extract information 信息 from it – patterns, trends, and answers to questions. Large data sets can reveal correlations a small one cannot, but data must be cleaned (fixing errors and inconsistencies) and often transformed or filtered first. A correlation 相关性 between two things does not prove that one causes the other – a key caution. Metadata 元数据 (data about data, like a photo's date and location) helps organize and search large collections.

    Vocabulary · ⁨어휘⁩ Train · ⁨연습하기⁩
    English 한국어
    Data/ˈdeɪtə/ 데이터
    information/ˌɪnfəˈmeɪʃn/ 情報
    correlation/ˌkɒrɪˈleɪʃn/ 상관관계
    Metadata/ˌmetəˈdeɪtə/ 메타데이터(Metadata)
    2.4

    Using Programs with Data

    Syllabus
    English

    Enduring Understanding (DAT-2): Programs can be used to process data, which allows users to discover information and create new knowledge.

    Learning Objective DAT-2.D: Extract information from data using a program. [Skill 2.B]

    • DAT-2.D.1 Programs can be used to process data to acquire information.
    • DAT-2.D.2 Tables, diagrams, text, and other visual tools can be used to communicate insight and knowledge gained from data.
    • DAT-2.D.3 Search tools are useful for efficiently finding information.
    • DAT-2.D.4 Data filtering systems are important tools for finding information and recognizing patterns in data.
    • DAT-2.D.5 Programs such as spreadsheets help efficiently organize and find trends in information.
    • DAT-2.D.6 Some processes that can be used to extract or modify information from data include the following:
      • transforming every element of a data set, such as doubling every element in a list, or adding a parent's email to every student record
      • filtering a data set, such as keeping only the positive numbers from a list, or keeping only students who signed up for band from a record of all the students
      • combining or comparing data in some way, such as adding up a list of numbers, or finding the student who has the highest GPA
      • visualizing a data set through a chart, graph, or other visual representation

    Learning Objective DAT-2.E: Explain how programs can be used to gain insight and knowledge from data. [Skill 5.B]

    • DAT-2.E.1 Programs are used in an iterative and interactive way when processing information to allow users to gain insight and knowledge about data.
    • DAT-2.E.2 Programmers can use programs to filter and clean digital data, thereby gaining insight and knowledge.
    • DAT-2.E.3 Combining data sources, clustering data, and classifying data are parts of the process of using programs to gain insight and knowledge from data.
    • DAT-2.E.4 Insight and knowledge can be obtained from translating and transforming digitally represented information.
    • DAT-2.E.5 Patterns can emerge when data are transformed using programs.
    한국어

    지속적 이해 (DAT-2): 프로그램을 사용하여 데이터를 처리하면 사용자가 정보를 발견하고 새로운 지식을 생성할 수 있습니다.

    학습 목표 DAT-2.D: 프로그램을 사용하여 데이터에서 정보를 추출하시오. [기술 2.B]

    • DAT-2.D.1 정보를 얻기 위해 데이터를 처리하는 데 프로그램을 사용할 수 있습니다.
    • DAT-2.D.2 표, 도표, 텍스트 및 기타 시각적 도구를 사용하여 데이터로부터 얻은 통찰과 지식을 전달할 수 있습니다.
    • DAT-2.D.3 검색 도구는 정보를 효율적으로 찾는 데 유용합니다.
    • DAT-2.D.4 데이터 필터링 시스템은 정보를 찾고 데이터의 패턴을 인식하는 데 중요한 도구입니다.
    • DAT-2.D.5 스프레드시트와 같은 프로그램은 정보를 효율적으로 정리하고 경향을查找하는 데 도움이 됩니다.
    • DAT-2.D.6 데이터에서 정보를 추출하거나 수정하는 데 사용할 수 있는 일부 프로세스는 다음과 같습니다:
      • 데이터 세트의 모든 요소를 변환(예: 목록의 모든 요소를 두 배로 하거나, 모든 학생 기록에 부모 이메일 주소 추가)
      • 데이터 필터링(예: 목록에서 양수만 유지하거나, 모든 학생 기록에서 밴드 가입자만 유지)
      • 데이터를某种 방식으로 결합하거나 비교(예: 숫자 목록 합산하거나, 가장 높은 GPA를 가진 학생 찾기)
      • 차트, 그래프 또는 기타 시각적 표현을 통해 데이터 세트를 시각화

    학습 목표 DAT-2.E: 프로그램이 어떻게 데이터를 통해 통찰과 지식을 얻을 수 있는지 설명하시오. [기술 5.B]

    • DAT-2.E.1 정보를 처리할 때 사용자에게 데이터에 대한 통찰과 지식을 얻게 하기 위해 프로그램은 반복적이고 상호작용적인 방식으로 사용됩니다.
    • DAT-2.E.2 프로그래머는 디지털 데이터를 필터링하고 클리닝함으로써 통찰과 지식을 얻을 수 있습니다.
    • DAT-2.E.3 데이터 출처 결합, 데이터 클러스터링 및 데이터 분류는 데이터를 통해 통찰과 지식을 얻는 과정의 일부입니다.
    • DAT-2.E.4 디지털로 표현된 정보를 번역하고 변환함으로써 통찰과 지식을 얻을 수 있습니다.
    • DAT-2.E.5 데이터를 프로그램으로 변환할 때 패턴이 나타날 수 있습니다.

    Source: College Board AP Course and Exam Description · ⁨출처: College Board AP Course and Exam Description⁩

    Programs process data at scales humans cannot. Common operations are filtering 过滤 (keeping only rows that meet a condition), cleaning (removing errors), and visualizing 可视化 (charts and graphs that make patterns visible). Combining data from multiple sources can reveal more, but raises privacy 隐私 concerns. Interactive tools and visualizations let people explore data and draw their own conclusions.

    Exam skill: be able to explain how a program helps find information in a large data set, and why correlation shown in the data does not establish causation.

    Vocabulary · ⁨어휘⁩ Train · ⁨연습하기⁩
    English 한국어
    filtering/ˈfɪltərɪŋ/ 여과하여
    visualizing/ˈvɪʒuːəlaɪzɪŋ/ 시각화하기
    privacy/ˈprɪvəsi/ privacy
    2.4

    Exam tips

    • Convert confidently between binary, decimal, and (where asked) hexadecimal — practise until it is quick.
    • Remember a bit is one binary digit and a byte is 8 bits; $n$ bits represent $2^n$ values.
    • Explain that all data — numbers, text, images, sound — is stored as binary, and that finite bits cause overflow and round-off.
    • Distinguish lossless from lossy compression and when each is appropriate.
    • Show the analog-to-digital idea: sampling turns a continuous signal into discrete values.
  • 3

    Algorithms and Programming · ⁨알고리즘 및 프로그래밍⁩

    Watch lesson · ⁨수업 보기⁩
    English

    Code below uses the AP CSP pseudocode – the exam's language-neutral reference. Assignment is written a ← expression, and list indices start at 1.

    한국어

    아래 코드는 AP CSP 가위문법을 사용합니다 – 이는 시험의 언어 독립적 참고 자료입니다. 대입 문장은 a ← expression로 표기하며, 목록의 인덱스는 1부터 시작합니다.

    3.1

    Variables and Assignments · ⁨변수 및 대입⁩

    Syllabus
    English

    Enduring Understanding (AAP-1): To find specific solutions to generalizable problems, programmers represent and organize data in multiple ways.

    Learning Objective AAP-1.A: Represent a value with a variable. [Skill 3.A]

    • AAP-1.A.1 A variable is an abstraction inside a program that can hold a value. Each variable has associated data storage that represents one value at a time, but that value can be a list or other collection that in turn contains multiple values.
    • AAP-1.A.2 Using meaningful variable names helps with the readability of program code and understanding of what values are represented by the variables.
    • AAP-1.A.3 Some programming languages provide types to represent data, which are referenced using variables. These types include numbers, Booleans, lists, and strings.
    • AAP-1.A.4 Some values are better suited to representation using one type of datum rather than another.

    Learning Objective AAP-1.B: Determine the value of a variable as a result of an assignment. [Skill 4.B]

    • AAP-1.B.1 The assignment operator allows a program to change the value represented by a variable.

    • AAP-1.B.2 The exam reference sheet provides the "$\leftarrow$" operator to use for assignment. For example,

      Text:

      a ← expression

      Block:

      a ← expression

      evaluates expression and then assigns a copy of the result to the variable a.

    • AAP-1.B.3 The value stored in a variable will be the most recent value assigned. For example:

      a ← 1 b ← a a ← 2 display(b)

      still displays 1.

    한국어

    지속적 이해 (AAP-1): 일반화 가능한 문제에 대한 구체적인 해법을 찾기 위해 프로그래머는 데이터를 여러 방식으로 표현하고 정리합니다.

    학습 목표 AAP-1.A: 변수를 사용하여 값을 표현하시오. [기술 3.A]

    • AAP-1.A.1 변수는 프로그램 내부에서 값을 저장할 수 있는 추상 개념입니다. 각 변수에는 한 번에 하나의 값을 나타내는 데이터 저장 공간이 연결되어 있지만, 그 값은 여러 개의 값을 다시 포함하는 목록 또는 다른 수집체일 수 있습니다.
    • AAP-1.A.2 의미 있는 변수명을 사용하면 프로그램 코드의 가독성이 높아지고 변수가 어떤 값을 나타내는지 이해하는 데 도움이 됩니다.
    • AAP-1.A.3 일부 프로그래밍 언어는 변수를 통해 참조되는 데이터를 표현하기 위한 타입을 제공합니다. 이러한 타입에는 숫자, 부울리안, 목록 및 문자열이 포함됩니다.
    • AAP-1.A.4 특정 값은 다른数据类型보다 한 가지数据类型으로 표현하는 것이 더 적합합니다.

    학습 목표 AAP-1.B: 할당 연산 결과로 변수의 값을 결정함. [스킬 4.B]

    • AAP-1.B.1 할당 연산자를 사용하면 프로그램이 변수가 나타내는 값을 변경할 수 있습니다.

    • AAP-1.B.2 시험 참고 시트에서는 할당에 "$\leftarrow$" 연산자를 사용합니다. 예를 들어,

      텍스트:

      a ← expression

    블록:

    a ← expression

    expression를 평가한 후 그 결과의 복사본을 변수 a에 할당합니다.

    • AAP-1.B.3 변수에 저장된 값은 가장 최근에 할당된 값이 됩니다. 예를 들어:

      a ← 1 b ← a a ← 2 display(b)

      여전히 1를 표시합니다.

    Source: College Board AP Course and Exam Description · ⁨출처: College Board AP Course and Exam Description⁩

    English

    A variable 变量 is a named place that holds a value. The assignment 赋值 operator stores the value on the right into the variable on the left:

    A variable holds one value at a time; assigning again replaces it. Variables let a program store input, remember results, and reuse them.

    한국어

    변수는 값을 저장하는 이름이 붙은 공간입니다. 대입 연산자는 오른쪽의 값을 왼쪽의 변수에 저장합니다:

    변수는 값이 변경 가능한 이름이 붙은 저장 공간입니다
    변수는 값이 변경 가능한 이름이 붙은 저장 공간입니다
    a ← 5
    b ← a + 3      // b is now 8
    

    변수는 한 번에 하나의 값만 저장하며, 다시 대입하면 기존 값을 교체합니다. 변수를 사용하면 프로그램은 입력을 저장하고 결과를 기억하며 재사용할 수 있습니다.

    Explore · ⁨탐색하기⁩

    Watch a variable hold and change its value · ⁨변수의 값이 유지되고 변경되는 과정 관찰하기⁩

    A variable is a named box that stores one value at a time. An assignment copies a value into the box; assigning again overwrites whatever was there. · ⁨변수는 한 번에 하나의 값을 저장하는 이름이 붙은 상자입니다. 대입(assign) 은 값을 상자에 복사하는 것이며, 다시 대입하면 기존 값이 상각(overwrite) 됩니다.⁩

    Vocabulary · ⁨어휘⁩ Train · ⁨연습하기⁩
    English 한국어
    variable/ˈveərɪəbl/ 变量
    assignment/əˈsaɪnmənt/ 과제 배정
    Data abstraction/ˈdeɪtə əbˈstrækʃn/ 데이터 추상화(Data abstraction)
    remainder/rɪˈmeɪndə/ 나머지
    3.2

    Data Abstraction · ⁨데이터 추상화⁩

    Syllabus
    Enduring UnderstandingLearning ObjectiveEssential Knowledge

    AAP-1
    To find specific solutions to generalizable problems, programmers represent and organize data in multiple ways.

    AAP-1.C
    Represent a list or string using a variable. [Skill 3.A]

    • AAP-1.C.1 A list is an ordered sequence of elements. For example,

      [value1, value2, value3, ...]

      describes a list where value1 is the first element, value2 is the second element, value3 is the third element, and so on.

    • AAP-1.C.2 An element is an individual value in a list that is assigned a unique index.

    • AAP-1.C.3 An index is a common method for referencing the elements in a list or string using natural numbers.

    • AAP-1.C.4 A string is an ordered sequence of characters.

    AAP-1.D
    For data abstraction:
    a. Develop data abstraction using lists to store multiple elements. [Skill 3.B]
    b. Explain how the use of data abstraction manages complexity in program code. [Skill 3.C]

    • AAP-1.D.1 Data abstraction provides a separation between the abstract properties of a data type and the concrete details of its representation.

    • AAP-1.D.2 Data abstractions manage complexity in programs by giving a collection of data a name without referencing the specific details of the representation.

    • AAP-1.D.3 Data abstractions can be created using lists.

    • AAP-1.D.4 Developing a data abstraction to implement in a program can result in a program that is easier to develop and maintain.

    • AAP-1.D.5 Data abstractions often contain different types of elements.

    • AAP-1.D.6 The use of lists allows multiple related items to be treated as a single value. Lists are referred to by different names, such as array, depending on the programming language.

      • Exclusion statement (EK AAP-1.D.6): The use of linked lists is outside the scope of this course and the AP Exam.
    • AAP-1.D.7 The exam reference sheet provides the notation

      [value1, value2, value3, ...]

      to create a list with those values as the first, second, third, and so on items. For example,

      • Text:

        aList ← [value1, value2, value3, ...]

        Block:

        aList ← value1, value2, value3

        creates a new list that contains the values value1, value2, value3, and ... at indices 1, 2, 3, and ... respectively and assigns it to aList.

      • Text:

        aList ← []

        Block:

        aList ← (empty)

        creates a new empty list and assigns it to aList.

      • Text:

        aList ← bList

        Block:

        aList ← bList

        assigns a copy of the list bList to the list aList. For example, if bList contains [20, 40, 60], then aList will also contain [20, 40, 60] after the assignment.

    • AAP-1.D.8 The exam reference sheet describes a list structure whose index values are 1 through the number of elements in the list, inclusive. For all list operations, if a list index is less than 1 or greater than the length of the list, an error message is produced and the program will terminate.

    Source: College Board AP Course and Exam Description · ⁨출처: College Board AP Course and Exam Description⁩

    English

    Data abstraction 数据抽象 lets you manage complexity by giving a single name to a collection of data – for example, a list rather than dozens of separate variables. It hides detail: you use the named collection without worrying about how it is stored. Lists (below) are the course's main data abstraction.

    한국어

    데이터 추상화는 데이터 모음에 단일 이름을 부여함으로써 복잡성을 관리할 수 있게 해줍니다. 예를 들어, 목록을 사용하는 것보다 수십 개의 개별 변수를 사용하는 것이 훨씬 간편합니다. 세부 사항을 숨겨줍니다: 이름이 붙은 collection을 사용할 때 그 안에 어떻게 저장되어 있는지 걱정할 필요가 없습니다. 아래에 나열된 목록(lists)은 해당 과정의 주요 데이터 추상화 수단입니다.

    Vocabulary · ⁨어휘⁩ Train · ⁨연습하기⁩
    English 한국어
    list/lɪst/ 리스트(list)
    3.3

    Mathematical Expressions · ⁨수학적 표현식⁩

    Syllabus
    English

    Enduring Understanding (AAP-2): The way statements are sequenced and combined in a program determines the computed result. Programs incorporate iteration and selection constructs to represent repetition and make decisions to handle varied input values.

    Learning Objective AAP-2.A: Express an algorithm that uses sequencing without using a programming language. [Skill 2.A]

    • AAP-2.A.1 An algorithm is a finite set of instructions that accomplish a specific task.
    • AAP-2.A.2 Beyond visual and textual programming languages, algorithms can be expressed in a variety of ways, such as natural language, diagrams, and pseudocode.
    • AAP-2.A.3 Algorithms executed by programs are implemented using programming languages.
    • AAP-2.A.4 Every algorithm can be constructed using combinations of sequencing, selection, and iteration.

    Learning Objective AAP-2.B: Represent a step-by-step algorithmic process using sequential code statements. [Skill 2.B]

    • AAP-2.B.1 Sequencing is the application of each step of an algorithm in the order in which the code statements are given.
    • AAP-2.B.2 A code statement is a part of program code that expresses an action to be carried out.
    • AAP-2.B.3 An expression can consist of a value, a variable, an operator, or a procedure call that returns a value.
    • AAP-2.B.4 Expressions are evaluated to produce a single value.
    • AAP-2.B.5 The evaluation of expressions follows a set order of operations defined by the programming language.
    • AAP-2.B.6 Sequential statements execute in the order they appear in the code segment.
    • AAP-2.B.7 Clarity and readability are important considerations when expressing an algorithm in a programming language.

    Learning Objective AAP-2.C: Evaluate expressions that use arithmetic operators. [Skill 4.B]

    • AAP-2.C.1 Arithmetic operators are part of most programming languages and include addition, subtraction, multiplication, division, and modulus operators.

    • AAP-2.C.2 The exam reference sheet provides a MOD b, which evaluates to the remainder when a is divided by b. Assume that a is an integer greater than or equal to 0 and b is an integer greater than 0. For example, 17 MOD 5 evaluates to 2.

    • AAP-2.C.3 The exam reference sheet provides the arithmetic operators +, -, *, /, and MOD.

      Text and Block:

      • a + b
      • a - b
      • a * b
      • a / b
      • a MOD b

      These are used to perform arithmetic on a and b. For example, 17 / 5 evaluates to 3.4.

    • AAP-2.C.4 The order of operations used in mathematics applies when evaluating expressions. The MOD operator has the same precedence as the * and / operators.

    한국어

    지속적 이해(AAP-2): 프로그램 내에서 문장이 순서대로 배열되고 결합되는 방식은 계산된 결과를 결정합니다. 프로그램은 반복과 선택 구조를 포함하여 반복을 표현하고 다양한 입력 값을 처리하기 위해 결정을 내립니다.

    학습 목표 AAP-2.A: 프로그래밍 언어를 사용하지 않고 순서를 사용하는 알고리즘을 표현하기. [기술 2.A]

    • AAP-2.A.1 알고리즘은 특정 작업을 수행하는 유한한 명령의 집합이다.
    • AAP-2.A.2 시각적 및 텍스트 기반 프로그래밍 언어 외에도, 자연어, 도표, 가짜 코드(pseudocode) 등 다양한 방식으로 알고리즘을 표현할 수 있다.
    • AAP-2.A.3 프로그램에 의해 실행되는 알고리즘은 프로그래밍 언어를 통해 구현된다.
    • AAP-2.A.4 모든 알고리즘은 순서, 선택, 반복의 조합으로 구성될 수 있다.

    학습 목표 AAP-2.B: 순차적 코드 문장을 사용하여 단계별 알고리즘 과정을 나타내기. [기술 2.B]

    • AAP-2.B.1 *순서(Sequencing)*는 코드 문장이 주어진 순서에 따라 알고리즘의 각 단계를 적용하는 것이다.
    • AAP-2.B.2 *코드 문장(code statement)*은 수행해야 할 행동을 나타내는 프로그램 코드의 일부이다.
    • AAP-2.B.3 *수식(expression)*은 값, 변수, 연산자 또는 값을 반환하는 절차 호출로 구성될 수 있다.
    • AAP-2.B.4 수식은 평가되어 단일 값을 산출한다.
    • AAP-2.B.5 수식의 평가는 프로그래밍 언어에서 정의된 연산자 우선순위 규칙에 따른다.
    • AAP-2.B.6 순차 문장은 코드 섹션에 나타나는 순서에 따라 실행된다.
    • AAP-2.B.7 프로그래밍 언어로 알고리즘을 표현할 때 명확성과 가독성은 중요한 고려 사항이다.

    학습 목표 AAP-2.C: 산술 연산자를 사용하는 수식을 평가하기. [기술 4.B]

    • AAP-2.C.1 산술 연산자는 대부분의 프로그래밍 언어에 포함되며, 덧셈, 뺄셈, 곱셈, 나눗셈, 나머지(modulus) 연산자가 포함된다.

    • AAP-2.C.2 시험 참조 시트에는 a MOD b가 제공되어 있으며, 이는 a을 b으로 나눈 나머지를 평가한다. a이 0 이상의 정수이고 b이 0보다 큰 정수라고 가정한다. 예를 들어, 17 MOD 5은 2로 평가된다.

    • AAP-2.C.3 시험 참조 시트에는 산술 연산자 +, -, *, /, MOD가 제공되어 있다.

      텍스트 및 블록:

      • a + b
      • a - b
      • a * b
      • a / b
      • a MOD b

    NONE: They are used to perform arithmetic on a and b. For example, 17 / 5 evaluates to 3.4.

    • AAP-2.C.4 수학에서 사용되는 연산자 우선순위는 수식을 평가할 때 적용된다. MOD 연산자는 *과 / 연산자와 동일한 우선순위를 가진다.

    Source: College Board AP Course and Exam Description · ⁨출처: College Board AP Course and Exam Description⁩

    English

    Programs compute with the operators +, -, *, /, and MOD (the remainder 余数 of a division, e.g. 17 MOD 5 is 2). Expressions follow the usual order of operations. MOD is especially useful for testing divisibility (n MOD 2 = 0 means n is even) and for wrapping values around a range.

    한국어

    프로그램은 연산자 +, -, *, /, 그리고 MOD(나머지, 예: 17 MOD 5은 2)로 계산합니다. 식은 일반적인 연산 순서를 따릅니다. MOD은 나눗셈 가능성 테스트(n MOD 2 = 0은 n이 짝수임을 의미)와 범위 내 값 감싸기에 특히 유용합니다.

    Explore · ⁨탐색하기⁩

    Evaluate an expression step by step · ⁨수식을 단계별로 평가하기⁩

    An expression is evaluated with order of operations: multiplication and division happen before addition and subtraction, left to right. · ⁨수식은 연산 순서(order of operations) 에 따라 평가됩니다: 곱셈과 나눗셈은 덧셈과 뺄셈보다 먼저 이루어지며, 왼쪽에서 오른쪽으로 진행됩니다.⁩

    3.4

    Strings · ⁨문자열⁩

    Syllabus
    English

    Enduring Understanding (AAP-2): The way statements are sequenced and combined in a program determines the computed result. Programs incorporate iteration and selection constructs to represent repetition and make decisions to handle varied input values.

    Learning Objective AAP-2.D: Evaluate expressions that manipulate strings. [Skill 4.B]

    • AAP-2.D.1 String concatenation joins together two or more strings end-to-end to make a new string.
    • AAP-2.D.2 A substring is part of an existing string.
    한국어

    지속적 이해(AAP-2): 프로그램 내에서 문장이 순서대로 배열되고 결합되는 방식은 계산된 결과를 결정합니다. 프로그램은 반복과 선택 구조를 포함하여 반복을 표현하고 다양한 입력 값을 처리하기 위해 결정을 내립니다.

    학습 목표 AAP-2.D: 문자열을 조작하는 수식을 평가하기. [기술 4.B]

    • AAP-2.D.1 *문자열 결합(string concatenation)*은 두 개 이상의 문자열을 끝에서 끝까지 이어붙여 새로운 문자열을 만든다.
    • AAP-2.D.2 *하위 문자열(substring)*은 기존 문자열의 일부이다.

    Source: College Board AP Course and Exam Description · ⁨출처: College Board AP Course and Exam Description⁩

    English

    A string 字符串 is an ordered sequence of characters, like "hello". Programs join strings (concatenation 拼接) and find their length. Strings represent text – names, messages, sequences – and are a common program input and output.

    한국어

    문자열(string) 은 "hello"와 같은 순서 있는 문자의 서열입니다. 프로그램은 문자열을 연결(연결)하고 길이를 찾습니다. 문자열은 텍스트(이름, 메시지, 서열 등)를 표현하며, 일반적인 프로그램 입력 및 출력입니다.

    Vocabulary · ⁨어휘⁩ Train · ⁨연습하기⁩
    English 한국어
    string/strɪŋ/ 문자열(string)
    concatenation/kənˌkætəˈneɪʃn/ 연결 concat
    3.5

    Boolean Expressions · ⁨부울린 식⁩

    Syllabus
    Enduring UnderstandingLearning ObjectiveEssential Knowledge

    AAP-2
    The way statements are sequenced and combined in a program determines the computed result. Programs incorporate iteration and selection constructs to represent repetition and make decisions to handle varied input values.

    AAP-2.E
    For relationships between two variables, expressions, or values:
    a. Write expressions using relational operators. [Skill 2.B]
    b. Evaluate expressions that use relational operators. [Skill 4.B]

    • AAP-2.E.1 A Boolean value is either true or false.

    • AAP-2.E.2 The exam reference sheet provides the following relational operators: =, ≠, >, <, ≥, and ≤.

      Text and Block:

      • a = b
      • a ≠ b
      • a > b
      • a < b
      • a ≥ b
      • a ≤ b

      These are used to test the relationship between two variables, expressions, or values. A comparison using a relational operator evaluates to a Boolean value. For example, a = b evaluates to true if a and b are equal; otherwise, it evaluates to false.

    AAP-2.F
    For relationships between Boolean values:
    a. Write expressions using logical operators. [Skill 2.B]
    b. Evaluate expressions that use logic operators. [Skill 4.B]

    • AAP-2.F.1 The exam reference sheet provides the logical operators NOT, AND, and OR, which evaluate to a Boolean value.

    • AAP-2.F.2 The exam reference sheet provides

      Text:

      NOT condition

      Block:

      NOT condition

      which evaluates to true if condition is false; otherwise it evaluates to false.

    • AAP-2.F.3 The exam reference sheet provides

      Text:

      condition1 AND condition2

      Block:

      condition1 AND condition2

      which evaluates to true if both condition1 and condition2 are true; otherwise it evaluates to false.

    • AAP-2.F.4 The exam reference sheet provides

      Text:

      condition1 OR condition2

      Block:

      condition1 OR condition2

      which evaluates to true if condition1 is true or if condition2 is true or if both condition1 and condition2 are true; otherwise it evaluates to false.

    • AAP-2.F.5 The operand for a logical operator is either a Boolean expression or a single Boolean value.

    Source: College Board AP Course and Exam Description · ⁨출처: College Board AP Course and Exam Description⁩

    English

    A Boolean expression 布尔表达式 evaluates to true or false. It uses relational operators (=, ≠, <, >, ≤, ≥) and logical operators NOT, AND, OR:

    • NOT reverses a value,
    • AND is true only when both sides are true,
    • OR is true when at least one side is true.

    These conditions drive every decision and loop.

    한국어

    부울表达式(Boolean expression) 은 true 또는 false로 평가됩니다. 관계 연산자(=, ≠, <, >, ≤, ≥)와 논리 연산자 NOT, AND, OR를 사용합니다:

    세 종류의 연산자: 산술, 관계, 논리
    세 가지 연산자 패밀리: 산술, 관계, 논리
    • NOT는 값을 반전합니다,
    • AND는 양쪽이 모두 참일 때만 참입니다,
    • OR은 적어도 한 쪽이 참일 때 참입니다.

    이러한 조건들이 모든 결정 및 루프를驱动합니다.

    Explore · ⁨탐색하기⁩

    Try the OR truth table · ⁨OR 진리표 시도하기⁩

    A Boolean expression is either true (1) or false (0). OR is true when at least one input is true; flip the inputs to see every case. · ⁨부울Boolean 수식은 참(true, 1) 또는 거짓(false, 0)입니다. OR 연산은 입력 중 적어도 하나가 참일 때 참입니다. 모든 경우를 보기 위해 입력을 바꿔보십시오.⁩

    Vocabulary · ⁨어휘⁩ Train · ⁨연습하기⁩
    English 한국어
    Boolean expression/ˈbuːlɪən ekˈspreʃn/ 부울 부호 표현식
    conditional (selection)/kənˈdɪʃənl/ 조건부 (선택)
    nested conditional/ˈnestɪd kənˈdɪʃənl/ 중첩 조건문(nested conditional)
    Iteration (a loop)/ˌɪtəˈreɪʃn/ 반복 (루프)
    infinite loop/ˈɪnfɪnət luːp/ 무한 루프(infinite loop)
    algorithm/ˈælɡərɪθəm/ 알고리즘
    3.6

    Conditionals · ⁨조건문⁩

    Syllabus
    Enduring UnderstandingLearning ObjectiveEssential Knowledge

    AAP-2
    The way statements are sequenced and combined in a program determines the computed result. Programs incorporate iteration and selection constructs to represent repetition and make decisions to handle varied input values.

    AAP-2.G
    Express an algorithm that uses selection without using a programming language. [Skill 2.A]

    • AAP-2.G.1 Selection determines which parts of an algorithm are executed based on a condition being true or false.

    AAP-2.H
    For selection:
    a. Write conditional statements. [Skill 2.B]
    b. Determine the result of conditional statements. [Skill 4.B]

    • AAP-2.H.1 Conditional statements, or "if-statements," affect the sequential flow of control by executing different statements based on the value of a Boolean expression.

    • AAP-2.H.2 The exam reference sheet provides

      Text:

      IF(condition) { <block of statements> }

      Block:

      IF condition block of statements

      in which the code in block of statements is executed if the Boolean expression condition evaluates to true; no action is taken if condition evaluates to false.

    • AAP-2.H.3 The exam reference sheet provides

      Text:

      IF(condition) { <first block of statements> } ELSE { <second block of statements> }

      Block:

      IF condition first block of statements ELSE second block of statements

      in which the code in first block of statements is executed if the Boolean expression condition evaluates to true; otherwise, the code in second block of statements is executed.

    Source: College Board AP Course and Exam Description · ⁨출처: College Board AP Course and Exam Description⁩

    English

    A conditional (selection) 条件语句 chooses which code to run. IF runs a block only when its condition is true; ELSE gives an alternative:

    한국어

    조건문(선택) 은 어떤 코드를 실행할지 선택합니다. IF는 조건이 참일 때만 블록을 실행하며, ELSE은 대안路径을 제공합니다:

    조건에 따라 경로 선택
    조건에 따라 경로 선택
    IF (score ≥ 60)
    {
        DISPLAY("Pass")
    }
    ELSE
    {
        DISPLAY("Fail")
    }
    
    Explore · ⁨탐색하기⁩

    Follow an if / else decision · ⁨if / else 결정문 따르기⁩

    A conditional runs one branch or another depending on whether its condition is true. Slide the value across the threshold and watch which branch is taken. · ⁨조건문(conditional) 은 조건이 참일 때 특정 브랜치를 실행하고, 거짓일 때 다른 브랜치를 실행합니다. 값을 임계점을 넘게 이동하여 어떤 브랜치가 선택되는지 확인하세요.⁩

    3.7

    Nested Conditionals · ⁨중첩 조건문⁩

    Syllabus
    English

    Enduring Understanding (AAP-2): The way statements are sequenced and combined in a program determines the computed result. Programs incorporate iteration and selection constructs to represent repetition and make decisions to handle varied input values.

    Learning Objective AAP-2.I: For nested selection: a. Write nested conditional statements. [Skill 2.B] b. Determine the result of nested conditional statements. [Skill 4.B]

    • AAP-2.I.1 Nested conditional statements consist of conditional statements within conditional statements.
    한국어

    지속적 이해(AAP-2): 프로그램 내에서 문장이 순서대로 배열되고 결합되는 방식은 계산된 결과를 결정합니다. 프로그램은 반복과 선택 구조를 포함하여 반복을 표현하고 다양한 입력 값을 처리하기 위해 결정을 내립니다.

    학습 목표 AAP-2.I: 중첩 선택에 대해: a. 중첩 조건문을 작성하기. [기술 2.B] b. 중첩 조건문의 결과를 판단하기. [기술 4.B]

    • AAP-2.I.1 중첩 조건문은 조건문 안에 다른 조건문이 포함된 구조입니다.

    Source: College Board AP Course and Exam Description · ⁨출처: College Board AP Course and Exam Description⁩

    English

    A nested conditional 嵌套条件 places one IF inside another (or chains ELSE IF) to choose among more than two paths. Only the first matching branch runs:

    한국어

    중첩 조건문은 하나 이상의 IF를 다른 조건문 내에 배치하거나(또는 ELSE IF을 체인)하여 두 개 이상의 path 중 하나를 선택합니다. 첫 번째로 일치하는 분기만 실행됩니다:

    IF (g ≥ 90)      { grade ← "A" }
    ELSE IF (g ≥ 80) { grade ← "B" }
    ELSE             { grade ← "C" }
    
    3.8

    Iteration · ⁨반복⁩

    Syllabus
    Enduring UnderstandingLearning ObjectiveEssential Knowledge

    AAP-2
    The way statements are sequenced and combined in a program determines the computed result. Programs incorporate iteration and selection constructs to represent repetition and make decisions to handle varied input values.

    AAP-2.J
    Express an algorithm that uses iteration without using a programming language. [Skill 2.A]

    • AAP-2.J.1 Iteration is a repeating portion of an algorithm. Iteration repeats a specified number of times or until a given condition is met.

    AAP-2.K
    For iteration:
    a. Write iteration statements. [Skill 2.B]
    b. Determine the result or side effect of iteration statements. [Skill 4.B]

    • AAP-2.K.1 Iteration statements change the sequential flow of control by repeating a set of statements zero or more times, until a stopping condition is met.

    • AAP-2.K.2 The exam reference sheet provides

      Text:

      REPEAT n TIMES { <block of statements> }

      Block:

      REPEAT n TIMES block of statements

      in which the block of statements is executed n times.

    • AAP-2.K.3 The exam reference sheet provides

      Text:

      REPEAT UNTIL(condition) { <block of statements> }

      Block:

      REPEAT UNTIL condition block of statements

      in which the code in block of statements is repeated until the Boolean expression condition evaluates to true.

    • AAP-2.K.4 In REPEAT UNTIL(condition) iteration, an infinite loop occurs when the ending condition will never evaluate to true.

    • AAP-2.K.5 In REPEAT UNTIL(condition) iteration, if the conditional evaluates to true initially, the loop body is not executed at all, due to the condition being checked before the loop.

    Source: College Board AP Course and Exam Description · ⁨출처: College Board AP Course and Exam Description⁩

    English

    Iteration (a loop) 迭代 repeats instructions. AP pseudocode has two forms:

    A loop that never meets its stopping condition is an infinite loop 无限循环.

    한국어

    **반복(루프)**은 지시를 반복합니다. AP 가위문법에는 두 가지 형태가 있습니다:

    전제조건(WHILE) 루프는 본체 실행 전에 조건을 검사하므로 0회 실행될 수 있음
    전제조건(WHILE) 루프는 본체 실행 전에 조건을 검사하므로 0회 실행될 수 있음
    REPEAT 5 TIMES        // a fixed count
    {
        DISPLAY("hi")
    }
    
    REPEAT UNTIL (found)  // until a condition becomes true
    {
        ...
    }
    

    종료 조건을 절대 만족하지 못하는 루프는 무한 루프입니다.

    Explore · ⁨탐색하기⁩

    Trace a loop one pass at a time · ⁨루프를 한 번의 반복 단위로 추적하기⁩

    A loop repeats a block while its counter runs through a range. Step through to watch the counter and the running total update each pass. · ⁨루프(loop) 는 카운터가 범위를遍历할 동안 블록을 반복합니다. 한 번의 반복마다 카운터와 누적 합이 업데이트되는 과정을 단계별로 확인하십시오.⁩

    3.9

    Developing Algorithms · ⁨알고리즘 개발⁩

    Syllabus
    English

    Enduring Understanding (AAP-2): The way statements are sequenced and combined in a program determines the computed result. Programs incorporate iteration and selection constructs to represent repetition and make decisions to handle varied input values.

    Learning Objective AAP-2.L: Compare multiple algorithms to determine if they yield the same side effect or result. [Skill 1.D]

    • AAP-2.L.1 Algorithms can be written in different ways and still accomplish the same tasks.
    • AAP-2.L.2 Algorithms that appear similar can yield different side effects or results.
    • AAP-2.L.3 Some conditional statements can be written as equivalent Boolean expressions.
    • AAP-2.L.4 Some Boolean expressions can be written as equivalent conditional statements.
    • AAP-2.L.5 Different algorithms can be developed or used to solve the same problem.

    Learning Objective AAP-2.M: For algorithms: a. Create algorithms. [Skill 2.A] b. Combine and modify existing algorithms. [Skill 2.B]

    • AAP-2.M.1 Algorithms can be created from an idea, by combining existing algorithms, or by modifying existing algorithms.
    • AAP-2.M.2 Knowledge of existing algorithms can help in constructing new ones. Some existing algorithms include:
      • determining the maximum or minimum value of two or more numbers
      • computing the sum or average of two or more numbers
      • identifying if an integer is or is not evenly divisible by another integer
      • determining a robot's path through a maze
    • AAP-2.M.3 Using existing correct algorithms as building blocks for constructing another algorithm has benefits such as reducing development time, reducing testing, and simplifying the identification of errors.
    한국어

    지속적 이해(AAP-2): 프로그램 내에서 문장이 순서대로 배열되고 결합되는 방식은 계산된 결과를 결정합니다. 프로그램은 반복과 선택 구조를 포함하여 반복을 표현하고 다양한 입력 값을 처리하기 위해 결정을 내립니다.

    학습 목표 AAP-2.L: 여러 알고리즘을 비교하여 동일한 부수 효과나 결과를 내는지 확인하기. [기술 1.D]

    • AAP-2.L.1 알고리즘은 다양한 방식으로 작성할 수 있으며, 여전히 동일한 작업을 수행할 수 있습니다.
    • AAP-2.L.2 유사해 보이는 알고리즘은 서로 다른 부수 효과나 결과를 낼 수 있습니다.
    • AAP-2.L.3 일부 조건문은 동등한 부울 표현식으로 작성할 수 있습니다.
    • AAP-2.L.4 일부 부울 표현식은 동등한 조건문으로 작성할 수 있습니다.
    • AAP-2.L.5 동일한 문제를 해결하기 위해 서로 다른 알고리즘을 개발하거나 사용할 수 있습니다.

    학습 목표 AAP-2.M: 알고리즘에 대해: a. 알고리즘을 생성하기. [기술 2.A] b. 기존 알고리즘을 결합하고 수정하기. [기술 2.B]

    • AAP-2.M.1 알고리즘은 아이디어를 바탕으로 생성하거나, 기존 알고리즘을 결합하거나, 기존 알고리즘을 수정하여 만들 수 있습니다.
    • AAP-2.M.2 기존 알고리즘에 대한 지식은 새로운 알고리즘을 구축하는 데 도움이 됩니다. 일부 기존 알고리즘에는 다음이 포함됩니다:
      • 두 개 이상의 숫자 중 최대값이나 최소값을 결정하는 것
      • 두 개 이상의 숫자의 합계나 평균을 계산하는 것
      • 정수가 다른 정수에 의해 나뉘어 떨어지는지 여부를 확인하는 것
      • 로봇이 미로를 통과하는 경로를 결정하는 것
    • AAP-2.M.3 기존에 올바른 알고리즘을 다른 알고리즘을 구성하는 기초 요소로 사용하는 것은 개발 시간 단축, 테스트 감소, 오류 식별 간소화 등의 이점이 있습니다.

    Source: College Board AP Course and Exam Description · ⁨출처: College Board AP Course and Exam Description⁩

    English

    An algorithm is not the same thing as code. Beyond visual and textual programming languages, an algorithm can be expressed in a variety of ways: in natural language (ordinary sentences), as a diagram such as a flowchart, or in pseudocode. Those forms are for people — they let you check the logic and agree on it before any language is chosen, and the same algorithm can then be written in any language.

    When you do write it in a programming language, clarity and readability are important considerations, not decoration: meaningful variable names, consistent indentation and comments explaining why rather than what. The program has to be read and modified later by someone — often you — and an algorithm nobody can follow cannot be maintained or debugged.

    An algorithm 算法 is a finite sequence of steps that solves a problem, built from sequencing, selection, and iteration. Different algorithms can solve the same problem, and you should be able to combine and modify existing algorithms (for example, count the values in a list that meet a condition, or find the largest). Trace an algorithm by hand to check it is correct.

    한국어
    화면에 표시된 Python 소스 코드 — 알고리즘은 정확하고 순서대로 된 지시사항입니다
    화면에 표시된 Python 소스 코드 — 알고리즘은 정확하고 순서대로 된 지시사항입니다

    알고리즘과 코드는 동일한 것이 아닙니다. 시각적 및 텍스트 기반 프로그래밍 언어 외에도 알고리즘은 다양한 방식으로 표현될 수 있습니다. 자연어(일반 문장), 도표(플로우차트 등) 또는 가상코드로 표현할 수 있습니다. 이러한 형식은 사람을 위한 것으로, 어떤 언어를 선택하기 전에 논리를 확인하고 합의할 수 있게 하며, 이후 동일한 알고리즘을 어떤 언어로도 구현할 수 있습니다.

    프로그래밍 언어로 작성할 때는 명확성과 가독성이 중요한 고려 사항이며 단순한 장식이 아닙니다. 의미 있는 변수 이름, 일관된 줄바꿈 및 무엇을 하는지보다 왜 하는지를 설명하는 주석이 필요합니다. 나중에 다른 사람(자주 본인이)이 프로그램을 읽고 수정해야 하므로,任何人都理解不能한 알고리즘은 유지보수나 디버깅이 불가능합니다.

    알고리즘은 문제를 해결하는 유한한 단계의 서열로서, 순서, 선택, 반복으로 구성됩니다. 서로 다른 알고리즘이 동일한 문제를 해결할 수 있으며, 기존 알고리즘을 결합하거나 수정할 수 있어야 합니다(예: 조건에 맞는 목록 값의 개수 세기, 최대값 찾기). 알고리즘이 올바른지 확인하기 위해 손으로 추적을 해보세요.

    표준 기호를 사용하여 알고리즘을 도식화한 흐름도
    표준 기호를 사용하여 알고리즘을 도식화한 플로우차트
    3.10

    Lists · ⁨목록⁩

    Syllabus
    Enduring UnderstandingLearning ObjectiveEssential Knowledge

    AAP-2
    The way statements are sequenced and combined in a program determines the computed result. Programs incorporate iteration and selection constructs to represent repetition and make decisions to handle varied input values.

    AAP-2.N
    For list operations:
    a. Write expressions that use list indexing and list procedures. [Skill 2.B]
    b. Evaluate expressions that use list indexing and list procedures. [Skill 4.B]

    • AAP-2.N.1 The exam reference sheet provides basic operations on lists, including:
      • accessing an element by index

        Text:

        aList[i]

        Block:

        aList i

        accesses the element of aList at index i. The first element of aList is at index 1 and is accessed using the notation aList[1].

      • assigning a value of an element of a list to a variable

        Text:

        x ← aList[i]

        Block:

        x ← aList i

        assigns the value of aList[i] to the variable x.

      • assigning a value to an element of a list

        Text:

        aList[i] ← x

        Block:

        aList i ← x

        assigns the value of x to aList[i].

        Text:

        aList[i] ← aList[j]

        Block:

        aList i ← aList j

        assigns the value of aList[j] to aList[i].

      • inserting elements at a given index

        Text:

        INSERT(aList, i, value)

        Block:

        INSERT aList, i, value

        shifts to the right any values in aList at indices greater than or equal to i. The length of the list is increased by 1, and value is placed at index i in aList.

      • adding elements to the end of the list

        Text:

        APPEND(aList, value)

        Block:

        APPEND aList, value

        increases the length of aList by 1, and value is placed at the end of aList.

      • removing elements

        Text:

        REMOVE(aList, i)

        Block:

        REMOVE aList, i

        removes the item at index i in aList and shifts to the left any values at indices greater than i. The length of aList is decreased by 1.

      • determining the length of a list

        Text:

        LENGTH(aList)

        Block:

        LENGTH aList

        evaluates to the number of elements currently in aList.

    • AAP-2.N.2 List procedures are implemented in accordance with the syntax rules of the programming language.

    AAP-2.O
    For algorithms involving elements of a list:
    a. Write iteration statements to traverse a list. [Skill 2.B]
    b. Determine the result of an algorithm that includes list traversals. [Skill 4.B]

    • AAP-2.O.1 Traversing a list can be a complete traversal, where all elements in the list are accessed, or a partial traversal, where only a portion of elements are accessed.

      • Exclusion statement (EK AAP-2.O.1): Traversing multiple lists at the same time using the same index for both (parallel traversals) is outside the scope of this course and the AP Exam.
    • AAP-2.O.2 Iteration statements can be used to traverse a list.

    • AAP-2.O.3 The exam reference sheet provides

      Text:

      FOR EACH item IN aList { <block of statements> }

      Block:

      FOR EACH item IN aList block of statements

      The variable item is assigned the value of each element of aList sequentially, in order, from the first element to the last element. The code in block of statements is executed once for each assignment of item.

    • AAP-2.O.4 Knowledge of existing algorithms that use iteration can help in constructing new algorithms. Some examples of existing algorithms that are often used with lists include:

      • determining a minimum or maximum value in a list
      • computing a sum or average of a list of numbers
    • AAP-2.O.5 Linear search or sequential search algorithms check each element of a list, in order, until the desired value is found or all elements in the list have been checked.

    Source: College Board AP Course and Exam Description · ⁨출처: College Board AP Course and Exam Description⁩

    English

    A list 列表 is an ordered collection of values under one name, the course's key data abstraction. AP pseudocode indexes from 1:

    Traverse a list with a loop to sum, count, search, or find a maximum:

    한국어

    목록(list) 은 하나의 이름 아래 정렬된 값들의 모음으로, 이 과정의 핵심 데이터 추상화 개념입니다. AP 가상코드는 인덱스를 1부터 시작합니다:

    목록은 하나의 변수에 여러 값을 저장하며, 각 값은 인덱스로 접근합니다
    목록은 하나의 변수에 여러 값을 저장하며, 각 값은 인덱스로 접근합니다
    scores ← [88, 74, 95]
    DISPLAY(scores[1])          // 88
    scores[2] ← 80              // replace the 2nd value
    APPEND(scores, 60)          // add to the end
    INSERT(scores, 1, 100)      // insert at index 1
    REMOVE(scores, 3)           // delete the 3rd element
    LENGTH(scores)              // how many elements
    

    목록을 루프로 순환하여 합계 계산, 카운팅, 검색 또는 최대값 찾기를 수행할 수 있습니다:

    FOR EACH x IN scores
    {
        total ← total + x
    }
    
    3.11

    Binary Search · ⁨이진 탐색⁩

    Syllabus
    English

    Enduring Understanding (AAP-2): The way statements are sequenced and combined in a program determines the computed result. Programs incorporate iteration and selection constructs to represent repetition and make decisions to handle varied input values.

    Learning Objective AAP-2.P: For binary search algorithms: a. Determine the number of iterations required to find a value in a data set. [Skill 1.D] b. Explain the requirements necessary to complete a binary search. [Skill 1.A]

    • AAP-2.P.1 The binary search algorithm starts at the middle of a sorted data set of numbers and eliminates half of the data; this process repeats until the desired value is found or all elements have been eliminated.
      • Exclusion statement (EK AAP-2.P.1): Specific implementations of the binary search are outside the scope of the course and the AP Exam.
    • AAP-2.P.2 Data must be in sorted order to use the binary search algorithm.
    • AAP-2.P.3 Binary search is often more efficient than sequential/linear search when applied to sorted data.
    한국어

    지속적 이해(AAP-2): 프로그램 내에서 문장이 순서대로 배열되고 결합되는 방식은 계산된 결과를 결정합니다. 프로그램은 반복과 선택 구조를 포함하여 반복을 표현하고 다양한 입력 값을 처리하기 위해 결정을 내립니다.

    학습 목표 AAP-2.P: 이진 탐색 알고리즘에 대해: a. 데이터셋에서 값을 찾기所需的 iteration 횟수를 결정함. [스킬 1.D] b. 이진 탐사를 완료하기 위해 필요한 조건을 설명함. [스킬 1.A]

    • AAP-2.P.1 이진 탐색 알고리즘은 정렬된 숫자 데이터셋의 중간에서 시작하여 데이터를 절반씩 제거하며, 이 과정은 원하는 값을 찾거나 모든 요소가 제거될 때까지 반복됩니다.
      • 제외 명언(EK AAP-2.P.1): 이진 탐색의 구체적인 구현 방법은 이 과정 및 AP 시험의 범위를 벗어납니다.
    • AAP-2.P.2 이진 탐색 알고리즘을 사용하기 위해서는 데이터가 정렬된 상태여야 합니다.
    • AAP-2.P.3 정렬된 데이터에 적용할 때 이진 탐색은 순차/선형 탐색보다 일반적으로 더 효율적입니다.

    Source: College Board AP Course and Exam Description · ⁨출처: College Board AP Course and Exam Description⁩

    English

    Binary search 二分搜索 finds a value in a sorted list far faster than checking each element. It looks at the middle element, then discards the half that cannot contain the target, repeating until found. Each step halves the search space, so a list of $n$ items takes about $\log_2 n$ steps. It requires the data to be sorted first.

    Worked example. Searching a sorted list of $8$ items, binary search halves the range each step: $8\rightarrow4\rightarrow2\rightarrow1$, at most $3$ comparisons ($\log_2 8=3$), whereas a linear search could take up to $8$. The advantage grows explosively: about $1{,}000$ items need only $\approx10$ binary-search steps (but up to $1{,}000$ linear ones), and $1{,}000{,}000$ items need just $\approx20$. Halving is what makes it a reasonable-time algorithm.

    한국어
    전화번호부: 이진 탐색은 매 단계마다 남은 페이지 수를 절반으로 줄입니다
    전화번호부: 이진 탐색은 각 단계마다 남은 페이지를 절반으로 줄입니다

    이진 탐색(binary search) 은 정렬된 목록에서 값을 찾을 때 각 요소를 하나씩 확인하는 것보다 훨씬 빠릅니다. 중앙 요소를 확인한 후 목표가 포함될 수 없는 절반을 제거하고, 찾아질 때까지 반복합니다. 각 단계마다 탐색 범위가 절반으로 줄어들므로, $n$개 항목이 있는 목록에는 약 $\log_2 n$개의 단계가 소요됩니다. 먼저 데이터가 정렬되어 있어야 합니다.

    이진 탐색은 각 단계마다 범위를 절반으로 줄입니다 (목록은 정렬되어 있어야 함)
    이진 탐색은 각 단계마다 범위를 절반으로 줄입니다(목록은 정렬되어야 함)

    작업 예제. $8$개 항목이 있는 정렬된 목록을 탐색할 때, 이진 탐색은 각 단계마다 범위를 절반으로 줄입니다: $8\rightarrow4\rightarrow2\rightarrow1$, 최대 $3$번의 비교($\log_2 8=3$)가 필요하지만, 선형 탐색은 최대 $8$번까지 걸릴 수 있습니다. 이 장점은 폭발적으로 커집니다: 약 $1{,}000$개 항목에는 이진 탐색만 $\approx10$단계면 충분하지만(최대 $1{,}000$단계인 선형 탐색 대비), $1{,}000{,}000$개 항목에는 단 $\approx20$단계면 됩니다. 반으로 나누는 것이 바로 이를 합리적인 시간 내의 알고리즘으로 만드는 이유입니다.

    Vocabulary · ⁨어휘⁩ Train · ⁨연습하기⁩
    English 한국어
    Binary search/ˈbaɪnəri sɜːtʃ/ 이진 탐색
    3.12

    Calling Procedures · ⁨절차 호출⁩

    Syllabus
    English

    Enduring Understanding (AAP-3): Programmers break down problems into smaller and more manageable pieces. By creating procedures and leveraging parameters, programmers generalize processes that can be reused. Procedures allow programmers to draw upon existing code that has already been tested, allowing them to write programs more quickly and with more confidence.

    Learning Objective AAP-3.A: For procedure calls: a. Write statements to call procedures. [Skill 3.B] b. Determine the result or effect of a procedure call. [Skill 4.B]

    • AAP-3.A.1 A procedure is a named group of programming instructions that may have parameters and return values.

    • AAP-3.A.2 Procedures are referred to by different names, such as method or function, depending on the programming language.

    • AAP-3.A.3 Parameters are input variables of a procedure. Arguments specify the values of the parameters when a procedure is called.

    • AAP-3.A.4 A procedure call interrupts the sequential execution of statements, causing the program to execute the statements within the procedure before continuing. Once the last statement in the procedure (or a return statement) has executed, flow of control is returned to the point immediately following where the procedure was called.

    • AAP-3.A.5 The exam reference sheet provides

      procName(arg1, arg2, ...)

      as a way to call

      Text:

      PROCEDURE procName(parameter1, parameter2, ...) { <block of statements> }

      Block:

      PROCEDURE procName parameter1, parameter2,... block of statements

      which takes zero or more arguments; arg1 is assigned to parameter1, arg2 is assigned to parameter2, and so on.

    • AAP-3.A.6 The exam reference sheet provides the procedure

      Text:

      DISPLAY(expression)

      Block:

      DISPLAY expression

      to display the value of expression, followed by a space.

    • AAP-3.A.7 The exam reference sheet provides the

      Text:

      RETURN(expression)

      Block:

      RETURN expression

      statement, which is used to return the flow of control to the point where the procedure was called and to return the value of expression.

    • AAP-3.A.8 The exam reference sheet provides

      result ← procName(arg1, arg2, ...)

      to assign to result the "value of the procedure" being returned by calling

      Text:

      PROCEDURE procName(parameter1, parameter2, ...) { <block of statements> RETURN(expression) }

      Block:

      PROCEDURE procName parameter1, parameter2,... block of statements RETURN expression

    • AAP-3.A.9 The exam reference sheet provides procedure

      Text:

      INPUT()

      Block:

      INPUT

      which accepts a value from the user and returns the input value.

    한국어

    지속적 이해 (AAP-3): 프로그래머는 문제를 더 작고 관리 가능한 부분으로 분해합니다. procedures를 생성하고 매개변수를 활용함으로써 프로그래머들은 재사용 가능한 프로세스를 일반화합니다. procedures는 이미 테스트된 기존 코드를 활용할 수 있게 하여, 프로그래머들이 더 빠르고 자신감 있게 프로그램을 작성할 수 있게 합니다.

    학습 목표 AAP-3.A: procedure 호출에 대해: a. procedure를 호출하는 문장을 작성하십시오. [기술 3.B] b. procedure 호출의 결과 또는 효과를 판단하십시오. [기술 4.B]

    • AAP-3.A.1 procedure는 매개변수와 반환 값을 가질 수 있는 이름이 붙은 프로그래밍 명령의 그룹입니다.

    • AAP-3.A.2 procedure는 프로그래밍 언어에 따라 method 또는 function과 같은 다른 이름으로 불립니다.

    • AAP-3.A.3 *매개변수(Parameters)*는 procedure의 입력 변수입니다. *인자(Arguments)*는 procedure가 호출될 때 매개변수의 값을 지정합니다.

    • AAP-3.A.4 procedure 호출은 문장의 순차적 실행을 중단하여, 프로그램이 procedure 내부의 문장을 먼저 실행한 후 계속하도록 만듭니다. procedure의 마지막 문장(또는 return 문)이 실행되면 제어가 procedure가 호출되었던 지점 바로 뒤로 돌아갑니다.

    • AAP-3.A.5 시험 참고 시트에는

      procName(arg1, arg2, ...)

      이 procedure를 호출하는 방법으로 제공됩니다.

      텍스트:

      PROCEDURE procName(parameter1, parameter2, ...) { <block of statements> }

    블록:

    PROCEDURE procName parameter1, parameter2,... block of statements

    이 procedure는 0개 이상의 인자를 받으며, arg1은 parameter1에 할당되고, arg2은 parameter2에 할당되며, 이와 같이 이어집니다.

    • AAP-3.A.6 시험 참고 시트에는 procedure

      텍스트:

      DISPLAY(expression)

    블록:

    DISPLAY expression

    를 제공하여 expression의 값을 출력한 후 공백을 추가합니다.

    • AAP-3.A.7 시험 참고 시트에는

      텍스트:

      RETURN(expression)

    블록:

    RETURN expression

    문장이 제공되어, 제어를 procedure가 호출되었던 지점으로 되돌리고 expression의 값을 반환하는 데 사용됩니다.

    • AAP-3.A.8 시험 참고 시트에는

      result ← procName(arg1, arg2, ...)

      을 제공하여 procedure를 호출하여 반환되는 "procedure의 값"을 result에 할당합니다.

      텍스트:

      PROCEDURE procName(parameter1, parameter2, ...) { <block of statements> RETURN(expression) }

    블록:

    PROCEDURE procName parameter1, parameter2,... block of statements RETURN expression

    • AAP-3.A.9 시험 참고 시트에는 procedure

      텍스트:

      INPUT()

    블록:

    INPUT

    를 제공하여 사용자로부터 값을 받아입력값을 반환합니다.

    Source: College Board AP Course and Exam Description · ⁨출처: College Board AP Course and Exam Description⁩

    English

    A procedure (function) 过程 is a named, reusable block of code. Calling it runs its code with the arguments you supply, and it may return a value:

    Procedures let you use code without knowing its inner workings – procedural abstraction 过程抽象.

    한국어

    절차(function) 는 이름이 붙고 재사용 가능한 코드 블록입니다. 호唤(calling) 하면 제공한 인자(arguments) 로 해당 코드를 실행하며, 返回值(return) 할 수도 있습니다:

    sum ← Add(3, 4)      // call, passing 3 and 4
    

    절차는 내부 작동 원리를 알지 않고 코드를 사용할 수 있게 해줍니다 — 이것이 절차 추상화(procedural abstraction) 입니다.

    Vocabulary · ⁨어휘⁩ Train · ⁨연습하기⁩
    English 한국어
    procedural abstraction/prəˈsiːdʒərəl əbˈstrækʃn/ 절차 추상화
    abstraction/əbˈstrækʃn/ 추상화
    3.13

    Developing Procedures · ⁨절차 개발⁩

    Syllabus
    English

    Enduring Understanding (AAP-3): Programmers break down problems into smaller and more manageable pieces. By creating procedures and leveraging parameters, programmers generalize processes that can be reused. Procedures allow programmers to draw upon existing code that has already been tested, allowing them to write programs more quickly and with more confidence.

    Learning Objective AAP-3.B: Explain how the use of procedural abstraction manages complexity in a program. [Skill 3.C]

    • AAP-3.B.1 One common type of abstraction is procedural abstraction, which provides a name for a process and allows a procedure to be used only knowing what it does, not how it does it.
    • AAP-3.B.2 Procedural abstraction allows a solution to a large problem to be based on the solutions of smaller subproblems. This is accomplished by creating procedures to solve each of the subproblems.
    • AAP-3.B.3 The subdivision of a computer program into separate subprograms is called modularity.
    • AAP-3.B.4 A procedural abstraction may extract shared features to generalize functionality instead of duplicating code. This allows for program code reuse, which helps manage complexity.
    • AAP-3.B.5 Using parameters allows procedures to be generalized, enabling the procedures to be reused with a range of input values or arguments.
    • AAP-3.B.6 Using procedural abstraction helps improve code readability.
    • AAP-3.B.7 Using procedural abstraction in a program allows programmers to change the internals of the procedure (to make it faster, more efficient, use less storage, etc.) without needing to notify users of the change as long as what the procedure does is preserved.

    Learning Objective AAP-3.C: Develop procedural abstractions to manage complexity in a program by writing procedures. [Skill 3.B]

    • AAP-3.C.1 The exam reference sheet provides

      Text:

      PROCEDURE procName(parameter1, parameter2, ...) { <block of statements> }

      Block:

      PROCEDURE procName parameter1, parameter2,... block of statements

      which is used to define a procedure that takes zero or more arguments. The procedure contains block of statements.

    • AAP-3.C.2 The exam reference sheet provides

      Text:

      PROCEDURE procName(parameter1, parameter2, ...) { <block of statements> RETURN(expression) }

      Block:

      PROCEDURE procName parameter1, parameter2,... block of statements RETURN expression

      which is used to define a procedure that takes zero or more arguments. The procedure contains block of statements and returns the value of expression. The RETURN statement may appear at any point inside the procedure and causes an immediate return from the procedure back to the calling statement.

    한국어

    지속적 이해 (AAP-3): 프로그래머는 문제를 더 작고 관리 가능한 부분으로 분해합니다. procedures를 생성하고 매개변수를 활용함으로써 프로그래머들은 재사용 가능한 프로세스를 일반화합니다. procedures는 이미 테스트된 기존 코드를 활용할 수 있게 하여, 프로그래머들이 더 빠르고 자신감 있게 프로그램을 작성할 수 있게 합니다.

    학습 목표 AAP-3.B: procedural abstraction의 사용이程序中의 복잡성을 어떻게 관리하는지 설명하십시오. [기술 3.C]

    • AAP-3.B.1 일반적인 추상의 일종인 procedural abstraction은 프로세스에 이름을 부여하고, procedure가 무엇을 하는지는 알지만 어떻게 수행하는지는 알지 않고도 procedure를 사용할 수 있게 합니다.
    • AAP-3.B.2 procedural abstraction은 큰 문제의 해결책을 작은 하위 문제의 해결책에 기반하게 합니다. 이는 각 하위 문제를 해결하기 위한 procedure를 생성함으로써 달성됩니다.
    • AAP-3.B.3 컴퓨터 프로그램을 별도의 하위 프로그램으로 세분화하는 것을 *모듈성(modularity)*이라고 합니다.
    • AAP-3.B.4 procedural abstraction은 코드를 복사하지 않고 공통된 기능을 추출하여 기능 generalize를 통해 프로그램 코드 재사용을 가능하게 하며, 이는 복잡성 관리를 돕습니다.
    • AAP-3.B.5 매개변수를 사용하면 procedure를 generalize할 수 있어 다양한 입력 값이나 인자를 사용하여 procedure를 재사용할 수 있습니다.
    • AAP-3.B.6 procedural abstraction의 사용은 코드 가독성을 향상시킵니다.
    • AAP-3.B.7程序中에서 procedural abstraction을 사용하면 procedure가 하는 일이 유지되는 한, procedure의 내부 구조(더 빠르게, 효율적으로, 더 적은 저장 공간 사용 등)를 변경해도 사용자에게 변경 사항을 통보할 필요가 없습니다.

    학습 목표 AAP-3.C: procedure를 작성하여程序的의 복잡성을 관리하는 procedural abstraction을 개발하십시오. [기술 3.B]

    • AAP-3.C.1 시험 참고 시트에는

      텍스트:

      PROCEDURE procName(parameter1, parameter2, ...) { <block of statements> }

    블록:

    PROCEDURE procName parameter1, parameter2,... block of statements

    을 제공하여 0개 이상의 인자를 받는 procedure를 정의하는 데 사용합니다. procedure에는 block of statements이 포함됩니다.

    • AAP-3.C.2 시험 참고 시트에는

      텍스트:

      PROCEDURE procName(parameter1, parameter2, ...) { <block of statements> RETURN(expression) }

    블록:

    PROCEDURE procName parameter1, parameter2,... block of statements RETURN expression

    을 제공하여 0개 이상의 인자를 받는 procedure를 정의하는 데 사용합니다. procedure에는 block of statements이 포함되고 expression의 값을 반환합니다. RETURN 문은 procedure 내부의 어디든 나타날 수 있으며, procedure에서 즉시 호출문으로 되돌아가게 합니다.

    Source: College Board AP Course and Exam Description · ⁨출처: College Board AP Course and Exam Description⁩

    English

    You define a procedure with a name, parameters (inputs), and a body, and optionally RETURN a result:

    Writing your own procedures reduces repetition, breaks a big problem into named pieces, and makes programs readable and easier to test – the essence of abstraction 抽象.

    한국어

    절차를 정의(define) 할 때는 이름, 파라미터(입력), 본문(body)을 지정하며, 선택적으로 RETURN 결과를 반환할 수 있습니다:

    프로그램을 프로시저 및 서브프로시저로 분해하는 모습
    프로그램을 절차와 하위 절차로 분해하는 모습
    PROCEDURE Add(a, b)
    {
        RETURN(a + b)
    }
    

    직접 절차를 작성하면 중복을 줄이고 큰 문제를 이름이 붙은 조각들로 나누어 프로그램이 가독성이 높아지고 테스트하기 쉬워집니다 — 이것이 추상化(abstraction) 의 핵심입니다.

    Vocabulary · ⁨어휘⁩ Train · ⁨연습하기⁩
    English 한국어
    procedure (function)/prəˈsiːdʒə/ 절차 (함수)
    3.14

    Libraries · ⁨라이브러리⁩

    Syllabus
    English

    Enduring Understanding (AAP-3): Programmers break down problems into smaller and more manageable pieces. By creating procedures and leveraging parameters, programmers generalize processes that can be reused. Procedures allow programmers to draw upon existing code that has already been tested, allowing them to write programs more quickly and with more confidence.

    Learning Objective AAP-3.D: Select appropriate libraries or existing code segments to use in creating new programs. [Skill 2.B]

    • AAP-3.D.1 A software library contains procedures that may be used in creating new programs.
    • AAP-3.D.2 Existing code segments can come from internal or external sources, such as libraries or previously written code.
    • AAP-3.D.3 The use of libraries simplifies the task of creating complex programs.
    • AAP-3.D.4 Application program interfaces (APIs) are specifications for how the procedures in a library behave and can be used.
    • AAP-3.D.5 Documentation for an API/library is necessary in understanding the behaviors provided by the API/library and how to use them.
    한국어

    지속적 이해 (AAP-3): 프로그래머는 문제를 더 작고 관리 가능한 부분으로 분해합니다. procedures를 생성하고 매개변수를 활용함으로써 프로그래머들은 재사용 가능한 프로세스를 일반화합니다. procedures는 이미 테스트된 기존 코드를 활용할 수 있게 하여, 프로그래머들이 더 빠르고 자신감 있게 프로그램을 작성할 수 있게 합니다.

    학습 목표 AAP-3.D: 새로운 프로그램을 만들 때 사용할 적절한 라이브러리 또는 기존 코드 조각을 선택하십시오. [기술 2.B]

    • AAP-3.D.1 소프트웨어 라이브러리는 새로운 프로그램을 만드는 데 사용할 수 있는 procedure를 포함합니다.
    • AAP-3.D.2 기존 코드 조각은 라이브러리나 이전에 작성한 코드와 같은 내부 또는 외부 소스에서 올 수 있습니다.
    • AAP-3.D.3 라이브리리의 사용은 복잡한 프로그램을 만드는 작업을 간소화합니다.
    • AAP-3.D.4 애플리케이션 프로그래밍 인터페이스(API)는 라이브리리에 있는 procedure의 동작 방식과 사용 방법을 규정한 사양입니다.
    • AAP-3.D.5 API/라이브리리의 문서는 API/라이브리리가 제공하는 동작과使用方法를 이해하는 데 필수적입니다.

    Source: College Board AP Course and Exam Description · ⁨출처: College Board AP Course and Exam Description⁩

    English

    A library 库 is a collection of ready-made procedures that others can reuse. An API (Application Program Interface) 应用程序接口 documents what each procedure does, its parameters, and its result – so you can use it without seeing its code. Libraries save time and let you build on existing, tested work.

    The documentation is part of the library. Documentation for an API or library is necessary in order to understand the behaviours it provides and how to use them — what each procedure expects as parameters, what it returns, and what it does at the edges. Without it you would have to read the source, which defeats the point of abstraction; with it you can use a procedure correctly without knowing how it works inside.

    한국어

    라이브러리(library) 는 다른 사람이 재사용할 수 있는 미리 만든 절차들의 모음입니다. API(응용 프로그램 인터페이스)는 각 절차가 하는 일, 파라미터,返回值를 문서화하여 코드를 보지 않고도 사용할 수 있게 합니다. 라이브러리는 시간을 아끼고 기존에 검증된 작업 위에 빌드할 수 있게 합니다.

    문서는 라이브러리의 일부입니다. API나 라이브러리에 대한 문서는 제공하는 기능과 사용 방법을 이해하기 위해 필수적입니다 — 각 절차가需要什么作为参数, 返回什么, 그리고 가장자리 조건에서 무엇을 하는지 등입니다. 문서가 없으면 소스 코드를 읽어야 하므로 추상화의 의미가 사라지며, 문서가 있으면 내부 작동 원리를 몰라도 올바르게 절차를 사용할 수 있습니다.

    Vocabulary · ⁨어휘⁩ Train · ⁨연습하기⁩
    English 한국어
    library/ˈlaɪbrəri/ 라이브러리(library)
    3.15

    Random Values · ⁨무작위 값⁩

    Syllabus
    English

    Enduring Understanding (AAP-3): Programmers break down problems into smaller and more manageable pieces. By creating procedures and leveraging parameters, programmers generalize processes that can be reused. Procedures allow programmers to draw upon existing code that has already been tested, allowing them to write programs more quickly and with more confidence.

    Learning Objective AAP-3.E: For generating random values: a. Write expressions to generate possible values. [Skill 2.B] b. Evaluate expressions to determine the possible results. [Skill 4.B]

    • AAP-3.E.1 The exam reference sheet provides

      Text:

      RANDOM(a, b)

      Block:

      RANDOM a, b

      which generates and returns a random integer from a to b, inclusive. Each result is equally likely to occur. For example, RANDOM(1, 3) could return 1, 2, or 3.

    • AAP-3.E.2 Using random number generation in a program means each execution may produce a different result.

    한국어

    지속적 이해 (AAP-3): 프로그래머는 문제를 더 작고 관리 가능한 부분으로 분해합니다. procedures를 생성하고 매개변수를 활용함으로써 프로그래머들은 재사용 가능한 프로세스를 일반화합니다. procedures는 이미 테스트된 기존 코드를 활용할 수 있게 하여, 프로그래머들이 더 빠르고 자신감 있게 프로그램을 작성할 수 있게 합니다.

    학습 목표 AAP-3.E: 무작위 값 생성에 대해: a. 가능한 값을 생성하는 표현을 작성하십시오. [기술 2.B] b. 표현을 평가하여 가능한 결과를 결정하십시오. [기술 4.B]

    • AAP-3.E.1 시험 참고 시트에는

      텍스트:

      RANDOM(a, b)

    블록:

    RANDOM a, b

    을 제공하여 a부터 b까지(포함)의 무작위 정수를 생성하고 반환합니다. 각 결과는 발생 확률이 동일합니다. 예를 들어, RANDOM(1, 3)은 1, 2, 또는 3 중 하나를 반환할 수 있습니다.

    • AAP-3.E.2程序中에서 무작위 숫자 생성을 사용하면 각 실행마다 다른 결과가 나올 수 있습니다.

    Source: College Board AP Course and Exam Description · ⁨출처: College Board AP Course and Exam Description⁩

    English

    RANDOM(a, b) returns a random integer from a to b (inclusive), letting a program produce unpredictable results – for games, sampling, or simulations. Each call may give a different value, so a program using randomness behaves differently each run.

    한국어

    RANDOM(a, b)는 a부터 b 사이의 무작위 정수를 반환하여 프로그램이 예측 불가능한 결과를 생성하게 합니다 — 게임, 표본 추출 또는 시뮬레이션에 사용됩니다. 매번 호출 시 다른 값이 나올 수 있으므로, 무작위성을 사용하는 프로그램은 실행할 때마다 행동이 달라집니다.

    3.16

    Simulations · ⁨시뮬레이션⁩

    Syllabus
    English

    Enduring Understanding (AAP-3): Programmers break down problems into smaller and more manageable pieces. By creating procedures and leveraging parameters, programmers generalize processes that can be reused. Procedures allow programmers to draw upon existing code that has already been tested, allowing them to write programs more quickly and with more confidence.

    Learning Objective AAP-3.F: For simulations: a. Explain how computers can be used to represent real-world phenomena or outcomes. [Skill 1.A] b. Compare simulations with real-world contexts. [Skill 1.D]

    • AAP-3.F.1 Simulations are abstractions of more complex objects or phenomena for a specific purpose.
    • AAP-3.F.2 A simulation is a representation that uses varying sets of values to reflect the changing state of a phenomenon.
    • AAP-3.F.3 Simulations often mimic real-world events with the purpose of drawing inferences, allowing investigation of a phenomenon without the constraints of the real world.
    • AAP-3.F.4 The process of developing an abstract simulation involves removing specific details or simplifying functionality.
    • AAP-3.F.5 Simulations can contain bias derived from the choices of real-world elements that were included or excluded.
    • AAP-3.F.6 Simulations are most useful when real-world events are impractical for experiments (e.g., too big, too small, too fast, too slow, too expensive, or too dangerous).
    • AAP-3.F.7 Simulations facilitate the formulation and refinement of hypotheses related to the objects or phenomena under consideration.
    • AAP-3.F.8 Random number generators can be used to simulate the variability that exists in the real world.
    한국어

    지속적 이해 (AAP-3): 프로그래머는 문제를 더 작고 관리 가능한 부분으로 분해합니다. procedures를 생성하고 매개변수를 활용함으로써 프로그래머들은 재사용 가능한 프로세스를 일반화합니다. procedures는 이미 테스트된 기존 코드를 활용할 수 있게 하여, 프로그래머들이 더 빠르고 자신감 있게 프로그램을 작성할 수 있게 합니다.

    학습 목표 AAP-3.F: 시뮬레이션에 대해: a. 컴퓨터가 실제 세계의 현상이나 결과를 어떻게 표현하는지 설명하십시오. [기술 1.A] b. 시뮬레이션과 실제 세계의 맥락을 비교하십시오. [기술 1.D]

    • AAP-3.F.1 시뮬레이션은 특정 목적을 위해 더 복잡한 객체나 현상을 추상화한 것입니다.
    • AAP-3.F.2 시뮬레이션은 현상의 변화하는 상태를 반영하기 위해 다양한 값의 집합을 사용하는 표현입니다.
    • AAP-3.F.3 시뮬레이션은 추론을 도출하고 현실 세계의 제약 없이 현상을 조사할 수 있도록 하는 목적으로 실제 사건을 모사합니다.
    • AAP-3.F.4 추상적 시뮬레이션을 개발하는 과정에는 구체적인 디테일을 제거하거나 기능을 단순화하는 것이 포함됩니다.
    • AAP-3.F.5 시뮬레이션에는 포함되거나 배제된 실제 세계 요소에 대한 선택으로 인해 편향이 포함되어 있을 수 있습니다.
    • AAP-3.F.6 실물 실험이 비현실적인 경우(예: 너무 큼, 너무 작음, 너무 빠름, 너무 느림, 너무 비쌈, 또는 너무 위험함) 시뮬레이션이 가장 유용합니다.
    • AAP-3.F.7 시뮬레이션은 고려 대상인 객체나 현상에 대한 가설의 수립 및 정제를 촉진합니다.
    • AAP-3.F.8 무작위 숫자 생성기는 실제 세계에 존재하는 변동성을 시뮬레이션하는 데 사용할 수 있습니다.

    Source: College Board AP Course and Exam Description · ⁨출처: College Board AP Course and Exam Description⁩

    English

    A simulation 模拟 is a program that models a real-world process to study it safely and cheaply. Simulations simplify reality (they leave out detail) and often use randomness to imitate chance events. They let you test scenarios that would be too costly, slow, or dangerous in real life – but their results are only as good as their assumptions.

    A simulation is a way of doing science, not just a picture. Because it can be run many times, cheaply and with one variable changed at a time, a simulation facilitates the formulation and refinement of hypotheses about the object or phenomenon under consideration: you propose an explanation, run the model, compare the result with reality, and adjust either the hypothesis or the model. That is why a simulation's simplifications matter — a result only supports a hypothesis about the real world to the extent that what was left out does not matter.

    한국어

    시뮬레이션(simulation) 은 실제 세계 과정을 모델링하여 안전하고 저렴하게 연구하는 프로그램입니다. 시뮬레이션은 현실을 간소화(simplify) (세부 사항을 생략함)하며, 종종 우연한 사건을 모사하기 위해 무작위성(randomness) 을 사용합니다. 실제로는 비용이 너무 많이 들거나 느리거나 위험할 scenarios를 테스트할 수 있게 해주지만, 그 결과는 가정의 정확도에 의존합니다.

    **시뮬레이션은 단순한 그림이 아니라 과학을 수행하는 방법입니다.**cheaply且多次运行,且每次只改变一个变量,因此模拟有助于对研究对象或现象提出和修正假设:你提出一种解释,运行模型,将结果与现实比较,然后调整假设或模型。这就是为什么模拟的简化很重要——只有当被省略的部分无关紧要时,结果才能支持关于现实世界的假设。

    Vocabulary · ⁨어휘⁩ Train · ⁨연습하기⁩
    English 한국어
    simulation/ˌsɪmjʊˈleɪʃn/ 시뮬레이션(simulation)
    Efficiency/ɪˈfɪʃənsi/ 효율성
    heuristic/hjuːˈrɪstɪk/ 히어리스틱
    undecidable/ˌʌndɪˈsaɪdəbl/ 해결 불가능함
    Interface/ˈɪntəfeɪs/ 인터페이스
    3.17

    Algorithmic Efficiency · ⁨알고리즘 효율성⁩

    Syllabus
    English

    Enduring Understanding (AAP-4): There exist problems that computers cannot solve, and even when a computer can solve a problem, it may not be able to do so in a reasonable amount of time.

    Learning Objective AAP-4.A: For determining the efficiency of an algorithm: a. Explain the difference between algorithms that run in reasonable time and those that do not. [Skill 1.D] b. Identify situations where a heuristic solution may be more appropriate. [Skill 1.D]

    • AAP-4.A.1 A problem is a general description of a task that can (or cannot) be solved algorithmically. An instance of a problem also includes specific input. For example, sorting is a problem; sorting the list (2,3,1,7) is an instance of the problem.
    • AAP-4.A.2 A decision problem is a problem with a yes/no answer (e.g., is there a path from A to B?). An optimization problem is a problem with the goal of finding the "best" solution among many (e.g., what is the shortest path from A to B?).
    • AAP-4.A.3 Efficiency is an estimation of the amount of computational resources used by an algorithm. Efficiency is typically expressed as a function of the size of the input.
      • Exclusion statement (EK AAP-4.A.3): Formal analysis of algorithms (Big-O) and formal reasoning using mathematical formulas are outside the scope of this course and the AP Exam.
    • AAP-4.A.4 An algorithm's efficiency is determined through formal or mathematical reasoning.
    • AAP-4.A.5 An algorithm's efficiency can be informally measured by determining the number of times a statement or group of statements executes.
    • AAP-4.A.6 Different correct algorithms for the same problem can have different efficiencies.
    • AAP-4.A.7 Algorithms with a polynomial efficiency or slower (constant, linear, square, cube, etc.) are said to run in a reasonable amount of time. Algorithms with exponential or factorial efficiencies are examples of algorithms that run in an unreasonable amount of time.
    • AAP-4.A.8 Some problems cannot be solved in a reasonable amount of time because there is no efficient algorithm for solving them. In these cases, approximate solutions are sought.
    • AAP-4.A.9 A heuristic is an approach to a problem that produces a solution that is not guaranteed to be optimal but may be used when techniques that are guaranteed to always find an optimal solution are impractical.
      • Exclusion statement (AAP-4.A.9): Specific heuristic solutions are outside the scope of this course and the AP Exam.
    한국어

    지속적 이해(AAP-4): 컴퓨터가 해결할 수 없는 문제가 존재하며,even computer가 문제를 해결할 수 있더라도 합리적인 시간 내에 해결하지 못할 수 있습니다.

    학습 목표 AAP-4.A: 알고리즘의 효율성을 결정하기 위해: a. 합리적인 시간에 실행되는 알고리즘과 그렇지 않은 알고리즘의 차이를 설명하십시오. [기술 1.D] b. 히어리스틱 해법이 더 적절한 상황 식별. [기술 1.D]

    • AAP-4.A.1 문제는 알고리즘적으로 (또는 할 수 없음) 해결될 수 있는 작업의 일반적인 설명입니다. 문제의 인스턴스도 구체적인 입력을 포함합니다. 예를 들어, 정렬은一个问题; 목록 (2,3,1,7)을 정렬하는 것은 해당 문제의 인스턴스입니다.
    • AAP-4.A.2 결정 문제는 예/아니오 답을 가진 문제입니다(예: A에서 B까지 경로가 있는가?). 최적화 문제는 여러 solution 중 "최선"을 찾는 것을 목표로 하는 문제입니다(예: A에서 B까지 최단 경로는 무엇인가?).
    • AAP-4.A.3 효율성은 알고리즘이 사용하는 컴퓨팅 자원의 양을 추정하는 것입니다. 효율성은 일반적으로 입력 크기의 함수로 표현됩니다.
      • 배제 문항(EK AAP-4.A.3): 알고리즘의 형식적 분석(Big-O) 및 수학적 공식을 사용한 형식적 추론은 이 과정 및 AP 시험의 범위를 벗어납니다.
    • AAP-4.A.4 알고리즘의 효율성은 형식적이거나 수학적 추론을 통해 결정됩니다.
    • AAP-4.A.5 알고리즘의 효율성은 명령이나 명령 그룹이 실행되는 횟수를 확인하여 비형식적으로 측정할 수 있습니다.
    • AAP-4.A.6 동일한 문제에 대한 서로 다른 올바른 알고리즘은 서로 다른 효율성을 가질 수 있습니다.
    • AAP-4.A.7 다항식 효율성 또는 그보다 느린 알고리즘(상수, 선형, 제곱, 세제곱 등)은 합리적인 시간에 실행된다고 합니다. 지수 함수적 또는 계승적 효율성을 가진 알고리즘은 비합리적인 시간에 실행되는 알고리즘의 예입니다.
    • AAP-4.A.8 해결에 효과적인 알고리즘이 없기 때문에 어떤 문제는 합리적인 시간 내에 해결할 수 없습니다. 이러한 경우에는 근사 해를 찾습니다.
    • AAP-4.A.9 히어리스틱은 항상 최적해임을 보장하지는 않지만, 항상 최적해를 찾는 technique이 비현실적인 경우에 사용할 수 있는 문제 접근 방식입니다.
      • 배제 문항(AAP-4.A.9): 구체적인 히어리스틱 해법은 이 과정 및 AP 시험의 범위를 벗어납니다.

    Source: College Board AP Course and Exam Description · ⁨출처: College Board AP Course and Exam Description⁩

    English

    Efficiency 效率 is how much time (or memory) an algorithm needs as its input grows. A reasonable-time algorithm's work grows like a polynomial of the input size (e.g. linear or quadratic); an unreasonable-time algorithm grows far faster (e.g. doubling with each added item), becoming impractical for large inputs. A faster algorithm can make a previously impossible problem solvable. Sometimes an exact answer takes too long, so a heuristic 启发式 – an approach that finds a good-enough answer quickly – is used instead.

    한국어

    효율성은 입력 크기가 커질 때 알고리즘이 소요하는 시간(또는 메모리)의 양입니다. 적절한 시간 내 실행 가능한 알고리즘은 작업량이 입력 크기의 다항식 형태(예: 선형 또는 이차)로 증가합니다. 반면, 부적절한 시간 내 실 가능한 알고리즘은 추가되는 항목마다 배가되는 등 훨씬 빠르게 증가하여 큰 입력에 대해 실용적이지 않게 됩니다. 더 빠른 알고리즘은 이전에는 해결 불가능했던 문제를 해결 가능하게 만들 수 있습니다. 때로는 정확한 답을 구하는 데 시간이 너무 오래 걸리므로, 히어리스트—충분히 좋은 해를 빠르게 찾아내는 접근법—을 대신 사용하여 해결하기도 합니다.

    알고리즘의 실행 시간이 입력 크기 n에 따라 어떻게 증가하는지
    알고리즘의 실행 시간이 입력 크기 n에 따라 어떻게 증가하는지
    3.18

    Undecidable Problems · ⁨결정 불가능한 문제⁩

    Syllabus
    English

    Enduring Understanding (AAP-4): There exist problems that computers cannot solve, and even when a computer can solve a problem, it may not be able to do so in a reasonable amount of time.

    Learning Objective AAP-4.B: Explain the existence of undecidable problems in computer science. [Skill 1.A]

    • AAP-4.B.1 A decidable problem is a decision problem for which an algorithm can be written to produce a correct output for all inputs (e.g., "Is the number even?").
    • AAP-4.B.2 An undecidable problem is one for which no algorithm can be constructed that is always capable of providing a correct yes-or-no answer.
      • Exclusion statement (EK AAP-4.B.2): Determining whether a given problem is undecidable is outside the scope of this course and the AP Exam.
    • AAP-4.B.3 An undecidable problem may have some instances that have an algorithmic solution, but there is no algorithmic solution that could solve all instances of the problem.
    한국어

    지속적 이해(AAP-4): 컴퓨터가 해결할 수 없는 문제가 존재하며,even computer가 문제를 해결할 수 있더라도 합리적인 시간 내에 해결하지 못할 수 있습니다.

    학습 목표 AAP-4.B: 컴퓨터 과학에서 불결정 문제의 존재를 설명하십시오. [기술 1.A]

    • AAP-4.B.1 결정 가능한 문제는 모든 입력에 대해 올바른 출력을 생성할 수 있는 알고리즘을 작성할 수 있는 결정 문제입니다(예: "숫자가 짝수인가?").
    • AAP-4.B.2 불결정 문제는 항상 올바른 예/아니오 답을 제공할 수 있는 알고리즘을 구성할 수 없는 문제입니다.
      • 배제 문항(EK AAP-4.B.2): 주어진 문제가 불결정인지 여부 판정은 이 과정 및 AP 시험의 범위를 벗어납니다.
    • AAP-4.B.3 불결정 문제에는 알고리즘적 해를 가진 일부 인스턴스가 있을 수 있지만, 문제의 모든 인스턴스를 해결할 수 있는 알고리즘적 해는 없습니다.

    Source: College Board AP Course and Exam Description · ⁨출처: College Board AP Course and Exam Description⁩

    English

    Some problems are undecidable 不可判定: no algorithm can solve every case of them with a correct yes/no answer. This is a fundamental limit of computing – not a matter of needing a faster computer, but a proof that no such algorithm can exist.

    Exam skill: be able to determine a code segment's result by tracing it, compare two algorithms' efficiency (reasonable vs unreasonable time), and recognize procedural and data abstraction in a program.

    한국어

    일부 문제는 결정 불가능합니다: 모든 경우에서 올바른 예/아니오 답을 제공하며 이를 해결할 수 있는 알고리즘은 존재하지 않습니다. 이는更快地计算机가 필요하다는 문제가 아니라 그러한 알고리즘이 존재할 수 없음을 증명하는 것인 컴퓨팅의 근본적인 한계입니다.

    시험 대비 기술: 코드 세그먼트의 결과를 추적하여 판단하고, 두 알고리즘의 효율성(적절한 시간 vs 부적절한 시간)을 비교하며, 프로그램 내 절차 추상화 및 데이터 추상화를 식별할 수 있어야 합니다.

    3.18

    Exam tips · ⁨시험 팁⁩

    English
    • Know a variable is a named store for a value and trace how assignment updates it step by step.
    • Read the AP pseudocode carefully — a <- expression assigns, and lists are 1-indexed on the exam reference sheet.
    • Distinguish a variable from a list (a collection accessed by index) and use list operations correctly.
    • Evaluate expressions with the right precedence and boolean logic (AND, OR, NOT).
    • Pick clear, meaningful variable names — the written tasks reward readable code.
    한국어
    • 변수는 값에 대한 명명된 저장소임을 알고, 대입이 단계별로 변수를 업데이트하는 과정을 추적할 수 있어야 합니다.
    • AP 가짜코드를 주의 깊게 읽으세요 — a <- expression는 대입을 수행하며, Exam Reference Sheet에서는 리스트가 1부터 시작합니다.
    • 변수와 리스트(인덱스로 액세스하는 집합)를 구분하고, 리스트 연산을 올바르게 사용하세요.
    • 옳은 precedence와 부울 논리를 사용하여 식을 평가하세요 (AND, OR, NOT).
    • 명확하고 의미 있는 변수 이름을 선택하세요 — 서면 과제는 가독성이 높은 코드를reward합니다.
  • 4

    Computer Systems and Networks · ⁨컴퓨터 시스템 및 네트워크⁩

    Watch lesson · ⁨수업 보기⁩
    4.1

    The Internet

    Syllabus
    English

    Enduring Understanding (CSN-1): Computer systems and networks facilitate the transfer of data.

    Learning Objective CSN-1.A: Explain how computing devices work together in a network. [Skill 5.A]

    • CSN-1.A.1 A computing device is a physical artifact that can run a program. Some examples include computers, tablets, servers, routers, and smart sensors.
    • CSN-1.A.2 A computing system is a group of computing devices and programs working together for a common purpose.
    • CSN-1.A.3 A computer network is a group of interconnected computing devices capable of sending or receiving data.
    • CSN-1.A.4 A computer network is a type of computing system.
    • CSN-1.A.5 A path between two computing devices on a computer network (a sender and a receiver) is a sequence of directly connected computing devices that begins at the sender and ends at the receiver.
    • CSN-1.A.6 Routing is the process of finding a path from sender to receiver.
    • CSN-1.A.7 The bandwidth of a computer network is the maximum amount of data that can be sent in a fixed amount of time.
    • CSN-1.A.8 Bandwidth is usually measured in bits per second.

    Learning Objective CSN-1.B: Explain how the Internet works. [Skill 5.A]

    • CSN-1.B.1 The Internet is a computer network consisting of interconnected networks that use standardized, open (nonproprietary) communication protocols.
    • CSN-1.B.2 Access to the Internet depends on the ability to connect a computing device to an Internet-connected device.
    • CSN-1.B.3 A protocol is an agreed-upon set of rules that specify the behavior of a system.
    • CSN-1.B.4 The protocols used in the Internet are open, which allows users to easily connect additional computing devices to the Internet.
    • CSN-1.B.5 Routing on the Internet is usually dynamic; it is not specified in advance.
    • CSN-1.B.6 The scalability of a system is the capacity for the system to change in size and scale to meet new demands.
    • CSN-1.B.7 The Internet was designed to be scalable.

    Learning Objective CSN-1.C: Explain how data are sent through the Internet via packets. [Skill 5.A]

    • CSN-1.C.1 Information is passed through the Internet as a data stream. Data streams contain chunks of data, which are encapsulated in packets.
    • CSN-1.C.2 Packets contain a chunk of data and metadata used for routing the packet between the origin and the destination on the Internet, as well as for data reassembly.
    • CSN-1.C.3 Packets may arrive at the destination in order, out of order, or not at all.
    • CSN-1.C.4 IP, TCP, and UDP are common protocols used on the Internet.

    Learning Objective CSN-1.D: Describe the differences between the Internet and the World Wide Web. [Skill 5.A]

    • CSN-1.D.1 The World Wide Web is a system of linked pages, programs, and files.
    • CSN-1.D.2 HTTP is a protocol used by the World Wide Web.
    • CSN-1.D.3 The World Wide Web uses the Internet.
    한국어

    지속적 이해(CSN-1): 컴퓨터 시스템 및 네트워크는 데이터 전송을 용이하게 합니다.

    학습 목표 CSN-1.A: 컴퓨팅 장치가 네트워크 내에서 어떻게协作하는지 설명하기. [기술 5.A]

    • CSN-1.A.1 컴퓨팅 장치는 프로그램을 행할 수 있는 물리적 장치입니다. 예시로는 컴퓨터, 태블릿, 서버, 라우터, 스마트 센서 등이 있습니다.
    • CSN-1.A.2 컴퓨팅 시스템은 공통적인 목적을 위해 함께 작동하는 컴퓨팅 장치와 프로그램의 그룹입니다.
    • CSN-1.A.3 컴퓨터 네트워크는 데이터를 송수신할 수 있는 상호 연결된 컴퓨팅 장치의 그룹입니다.
    • CSN-1.A.4 컴퓨터 네트워크는 컴퓨팅 시스템의 한 유형입니다.
    • CSN-1.A.5 컴퓨터 네트워크 상의 두 컴퓨팅 장치(송신자와 수신자) 사이의 경로는 송신자에서 시작하여 수신자에서 끝나는 직접 연결된 컴퓨팅 장치의 서열입니다.
    • CSN-1.A.6 라우팅은 송신자로부터 수신자로 가는 경로를 찾는 과정입니다.
    • CSN-1.A.7 컴퓨터 네트워크의 대역폭은 고정된 시간 내에 전송할 수 있는 데이터의 최대량을 의미한다.
    • CSN-1.A.8 대역폭은 일반적으로 초당 비트로 측정된다.

    학습 목표 CSN-1.B: 인터넷이 어떻게 작동하는지 설명하시오. [기술 5.A]

    • CSN-1.B.1 인터넷은 표준화된 개방형(비독점적) 통신 프로토콜을 사용하는 상호 연결된 네트워크로 구성된 컴퓨터 네트워크이다.
    • CSN-1.B.2 인터넷에 접근하기 위해서는 컴퓨팅 장치를 인터넷에 연결된 장치에 연결할 수 있어야 한다.
    • CSN-1.B.3 프로토콜은 시스템의 동작을 지정하는 합의된 규칙의 집합체이다.
    • CSN-1.B.4 인터넷에서 사용되는 프로토콜은 개방형으로, 사용자가 추가 컴퓨팅 장치를 인터넷에 쉽게 연결할 수 있게 한다.
    • CSN-1.B.5 인터넷에서의 라우팅은 일반적으로 동적이며, 사전에 지정되지 않는다.
    • CSN-1.B.6 시스템의 확장성은 새로운 수요를 충족하기 위해 시스템의 크기와 규모를 변경할 수 있는 능력이다.
    • CSN-1.B.7 인터넷은 확장성을 가지도록 설계되었다.

    학습 목표 CSN-1.C: 데이터가 패킷을 통해 인터넷을 통해 어떻게 전송되는지 설명하시오. [기술 5.A]

    • CSN-1.C.1 정보는 인터넷을 통해 데이터 스트림 형태로 전달된다. 데이터 스트림에는 패킷에 인캡슐레이션된 데이터 단위가 포함되어 있다.
    • CSN-1.C.2 패킷은 데이터 단위와 메타데이터를 포함하며, 이는 인터넷 상에서 소스와 목적지 간 패킷 라우팅 및 데이터 재조립에 사용된다.
    • CSN-1.C.3 패킷은 목적지에 순서대로, 혹은 불규칙한 순서로, 혹은 전혀 도착하지 않을 수도 있다.
    • CSN-1.C.4 IP, TCP, UDP는 인터넷에서 널리 사용되는 프로토콜이다.

    학습 목표 CSN-1.D: 인터넷과 월드 와이드 웹(WWW)의 차이를 서술하시오. [기술 5.A]

    • CSN-1.D.1 월드 와이드 웹은 링크된 페이지, 프로그램, 파일들의 체계이다.
    • CSN-1.D.2 HTTP는 월드 와이드 웹에서 사용되는 프로토콜이다.
    • CSN-1.D.3 월드 와이드 웹은 인터넷을 이용한다.

    Source: College Board AP Course and Exam Description · ⁨출처: College Board AP Course and Exam Description⁩

    An RJ45 Ethernet connector — physical links carry packets across the Internet
    An RJ45 Ethernet connector — physical links carry packets across the Internet

    The Internet 互联网 is a global network of networks. Data travels as packets 数据包 – small chunks that are sent separately and reassembled at the destination. Two ideas make it work at scale:

    The internet is the worldwide network; the web is one service running on it
    The internet is the worldwide network; the web is one service running on it
    • Protocols 协议 are agreed rules for communication. IP (Internet Protocol) addresses and routes packets; TCP reassembles them in order and re-requests lost ones; HTTP carries web pages; DNS translates a name like example.com into an IP address.
    • Redundancy 冗余 and routing: there are many possible paths between two points, so if one path fails, packets take another. This makes the Internet fault-tolerant 容错.

    The Internet is designed to be open and scalable – built on standards anyone can use, so it keeps working as billions of devices join. Bandwidth 带宽 is the amount of data a connection can carry per second.

    Explore · ⁨탐색하기⁩

    How data crosses the Internet in packets · ⁨패킷을 통해 인터넷을 가로질러 데이터 전송 원리⁩

    The Internet breaks a message into numbered packets, each addressed and routed independently (often by different paths), then reassembled at the destination. That design makes it fault-tolerant — if one route fails, packets take another. · ⁨인터넷은 메시지를 번호가 매겨진 패킷(packet) 으로 나누어, 각 패킷이 독립적으로 주소 지정되어 라우팅(routing) 됩니다(주로 다른 경로를 이용). 이후 목적지에서 재조립됩니다. 이 구조는 내결성(fault-tolerant) 을 제공하므로—one 경로가 고장 나면 패킷은 다른 경로를 이용합니다.⁩

    Vocabulary · ⁨어휘⁩ Train · ⁨연습하기⁩
    English 한국어
    Internet/ˈɪntənet/ 인터넷(Internet) ⟦Internet⟧
    packets/ˈpækɪts/ 패킷들
    Protocols/ˈprəʊtəkɒlz/ 프로토콜
    Redundancy/rɪˈdʌndənsi/ 중복성
    fault-tolerant/fɒlt ˈtɒlərənt/ 결함 허용성
    Bandwidth/ˈbændwɪdθ/ 대역폭
    Watch lesson · ⁨수업 보기⁩
    4.2

    Fault Tolerance

    Syllabus
    English

    Enduring Understanding (CSN-1): Computer systems and networks facilitate the transfer of data.

    Learning Objective CSN-1.E: For fault-tolerant systems, like the Internet: a. Describe the benefits of fault tolerance. [Skill 1.D] b. Explain how a given system is fault-tolerant. [Skill 5.A] c. Identify vulnerabilities to failure in a system. [Skill 1.D]

    • CSN-1.E.1 The Internet has been engineered to be fault-tolerant, with abstractions for routing and transmitting data.
    • CSN-1.E.2 Redundancy is the inclusion of extra components that can be used to mitigate failure of a system if other components fail.
    • CSN-1.E.3 One way to accomplish network redundancy is by having more than one path between any two connected devices.
    • CSN-1.E.4 If a particular device or connection on the Internet fails, subsequent data will be sent via a different route, if possible.
    • CSN-1.E.5 When a system can support failures and still continue to function, it is called fault-tolerant. This is important because elements of complex systems fail at unexpected times, often in groups, and fault tolerance allows users to continue to use the network.
    • CSN-1.E.6 Redundancy within a system often requires additional resources but can provide the benefit of fault tolerance.
    • CSN-1.E.7 The redundancy of routing options between two points increases the reliability of the Internet and helps it scale to more devices and more people.
    한국어

    지속적 이해(CSN-1): 컴퓨터 시스템 및 네트워크는 데이터 전송을 용이하게 합니다.

    학습 목표 CSN-1.E: 인터넷과 같은 내결함성 시스템에 대해: a. 내결함성의 이점을 서술하시오. [기술 1.D] b. 주어진 시스템이 어떻게 내결함성을 갖추었는지 설명하시오. [기술 5.A] c. 시스템의 고장 취약점을 식별하시오. [기술 1.D]

    • CSN-1.E.1 인터넷은 라우팅 및 데이터 전송에 대한 추상화를 갖추고 있어 내결함성으로 설계되어 엔지니어링되었다.
    • CSN-1.E.2 중복이란 다른 구성 요소가 고장날 경우 시스템 고장을 완화하기 위해 추가된 구성 요소를 포함하는 것이다.
    • CSN-1.E.3 네트워크 중복을 달성하는 한 가지 방법은 두 연결 장치 사이에 여러 경로가 존재하도록 하는 것이다.
    • CSN-1.E.4 인터넷 상에서 특정 장치나 연결이 고장날 경우, 가능한 경우 다음 데이터는 다른 경로를 통해 전송된다.
    • CSN-1.E.5 시스템이 고장을 견디면서도 여전히 기능할 수 있을 때 이를 내결함성이라고 한다. complex 시스템의 요소들은 예상치 못한 시기에, 종종 집단적으로 고장날 수 있으므로 내결함성은 사용자가 네트워크를 계속 사용할 수 있게 해준다.
    • CSN-1.E.6 시스템 내부의 중복은 추가 자원을 필요로 할 수 있지만 내결함성의 이점을 제공할 수 있다.
    • CSN-1.E.7 두 지점 간의 라우팅 옵션의 중복성은 인터넷의 신뢰성을 높이고 더 많은 장치와更多的人에게 확장되도록 돕는다.

    Source: College Board AP Course and Exam Description · ⁨출처: College Board AP Course and Exam Description⁩

    A Wi-Fi router: the local gateway that forwards packets toward the wider Internet
    A Wi-Fi router: the local gateway that forwards packets toward the wider Internet

    A system is fault-tolerant if it keeps working even when part of it fails. The Internet achieves this through redundant connections: because packets can be routed along multiple paths, the failure of one router or cable does not stop communication – traffic simply reroutes. Fault tolerance costs extra resources (the redundant paths) but greatly improves reliability 可靠性. A single path with no backup is not fault-tolerant.

    Packet switching sends packets by independent routes, so the network tolerates a failed link
    Packet switching sends packets by independent routes, so the network tolerates a failed link
    Vocabulary · ⁨어휘⁩ Train · ⁨연습하기⁩
    English 한국어
    reliability/rɪˌlaɪəˈbɪlɪti/ 신뢰성
    4.3

    Parallel and Distributed Computing

    Syllabus
    English

    Enduring Understanding (CSN-2): Parallel and distributed computing leverage multiple computers to more quickly solve complex problems or process large data sets.

    Learning Objective CSN-2.A: For sequential, parallel, and distributed computing: a. Compare problem solutions. [Skill 1.D] b. Determine the efficiency of solutions. [Skill 1.D]

    • CSN-2.A.1 Sequential computing is a computational model in which operations are performed in order one at a time.
    • CSN-2.A.2 Parallel computing is a computational model where the program is broken into multiple smaller sequential computing operations, some of which are performed simultaneously.
    • CSN-2.A.3 Distributed computing is a computational model in which multiple devices are used to run a program.
    • CSN-2.A.4 Comparing efficiency of solutions can be done by comparing the time it takes them to perform the same task.
    • CSN-2.A.5 A sequential solution takes as long as the sum of all of its steps.
    • CSN-2.A.6 A parallel computing solution takes as long as its sequential tasks plus the longest of its parallel tasks.
    • CSN-2.A.7 The "speedup" of a parallel solution is measured in the time it took to complete the task sequentially divided by the time it took to complete the task when done in parallel.

    Learning Objective CSN-2.B: Describe benefits and challenges of parallel and distributed computing. [Skill 1.D]

    • CSN-2.B.1 Parallel computing consists of a parallel portion and a sequential portion.
    • CSN-2.B.2 Solutions that use parallel computing can scale more effectively than solutions that use sequential computing.
    • CSN-2.B.3 Distributed computing allows problems to be solved that could not be solved on a single computer because of either the processing time or storage needs involved.
    • CSN-2.B.4 Distributed computing allows much larger problems to be solved quicker than they could be solved using a single computer.
    • CSN-2.B.5 When increasing the use of parallel computing in a solution, the efficiency of the solution is still limited by the sequential portion. This means that at some point, adding parallel portions will no longer meaningfully increase efficiency.
    한국어

    지속적 이해 (CSN-2): 병렬 및 분산 컴퓨팅은 여러 컴퓨터를 활용하여 복잡한 문제를 더 빠르게 해결하거나 대용량 데이터셋을 처리하게 한다.

    학습 목표 CSN-2.A: 순차, 병렬, 분산 컴퓨팅에 대해: a. 문제 해결 방법을 비교하시오. [기술 1.D] b. 해결책의 효율성을 결정하시오. [기술 1.D]

    • CSN-2.A.1 순차 컴퓨팅은 연산 작업들이 하나씩 순서대로 수행되는 컴퓨팅 모델이다.
    • CSN-2.A.2 병렬 컴퓨팅은 프로그램이 여러 작은 순차 컴퓨팅 연산으로 나뉘며, 그 중 일부가 동시에 수행되는 컴퓨팅 모델이다.
    • CSN-2.A.3 분산 컴퓨팅은 여러 장치가 사용하여 프로그램을 실행하는 컴퓨팅 모델이다.
    • CSN-2.A.4 해결책의 효율성을 비교하는 것은 동일한 작업을 수행하는 데 걸리는 시간을 비교함으로써 가능하다.
    • CSN-2.A.5 순차 해결책은 모든 단계의 합만큼 걸린다.
    • CSN-2.A.6 병렬 컴퓨팅 해결책은 순차 작업의 합 + 병렬 작업 중 가장 긴 시간만큼 걸린다.
    • CSN-2.A.7 병렬 해결책의 '속도 증가'는 순차로完成任务所需时间除以并行完成任务所需时间来衡量。

    학습 목표 CSN-2.B: 병렬 및 분산 컴퓨팅의 이점과 과제를 서술하시오. [기술 1.D]

    • CSN-2.B.1 병렬 컴퓨팅은 병렬 부분과 순차部分组成构成。
    • CSN-2.B.2 병렬 컴퓨팅을 사용하는 해결책은 순차 컴퓨팅을 사용하는 해결책보다 확장성이 더 효과적이다.
    • CSN-2.B.3 분산 컴퓨팅은 처리 시간이나 저장소 요구 사항으로 인해 단일 컴퓨터에서는 해결할 수 없는 문제를 해결할 수 있게 한다.
    • CSN-2.B.4 분산 컴퓨팅은 단일 컴퓨터로 해결하는 것보다 훨씬 큰 문제를 더 빠르게 해결할 수 있게 한다.
    • CSN-2.B.5 해결책에서 병렬 컴퓨팅의 사용을 늘릴 때, 그 효율성은 여전히 순차적 부분에 의해 제한된다. 이는 어떤 시점에서는 병렬 부분을 추가해도 효율성을 의미 있게 높일 수 없게 된다는 것을 의미한다.

    Source: College Board AP Course and Exam Description · ⁨출처: College Board AP Course and Exam Description⁩

    Data-centre server racks: distributed computing spreads work across many machines
    Data-centre server racks: distributed computing spreads work across many machines
    • Sequential computing 顺序计算 runs one operation at a time.
    • Parallel computing 并行计算 splits a task into parts that run at the same time on multiple processors, finishing faster.
    • Distributed computing 分布式计算 uses many computers connected by a network to work on one problem – essential for problems too big for a single machine.
    Parallel computing: many processors work at the same time
    Parallel computing: many processors work at the same time

    A parallel solution's speedup 加速比 is the sequential time divided by the parallel time. Speedup is limited: parts that must run in sequence cannot be sped up by adding processors, so doubling the processors rarely doubles the speed.

    Worked example. A task has a part that must run sequentially, taking $40$ seconds, plus a parallelizable part that takes $60$ seconds on one processor – so on a single processor the whole task takes $40+60=100$ seconds. Spread the parallel part across $3$ processors and it takes $\tfrac{60}{3}=20$ seconds, so the total parallel time is $40+20=60$ seconds and the speedup is $\tfrac{100}{60}\approx1.67$. The $40$-second sequential part is a floor: even with infinitely many processors the task can never finish in under $40$ seconds.

    Exam skill: given the times for the sequential and parallel portions of a task, be able to calculate the total parallel time and the speedup.

    Vocabulary · ⁨어휘⁩ Train · ⁨연습하기⁩
    English 한국어
    Sequential computing/siːˈkwenʃl kəmˈpjuːtɪŋ/ 순차적 컴퓨팅
    Parallel computing/ˈpærəlel kəmˈpjuːtɪŋ/ 병렬 컴퓨팅
    Distributed computing/ˈdɪstrɪbjuːtɪd kəmˈpjuːtɪŋ/ 분산 컴퓨팅
    speedup/ˈspiːdʌp/ 가속(speedup)
    4.3

    Exam tips

    • Describe how data travels in packets over a redundant, fault-tolerant network of independent routers.
    • Know that protocols (IP, TCP, HTTP) are agreed rules, and that open standards let different systems interoperate.
    • Explain scalability and how the Internet grows without central control.
    • Contrast bandwidth (rate) with latency (delay), and describe the DNS name-to-address lookup.
    • Discuss the digital divide and security basics (encryption, authentication) in plain terms.
  • 5

    Impact of Computing · ⁨컴퓨팅의 영향⁩

    Watch lesson · ⁨수업 보기⁩
    5.1

    Beneficial and Harmful Effects · ⁨유익한 효과와 해로운 효과⁩

    Syllabus
    English

    Enduring Understanding (IOC-1): While computing innovations are typically designed to achieve a specific purpose, they may have unintended consequences.

    Learning Objective IOC-1.A: Explain how an effect of a computing innovation can be both beneficial and harmful. [Skill 5.C]

    • IOC-1.A.1 People create computing innovations.
    • IOC-1.A.2 The way people complete tasks often changes to incorporate new computing innovations.
    • IOC-1.A.3 Not every effect of a computing innovation is anticipated in advance.
    • IOC-1.A.4 A single effect can be viewed as both beneficial and harmful by different people, or even by the same person.
    • IOC-1.A.5 Advances in computing have generated and increased creativity in other fields, such as medicine, engineering, communications, and the arts.

    Learning Objective IOC-1.B: Explain how a computing innovation can have an impact beyond its intended purpose. [Skill 5.C]

    • IOC-1.B.1 Computing innovations can be used in ways that their creators had not originally intended:
      • The World Wide Web was originally intended only for rapid and easy exchange of information within the scientific community.
      • Targeted advertising is used to help businesses, but it can be misused at both individual and aggregate levels.
      • Machine learning and data mining have enabled innovation in medicine, business, and science, but information discovered in this way has also been used to discriminate against groups of individuals.
    • IOC-1.B.2 Some of the ways computing innovations can be used may have a harmful impact on society, the economy, or culture.
    • IOC-1.B.3 Responsible programmers try to consider the unintended ways their computing innovations can be used and the potential beneficial and harmful effects of these new uses.
    • IOC-1.B.4 It is not possible for a programmer to consider all the ways a computing innovation can be used.
    • IOC-1.B.5 Computing innovations have often had unintended beneficial effects by leading to advances in other fields.
    • IOC-1.B.6 Rapid sharing of a program or running a program with a large number of users can result in significant impacts beyond the intended purpose or control of the programmer.
    한국어

    지속적 이해 (IOC-1): 컴퓨팅 혁신은 일반적으로 특정 목적을 달성하기 위해 설계되지만, 의도치 않은 결과를 초래할 수 있다.

    학습 목표 IOC-1.A: 컴퓨팅 혁신의 효과가 유익하고 해로운 면을 모두 가질 수 있음을 설명하시오. [기술 5.C]

    • IOC-1.A.1 사람들은 컴퓨팅 혁신을 개발한다.
    • IOC-1.A.2 사람들이 과제를 수행하는 방식은 새로운 컴퓨팅 혁신을 반영하여 자주 변화한다.
    • IOC-1.A.3 컴퓨팅 혁신의 모든 효과는 사전에 예측되는 것은 아니다.
    • IOC-1.A.4 하나의 효과는 서로 다른 사람에 의해, 또는 같은 사람에 의해 유익하고 해로운两个方面로 볼 수 있다.
    • IOC-1.A.5 컴퓨팅의 발전은 의학, 공학, 통신 및 예술과 같은 다른 분야에서 창의성을 창출하고 증가시켰다.

    학습 목표 IOC-1.B: 컴퓨팅 혁신이 예상된 목적 beyond 영향을 미칠 수 있음을 설명하시오. [기술 5.C]

    • IOC-1.B.1 컴퓨팅 혁신은 개발자가 원래 의도하지 않은 방식으로 사용될 수 있다:
      • 월드 와이드 웹(WWW)은 과학 커뮤니티 내에서 정보의 빠르고 쉬운 교환만을 목적으로 처음 설계되었다.
      • 타겟 광고는 기업을 돕기 위해 사용되지만 개인 수준 및 집단 수준에서 모두 남용될 수 있다.
      • 머신러닝과 데이터 마이닝은 의학, 비즈니스 및 과학 분야의 혁신을 가능하게 했지만,这种方式로 발견된 정보는 또한 특정 집단에 대한 차별에 사용되기도 했다.
    • IOC-1.B.2 컴퓨팅 혁신이 사용될 수 있는 일부 방법은 사회, 경제 또는 문화에 해로운 영향을 미칠 수 있다.
    • IOC-1.B.3 책임감 있는 프로그래머들은 자신의 컴퓨팅 혁신이 사용될 수 있는 의도치 않은 방법과 이러한 새로운 사용의 잠재적인 유익 및 해로운 효과를 고려하려 한다.
    • IOC-1.B.4 프로그래머가 컴퓨팅 혁신이 사용될 수 있는 모든 방법을 고려하는 것은 불가능하다.
    • IOC-1.B.5 컴퓨팅 혁신은 다른 분야로의 발전을 이끌어 함으로써 종종 의도치 않은 유익한 효과를 가져왔다.
    • IOC-1.B.6 프로그램의 빠른 공유나 많은 사용자와 함께 프로그램을 실행하면 프로그래머의 예상 목적이나 통제 beyond 상당한 영향을 미칠 수 있다.

    Source: College Board AP Course and Exam Description · ⁨출처: College Board AP Course and Exam Description⁩

    English

    Every computing innovation can be used in ways that help and ways that harm – often the same technology does both. A social network connects people and can spread misinformation; automation raises productivity and can remove jobs. Effects are frequently unintended: creators cannot foresee every use. When you evaluate a computing innovation, weigh its benefits and harms on people and society, and remember that harms are not always deliberate.

    Computing also generates creativity in other fields, which the CED asks for as a benefit in its own right, not merely as convenience: modelling and imaging in medicine, simulation in engineering, new forms in the arts and music, and new kinds of communication entirely. An innovation's beneficial effects are often in a field far from computing.

    한국어
    전자 폐기물 더미 — 컴퓨팅은 환경적 이점뿐만 아니라 비용도 수반함
    전자 폐기물 더미 — 컴퓨팅은 환경적 이점뿐만 아니라 비용도 수반함

    모든 컴퓨팅 혁신은 유익하게 사용될 수도 있고 해롭게 사용될 수도 있습니다. 종종 동일한 기술이 두 가지 모두에 관여합니다. 소셜 네트워크는 사람을 연결하는 동시에 오보 정보를 퍼뜨릴 수도 있으며, 자동화는 생산성을 높일 수 있지만 일자리를 박탈할 수도 있습니다. 효과는 종종 의도하지 않은 것입니다. 제작자는 모든 사용법을 예측할 수 없습니다. 컴퓨팅 혁신을 평가할 때는 사람과 사회에 미치는 유익함과 해로움을权衡해야 하며, 해로운 효과가 항상 의도된 것은 아님을 기억해야 합니다.

    컴퓨팅이 공중의 복지에 여러 방식으로 영향을 미침
    컴퓨팅이 공중의 복지에 여러 방식으로 영향을 미침

    컴퓨팅은 다른 분야에서도 창의성을 창출합니다. CED는 이를 단순한 편의가 아닌 그 자체로서의 이점으로 요구합니다. 의학에서의 모델링 및 이미지 처리, 공학에서의 시뮬레이션, 예술 및 음악에서의 새로운 형식, 그리고 완전히 새로운 형태의 소통 등이 포함됩니다. 혁신의 유익한 효과는 클리프팅과 멀리 떨어진 다른 분야에서 나타나는 경우가 많습니다.

    5.2

    The Digital Divide · ⁨디지털 격차⁩

    Syllabus
    English

    Enduring Understanding (IOC-1): While computing innovations are typically designed to achieve a specific purpose, they may have unintended consequences.

    Learning Objective IOC-1.C: Describe issues that contribute to the digital divide. [Skill 5.C]

    • IOC-1.C.1 Internet access varies between socioeconomic, geographic, and demographic characteristics, as well as between countries.
    • IOC-1.C.2 The "digital divide" refers to differing access to computing devices and the Internet, based on socioeconomic, geographic, or demographic characteristics.
    • IOC-1.C.3 The digital divide can affect both groups and individuals.
    • IOC-1.C.4 The digital divide raises issues of equity, access, and influence, both globally and locally.
    • IOC-1.C.5 The digital divide is affected by the actions of individuals, organizations, and governments.
    한국어

    지속적 이해 (IOC-1): 컴퓨팅 혁신은 일반적으로 특정 목적을 달성하기 위해 설계되지만, 의도치 않은 결과를 초래할 수 있다.

    학습 목표 IOC-1.C: 디지털 격차를 유발하는 요인을 서술하시오. [기술 5.C]

    • IOC-1.C.1 인터넷 접근성은 socioeconomic, 지리적 및 인구통계학적 특성, 그리고 국가 간에 다르다.
    • IOC-1.C.2 '디지털 격차'는 socioeconomic, 지리적 또는 인구통계학적 특성에 기반하여 컴퓨팅 장치 및 인터넷에 대한 접근성의 차이를 의미한다.
    • IOC-1.C.3 디지털 격차는 집단과 개인 모두에게 영향을 미칠 수 있다.
    • IOC-1.C.4 디지털 격차는 글로벌 및 지역적 수준에서 형평성, 접근성 및 영향력 관련 문제를 제기한다.
    • IOC-1.C.5 디지털 격차는 개인, 조직 및 정부의 행동에 의해 영향을 받는다.

    Source: College Board AP Course and Exam Description · ⁨출처: College Board AP Course and Exam Description⁩

    English

    The digital divide 数字鸿沟 is the unequal access to computing and the Internet across groups – by income, geography, age, or country. Those with access gain education, jobs, and services; those without fall further behind. The divide is shaped by economic, social, and geographic factors, and efforts to close it (affordable devices, public access, infrastructure) aim to make computing's benefits fairer.

    한국어

    디지털 격차는 소득, 지리, 연령 또는 국가에 따른 그룹 간 컴퓨팅 및 인터넷 접근성의 불평등을 의미합니다. 접근 가능한 사람들은 교육, 일자리 및 서비스를 얻지만, 그렇지 못한 사람들은 더욱 뒤처지게 됩니다. 이 격차는 경제적, 사회적, 지리적 요인에 의해 형성되며, 이를 해소하기 위한 노력(저렴한 기기, 공공 접근, 인프라)은 컴퓨팅의 혜택을 더 공정하게 만들기 위한 것입니다.

    공립 도서관 컴퓨터: 디지털 격차는 기기에 대한 접근성, 연결성 및 기술의 불평등과 관련됨
    공립 도서관 컴퓨터: 디지털 격차는 기기에 대한 접근성, 연결성 및 기술의 불평등과 관련됨
    농촌 위성 안테나: 지리가 여전히 빠른 인터넷을 이용하는 자와 기다리는 자를 결정함
    농촌 위성 안테나: 지리가 여전히 빠른 인터넷을 이용하는 자와 기다리는 자를 결정함
    5.3

    Computing Bias · ⁨컴퓨팅 편향⁩

    Syllabus
    English

    Enduring Understanding (IOC-1): While computing innovations are typically designed to achieve a specific purpose, they may have unintended consequences.

    Learning Objective IOC-1.D: Explain how bias exists in computing innovations. [Skill 5.E]

    • IOC-1.D.1 Computing innovations can reflect existing human biases because of biases written into the algorithms or biases in the data used by the innovation.
    • IOC-1.D.2 Programmers should take action to reduce bias in algorithms used for computing innovations as a way of combating existing human biases.
    • IOC-1.D.3 Biases can be embedded at all levels of software development.
    한국어

    지속적 이해 (IOC-1): 컴퓨팅 혁신은 일반적으로 특정 목적을 달성하기 위해 설계되지만, 의도치 않은 결과를 초래할 수 있다.

    학습 목표 IOC-1.D: 컴퓨팅 혁신에 편향이 존재하는 방식을 설명하시오. [기술 5.E]

    • IOC-1.D.1 컴퓨팅 혁신은 알고리즘에 내재된 편향이나 혁신이 사용하는 데이터의 편향으로 인해 기존 인간의 편향을 반영할 수 있다.
    • IOC-1.D.2 프로그래머들은 기존 인간 편향을 극복하기 위해 컴퓨팅 혁신에 사용되는 알고리즘의 편향을 줄이기 위해 조치를 취해야 한다.
    • IOC-1.D.3 편향은 소프트웨어 개발의 모든 단계에 내재될 수 있다.

    Source: College Board AP Course and Exam Description · ⁨출처: College Board AP Course and Exam Description⁩

    English

    Bias 偏见 can be built into computing systems – often unintentionally. If the data used to build a system reflects existing prejudice, or if the designers' assumptions are one-sided, the system can produce unfair results (for example, a hiring tool that favors one group). Bias can enter at every stage – data collection, design, and use – so systems should be tested for fairness across different groups. Recognizing that "the computer said so" is not the same as "fair" is an important habit.

    한국어
    도시 길가를 달리는 자율주행 자동차 — 자율 시스템은 안전성과 편향 문제를 제기함
    도시 길가를 달리는 자율주행 자동차 — 자율 시스템은 안전성과 편향 문제를 제기함

    편향은 컴퓨팅 시스템에 내재되어 있을 수 있으며, 종종 무심코 발생합니다. 시스템을 구축하는 데 사용된 데이터가 기존 편향을 반영하거나, 설계자의 가정이 일방적이면, 시스템은 불공정한 결과를 초래할 수 있습니다(예: 특정 집단을 선호하는 채용 도구). 편향은 데이터 수집, 설계 및 사용의 모든 단계에서 발생할 수 있으므로, 서로 다른 집단 간公平性(fairness) 테스트가 필요합니다. "컴퓨터가 그렇다고 했으니"라는 것이 반드시 "공정한"다는 것과 같지 않음을 인지하는 것이 중요한 습관입니다.

    5.4

    Crowdsourcing · ⁨크라우드소싱⁩

    Syllabus
    English

    Enduring Understanding (IOC-1): While computing innovations are typically designed to achieve a specific purpose, they may have unintended consequences.

    Learning Objective IOC-1.E: Explain how people participate in problem-solving processes at scale. [Skill 1.C]

    • IOC-1.E.1 Widespread access to information and public data facilitates the identification of problems, development of solutions, and dissemination of results.
    • IOC-1.E.2 Science has been affected by using distributed and "citizen science" to solve scientific problems.
    • IOC-1.E.3 Citizen science is scientific research conducted in whole or part by distributed individuals, many of whom may not be scientists, who contribute relevant data to research using their own computing devices.
    • IOC-1.E.4 Crowdsourcing is the practice of obtaining input or information from a large number of people via the Internet.
    • IOC-1.E.5 Human capabilities can be enhanced by collaboration via computing.
    • IOC-1.E.6 Crowdsourcing offers new models for collaboration, such as connecting businesses or social causes with funding.
    한국어

    지속적 이해 (IOC-1): 컴퓨팅 혁신은 일반적으로 특정 목적을 달성하기 위해 설계되지만, 의도치 않은 결과를 초래할 수 있다.

    학습 목표 IOC-1.E: 사람들이 대규모로 문제 해결 과정에 참여하는 방식을 설명하시오. [기술 1.C]

    • IOC-1.E.1 정보 및 공공 데이터에 대한 광범위한 접근성은 문제 식별, 해결책 개발 및 결과 dissemination를 용이하게 한다.
    • IOC-1.E.2 분산형 및 '시민 과학(citizen science)'을 사용하여 과학적 문제를 해결함으로써 과학 분야에 영향을 미쳤다.
    • IOC-1.E.3 시민 과학은 전체 또는 일부가 분산된 개인(많은 경우 그들이 과학자가 아닐 수 있음)에 의해 수행되며, 이들은 자신의 컴퓨팅 장치를 사용하여 연구에 필요한 데이터를 기여하는 과학적 연구이다.
    • IOC-1.E.4 *크라우드소싱(crowdsourcing)*은 인터넷을 통해 대량的人们의 입력이나 정보를 얻어내는 관행이다.
    • IOC-1.E.5 컴퓨팅을 통한 협력을 통해 인간의 능력을 향상시킬 수 있다.
    • IOC-1.E.6 크라우드소싱은 기업이나 사회적 causes를 자금 조달과 연결하는 것과 같은 새로운 협력 모델을 제공한다.

    Source: College Board AP Course and Exam Description · ⁨출처: College Board AP Course and Exam Description⁩

    English

    Crowdsourcing 众包 obtains input, ideas, or funding from a large group of people, usually online. It harnesses the knowledge and effort of many – mapping projects, product reviews, citizen science, and crowdfunding all rely on it. The Internet makes crowdsourcing possible at a scale and speed never before achievable, letting a project draw on contributors worldwide.

    한국어

    크라우드소싱은 많은 사람들로부터 의견, 아이디어 또는 자금을 조달하는 것으로, 일반적으로 온라인으로 이루어집니다. 이는 많은 사람들의 지식과 노력을 활용합니다. 매핑 프로젝트, 제품 리뷰, 시민 과학 및 크라우드펀딩 등은 모두 크라우드소싱에 의존합니다. 인터넷은 이전에는 달성할 수 없던 규모와 속도로 크라우드소싱을 가능하게 하여, 전 세계의 기여자들이 참여할 수 있게 합니다.

    위키백디트아톤: 크라우드소싱은 다수의 작업을 공유된 자원으로 모음
    위키백디트아톤: 크라우드소싱은 다수의 작업을 공유된 자원으로 모음
    5.5

    Legal and Ethical Concerns · ⁨법적 및 윤리적 문제⁩

    Syllabus
    English

    Enduring Understanding (IOC-1): While computing innovations are typically designed to achieve a specific purpose, they may have unintended consequences.

    Learning Objective IOC-1.F: Explain how the use of computing can raise legal and ethical concerns. [Skill 5.E]

    • IOC-1.F.1 Material created on a computer is the intellectual property of the creator or an organization.
    • IOC-1.F.2 Ease of access and distribution of digitized information raises intellectual property concerns regarding ownership, value, and use.
    • IOC-1.F.3 Measures should be taken to safeguard intellectual property.
    • IOC-1.F.4 The use of material created by someone else without permission and presented as one's own is plagiarism and may have legal consequences.
    • IOC-1.F.5 Some examples of legal ways to use materials created by someone else include:
      • Creative Commons—a public copyright license that enables the free distribution of an otherwise copyrighted work. This is used when the content creator wants to give others the right to share, use, and build upon the work they have created.
      • open source—programs that are made freely available and may be redistributed and modified
      • open access—online research output free of any and all restrictions on access and free of many restrictions on use, such as copyright or license restrictions
    • IOC-1.F.6 The use of material created by someone other than you should always be cited.
    • IOC-1.F.7 Creative Commons, open source, and open access have enabled broad access to digital information.
    • IOC-1.F.8 As with any technology or medium, using computing to harm individuals or groups of people raises legal and ethical concerns.
    • IOC-1.F.9 Computing can play a role in social and political issues, which in turn often raises legal and ethical concerns.
    • IOC-1.F.10 The digital divide raises ethical concerns around computing.
    • IOC-1.F.11 Computing innovations can raise legal and ethical concerns. Some examples of these include:
      • the development of software that allows access to digital media downloads and streaming
      • the development of algorithms that include bias
      • the existence of computing devices that collect and analyze data by continuously monitoring activities
    한국어

    지속적 이해 (IOC-1): 컴퓨팅 혁신은 일반적으로 특정 목적을 달성하기 위해 설계되지만, 의도치 않은 결과를 초래할 수 있다.

    학습 목표 IOC-1.F: 컴퓨팅의 사용이 법적 및 윤리적 이슈를 어떻게引发할 수 있는지 설명하시오. [기술 5.E]

    • IOC-1.F.1 컴퓨터로 생성된 자료는 창작자 또는 조직의 지적 재산이다.
    • IOC-1.F.2 디지털 정보의 접근 및 Distribution 용이성은 소유권, 가치 및 사용과 관련된 지적 재산 이슈를 제기한다.
    • IOC-1.F.3 지적 재산을 보호하기 위한 조치가 취해져야 한다.
    • IOC-1.F.4 허락 없이 다른 사람이 만든 자료를 자신의 것으로 주장하여 사용하는 것은 표절이며 법적 제재를 받을 수 있다.
    • IOC-1.F.5 다른 사람이 만든 자원을 합법적으로 사용하는 예시로는 다음이 포함된다:
      • 크리에이티브 커먼스—기타 저작권이 있는 작품을 무료로 배포할 수 있게 하는 공공 저작권 라이선스입니다. 콘텐츠 제작자가 자신의 작품을 공유하고 사용하며 확장하여 활용할 권리를 다른 사람에게 부여하고자 할 때 사용합니다.
      • 오픈 소스—무료로 제공되며 재배급 및 수정이 가능한 프로그램
      • 오픈 액세스—접근에 대한 모든 제한과 사용에 대한 많은 제한(저작권 또는 라이선스 제한 포함) 없이 온라인 연구 산출물이 무료로 제공되는 상태
    • IOC-1.F.6 본인이 아닌 다른 사람이 작성한 자료를 사용할 때는 반드시 출처를 명시해야 합니다.
    • IOC-1.F.7 크리에이티브 커먼즈, 오픈 소스, 오픈 액세스는 디지털 정보에 대한 광범위한 접근을 가능하게 했습니다.
    • IOC-1.F.8 어떤 기술이나 매체와 마찬가지로, 컴퓨팅을 사용하여 개인이나 집단을 해치는 행위는 법적 및 윤리적 문제를 제기합니다.
    • IOC-1.F.9 컴퓨팅은 사회 및 정치적 이슈에 관여할 수 있으며, 이로 인해 종종 법적 및 윤리적 문제가 발생합니다.
    • IOC-1.F.10 디지털 격차는 컴퓨팅 관련 윤리적 문제를 일으킵니다.
    • IOC-1.F.11 컴퓨팅 혁신은 법적·윤리적 이슈를引发할 수 있습니다. 이러한 사례의 일부는 다음과 같습니다:
      • 디지털 미디어 다운로드 및 스트리밍에 접근할 수 있게 하는 소프트웨어의 개발
      • 편향성을 포함하는 알고리즘의 개발
      • 활동을 지속적으로 모니터링하여 데이터를 수집하고 분석하는 컴퓨팅 장치의 존재

    Source: College Board AP Course and Exam Description · ⁨출처: College Board AP Course and Exam Description⁩

    English

    Computing raises questions of law and ethics:

    • Intellectual property 知识产权 and copyright 版权 protect creators' work; using it may require permission or a license. Open-source 开源 and Creative Commons licenses let creators share work under stated terms.
    • Plagiarism 抄袭 – using others' work as your own – is unethical and often illegal.
    • Collecting and using personal data raises privacy questions about consent and misuse.

    The three "open" terms, which are not the same thing

    Term What it means
    open source programs that are made freely available and may be redistributed and modified by anyone. The licence grants those rights explicitly — free of charge is not the same as open source, and a free program you may not modify is not open source.
    open access 开放获取 research and other content made available online without charge, so a reader does not need a subscription. It says nothing about the right to modify.
    Creative Commons 知识共享 a family of licences a creator applies to their own work to grant specific permissions in advance — for example "you may reuse this if you credit me" or "you may reuse this but not commercially".

    All three are ways of granting rights the creator holds by default under copyright. That is why they matter for the exam: copyright is automatic, so anything not explicitly licensed is restricted, and using it needs permission.

    Just because something is technically possible does not make it legal or ethical.

    What is recorded while you browse

    Two collection routes the CED names, and neither needs you to type anything:

    • Websites can record and maintain a history of the individuals who have viewed their pages — which pages, when, how long, and from which device.
    • Search engines can use your search history to suggest websites, and to sell targeted marketing: the advertisement follows the search, which is why a product looked up once then appears for weeks.

    Neither is inherently malicious, and both are the mechanism behind services people find useful. The point the exam wants is that data collected for one purpose can be combined and used for another, often without the person realising they agreed to it.

    한국어
    CCTV 제어실: 감시 시스템은 안전상의 이득과 사생활 보호 우려 사이에서 타협함
    CCTV 제어실: 감시 시스템은 안전상의 이득과 사생활 보호 우려 사이에서 타협함

    컴퓨팅은 법과 윤리에 관한 의문을 제기합니다:

    • 지식재산권과 저작권은 창작자의 작품을 보호하며, 이를 사용할 경우 허락이나 라이선스가 필요할 수 있습니다. 오픈소스 및 크리에이티브 커먼즈 라이선스는创作者가 명시된 조건 하에 작품을 공유할 수 있게 합니다.
    • 표절 –他人的的作品을 자신의 것으로 사용하는 것– 은 비윤리적이며 종종 불법입니다.
    • 개인정보 수집 및 사용은 동의 및 남용에 관한 사생활 문제를 제기합니다.

    '오픈'이라는 세 가지 용어는 서로 다릅니다

    용어 의미
    오픈소스(open source) 누구나 무료로 제공받을 수 있으며 재배포 및 수정이 가능한 프로그램입니다. 라이선스는 이러한 권리를 명시적으로 부여합니다 — 무료라 함이 오픈소스와 동일하지 않으며, 수정할 수 없는 무료 프로그램은 오픈소스가 아닙니다.
    오픈액세스(open access) 온라인으로 무료로 제공되는 연구 및 기타 콘텐츠이므로, 독자가 구독할 필요가 없습니다. 수정 권한에 대해서는 언급하지 않습니다.
    크리에이티브 커먼즈(Creative Commons) 창작자가 자신의 작품에 적용하는 라이선스의 한族, 사전에 구체적인 허용권을 부여합니다 — 예: "출처를 표기하면 재사용 가능" 또는 "상업적 재사용은 불가" 등.

    세 용어 모두 저작권에 따라 기본적으로 창작자가 보유한 권리를 부여하는 방식입니다. 따라서它们在考试中 중요합니다: 저작권은 자동으로 발생하므로, 명시적으로 라이선스가 부여되지 않은 것은 제한되며, 이를 사용하기 위해서는 허락이 필요합니다.

    기술적으로 가능한 것만으로 그것이 합법적이거나 윤리적인 것은 아닙니다.

    브라우징 중 기록되는 정보

    CED가 제시한 두 가지 수집 경로가 있으며, 어느 하나도 입력할 필요 없이 자동으로 이루어집니다:

    • 웹사이트는 해당 페이지를浏览한 개인의 기록을 저장 및 관리할 수 있습니다 — 어떤 페이지인지, 언제, 얼마나 오래, 어떤 기기에서 방문했는지.
    • 검색 엔진은 검색 이력을 활용하여 웹사이트를 추천하고 타겟 마케팅을 판매할 수 있습니다. 광고가 검색 행위를 따라다니기 때문에, 한 번 검색한 제품이 수 주 동안 계속 노출되는 것입니다.

    두 가지 모두 본질적으로 악의적이 아니며, 모두 사람들이 유용하게 생각하는 서비스의 메커니즘입니다. 시험에서 요구하는 핵심 포인트는 한 목적으로 수집된 데이터가 다른 목적으로 결합되어 사용될 수 있으며, 종종本人在 그 동의를 알지 못하는 경우라는 점입니다.

    Vocabulary · ⁨어휘⁩ Train · ⁨연습하기⁩
    English 한국어
    Open-source/ˈəʊpən sɔːs/ 오픈소스
    Plagiarism/ˈpleɪdʒərɪzəm/ 도용
    open access/ˈəʊpən ˈækses/ 오픈 액세스
    Creative Commons/kriːˈeɪtɪv ˈkɒmənz/ 크리에이티브 커먼즈(Creative Commons)
    Personally identifiable information (PII)/ˈpɜːsənəli aɪˈdentɪfaɪəbl ˌɪnfəˈmeɪʃn/ 개인 식별 정보 (PII)
    identity theft/aɪˈdentɪti θeft/ 신원 도용
    phishing/ˈfɪʃɪŋ/ 피싱
    malware/ˈmælweə/ 악성 코드
    multi-factor authentication/ˈmʌlti ˈfæktə ɔːˌθentɪˈkeɪʃn/ 다중 인증
    open source/ˈəʊpən sɔːs/ 오픈소스
    5.6

    Safe Computing · ⁨안전한 컴퓨팅⁩

    Syllabus
    English

    Enduring Understanding (IOC-2): The use of computing innovations may involve risks to personal safety and identity.

    Learning Objective IOC-2.A: Describe the risks to privacy from collecting and storing personal data on a computer system. [Skill 5.D]

    • IOC-2.A.1 Personally identifiable information (PII) is information about an individual that identifies, links, relates, or describes them. Examples of PII include:
      • Social Security number
      • age
      • race
      • phone number(s)
      • medical information
      • financial information
      • biometric data
    • IOC-2.A.2 Search engines can record and maintain a history of searches made by users.
    • IOC-2.A.3 Websites can record and maintain a history of individuals who have viewed their pages.
    • IOC-2.A.4 Devices, websites, and networks can collect information about a user's location.
    • IOC-2.A.5 Technology enables the collection, use, and exploitation of information about, by, and for individuals, groups, and institutions.
    • IOC-2.A.6 Search engines can use search history to suggest websites or for targeted marketing.
    • IOC-2.A.7 Disparate personal data, such as geolocation, cookies, and browsing history, can be aggregated to create knowledge about an individual.
    • IOC-2.A.8 PII and other information placed online can be used to enhance a user's online experiences.
    • IOC-2.A.9 PII stored online can be used to simplify making online purchases.
    • IOC-2.A.10 Commercial and governmental curation of information may be exploited if privacy and other protections are ignored.
    • IOC-2.A.11 Information placed online can be used in ways that were not intended and that may have a harmful impact. For example, an email message may be forwarded, tweets can be retweeted, and social media posts can be viewed by potential employers.
    • IOC-2.A.12 PII can be used to stalk or steal the identity of a person or to aid in the planning of other criminal acts.
    • IOC-2.A.13 Once information is placed online, it is difficult to delete.
    • IOC-2.A.14 Programs can collect your location and record where you have been, how you got there, and how long you were at a given location.
    • IOC-2.A.15 Information posted to social media services can be used by others. Combining information posted on social media and other sources can be used to deduce private information about you.

    Learning Objective IOC-2.B: Explain how computing resources can be protected and can be misused. [Skill 5.E]

    • IOC-2.B.1 Authentication measures protect devices and information from unauthorized access. Examples of authentication measures include strong passwords and multifactor authentication.
    • IOC-2.B.2 A strong password is something that is easy for a user to remember but would be difficult for someone else to guess based on knowledge of that user.
    • IOC-2.B.3 Multifactor authentication is a method of computer access control in which a user is only granted access after successfully presenting several separate pieces of evidence to an authentication mechanism, typically in at least two of the following categories: knowledge (something they know), possession (something they have), and inherence (something they are).
    • IOC-2.B.4 Multifactor authentication requires at least two steps to unlock protected information; each step adds a new layer of security that must be broken to gain unauthorized access.
    • IOC-2.B.5 Encryption is the process of encoding data to prevent unauthorized access. Decryption is the process of decoding the data. Two common encryption approaches are:
      • Symmetric key encryption involves one key for both encryption and decryption.
      • Public key encryption pairs a public key for encryption and a private key for decryption. The sender does not need the receiver's private key to encrypt a message, but the receiver's private key is required to decrypt the message.
      • Exclusion statement (EK IOC-2.B.5): Specific mathematical procedures for encryption and decryption are beyond the scope of this course and the AP Exam.
    • IOC-2.B.6 Certificate authorities issue digital certificates that validate the ownership of encryption keys used in secure communications and are based on a trust model.
    • IOC-2.B.7 Computer virus and malware scanning software can help protect a computing system against infection.
    • IOC-2.B.8 A computer virus is a malicious program that can copy itself and gain access to a computer in an unauthorized way. Computer viruses often attach themselves to legitimate programs and start running independently on a computer.
    • IOC-2.B.9 Malware is software intended to damage a computing system or to take partial control over its operation.
    • IOC-2.B.10 All real-world systems have errors or design flaws that can be exploited to compromise them. Regular software updates help fix errors that could compromise a computing system.
    • IOC-2.B.11 Users can control the permissions programs have for collecting user information. Users should review the permission settings of programs to protect their privacy.

    Learning Objective IOC-2.C: Explain how unauthorized access to computing resources is gained. [Skill 5.E]

    • IOC-2.C.1 Phishing is a technique that attempts to trick a user into providing personal information. That personal information can then be used to access sensitive online resources, such as bank accounts and emails.
    • IOC-2.C.2 Keylogging is the use of a program to record every keystroke made by a computer user in order to gain fraudulent access to passwords and other confidential information.
    • IOC-2.C.3 Data sent over public networks can be intercepted, analyzed, and modified. One way that this can happen is through a rogue access point.
    • IOC-2.C.4 A rogue access point is a wireless access point that gives unauthorized access to secure networks.
    • IOC-2.C.5 A malicious link can be disguised on a web page or in an email message.
    • IOC-2.C.6 Unsolicited emails, attachments, links, and forms in emails can be used to compromise the security of a computing system. These can come from unknown senders or from known senders whose security has been compromised.
    • IOC-2.C.7 Untrustworthy (often free) downloads from freeware or shareware sites can contain malware.
    한국어

    지속적 이해 (IOC-2): 컴퓨팅 혁신의 사용은 개인의 안전과 신원에 위험을 초래할 수 있습니다.

    학습 목표 IOC-2.A: 컴퓨터 시스템에서 개인정보를 수집하고 저장함으로써 발생하는 프라이버시 위험을 설명하십시오. [기술 5.D]

    • IOC-2.A.1 개인 식별 정보(PII)는 특정 개인을 식별하거나 연결하거나 연관시키거나 설명하는 정보입니다. PII의 예로는 다음과 같습니다:
      • 사회보장 번호
      • 연령
      • 인종
      • 전화번호
      • 의료 정보
      • 금융 정보
      • 생체 데이터
    • IOC-2.A.2 검색 엔진은 사용자가 수행한 검색 이력을 기록하고 유지할 수 있습니다.
    • IOC-2.A.3 웹사이트는 해당 페이지를 방문한个体的의 이력을 기록하고 유지할 수 있습니다.
    • IOC-2.A.4 장치, 웹사이트 및 네트워크는 사용자의 위치 정보를 수집할 수 있습니다.
    • IOC-2.A.5 기술은 개인, 집단 및 기관에 대한 정보를 수집하고, 사용하고, 악용하는 것을 가능하게 합니다.
    • IOC-2.A.6 검색 엔진은 검색 이력을 사용하여 웹사이트를 추천하거나 타겟 마케팅에 활용할 수 있습니다.
    • IOC-2.A.7 위치 정보, 쿠키, 브라우저 이력 등 이질적인 개인정보가 집계되어 개인에 대한 지식을 생성할 수 있습니다.
    • IOC-2.A.8 온라인에 게시된 PII 및 기타 정보는 사용자의 온라인 경험을 향상시키는 데 활용될 수 있습니다.
    • IOC-2.A.9 온라인에 저장된 PII는 온라인 구매를 간소화하는 데 활용될 수 있습니다.
    • IOC-2.A.10 프라이버시 및 기타 보호 조치가 무시되면 상업적 및 정부 정보 관리가 악용될 수 있습니다.
    • IOC-2.A.11 온라인에 게시된 정보는 의도하지 않은 방식으로 사용될 수 있으며 유해한 영향을 미칠 수 있습니다. 예를 들어, 이메일이转发될 수 있고, 트윗이 리트윗될 수 있으며, 소셜 미디어 게시물이 잠재적 고용주에 의해 조회될 수 있습니다.
    • IOC-2.A.12 PII는 개인을 추격하거나 신도 도난에 사용되거나 다른 범죄 행위 계획에 도움을 줄 수 있습니다.
    • IOC-2.A.13 한 번 온라인에 게시된 정보는 삭제하기 어렵습니다.
    • IOC-2.A.14 프로그램은 귀하의 위치를 수집하고, 이동 경로, 이동 수단, 특정 장소에서의 체류 시간을 기록할 수 있습니다.
    • IOC-2.A.15 소셜 미디어 서비스에 게시된 정보는 다른 사람들이 사용할 수 있습니다. 소셜 미디어에 게시된 정보와 기타 소스의 정보를 결합하여 귀하에 대한 사적 정보를 추론할 수 있습니다.

    학습 목표 IOC-2.B: 컴퓨팅 자원을 보호하고 오용되는 방법을 설명하십시오. [기술 5.E]

    • IOC-2.B.1 인증 조치는 Unauthorized access로부터 장치와 정보를 보호합니다. 인증 조치의 예로 강력한 비밀번호와 다중 인증이 있습니다.
    • IOC-2.B.2 강력한 비밀번호는 사용자가 기억하기 쉬우나 해당 사용자에 대한 지식을 바탕으로 다른 사람이 추측하기 어려운 것입니다.
    • IOC-2.B.3 *다중 인증(Multifactor authentication)*은 사용자가 인증 메커니즘에 대해 여러 개의 독립적인 증거를 성공적으로 제시한 후에만 접근 권한을 부여하는 컴퓨터 접근 제어 방법입니다. 일반적으로 다음 범주 중 최소 2개 이상을 충족해야 합니다: 지식(알고 있는 것), 보유(가지고 있는 것), 속성(본인인 것).
    • IOC-2.B.4 다중 인증은 보호된 정보에 접근하기 위해 최소 두 단계 이상의 절차를 필요로 하며, 각 단계는 Unauthorized access를 얻기 위해 극복해야 할 새로운 보안 계층을 추가합니다.
    • IOC-2.B.5 *암호화(Encryption)*는 Unauthorized access를 방지하기 위해 데이터를 인코딩하는 과정입니다. *복호화(Decryption)*는 데이터를 디코딩하는 과정입니다. 일반적인 암호화 방식으로는 다음과 같은 것이 있습니다:
      • 대칭 키 암호화는 암호화와 복호화에 동일한 하나의 키를 사용합니다.
      • 공개 키 암호화는 암호화에 사용하는 공개 키와 복호화에 사용하는 비공개 키를 쌍으로 사용합니다. 발신자는 메시지를 암호화하기 위해 수신자의 비공개 키가 필요하지 않지만, 메시지를 복호화하기 위해서는 수신자의 비공개 키가 필요합니다.
      • 배제 문구 (EK IOC-2.B.5): 암호화 및 복호화를 위한 구체적인 수학적 절차는 이 과정 및 AP 시험의 범위를 벗어납니다.
    • IOC-2.B.6 인증 기관(Certificate Authorities)은 보안 통신에 사용되는 암호화 키의 소유권을 검증하는 디지털 인증서를 발행하며, 이는 신뢰 모델에 기반합니다.
    • IOC-2.B.7 컴퓨터 바이러스 및 악성 소프트웨어 스캔 소프트웨어는 컴퓨팅 시스템이 감염되는 것을 방지하는 데 도움이 됩니다.
    • IOC-2.B.8 컴퓨터 바이러스는 복제될 수 있으며 비인가 방식으로 컴퓨팅 시스템에 접근할 수 있는 악의적 프로그램입니다. 컴퓨터 바이러스는 종종 합법적인 프로그램에附着하여 컴퓨팅 시스템 내에서 독립적으로 실행되기 시작합니다.
    • IOC-2.B.9 *악성 소프트웨어(Malware)*는 컴퓨팅 시스템을 손상시키거나 그 운영을 부분적으로 장악하기 위해 설계된 소프트웨어입니다.
    • IOC-2.B.10 모든 실제 시스템에는 이를 공격할 수 있는 오류나 설계 결함이 존재합니다. 정기적인 소프트웨어 업데이트는 컴퓨팅 시스템을 위협할 수 있는 오류를 수정하는 데 도움이 됩니다.
    • IOC-2.B.11 사용자는 프로그램이 사용자 정보를 수집할 수 있는 권한을 통제할 수 있습니다. 사용자는 자신의 프라이버시를 보호하기 위해 프로그램의 권한 설정을 검토해야 합니다.

    학습 목표 IOC-2.C: 컴퓨팅 리소스에 대한 비인가 접근이 어떻게 이루어지는지 설명하시오. [기술 5.E]

    • IOC-2.C.1 *피싱(Phishing)*은 사용자가 개인 정보를 제공하도록 속이는 기법입니다. 이러한 개인 정보는 은행 계좌나 이메일과 같은 민감한 온라인 리소스에 비인가로 접근하는 데 사용될 수 있습니다.
    • IOC-2.C.2 *키로거(Keylogging)*는 비밀번호 및 기타 기밀 정보에 대한 사기성 접근을 얻기 위해 컴퓨터 사용자의 모든 키 입력을 기록하는 프로그램을 사용하는 것입니다.
    • IOC-2.C.3 공공 네트워크를 통해 전송된 데이터는 도청, 분석, 변조될 수 있습니다. 이는 위장cimal 포인트(Rogue Access Point)를 통해 발생할 수 있습니다.
    • IOC-2.C.4 *위장cimal 포인트(Rogue Access Point)*는 보안 네트워크에 비인가 접근을 허용하는 무선cimal 포인트입니다.
    • IOC-2.C.5 악의적 링크는 웹 페이지나 이메일 메시지에 위장되어 있을 수 있습니다.
    • IOC-2.C.6 불요청 이메일, 첨부 파일, 링크 및 이메일 내 양식은 컴퓨팅 시스템의 보안을 위협하는 데 사용될 수 있습니다. 이러한 것은 미지의 발신자로부터 올 수도 있으며, 보안이 침해된已知发信人으로부터 올 수도 있습니다.
    • IOC-2.C.7 프리웨어 또는 셰어웨어 사이트에서 다운로드되는 신뢰할 수 없는(대부분 무료인) 파일에는 악성 소프트웨어가 포함되어 있을 수 있습니다.

    Source: College Board AP Course and Exam Description · ⁨출처: College Board AP Course and Exam Description⁩

    English

    Protecting personal data is a shared responsibility. Key ideas:

    • Personally identifiable information (PII) 个人身份信息 (name, address, ID numbers) should be shared carefully, because it can be misused for identity theft 身份盗窃.
    • Threats include phishing 网络钓鱼 (tricking you into revealing information), malware 恶意软件, and weak passwords.
    • A malicious link can be disguised on a web page or in an email message: the text you see and the address it actually goes to are separate, so a link reading www.yourbank.com can point anywhere. Hover to see the real destination before clicking, and be most suspicious of a link that arrives unexpectedly and creates urgency.
    • Defenses include strong, unique passwords, multi-factor authentication 多因素认证, encryption 加密 (scrambling data so only authorized people can read it), and keeping software updated.

    Encryption is the central tool for keeping data private in transit and storage. Being a responsible computer user means protecting your own and others' information.

    Exam skill: be able to identify the beneficial and harmful effects of a given innovation, explain a privacy or security risk, and name a safe-computing practice that addresses it.

    Worked example. A hiring algorithm is trained on a company's past hires, who were mostly one group, and it then rejects qualified applicants from other groups. Name the problem and its cause: this is computing bias, caused by biased training data — the model learned the historical pattern instead of a fair rule. A full-mark exam answer states the harm (qualified people are unfairly rejected) and its cause (the bias came from the data, not the code).

    한국어

    개인 데이터 보호는 공동의 책임입니다. 주요 개념:

    암호화는 키를 사용하여 평문을 난독화하며, 오직 키만이 이를 복호화할 수 있음
    암호화는 키를 사용하여 평문을 난독화하며, 오직 키만이 이를 복호화할 수 있습니다
    • 개인 식별 정보(PII) (이름, 주소, ID 번호 등)는 신원 도용에 악용될 수 있으므로 신중하게 공유해야 합니다.
    • 위협으로는 피싱(정보를 숨기는 것을 속임수), 악성코드, 그리고 약한 비밀번호가 포함됩니다.
    • 악의적인 링크는 웹 페이지나 이메일 메시지에 위장될 수 있습니다: 표시되는 텍스트와 실제로 연결되는 주소가 다르므로, www.yourbank.com라고 보이는 링크는 어디든 가리킬 수 있습니다. 클릭하기 전에 마우스를 올렸을 때 실제 목적지를 확인하고, 예상치 못하게 도착하거나 긴박감을 조성하는 링크에 가장 경계하십시오.
    • 방어책으로는 강력하고 고유한 비밀번호, 다중 인증, 암호화(데이터를 난독화하여 권한 있는 사람만 읽을 수 있게 함), 그리고 소프트웨어 업데이트 유지 관리가 포함됩니다.

    암호화는 전송 중 및 저장 시 데이터를 비공개로 유지하는 핵심 도구입니다. 책임감 있는 컴퓨터 사용자란 자신과 타인의 정보를 보호하는 것을 의미합니다.

    시험 스킬: 특정 혁신 기술의 유익한 영향과 해로운 영향을 식별하고, 개인정보 또는 보안 위험을 설명하며, 이를 해결할 수 있는 안전한 컴퓨팅 관행을 열거할 수 있어야 합니다.

    해설 예시. 채용 알고리즘이 과거 채용 대상자(대부분 한 집단으로 구성됨)를 기반으로 학습한 뒤, 다른 집단의 자격 있는 지원자를 거절하는 사례를 보십시오. 문제와 원인을 نام명하시오: 이는 **컴퓨팅 편향(computing bias)**이며, 편향된 학습 데이터로 인해 발생합니다. 모델이 공정한 규칙 대신 역사적 패턴을 학습했습니다. 만점 답안은 해를 명시(자격 있는 사람이 부당하게 거절됨) 하고 그 원인(편향이 코드에서 나온 것이 아니라 데이터에서 비롯됨)을 모두 포함해야 합니다.

    Explore · ⁨탐색하기⁩

    Scramble a message with encryption · ⁨암호화를 통해 메시지 뒤섞기⁩

    Encryption protects data by scrambling it with a key; only someone with the key can read it back. This simple Caesar cipher shifts each letter — real encryption uses the same idea with far stronger keys to keep passwords and messages safe. · ⁨암호화(encryption) 은 키(key)를 사용하여 데이터를 뒤섞어 보호합니다. 키를 가진 사람만이 다시 읽을 수 있습니다. 이 간단한 Caesar cipher는 각 문자를 이동시키지만, 실제 암호화는 비밀번호와 메시지를 안전하게 지키기 위해 훨씬 강력한 키를(LOGically the same idea with far stronger keys)同样的 concept을 사용합니다.⁩

    Vocabulary · ⁨어휘⁩ Train · ⁨연습하기⁩
    English 한국어
    digital divide/ˈdɪdʒɪtl dɪˈvaɪd/ 디지털 격차(digital divide)
    Bias/ˈbaɪəs/ 편향
    Crowdsourcing/ˈkraʊdsɔːsɪŋ/ 크라우드소싱
    Intellectual property/ˌɪntəˈlektʃuːəl ˈprɒpəti/ 지적 재산권(Intellectual property)
    copyright/ˈkɒpɪraɪt/ 저작권
    encryption/enˈkrɪpʃn/ encryption
    5.6

    Exam tips · ⁨시험 팁⁩

    English
    • Argue both the beneficial and harmful effects of a computing innovation — a balanced answer scores best.
    • Use correct terms for data concerns: PII, privacy, security, and algorithmic bias.
    • Explain how crowdsourcing and large data sets create value and raise new risks.
    • Distinguish the digital divide (access) from bias (fairness) and give a concrete example of each.
    • Tie every claim to a specific innovation and effect, as the written response demands.
    한국어
    • 컴퓨팅 혁신의 유익한 영향과 해로운 영향을 모두 논증하십시오: 균형 잡힌 답변이 가장 높은 점수를 받습니다.
    • 데이터 이슈에 대한 정확한 용어를 사용하십시오: PII, 개인정보 보호, 보안, 그리고 알고리즘 편향.
    • 크라우드소싱과 대량 데이터셋이 가치를 창출하고 새로운 위험을 초래하는 방식을 설명하십시오.
    • 디지털 격차(접근성)와 편향(공정성)을 구분하고 각각의 구체적인 예를 들십시오.
    • 서술형 응답 요건에 따라 모든 주장이 특정 혁신 기술과 결과에 연결되어야 합니다.

Log in or create account · ⁨로그인 또는 계정 만들기⁩

IGCSE, A-Level & AP