Skip to content · ⁨コンテンツへスキップ⁩
Subjects · ⁨科目⁩

AP Computer Science Principles · ⁨APコンピュータサイエンス・プリンシプルズ⁩

Tips · ⁨ヒント⁩

AP Computer Science Principles は 広範な コンピューティングの授業である:データとその表現、アルゴリズムと抽象化、プログラミング、インターネット、そして社会におけるコンピューティングの影響。コードは any language で書かれ、試験は language-neutral pseudocode を用いるため、構文よりも概念が重要である。

評価は2部構成である。 Create Performance Task は授業時間で構築・文書化するプログラムである;end-of-course exam は選択式である。

自分のプログラムに関する記述回答で得点を落とす——あなたが書いたアルゴリズムを説明し、あなたが選んだ抽象化を正当化することが、正確に自分の言葉で求められる。

notes はデータから影響まで big ideas を cover、ここで実行可能な code examples を include。ライブラリには sample exam questions があり、Create Performance Task に関する notes もある。これは単なる試験だけでなく、あなたの自身のプログラムと記述回答に基づいて評価される。

  • 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 計算革新は物理的なもの(例:自動運転車)、非物理的な計算ソフトウェア(例:画像編集ソフト)、あるいは非物理的な計算概念(例:eコマース)であることがあります。
    • CRD-1.A.3 効果的なコラボレーションは、設計者の多様な才能や視点 반영した計算革新を生み出します。
    • CRD-1.A.4 多様な視点を含むコラボレーションは、計算革新の開発におけるバイアスを回避するのに役立ちます。
    • CRD-1.A.5 ユーザーとの相談およびコミュニケーションは、計算革新の開発における重要な側面です。
    • CRD-1.A.6 潜在ユーザーから収集された情報は、多様な視点からプログラムの目的を理解し、これらの視点を完全に組み込んだプログラムを開発するために使用できます。

    学習目標 CRD-1.B: 計算革新が人々のグループによってどのように開発されるかを説明します。[スキル 1.C]

    • CRD-1.B.1 オンラインツールは、プログラマーがアイデアや文書 shared してフィードバックを提供することを可能にするため、コラボレーションをサポートします。
    • CRD-1.B.2 ペアプログラミングなどの一般的なモデルは、コラボレーションを促進するために存在します。

    学習目標 CRD-1.C: コラボレーション中、効果的な対人スキルを実践します。[スキル 1.C]

    • CRD-1.C.1 効果的なコラボレーションチームは、以下を含む対人スキルを実践します:
      • コミュニケーション
      • コンセンサス形成
      • 紛争解決
      • 交渉

    Source: College Board AP Course and Exam Description · ⁨出典: College Board AP コースおよび試験説明書⁩

    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人が協力し、1人がタイプして他方がレビューする)は一般的な実践です。試験では、コラボレーションがどのようにプログラムを改善したか(アイデアが増加、バグ減少、テスト網の拡大)を説明できるようになる必要があります。

    Vocabulary · ⁨語彙⁩ Train · ⁨練習する⁩
    English 日本語
    collaborative/kəˈlæbrətɪv/ 協働的
    Pair programming/peə ˈprəʊɡræmɪŋ/ ペアプログラミング
    input/ˈɪnpʊt/ 入力
    output/ˈaʊtpʊt/ 出力
    iterative/ˈɪtərətɪv/ 反復的
    decomposition/ˌdiːkɒmpəˈzɪʃn/ 分解反応
    Comments/ˈkɒments/ コメント
    surveys/ˈsɜːveɪz/ 調査
    diagrams representing the layout of the user interface ユーザーインターフェースのレイアウトを表す図
    event/ɪˈvent/ イベント
    event handler/ɪˈvent ˈhændlə/ イベントハンドラ
    debugging/ˈdiːbʌɡɪŋ/ デバッグ
    syntax error/ˈsɪntæks ˈerə/ 構文エラー
    runtime error/ˈrʌntaɪm ˈerə/ ランタイムエラー
    logic error/ˈlɒdʒɪk ˈerə/ ロジックエラー
    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 プログラムの 振る舞い とは、実行中にプログラムがどのように機能するかを示すものであり、ユーザーとの相互作用によって説明されることが多いです。
    • CRD-2.B.5 プログラムは、その機能として広く説明できるか、あるいはプログラムが何を行うかおよびプログラム文がその機能をどのように達成するかという点でより詳細に説明できる。

    学習目標 CRD-2.C: プログラムの入力を特定する。[スキル 3.A]

    • CRD-2.C.1 プログラム入力 は、プログラムによって処理されるためにコンピュータに送られるデータである。入力は、触覚、音声、視覚、またはテキストなど、多様な形式で提供されることがある。
    • CRD-2.C.2 イベント はアクションと関連付けられ、プログラムに入力データを提供する。
    • CRD-2.C.3 キーが押されたとき、マウスがクリックされたとき、プログラムが開始されたとき、または実行フローに影響を与える他の定義されたアクションが発生したときに、イベントが生成されることがある。
    • CRD-2.C.4 入力は通常、プログラムによって生成される出力に影響を与える。
    • CRD-2.C.5 イベント駆動_programming_では、制御の順次流れではなく、トリガーされたときにプログラム文が実行される。
    • 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 コースおよび試験説明書⁩

    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 開発プロセスにおける調査は、プログラムの制約条件を理解して特定すること、ならびにプログラムを使用する人々の懸念点や関心点を理解するために有用である。
    • CRD-2.F.3 調査を行ういくつかの方法は以下の通りである:
      • アンケートによるデータ収集
      • ユーザーテスト
      • インタビュー
      • 直接観察
    • CRD-2.F.4 プログラムの要件は、プログラムがどのように機能するかを記述し、プログラムが提供する必要があるユーザー操作の説明を含むことがある。
    • CRD-2.F.5 プログラムの仕様は、プログラムの要件を定義する。
    • CRD-2.F.6 開発プロセスにおいて、設計フェーズは、特定のプログラム仕様を達成する方法を概説する。
    • CRD-2.F.7 プログラムの設計フェーズには以下が含まれ得る:
      • ブレスト storming(ブレインストーミング)
      • 計画とストーリーボード作成
      • モジュールと機能的コンポーネントへのプログラム組織化
      • ユーザーインターフェースのレイアウトを表す図の作成
      • プログラムのためのテスト戦略の開発

    学習目標 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 コースおよび試験説明書⁩

    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.

    日本語
    マルチモニタワークステーションでデバッグするプログラマー — 反復的デザインとテスト
    マルチモニタワークステーションでデバッグするプログラマー — 反復的デザインとテスト

    プログラムは一本の直線的なプロセスではなく、反復的なプロセスを通じて構築されます。問題やユーザーを調査し、設計(通常は図表や書面による計画)を行い、コードで実装し、テストを行う—そしてこれを繰り返します。大きな問題はより小さな部分に分解され(分解)、コメントや明瞭な名前付けによって設計が文書化され、他者(および将来的なご自身)が理解できるようになります。開発は増分的であり、まず小さな部分を構築・テストし、次に次の部分を追加していきます。

    プログラムの開発段階と、テストが修正・洗練のためにフィードバックされる様子
    プログラムの開発段階と、テストが修正・洗練のためにフィードバックされる様子
    ソフトウェアは反復的かつ増分的な開発プロセスによって構築されます
    ソフトウェアは反復的かつ増分的な開発プロセスによって構築されます

    ユーザーが本当に必要としているものの調査

    コードが記述される前に、開発者は問題点とプログラムを使用する人々を調査します。その方法として以下の3つがあります:

    • 潜在ユーザーへ送られるアンケートで、多くの人のデータを集約して迅速に収集します;
    • インタビューや、ユーザーが手作業でタスクを実行する姿の直接観察;
    • 既存の解決策の検討により、既に機能していることと、人々が不満に思っている点を把握します。

    これらの発見に基づいて設計が行われます。このために用いられる2つの成果物とは、プログラムが具体的に何をすべきかを明確に示す要件リスト、およびユーザーインターフェースのレイアウトを表す図表です。これらは、どのコントロールがどこに配置され、それぞれが使用された際に何を行うかを示すスケッチです。ボタンが間違っていることに後から気づくよりも、紙上でまずインターフェースを設計した方が安価です。

    イベントと、待機するプログラム

    すべてのプログラムが上から下へと一貫して実行されるわけではありません。イベントはキーが押されたり、マウスがクリックされたり、プログラムが起動したり、その他の定義されたアクションが発生したりしたときに生成され、実行の流れを変化させます。つまり、プログラムは現在行っていたことを一時停止し、そのイベントに対応するイベントハンドラとして付随するコードを実行します。

    これが、グラフィカルインターフェースを持つプログラムが何もしていないように見える理由です。次に来るイベントを待っているからです。これらのイベントが到達する順序はユーザーによって決定されるものであり、プログラマーによるものではありません。そのため、同じプログラムでも使用されるたびにブロックの実行順序が異なることがあります。

    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 オーバーフローエラー とは、コンピュータが定義された値範囲外にある数値を扱う試みをする際に発生するエラーである。
    • CRD-2.I.5 エラーを特定・修正するための有効な方法は以下の通りである:
      • テストケース
      • ハンドトレーシング
      • 可視化
      • デバッガ
      • 追加出力文の追加

    学習目標 CRD-2.J: アルゴリズムやプログラムの正しさを検証するために使用できる入力と、それに対応する期待される出力または挙動を特定する。[スキル 4.C]

    • CRD-2.J.1 開発プロセスにおいて、テスト は定義された入力を用いて、アルゴリズムやプログラムが期待される結果を生み出していることを確認する。プログラマはテストの結果を用いて、自身のアルゴリズムやプログラムを修正する。
    • CRD-2.J.2 プログラムを検証するために用いる定義された入力は、入力データの極限(最小値および最大値)に相当するか、あるいはそのわずかに外側にある異なる期待される出力を示すべきである。
    • CRD-2.J.3 テストに適した定義された入力を特定するためには、プログラムの要件が必要である。

    Source: College Board AP Course and Exam Description · ⁨出典: College Board AP コースおよび試験説明書⁩

    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.

    日本語

    バグとはプログラムのエラーを指し、デバッグとはそれを特定して修正することです。主な3種類は以下の通りです:

    トレース表は各変数の値をプログラム実行中に記録し、バグの特定に役立てます
    トレース表は各変数の値をプログラム実行中に記録し、バグの特定に役立てます
    • 構文エラーは言語のルールを破るため、プログラムは実行できません;
    • 実行時エラーはプログラム実行中にクラッシュを引き起こします(例:ゼロでの除算);
    • 論理エラーは実行はしますが、正しくない結果を返します。

    バグの特定には、異なる入力でのテスト、値を確認するための出力文の追加、および手動でのトレースを行います。テスト入力は意図的に選択すべきです。プログラムが受け付ける最小値と最大値という極端な値、およびそれらのわずかに外側にある値など、異なる想定される結果を極限値またはそのすぐ近傍で確認できるものを選ぶべきです。通常のデータでは正常に動作するプログラムでも、空のリスト、ゼロ、範囲の終端の1つ先にある値などに対しては頻繁に失敗するため、これらは最初試す価値のある入力です。一度に一つのバグを修正して再テストを行うことが確実な手法です。

    試験対策: エラーの種類を名指し、それを検出できるテスト戦略を説明できる能力が求められます。これは反復的に出題される選択問題およびCreateタスクのテーマです。

    プログラミングエラーの3種類:構文エラー、論理エラー、実行時エラー
    プログラミングエラーの3種類:構文エラー、論理エラー、実行時エラー

    ** worked example.** 2つの数値の平均を出力するはずのプログラムが avg = a + b / 2 を実行してしまいます。演算の順序をトレースすると、/ が + より先に実行されるため、平均ではなく $a+\tfrac{b}{2}$ を計算してしまいます。これを修正するには括弧を追加します:avg = (a + b) / 2。$a=4,\ b=6$ でテストすると修正が成功することが確認できます。バグのある行は $4+3=7$ を出し、修正された行は $\tfrac{10}{2}=5$ を出します。既知の入力でテストすることは、論理エラーを特定し確認する手法そのものです。

    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です。⁩

    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タスクおよび筆記性能タスクを通じて評価されます。単なる結果だけでなく、判断の根拠も明確に説明してください。
    • コラボレーションの利点と、多様な視点如何将偏見を減らすかを知っています。
    • 設計プロセスを説明する際は、反復的開発、要件などの正確な用語を使用してください。
    • 建設的なフィードバックを提供し受け取り、共作者や出典に謝辞を添えてください。
    • チームが並列に開発できるよう、大きな問題をより小さなモジュールに分解してください。
  • 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 コースおよび試験説明書⁩

    English

    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$.

    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.

    日本語
    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.

    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 可逆 データ圧縮アルゴリズムは通常、保存または送信されるビット数を削減できる一方で、元のデータの完全な再構築を保証する。
    • DAT-1.D.5 不可逆 データ圧縮アルゴリズムは、保存または送信されるビット数を大幅に削減できるが、元のデータの近似のみを再構築することが可能である。
    • DAT-1.D.6 不可逆データ圧縮アルゴリズムは通常、可逆圧縮アルゴリズムよりも保存または送信されるビット数をより多く削減できる。
    • DAT-1.D.7 品質や元の状態への復元可能性が最大限に重要である状況では、通常、可逆圧縮アルゴリズムが選択されます。
    • DAT-1.D.8 データサイズの削減や送信時間の短縮が最大限に重要である状況では、通常、非可逆圧縮アルゴリズムが選択されます。

    Source: College Board AP Course and Exam Description · ⁨出典: College Board AP コースおよび試験説明書⁩

    English

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

    • 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.

    日本語
    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.

    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 データを処理する能力は、ユーザーとツール的能力に依存します。
    • 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 システムのスケールability(拡張性)は、データセットを扱う際重要な考慮事項です。なぜなら、システムの計算能力がデータセットの処理や保存方法に影響を与えるからです。

    Source: College Board AP Course and Exam Description · ⁨出典: College Board AP コースおよび試験説明書⁩

    English

    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.

    日本語

    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ə/ メタデータ
    2.4

    Using Programs with Data

    Syllabus · ⁨シラバス⁩
    Enduring UnderstandingLearning ObjectiveEssential Knowledge

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

    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

    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.

    Source: College Board AP Course and Exam Description · ⁨出典: College Board AP コースおよび試験説明書⁩

    English

    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.

    日本語

    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/ プライバシー
    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 · ⁨レッスンを視聴⁩

    Code below uses the AP CSP pseudocode – the exam's language-neutral reference. Assignment is written a ← expression, and list indices start at 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 変数とは、プログラム内で値を保持できる抽象概念である。各変数にはデータストレージが関連付けられており、一度に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 コースおよび試験説明書⁩

    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 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 is a named store whose value can change
    A variable is a named store whose value can change
    a ← 5
    b ← a + 3      // b is now 8
    

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

    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. · ⁨変数とは、一度に1つの値を格納する名前の付いた箱です。代入は値を箱にコピーすることであり、再度代入するとそれまで入っていた値は上書きされます。⁩

    Vocabulary · ⁨語彙⁩ Train · ⁨練習する⁩
    English 日本語
    variable/ˈveərɪəbl/ 変数
    assignment/əˈsaɪnmənt/ 代入
    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 コースおよび試験説明書⁩

    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.

    日本語

    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.

    Vocabulary · ⁨語彙⁩ Train · ⁨練習する⁩
    English 日本語
    Data abstraction/ˈdeɪtə əbˈstrækʃn/ データ抽象化
    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 視覚的およびテキストベースのプログラミング言語以外でも、アルゴリズムは自然言語、図、擬似コードなど、多様な方法で表現できる。
    • AAP-2.A.3 プログラムによって実行されるアルゴリズムは、プログラミング言語を使用して実装される。
    • AAP-2.A.4 どのアルゴリズムも、順序構成、選択、反復の組み合わせによって構築できる。

    学習目標 AAP-2.B: 順次コード文を使用して、段階的なアルゴリズムプロセスを表現する。[スキル 2.B]

    • AAP-2.B.1 順序構成 とは、アルゴリズムの各ステップを、コード文に与えられた順に適用することである。
    • AAP-2.B.2 コード文 とは、実行すべきアクションを表すプログラムのコードの一部である。
    • AAP-2.B.3 式 は、値、変数、演算子、または値を返す手続き呼び出しで構成される可能性がある。
    • 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 算術演算子はほとんどのプログラミング言語に含まれており、加算、減算、乗算、除算、および剰余演算子が含まれる。

    • 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

      これらは a と b に対する算術計算を行うために使用される。例えば、17 / 5 は 3.4 に評価される。

    • AAP-2.C.4 数学で使用される演算子の優先順位は、式の評価にも適用される。MOD 演算子の優先順位は、* および / 演算子と同じである。

    Source: College Board AP Course and Exam Description · ⁨出典: College Board AP コースおよび試験説明書⁩

    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.

    日本語

    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.

    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. · ⁨式は演算の優先順に従って評価されます:掛け算や割り算は足し算や引き算より先に実行され、左から右へ進みます。⁩

    Vocabulary · ⁨語彙⁩ Train · ⁨練習する⁩
    English 日本語
    remainder/rɪˈmeɪndə/ 余り
    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 ストリング連結 とは、2つ以上のストリングを前後につなげて新しいストリングを作成することである。
    • AAP-2.D.2 部分ストリング とは、既存のストリングの一部である。

    Source: College Board AP Course and Exam Description · ⁨出典: College Board AP コースおよび試験説明書⁩

    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.

    日本語

    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.

    Vocabulary · ⁨語彙⁩ Train · ⁨練習する⁩
    English 日本語
    string/strɪŋ/ 文字列
    concatenation/kənˌkætəˈneɪʃn/ 連結
    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 コースおよび試験説明書⁩

    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.

    日本語

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

    The three families of operators: arithmetic, relational, and logical
    The three families of operators: arithmetic, relational, and logical
    • 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.

    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. · ⁨ブール式は真(1)か偽(0)のどちらかです。ORは少なくとも1つの入力が真の場合に真となります。入力を変化させてすべてのケースを見てみましょう。⁩

    Vocabulary · ⁨語彙⁩ Train · ⁨練習する⁩
    English 日本語
    Boolean expression/ˈbuːlɪən ekˈspreʃn/ ブーリアン式
    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 コースおよび試験説明書⁩

    English

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

    日本語

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

    Selection chooses between paths based on a condition
    Selection chooses between paths based on a condition
    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. · ⁨条件分岐は条件が真かどうかに応じて、ある分岐または別の分岐を実行します。値を閾値スライドさせて、どの分岐が実行されるか確認してください。⁩

    Vocabulary · ⁨語彙⁩ Train · ⁨練習する⁩
    English 日本語
    conditional (selection)/kənˈdɪʃənl/ 条件分岐(選択)
    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 コースおよび試験説明書⁩

    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:

    日本語

    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 (g ≥ 90)      { grade ← "A" }
    ELSE IF (g ≥ 80) { grade ← "B" }
    ELSE             { grade ← "C" }
    
    Vocabulary · ⁨語彙⁩ Train · ⁨練習する⁩
    English 日本語
    nested conditional/ˈnestɪd kənˈdɪʃənl/ ネスト条件分岐
    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 コースおよび試験説明書⁩

    English

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

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

    日本語

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

    A pre-condition (WHILE) loop tests before the body, so it may run zero times
    A pre-condition (WHILE) loop tests before the body, so it may run zero times
    REPEAT 5 TIMES        // a fixed count
    {
        DISPLAY("hi")
    }
    
    REPEAT UNTIL (found)  // until a condition becomes true
    {
        ...
    }
    

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

    Explore · ⁨探索⁩

    Trace a loop one pass at a time · ⁨ループを1パスずつトレースする⁩

    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. · ⁨ループはカウンタが範囲を通過する間にブロックを反復します。ステップ操作で counter と累積和が各パスごとに更新される様子を見てください。⁩

    Vocabulary · ⁨語彙⁩ Train · ⁨練習する⁩
    English 日本語
    Iteration (a loop)/ˌɪtəˈreɪʃn/ 反復(ループ)
    infinite loop/ˈɪnfɪnət luːp/ 無限ループ
    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 既存のアルゴリズムに関する知識は、新しいアルゴリズムを構築する際に役立ちます。主な既存アルゴリズムには以下が含まれます:
      • 2つ以上の数字の最大値または最小値を決定する
      • 2つ以上の数字の和または平均を計算する
      • 整数が他の整数で割り切れるかどうかを特定する
      • ロボットが迷路を通る経路を決定する
    • AAP-2.M.3 既存の正しいアルゴリズムを他のアルゴリズムを構築するための構成要素として使用することは、開発時間の短縮、テストの削減、およびエラーの特定を簡素化するなどの利点があります。

    Source: College Board AP Course and Exam Description · ⁨出典: College Board AP コースおよび試験説明書⁩

    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 source code on a screen — algorithms are precise, ordered instructions
    Python source code on a screen — algorithms are precise, ordered instructions

    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.

    A flowchart lays out an algorithm using the standard symbols
    A flowchart lays out an algorithm using the standard symbols
    Vocabulary · ⁨語彙⁩ Train · ⁨練習する⁩
    English 日本語
    algorithm/ˈælɡərɪθəm/ アルゴリズム
    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 コースおよび試験説明書⁩

    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:

    日本語

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

    A list holds many values in one variable, each found by its index
    A list holds many values in one variable, each found by its index
    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
    

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

    FOR EACH x IN scores
    {
        total ← total + x
    }
    
    Vocabulary · ⁨語彙⁩ Train · ⁨練習する⁩
    English 日本語
    list/lɪst/ リスト
    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. データセット内の値を見つけるために必要な反復回数を知る。[スキル 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 コースおよび試験説明書⁩

    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.

    日本語
    A phone book: binary search halves the remaining pages each step
    A phone book: binary search halves the remaining pages each step

    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.

    Binary search halves the range at each step (the list must be sorted)
    Binary search halves the range at each step (the list must be sorted)

    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.

    Vocabulary · ⁨語彙⁩ Train · ⁨練習する⁩
    English 日本語
    Binary search/ˈbaɪnəri sɜːtʃ/ 二項探索
    3.12

    Calling Procedures

    Syllabus · ⁨シラバス⁩
    Enduring UnderstandingLearning ObjectiveEssential Knowledge

    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.

    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.

    Source: College Board AP Course and Exam Description · ⁨出典: College Board AP コースおよび試験説明書⁩

    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 过程抽象.

    日本語

    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:

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

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

    Vocabulary · ⁨語彙⁩ Train · ⁨練習する⁩
    English 日本語
    procedure (function)/prəˈsiːdʒə/ 手続(関数)
    procedural abstraction/prəˈsiːdʒərəl ə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): プログラマーは問題をより小さく、管理しやすい部分に分解します。手続とパラメータを作成し活用することで、再利用可能なプロセスを一般化できます。手続により、プログラマーは既にテスト済みの既存コードを活用できるため、より速く、かつ自信を持ってプログラムを書くことができます。

    学習目標 AAP-3.B: プロシージャ抽象の使用がプログラム内の複雑さをどのように管理するかを説明する。[スキル 3.C]

    • AAP-3.B.1 一般的な抽象の一種にプロシージャ抽象がある。これはプロセスに名前を与え、プロシージャが何をしているかを知るだけで、どうやってそれをやっているかを知ることなく使用できるようにする。
    • AAP-3.B.2 プロシージャ抽象は、大きな問題の解決をより小さな部分問題の解決に基づかせることを可能にする。これは、各部分問題を解決するためのプロシージャを作成することで達成される。
    • AAP-3.B.3 コンピュータプログラムを個別のサブプログラムに分割することをモジュラリティと呼ぶ。
    • AAP-3.B.4 プロシージャ抽象は、コードを重複させるのではなく共通の機能を引き出して機能を一般化できる。これにより、プログラムのコード再利用が可能になり、複雑性の管理に役立つ。
    • AAP-3.B.5 パラメータを使用することで手続を一般化でき、異なる入力値や引数を用いて手続を再利用することが可能になる。
    • AAP-3.B.6 プロシージャ抽象を使用すると、コードの可読性が向上する。
    • AAP-3.B.7 プログラムでプロシージャ抽象を使用すると、プロシージャが何を行うかを維持したまま、内部(処理速度の向上、効率化、メモリ使用量の削減など)を変更しても、変更をユーザーに通知する必要がない。

    学習目標 AAP-3.C: プロシージャを記述することにより、プログラム内の複雑性を管理するためのプロシージャ抽象を開発する。[スキル 3.B]

    • AAP-3.C.1 試験参考書には、

      テキスト:

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

      ブロック:

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

    が記載されており、ゼロ以上の引数を取るプロシージャを定義するために使用される。このプロシージャ内には 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

    零個或多個引數的程式(procedure)を定義するために使用されます。この程式は block of statements を含み、expression の値を返します。RETURN 文は程式内の任意の位置に配置でき、その時点で直ちに呼び出し元へ戻ります。

    Source: College Board AP Course and Exam Description · ⁨出典: College Board AP コースおよび試験説明書⁩

    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 抽象.

    日本語

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

    Decomposing a program into procedures and sub-procedures
    Decomposing a program into procedures and sub-procedures
    PROCEDURE Add(a, b)
    {
        RETURN(a + b)
    }
    

    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 抽象.

    Vocabulary · ⁨語彙⁩ Train · ⁨練習する⁩
    English 日本語
    abstraction/əbˈstrækʃn/ 抽象化
    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): プログラマーは問題をより小さく、管理しやすい部分に分解します。手続とパラメータを作成し活用することで、再利用可能なプロセスを一般化できます。手続により、プログラマーは既にテスト済みの既存コードを活用できるため、より速く、かつ自信を持ってプログラムを書くことができます。

    学習目標 AAP-3.D: 新しいプログラムを作成する際に適切なライブラリや既存コードセグメントを選択する。[スキル 2.B]

    • AAP-3.D.1 ソフトウェアライブラリには、新しいプログラムの作成に利用可能な程式が含まれています。
    • AAP-3.D.2 既存のコードセグメントは、ライブラリや過去に記述したコードなど、内部または外部のソースから取得できます。
    • AAP-3.D.3 ライブラリの使用は、複雑なプログラムの作成作業を簡素化します。
    • AAP-3.D.4 アプリケーション・プログラミング・インターフェース(API)とは、ライブラリ内の程式の振る舞いや使用方法を規定する仕様です。
    • AAP-3.D.5 API/ライブラリのドキュメントは、提供される振る舞いや使用方法を理解するために不可欠です。

    Source: College Board AP Course and Exam Description · ⁨出典: College Board AP コースおよび試験説明書⁩

    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.

    日本語

    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.

    Vocabulary · ⁨語彙⁩ Train · ⁨練習する⁩
    English 日本語
    library/ˈlaɪbrəri/ ライブラリ
    Interface/ˈɪntəfeɪs/ インターフェース
    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): プログラマーは問題をより小さく、管理しやすい部分に分解します。手続とパラメータを作成し活用することで、再利用可能なプロセスを一般化できます。手続により、プログラマーは既にテスト済みの既存コードを活用できるため、より速く、かつ自信を持ってプログラムを書くことができます。

    学習目標 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 コースおよび試験説明書⁩

    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.

    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): プログラマーは問題をより小さく、管理しやすい部分に分解します。手続とパラメータを作成し活用することで、再利用可能なプロセスを一般化できます。手続により、プログラマーは既にテスト済みの既存コードを活用できるため、より速く、かつ自信を持ってプログラムを書くことができます。

    学習目標 AAP-3.F: シミュレーションについて: b. シミュレーションと現実世界との関係を比較する。[スキル 1.D] 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 コースおよび試験説明書⁩

    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.

    日本語

    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.

    Vocabulary · ⁨語彙⁩ Train · ⁨練習する⁩
    English 日本語
    simulation/ˌsɪmjʊˈleɪʃn/ シミュレーション
    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): コンピュータでは解くことができない問題が存在する。また、コンピューターが問題を解ける場合でも、実用的な時間内に解くことができないこともある。

    学習目標 AAP-4.A: アルゴリズムの効率性を決定するために: a. 実用的な時間で実行されるアルゴリズムとそうでないものの違いを説明する。[スキル 1.D] b. ヒューリスティック解がより適切な状況を見極める。[スキル 1.D]

    • AAP-4.A.1 問題とは、アルゴリズム的に解くこと(または解けないこと)のできるタスクの一般的な記述である。問題のインスタンスには、特定の入力も含まれる。例えば、「ソート」は一个问题であり、リスト (2,3,1,7) をソートすることはその問題のインスタンスである。
    • AAP-4.A.2 判断問題とは、yes/no の答えを持つ問題である(例: A から B への経路はあるか?)。最適化問題とは、多数の中から「最良」の解を見つけることを目的とした問題である(例: 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 ヒューリスティックとは、必ずしも最適解である保証はないが、常に最適解を見つける技術が実用的でない場合に使用される問題解決のアプローチである。
      • 除外事項 (AAP-4.A.9): 具体的なヒューリスティック解は、このコースおよびAP試験の対象外である。

    Source: College Board AP Course and Exam Description · ⁨出典: College Board AP コースおよび試験説明書⁩

    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.

    日本語

    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.

    How the running time of an algorithm grows with the input size n
    How the running time of an algorithm grows with the input size n
    Vocabulary · ⁨語彙⁩ Train · ⁨練習する⁩
    English 日本語
    Efficiency/ɪˈfɪʃənsi/ 効率性
    heuristic/hjuːˈrɪstɪk/ ヒューリスティック
    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): コンピュータでは解くことができない問題が存在する。また、コンピューターが問題を解ける場合でも、実用的な時間内に解くことができないこともある。

    学習目標 AAP-4.B: コンピュータ科学における判定不能問題の存在を説明する。[スキル 1.A]

    • AAP-4.B.1 判定可能な問題とは、すべての入力に対して正しい出力を生み出すアルゴリズムを作成できる判断問題である(例: 「その数は偶数か?」)。
    • AAP-4.B.2 判定不能問題とは、常に正しいyes-or-noの回答を提供できるアルゴリズムを構築することが不可能な問題である。
      • 除外事項 (EK AAP-4.B.2): 与えられた問題が判定不能かどうかを判定することは、このコースおよびAP試験の対象外である。
    • AAP-4.B.3 判定不能問題であっても、アルゴリズムによる解があるインスタンスは存在するが、すべてのインスタンスを解くアルゴリズムは存在しない。

    Source: College Board AP Course and Exam Description · ⁨出典: College Board AP コースおよび試験説明書⁩

    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.

    日本語

    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.

    Vocabulary · ⁨語彙⁩ Train · ⁨練習する⁩
    English 日本語
    undecidable/ˌʌndɪˈsaɪdəbl/ 判定不能である
    3.18

    Exam tips

    • 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.
  • 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 コンピューティングシステム とは、共通の目的のために together に動作するコンピューティングデバイスとプログラムのグループです。
    • CSN-1.A.3 コンピューターネットワーク とは、データを送信または受信可能な相互接続されたコンピューティングデバイスのグループです。
    • CSN-1.A.4 コンピューターネットワークはコンピューティングシステムの一種です。
    • CSN-1.A.5 コンピューターネットワーク上の2つのコンピューティングデバイス(送信者と受信者)間の パス は、送信者から始まり受信者に終わる、直接接続されたコンピューティングデバイスの順列です。
    • 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 パケットには、データ块に加え、インターネット上でパケットをoriginとdestination間でルーティングしたり、データを再構成したりするために使用されるメタデータが含まれる。
    • CSN-1.C.3 パケットは順に、逆順に、あるいは全く届かない形でdestinationに到達することがある。
    • CSN-1.C.4 IP、TCP、UDPはインターネットで使われる一般的なプロトコルである。

    学習目標 CSN-1.D: インターネットとワールドワイドウェブの違いを説明する。[スキル 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 コースおよび試験説明書⁩

    English

    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:

    • 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.

    日本語
    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. · ⁨インターネットではメッセージを番号付きのパケットに分割し、それぞれ独立してルーティング(通常は異なる経路)され、目的地で再構成されます。この設計により耐故障性が確保されており、1つの経路が失敗しても他の経路でパケットが転送されます。⁩

    Vocabulary · ⁨語彙⁩ Train · ⁨練習する⁩
    English 日本語
    Internet/ˈɪntənet/ Internet
    packets/ˈpækɪts/ パケット
    Protocols/ˈprəʊtəkɒlz/ プロトコル
    Redundancy/rɪˈdʌndənsi/ 冗長性
    fault-tolerant/fɒlt ˈtɒlərənt/ フォールト tolerant(耐故障性)
    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 ネットワークの冗長性を実現する一つの方法は、接続された2つのデバイス間の経路を複数持つことである。
    • CSN-1.E.4 インターネット上の特定のデバイスや接続が故障した場合、可能な限り、後のデータは異なるルート経由で送信される。
    • CSN-1.E.5 システムが故障を許容しながら機能し続けることができる場合、それを耐故障性と呼ぶ。これは重要である。なぜなら、複雑なシステムの要素は予期せぬタイミングで、しばしばグループで故障するためであり、耐故障性があることでユーザーはネットワークの利用を継続できるからである。
    • CSN-1.E.6 システム内の冗長性は追加のリソースを必要とする場合があるが、耐故障性の利点を提供できる。
    • CSN-1.E.7 2地点間のルーティングオプションの冗長性は、インターネットの信頼性を高め、より多くのデバイスやユーザーへスケールアップすることを助ける。

    Source: College Board AP Course and Exam Description · ⁨出典: College Board AP コースおよび試験説明書⁩

    English

    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.

    日本語
    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 順次計算とは、演算を順番に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 コースおよび試験説明書⁩

    English
    • 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.

    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.

    日本語
    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/ スピードアップ
    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: コンピューティングイノベーションが意図した目的を超えて影響を与えることができる理由を説明する。[スキル 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 プログラムの急速な共有や、多くのユーザーとの実行は、意図した目的やプログラマの統制を超える重大な影響をもたらすことがある。

    Source: College Board AP Course and Exam Description · ⁨出典: College Board AP コースおよび試験説明書⁩

    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.

    日本語
    電子ごみのかたまり — コンピューティングには環境コストだけでなく利益もある
    電子ごみのかたまり — コンピューティングには環境コストだけでなく利益もある

    すべてのコンピューティングの革新は、有益にも有害にも使われる——同じ技術がその両方を果たすことがよくある。SNSは人をつないだり、偽情報を拡散したりする;自動化は生産性を高めたり、雇用を奪ったりする。影響はしばしば意図しないものであり、創作者はあらゆる使い方を予見できない。コンピューティングの革新を評価する際は、個人や社会に対する利益と害のバランスを考え、害は必ずしも意図的なものではないことを忘れないようにする。

    コンピューティングは複数の方法で一般国民の福祉に影響を与える
    コンピューティングは複数の方法で一般国民の福祉に影響を与える

    コンピューティングは他の分野での創造性も生み出す。これは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 インターネットへのアクセスは、社会的・経済的、地理的、人口統計学的特徴、および国々と間で異なる。
    • IOC-1.C.2 「デジタル・ディバイド」とは、社会的・経済的、地理的、または人口統計学的特徴に基づき、コンピューティングデバイスやインターネットへのアクセスに差が生じることを指す。
    • IOC-1.C.3 デジタル・ディバイドは、集団および個人の双方に影響を与える。
    • IOC-1.C.4 デジタル・ディバイドは、世界的および地域的なレベルで、公正性、アクセス、および影響力に関する課題を引き起こす。
    • IOC-1.C.5 デジタル・ディバイドは、個人、組織、政府の行動によって影響を受ける。

    Source: College Board AP Course and Exam Description · ⁨出典: College Board AP コースおよび試験説明書⁩

    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.

    日本語

    デジタル・デビッドとは、所得、地理、年齢、国によって異なるグループ間でのコンピューティングおよびインターネットへのアクセスの不均等さを指す。アクセスできる者は教育、仕事、サービスを得て受益するが、アクセスできない者はさらに後退していく。デジタル・デビッドは経済的、社会的、地理的要因によって形成されており、それを埋めるための取り組み(手頃な価格のデバイス、公的アクセス、インフラ整備)は、コンピューティングの利益をより公平にすることを目指している。

    公立図書館のコンピュータ:デジタル・デビッドとは、デバイス、接続性、スキルへのアクセスの不均等のことである
    公立図書館のコンピュータ:デジタル・デビッドとは、デバイス、接続性、スキルへのアクセスの不均等のことである
    田舎の卫星 dish:地理的条件がまだ、高速インターネット/accessibleな者と待たされる者を分けている
    田舎の卫星 dish:地理的条件がまだ、高速インターネット/accessibleな者と待たされる者を分けている
    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 コースおよび試験説明書⁩

    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.

    日本語
    都市の道路を走る自動運転車 — 自律システムは安全性とバイアスの問題提起をする
    都市の道路を走る自動運転車 — 自律システムは安全性とバイアスの問題提起をする

    バイアスはコンピューティング・システムに組み込まれることがある——多くは意図しない場合である。システム構築に用いられるデータが既存の偏見を反映している場合、あるいは設計者の仮定が一面的である場合、システムは不公平な結果を生む可能性がある(例:特定のグループを優先する採用ツール)。バイアスはデータ収集、設計、使用の各段階で入り込むことができるため、異なるグループ間で公平性をテストする必要がある。「コンピュータがそう言った」ことは「公平である」とは同一ではないという認識を持つことは重要な習慣である。

    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 情報および公的データへの広範なアクセスは、問題の特定、ソリューションの開発、および結果の普及を促進する。
    • IOC-1.E.2 分散型および「市民科学」の使用により、科学界は科学的問題の解決に影響を受けている。
    • IOC-1.E.3 市民科学とは、分散した個人(その多くは科学者ではない)によって、部分的または完全に実施される科学研究であり、彼らは自身のコンピューティングデバイスを使用して研究に必要なデータを貢献する。
    • IOC-1.E.4 クラウドソーシング は、インターネットを通じて多数の人々から入力や情報を得る実践である。
    • IOC-1.E.5 コンピューティングを介した協働により、人間の能力を拡張できる。
    • IOC-1.E.6 クラウドソーシングは、ビジネスや社会事業に資金を提供することを結びつけるなど、新たな協働モデルを提供する。

    Source: College Board AP Course and Exam Description · ⁨出典: College Board AP コースおよび試験説明書⁩

    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.

    日本語

    クラウドソーシングとは、大勢の人々から入力、アイデア、資金を集めることである。通常はオンラインで行われる。多くの人の知識と努力を活用する——マッピングプロジェクト、製品レビュー、市民科学、およびクラウドファンディングはすべてこれに依存している。インターネットにより、これまで不可能だった規模と速度でクラウドソーシングが可能になり、プロジェクトは世界中の貢献者からの支援を受けられるようになった。

    Wikipediaのエディタソン:クラウドソーシングは多くの人々の作業を共同リソースに集約する
    Wikipediaのエディタソン:クラウドソーシングは多くの人々の作業を共同リソースに集約する
    5.5

    Legal and Ethical Concerns · ⁨法的・倫理的懸念⁩

    Syllabus · ⁨シラバス⁩
    Enduring UnderstandingLearning ObjectiveEssential Knowledge

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

    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

    Source: College Board AP Course and Exam Description · ⁨出典: College Board AP コースおよび試験説明書⁩

    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制御室:監視システムは安全の向上とプライバシーの懸念とのトレードオフを行う

    コンピューティングは法および倫理に関する疑問を提起する:

    • 知的財産権および著作権は創作者の作品を保護し、使用には許可またはライセンスが必要になることがある。オープンソースおよびクリエイティブ・コモンズライセンスは、指定された条件の下で作品を共有することを創作者に認めている。
    • 剽窃——他人の作品を自分のものとする行為——は非倫理的であり、多くの場合違法である。
    • 個人情報収集および利用は、同意および悪用に関するプライバシーの問題を提起する。

    「オープン」の3つの用語(いずれも異なる意味を持つ)

    用語 意味
    オープンソース 誰でも自由に入手可能であり、再配布および修改ができるプログラム。ライセンスによりこれらの権利が明示的に付与される——無料であることがオープンソースと同じではなく、修改できない無料プログラムはオープンソースではない。
    オープンアクセス オンラインで無料で提供される研究およびその他のコンテンツ、したがって読者はサブスクリプションを必要としない。修改権については何も言及していない。
    クリエイティブ・コモンズ 創作者が自身の作品に適用する一連のライセンスで、事前に特定の許可を授与する——例えば「出典を明記すれば再利用可」や「商業利用禁止で再利用可」。

    これら3つはすべて、創作者が著作権法に基づくデフォルトの権利を付与する手段である。そのため、試験において重要である:著作権は自動的に発生するため、明示的にライセンスされていないものは制限され、使用するには許可が必要となる。

    技術的に可能だからといって、それが合法または倫理的であるとは限らない。

    ブローザ中に記録される内容

    CEDが指摘する2つの収集ルートがあり、どちらも入力を必要としない:

    • ウェブサイトは、ページを見た個人の履歴を記録・維持できる——どのページを、いつ、どれだけ長く、どのデバイスから访问したか。
    • 検索エンジンは、検索履歴を使用して関連するウェブサイトをおすすめしたり、ターゲティング広告を提供したりします。広告が検索内容に追従するため、一度検索した商品が数週間表示され続けることがあります。

    どちらも本質的に悪意のあるものではなく、どちらも利用者が有用と感じるサービスの仕組みです。試験の要点は、ある目的で収集されたデータが、別の目的で統合・使用されることであり、その際、本人が同意したことに気づいていないことが多いという点です。

    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 オンラインに公開された情報は、意図しない方法で使用され、有害な影響をもたらす可能性がある。例えば、メールメッセージが転送され、ツイートがリツイートされ、SNS投稿が潜在的な雇用主によって参照されることがある。
    • IOC-2.A.12 PIIは、他人を追跡したり、本人の身元を盗んだり、その他の犯罪行為の計画を助長するために使用されることがある。
    • IOC-2.A.13 一度情報がオンラインに公開されると、削除することは困難である。
    • IOC-2.A.14 プログラムはあなたの位置情報を収集し、どこに行き、どのように行き、どの程度いたかを記録する。
    • IOC-2.A.15 SNSサービスに投稿された情報は他者によって使用されることがある。SNS上の投稿と他のソースからの情報を組み合わせることで、あなたの個人情報について推論されることがある。

    学習目標 IOC-2.B: コンピュータリソースを如何に保護するか、また如何に悪用されるか説明する。[スキル 5.E]

    • IOC-2.B.1 認証手段は、デバイスや情報を不正アクセスから守る。認証手段の例には強力なパスワードと多要素認証が含まれる。
    • IOC-2.B.2 強力なパスワードとは、ユーザーが記憶しやすいが、そのユーザーに関する知識に基づいて他者が推測するのが難しいもののことである。
    • IOC-2.B.3 多要素認証とは、ユーザーが認証メカニズムに対して複数の独立した証拠を提示し、通常以下の少なくとも2つのカテゴリにおいて成功した場合のみアクセスが許可されるコンピュータのアクセス制御方法である:知識(知っていること)、所有(持っていること)、属性(その人の本質的な特徴)。
    • IOC-2.B.4 多要素認証は、保護された情報にアクセスするために少なくとも2段階が必要であり、各段階は不正アクセスを得るために突破しなければならない新たなセキュリティ層を追加する。
    • IOC-2.B.5 暗号化とは、データに符号化を施して不正アクセスを防ぐプロセスである。復号化とは、データを解読するプロセスである。一般的な2つの暗号化アプローチは以下の通り:
      • 対称鍵暗号化では、暗号化と復号化に1つの鍵が共用される。
      • 非対称鍵暗号化では、暗号化用の公開鍵と復号化用の秘密鍵がセットになる。送信者はメッセージを暗号化するために受信者の秘密鍵を必要としないが、復号化には受信者の秘密鍵が必要である。
      • 除外声明 (EK IOC-2.B.5): 暗号化および復号化のための具体的な数的手続きは、このコースおよびAP試験の範囲外である。
    • IOC-2.B.6 証明書発行者(CA)は、安全な通信に使用される暗号鍵の所有権を検証するデジタル証明書を発行し、信頼モデルに基づいています。
    • IOC-2.B.7 コンピュータウイルスおよびマルウェアスキャンソフトウェアは、コンピューティングシステムへの感染を防ぐのに役立ちます。
    • IOC-2.B.8 コンピュータウイルスとは、自身を複製し、不正にコンピュータにアクセスできる悪意のあるプログラムです。コンピュータウイルスは、しばしば正規のプログラムに付着し、コンピュータ上で独立して実行され始めます。
    • IOC-2.B.9 マルウェアとは、コンピューティングシステムの損傷を意図したり、その操作の一部を乗っ取ったりするために設計されたソフトウェアです。
    • IOC-2.B.10 現実世界すべてのシステムには、それらを侵害するために利用される错误或設計上の欠陥が存在します。定期的なソフトウェアアップデートは、コンピューティングシステムを侵害する可能性がある错误を修正するのに役立ちます。
    • IOC-2.B.11 ユーザーは、プログラムがユーザー情報を収集するための権限を制御できます。ユーザーは、自身のプライバシーを保護するためにプログラムの権限設定を確認すべきです。

    学習目標 IOC-2.C: コンピューティングリソースへの不正アクセスがどのように行われるかを説明する。[スキル 5.E]

    • IOC-2.C.1 フィッシングとは、ユーザーに個人情報を提供させるように仕向ける技術です。得られた個人情報は、銀行口座やメールなどの重要なオンラインリソースへのアクセスに使用されることがあります。
    • IOC-2.C.2 キーロガーとは、コンピュータユーザーが入力したすべてのキー入力を記録するプログラムを使用し、パスワードやその他の機密情報に対する不正アクセスを得る手法です。
    • IOC-2.C.3 パブリックネットワークを介して送信されたデータは、傍受、分析、改変される可能性があります。その一例として、ローグアクセスポイントがあります。
    • IOC-2.C.4 ローグアクセスポイントとは、安全なネットワークに対して不正なアクセスを許容するワイヤレスアクセスポイントです。
    • IOC-2.C.5 悪意のあるリンクは、ウェブサイトまたはメールメッセージの中に隠されていることがあります。
    • IOC-2.C.6 不要なメール、添付ファイル、リンク、およびメール内のフォームは、コンピューティングシステムのセキュリティを侵害するために使用されることがあります。これらは、不明な送信者から、あるいはセキュリティが侵害された既知の送信者から届くことがあります。
    • IOC-2.C.7 フリーウェアまたはシェアウェアサイトからの信頼できない(多くの場合無料の)ダウンロードには、マルウェアが含まれていることがあります。

    Source: College Board AP Course and Exam Description · ⁨出典: College Board AP コースおよび試験説明書⁩

    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番号など)は、身元盗用に悪用される可能性があるため、慎重に共有する必要があります。
    • 脅威には、フィッシング(情報を引き出すための詐欺)、マルウェア、そして脆弱なパスワードが含まれます。
    • 悪質なリンクは、Webページやメールメッセージの中に隠されていることがあります。表示されているテキストと実際に遷移するURLは別物であるため、www.yourbank.comと表示されたリンクがどこへでも繋がる可能性があります。クリック前にホバーして実際の先を確認し、予期せぬタイミングで送られてきたり、緊急性を煽ったりするリンクには特に注意してください。
    • 防御策には、強力でユニークなパスワード、マルチファクタ認証、暗号化(データを乱数化して権限を持つ者のみに読めるようにする)、そしてソフトウェアのアップデート維持があります。

    暗号化は、転送中および保管中のデータのプライバシーを守るための中心的なツールです。責任あるコンピューティングユーザーとなることは、自分自身や他者の情報を保護することを意味します。

    試験スキル: 特定のイノベーションによる利益と害を特定し、プライバシーまたはセキュリティのリスクを説明し、それに対応するセーフ・コンピューティングの実践方法を挙げることができます。

    ** worked example.** ある企業の過去の採用者(ほぼ特定のグループのみ)に基づいて学習された採用アルゴリズムが、他のグループから適格な応募者を却下しました。この問題とその原因を答えてください。これはコンピューティングバイアスであり、バイアスを含む学習データによって生じたものです——モデルは公平なルールではなく歴史的なパターンを学習しました。満点答案では、害(適格者が不公平に却下されること)とその原因(バイアスはコードではなくデータから来ていること)の両方を述べる必要があります。

    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. · ⁨暗号化は鍵を使ってデータを乱すことで保護します。鍵を持つ者だけが元の文字に戻せます。この単純なセサロイ暗号では各文字をシフトしますが、実際の暗号化ではパスワードやメッセージを守るために遥かに強力な鍵と同じ原理を使います。⁩

    Vocabulary · ⁨語彙⁩ Train · ⁨練習する⁩
    English 日本語
    digital divide/ˈdɪdʒɪtl dɪˈvaɪd/ デジタルディバイド
    Bias/ˈbaɪəs/ バイアス
    Crowdsourcing/ˈkraʊdsɔːsɪŋ/ クラウドソーシング
    Intellectual property/ˌɪntəˈlektʃuːəl ˈprɒpəti/ 知的財産権
    copyright/ˈkɒpɪraɪt/ 著作権
    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/ クリエイティブ・コモンズ
    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/ 多要素認証
    encryption/enˈkrɪpʃn/ 暗号化
    open source/ˈəʊpən sɔːs/ オープンソース
    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