Skip to content · ⁨Перейти к содержанию⁩
Subjects · ⁨Предметы⁩

AP Computer Science Principles · ⁨AP Принципы информатики⁩

Tips · ⁨Советы⁩

AP Computer Science Principles is the broad computing course: data and its representation, algorithms and abstraction, programming, the internet, and the impact of computing on society. Code is written in any language, and the exam uses a language-neutral pseudocode, so the ideas matter more than the syntax.

The assessment has two halves. The Create Performance Task is a program you build and document over class time; the end-of-course exam is multiple choice.

The written responses about your own program are where marks are lost — they ask you to explain an algorithm you wrote and to justify an abstraction you chose, precisely, in your own words.

The notes cover the big ideas from data through to impact, with code examples you can run here. The library holds the sample exam questions, and there are notes on the Create Performance Task, which is assessed on your own program and written responses rather than on the exam alone.

  • 1

    Creative Development · ⁨Creative Development (Творческое развитие)⁩

    Watch lesson · ⁨Смотреть урок⁩
    1.1

    Collaboration · ⁨Совместная работа⁩

    Syllabus · ⁨Программа⁩
    English

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

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

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

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

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

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

    • CRD-1.C.1 Effective collaborative teams practice interpersonal skills, including but not limited to:
      • communication
      • consensus building
      • conflict resolution
      • negotiation
    Русский

    Устойчивое понимание (CRD-1): Включение различных точек зрения посредством сотрудничества улучшает вычислительные инновации в процессе их разработки.

    Цель обучения CRD-1.A: Объяснить, как вычислительные инновации улучшаются благодаря сотрудничеству. [Навык 1.C]

    • CRD-1.A.1 Вычислительная инновация включает программу как неотъемлемую часть своей функции.
    • CRD-1.A.2 Вычислительная инновация может быть физической (например, беспилотный автомобиль), программным обеспечением (нефизическим) (например, редактор изображений) или концептуальной (нефизической) (например, электронная коммерция).
    • CRD-1.A.3 Эффективное сотрудничество приводит к созданию вычислительной инновации, отражающей разнообразие талантов и точек зрения разработчиков.
    • CRD-1.A.4 Сотрудничество с учетом различных точек зрения помогает избежать предвзятости при разработке вычислительных инноваций.
    • CRD-1.A.5 Консультации и коммуникация с пользователями являются важными аспектами разработки вычислительных инноваций.
    • CRD-1.A.6 Информация, собранная от потенциальных пользователей, может использоваться для понимания целей программы с разных точек зрения и разработки программы, которая полностью учитывает эти точки зрения.

    Цель обучения CRD-1.B: Объяснить, как вычислительные инновации разрабатываются группами людей. [Навык 1.C]

    • CRD-1.B.1 Онлайн-инструменты поддерживают сотрудничество, позволяя программистам делиться идеями и документами, а также давать обратную связь.
    • CRD-1.B.2 Существуют общие модели, такие как парное программирование, способствующие сотрудничеству.

    Цель обучения CRD-1.C: Демонстрировать эффективные межличностные навыки во время сотрудничества. [Навык 1.C]

    • CRD-1.C.1 Эффективные командные команды практикуют межличностные навыки, в том числе, но не ограничиваясь:
      • коммуникацией
      • достижением консенсуса
      • разрешением конфликтов
      • переговорами

    Source: College Board AP Course and Exam Description · ⁨Источник: Описание курса и экзамена College Board AP⁩

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

    Русский
    Собирание пазла в процессе: сотрудничество и модульный дизайн собирают решение вместе
    Сборка пазла в процессе: совместная работа и модульный дизайн собирают решение вместе

    Информатика — это совместная деятельность. Работа в команде привносит больше точек зрения, позволяет найти больше ошибок и создает более качественные программы, чем работа в одиночку. Хорошая совместная работа использует достижение консенсуса, четкую коммуникацию и сильные стороны каждого участника. Парное программирование — два человека за одним компьютером, один печатает, другой проверяет код — является распространенной практикой. На экзамене вы должны уметь объяснить, как совместная работа улучшила программу (больше идей, меньше багов, широкое тестирование).

    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 В программировании с обработкой событий операторы программы выполняются при срабатывании триггеров, а не через последовательный поток управления.
    • 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).

    Русский

    Каждая программа написана ради цели — она решает задачу или реализует интерес. Программа принимает входные данные, обрабатывает их и производит выходные данные. Входные данные могут поступать от пользователя, устройства, файла или другой программы; выходные данные могут быть визуальными, аудиальными, текстовыми или сигналом для устройства. Умение формулировать цель программы и четко описывать ее входные и выходные данные — это ключевой навык (и часть задания по созданию в рамках оценки навыков).

    Любая программа распадается на ввод, обработку и вывод
    Любая программа распадается на входные данные, обработку и выходные данные
    Любая программа следует модели «ввод–обработка–вывод»
    Любая программа следует модели входные данные-обработка-выходные данные
    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 Этап проектирования программы может включать следующее:
      • мозговой штурм
      • планирование и создание раскадровки
      • структурирование программы на модули и функциональные компоненты
      • создание диаграмм, представляющих макеты пользовательского интерфейса
      • разработка стратегии тестирования программы

    Цель обучения 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.

    Русский
    Программист отладывает код на многомониторной рабочей станции — итеративный дизайн и тестирование
    Программист отлаживает код на рабочем месте с несколькими мониторами — итеративный дизайн и тестирование

    Программы создаются с помощью итеративного процесса, а не линейно: изучите проблему и пользователей, разработайте проект (часто с помощью схемы или письменного плана), реализуйте код и протестируйте — затем повторите. Крупную задачу разбивают на более мелкие части (декомпозиция). Комментарии и понятные имена фиксируют проект, чтобы другие (и ваше будущее «я») могли его понять. Разработка носит инкрементальный характер — создавайте и проверяйте небольшой фрагмент, затем добавляйте следующий.

    Этапы разработки программы, где тестирование возвращает процесс к исправлению и уточнению
    Этапы разработки программы, где тестирование возвращает процесс к исправлению и уточнению
    Программное обеспечение создается методом итеративной инкрементальной разработки
    Программное обеспечение создается методом итеративной инкрементальной разработки

    Исследование реальных потребностей пользователей

    Прежде чем писать код, разработчик изучает проблему и людей, которые будут использовать программу. Для этого существуют три метода:

    • опросы, направляемые потенциальным пользователям, позволяющие быстро собрать данные от большого числа человек;
    • интервью и прямое наблюдение за выполнением задачи пользователем вручную;
    • изучение существующих решений, чтобы узнать, что уже работает, а что вызывает раздражение у людей.

    Результаты преобразуются в проект. Два артефакта для этого используются: список требований к программе, точно описывающий, что должна делать программа, и диаграммы, отображающие структуру пользовательского интерфейса — наброски, показывающие, какие элементы управления находятся где и что происходит при их использовании. Создание интерфейса сначала на бумаге дешевле, чем обнаружение после написания кода, что кнопки расположены неправильно.

    События и программы, ожидающие ввода

    Не каждая программа выполняется последовательно сверху вниз. Событие возникает при нажатии клавиши, клике мыши, запуске программы или любом другом заданном действии — и событие изменяет поток выполнения: программа приостанавливает текущие действия и выполняет код, привязанный к этому событию, который называется обработчиком событий.

    Поэтому программа с графическим интерфейсом может казаться бездействующей: она ожидает следующего события. Порядок поступления этих событий определяется пользователем, а не программистом, поэтому одна и та же программа может выполнять свои блоки в разном порядке при каждом использовании.

    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.

    Русский

    Баг (ошибка) — это неточность в программе; отладка — её поиск и устранение. Три вида:

    Таблица трассировки фиксирует значение каждой переменной по мере выполнения программы для поиска багов
    Таблица трассировки фиксирует значение каждой переменной по мере выполнения программы для поиска багов
    • синтаксическая ошибка нарушает правила языка, из-за чего программа не запустится;
    • ошибка времени выполнения приводит к крашу программы во время работы (например, деление на ноль);
    • логическая ошибка позволяет программе работать, но дает неверный результат.

    Найдите ошибки с помощью тестирования с различными входами, добавления операторов вывода для просмотра значений и ручной трассировки кода. Выбирайте входные данные целенаправленно: они должны демонстрировать различные ожидаемые результаты на границе или непосредственно за ней — минимальные и максимальные значения, которые программа должна принимать, и значения, находящиеся сразу за пределами каждого из них. Программа, корректно работающая с обычными данными, часто fails на пустом списке, нуле или значении, выходящем за пределы диапазона на единицу, поэтому именно эти входные данные стоит проверить в первую очередь. Исправление одной ошибки за разом с последующим тестированием является надежным методом.

    Экзаменационный навык: умейте называть тип ошибки и описывать стратегию тестирования, которая позволила бы её выявить — это частый формат вопросов с множественным выбором и творческого задания.

    Три вида программистических ошибок: синтаксические, логические и ошибки времени выполнения
    Три вида программистических ошибок: синтаксические, логические и ошибки времени выполнения

    Разбор примера. Программа, предназначенная для вывода среднего арифметического двух чисел, вместо этого выводит 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 · ⁨Data (Данные)⁩

    Watch lesson · ⁨Смотреть урок⁩
    2.1

    Binary Numbers

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

    Learning Objective 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.

    Learning Objective 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.
    Русский

    Ключевое понимание (DAT-1): То, как компьютер внутренне представляет данные, отличается от того, как эти данные интерпретируются и отображаются пользователю. Программы используются для преобразования данных в представление, которое легче воспринимать людьми.

    Цель обучения DAT-1.A: Объяснить, как данные могут быть представлены с помощью битов. [Навык 3.C]

    • DAT-1.A.1 Значения данных могут храниться в переменных, списках элементов или отдельных константах и передаваться в качестве входа (или выхода) для процедур.
    • DAT-1.A.2 Вычислительные устройства представляют данные в цифровом виде, то есть наименьшими составляющими любого значения являются биты.
    • DAT-1.A.3 Бит — это сокращение от бинарный разряд и может принимать значение 0 или 1.
    • DAT-1.A.4 Байт равен 8 битам.
    • DAT-1.A.5 Абстракция — это процесс уменьшения сложности путем сосредоточения на главной идее. Скрывая детали, не относящиеся к текущему вопросу, и объединяя связанные и полезные детали, абстракция снижает сложность и позволяет сосредоточиться на сути.
    • DAT-1.A.6 Биты группируются для представления абстракций. К таким абстракциям относятся, но не ограничиваются ими, числа, символы и цвета.
    • DAT-1.A.7 Одна и та же последовательность битов может представлять разные типы данных в различных контекстах.
    • DAT-1.A.8 Аналоговые данные имеют значения, которые изменяются плавно, а не дискретными интервалами, во времени. Примерами аналоговых данных являются высота звука и громкость музыки, цвета картины или положение спринтера во время забега.
    • DAT-1.A.9 Использование цифровых данных для аппроксимации реальных аналоговых данных является примером абстракции.
    • DAT-1.A.10 Аналоговые данные можно близко аппроксимировать в цифровом виде с помощью метода выборки, который заключается в измерении значений аналогового сигнала через регулярные промежутки времени, называемые выборками. Измеряются выборки для определения точного количества битов, необходимого для хранения каждой выборки.

    Цель обучения DAT-1.B: Объяснять последствия использования битов для представления данных. [Навык 1.D]

    • DAT-1.B.1 Во многих языках программирования целые числа представляются фиксированным количеством битов, что ограничивает диапазон допустимых значений целых чисел и математических операций над ними. Это ограничение может привести к переполнению или другим ошибкам.
    • DAT-1.B.2 Другие языки программирования предоставляют абстракцию, при которой размер представимых целых чисел ограничен только размером памяти компьютера; это относится к языку, определенному в справочном листе экзамена.
    • DAT-1.B.3 В языках программирования фиксированное количество битов, используемых для представления вещественных чисел, ограничивает диапазон и математические операции над этими значениями; это ограничение может привести к ошибкам округления и другим неточностям. Некоторые вещественные числа в хранилище компьютера представляются как приближения.
      • Исключение: Конкретные ограничения диапазонов для вещественных чисел выходят за рамки данной программы и экзамена AP.

    Цель обучения DAT-1.C: Для двоичных чисел: a. Вычислите двоичный (основание 2) эквивалент положительного целого числа (основание 10) и обратно. [Навык 2.B] b. Сравнивать и упорядочивать двоичные числа. [Навык 2.B]

    • DAT-1.C.1 Числовые системы, включая двоичную и десятичную, используются для представления данных.
    • DAT-1.C.2 Двоичная система (основание 2) использует только комбинации цифр ноль и один.
    • DAT-1.C.3 Десятичная система (основание 10) использует только комбинации цифр $0 - 9$.
    • DAT-1.C.4 Как и в десятичной системе, позиция цифры в двоичной последовательности определяет её числовое значение. Числовое значение равно значению бита (0 или 1), умноженному на разрядное значение его позиции.
    • DAT-1.C.5 Разрядное значение каждой позиции определяется основанием, возведенным в степень этой позиции. Позиции нумеруются начиная с правойmost позиции с 0 и увеличиваются на 1 для каждой последующей позиции влево.

    Source: College Board AP Course and Exam Description · ⁨Источник: Описание курса и экзамена College Board AP⁩

    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. · ⁨Компьютеры хранят числа в двоичном виде (основание 2). Каждый бит представляет степень двойки; сложите разрядные значения битов со значением 1, чтобы прочитать десятичное число.⁩

    Vocabulary · ⁨Словарь⁩ Train · ⁨Тренировать⁩
    English Русский
    bits/bɪts/ битов
    byte/baɪt/ байт
    binary/ˈbaɪnəri/ бинарная
    decimal/ˈdesɪml/ десятичный
    Overflow error/ˌəʊvəˈfləʊ ˈerə/ Ошибка переполнения
    Round-off (rounding) error/raʊnd ɒf ˈerə/ Ошибка округления
    pixels/ˈpɪkslz/ пиксели
    Watch lesson · ⁨Смотреть урок⁩
    2.2

    Data Compression

    Syllabus · ⁨Программа⁩
    English

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

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

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

    Ключевое понимание (DAT-1): То, как компьютер внутренне представляет данные, отличается от того, как эти данные интерпретируются и отображаются пользователю. Программы используются для преобразования данных в представление, которое легче воспринимать людьми.

    Цель обучения DAT-1.D: Сравнивать алгоритмы сжатия данных, чтобы определить, какой из них лучше подходит в конкретном контексте. [Навык 1.D]

    • DAT-1.D.1 Сжатие данных может уменьшить размер (количество битов) передаваемых или хранимых данных.
    • DAT-1.D.2 Меньшее количество битов не обязательно означает меньший объем информации.
    • DAT-1.D.3 Степень уменьшения размера благодаря сжатию зависит как от степени избыточности в исходном представлении данных, так и от примененного алгоритма сжатия.
    • DAT-1.D.4 Алгоритмы без потерь обычно могут уменьшить количество битов, хранящихся или передаваемых, гарантируя полное восстановление исходных данных.
    • 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⁩

    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 Масштабируемость систем является важным аспектом при работе с наборами данных, поскольку вычислительные мощности системы влияют на то, как наборы данных могут быть обработаны и хранены.

    Source: College Board AP Course and Exam Description · ⁨Источник: Описание курса и экзамена College Board AP⁩

    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ə/ Data (Данные)
    information/ˌɪnfəˈmeɪʃn/ интернет
    correlation/ˌkɒrɪˈleɪʃn/ корреляцию
    Metadata/ˌmetəˈdeɪtə/ Метаданные
    2.4

    Using Programs with Data

    Syllabus · ⁨Программа⁩
    English

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

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

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

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

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

    Принципиальное понимание (DAT-2): Программное обеспечение может использоваться для обработки данных, что позволяет пользователям открывать новую информацию и создавать новые знания.

    Цель обучения DAT-2.D: Извлекать информацию из данных с помощью программы. [Навык 2.B]

    • DAT-2.D.1 Программы могут использоваться для обработки данных с целью получения информации.
    • DAT-2.D.2 Таблицы, диаграммы, текст и другие визуальные инструменты могут использоваться для передачи инсайтов и знаний, полученных из данных.
    • DAT-2.D.3 Инструменты поиска полезны для эффективного нахождения информации.
    • DAT-2.D.4 Системы фильтрации данных являются важными инструментами для поиска информации и распознавания закономерностей в данных.
    • DAT-2.D.5 Программы, такие как электронные таблицы, помогают эффективно организовывать информацию и выявлять тенденции.
    • DAT-2.D.6 Некоторые процессы, которые могут использоваться для извлечения или изменения информации из данных, включают следующее:
      • преобразование каждого элемента набора данных, например, умножение каждого элемента в списке на два или добавление электронной почты родителя к каждой записи студента
      • фильтрация набора данных, например, сохранение только положительных чисел из списка или сохранение только студентов, зарегистрировавшихся в духовом оркестре, из реестра всех студентов
      • объединение или сравнение данных определенным образом, например, суммирование списка чисел или поиск студента с самым высоким средним баллом (GPA)
      • визуализация набора данных с помощью диаграммы, графика или другого визуального представления

    Цель обучения DAT-2.E: Объяснить, как программы могут использоваться для получения инсайтов и знаний из данных. [Навык 5.B]

    • DAT-2.E.1 Программы используются итеративно и интерактивно при обработке информации, чтобы позволить пользователям получать инсайты и знания о данных.
    • DAT-2.E.2 Программисты могут использовать программы для фильтрации и очистки цифровых данных, тем самым получая инсайты и знания.
    • DAT-2.E.3 Объединение источников данных, кластеризация данных и классификация данных являются частями процесса использования программ для получения инсайтов и знаний из данных.
    • DAT-2.E.4 Инсайты и знания можно получить путем перевода и преобразования информации, представленной в цифровом виде.
    • DAT-2.E.5 Закономерности могут возникать, когда данные преобразуются с помощью программ.

    Source: College Board AP Course and Exam Description · ⁨Источник: Описание курса и экзамена College Board AP⁩

    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 · ⁨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 Переменная — это абстракция внутри программы, способная хранить значение. Для каждой переменной выделено место в памяти для хранения одного значения, однако это значение может быть списком или другим COLLECTION (набором), который, в свою очередь, содержит несколько значений.
    • AAP-1.A.2 Использование осмысленных имен переменных способствует читаемости кода программы и пониманию того, какие значения представлены переменными.
    • AAP-1.A.3 Некоторые языки программирования предоставляют типы данных для представления информации, которые ссылаются на переменные. Эти типы включают числа, логические значения (Boolean), списки и строки.
    • 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⁩

    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. · ⁨Переменная — это именованная ячейка, которая хранит одно значение одновременно. Присваивание копирует значение в ячейку; повторное присваивание перезаписывает то, что там находилось ранее.⁩

    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⁩

    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⁩

    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 Конкатенация строк объединяет две или более строк последовательно, чтобы создать новую строку.
    • AAP-2.D.2 Подстрока — это часть существующей строки.

    Source: College Board AP Course and Exam Description · ⁨Источник: Описание курса и экзамена College Board AP⁩

    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 · ⁨Программа⁩
    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.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.

    Learning Objective 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.

    Русский

    Ключевое понимание (AAP-2): Порядок следования и комбинация инструкций в программе определяют вычисленный результат. Программы используют конструкции итерации и выбора для представления повторений и принятия решений для обработки различных входных значений.

    Цель обучения AAP-2.E: Для отношений между двумя переменными, выражениями или значениями: a. Записывать выражения с использованием операторов сравнения. [Навык 2.B] b. Оценивать выражения, использующие операторы сравнения. [Навык 4.B]

    • AAP-2.E.1 Булево значение может быть истинным (true) или ложным (false).

    • AAP-2.E.2 Справочный лист для экзамена содержит следующие реляционные операторы: =, ≠, >, <, ≥ и ≤.

      Текст и Блок:

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

      Они используются для проверки соотношения между двумя переменными, выражениями или значениями. Результат сравнения с использованием реляционного оператора является логическим значением (Boolean). Например, a = b возвращает true, если a и b равны; в противном случае он возвращает false.

    Цель обучения AAP-2.F: Для отношений между булевскими значениями: a. Записывать выражения с использованием логических операторов. [Навык 2.B] b. Оценивать выражения, использующие логические операторы. [Навык 4.B]

    • AAP-2.F.1 Справочный лист для экзамена содержит логические операторы NOT, AND и OR, которые возвращают логическое значение (Boolean).

    • AAP-2.F.2 Справочный листок для экзамена предоставляет

      Текст:

      NOT condition

      Блок:

      NOT condition

      который вычисляется как ⟨true⟩, если ⟨condition⟩ является ⟨false⟩; в противном случае он вычисляется как ⟨false⟩.

    • AAP-2.F.3 Справочный листок для экзамена предоставляет

      Текст:

      condition1 AND condition2

      Блок:

      condition1 AND condition2

    который возвращает true, если оба condition1 и condition2 являются true; в противном случае он возвращает false.

    • AAP-2.F.4 Справочный листок для экзамена содержит

      Текст:

      condition1 OR condition2

      Блок:

      condition1 OR condition2

    который возвращает true, если condition1 является true или если condition2 является true, или если оба condition1 и condition2 являются true; в противном случае он возвращает false.

    • AAP-2.F.5 Операндом логического оператора является либо булево выражение, либо одно булево значение.

    Source: College Board AP Course and Exam Description · ⁨Источник: Описание курса и экзамена College Board AP⁩

    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 истинна, когда хотя бы один вход истинен; измените входы, чтобы рассмотреть все варианты.⁩

    Vocabulary · ⁨Словарь⁩ Train · ⁨Тренировать⁩
    English Русский
    Boolean expression/ˈbuːlɪən ekˈspreʃn/ булево выражение
    3.6

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

    Learning Objective 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.

    Русский

    Ключевое понимание (AAP-2): Порядок следования и комбинация инструкций в программе определяют вычисленный результат. Программы используют конструкции итерации и выбора для представления повторений и принятия решений для обработки различных входных значений.

    Цель обучения AAP-2.G: Описать алгоритм, использующий выбор (selection), без применения языка программирования. [Навык 2.A]

    • AAP-2.G.1 Выбор определяет, какие части алгоритма выполняются, основываясь на том, является ли условие true или false.

    Цель обучения AAP-2.H: Для выбора: a. Писать условные операторы. [Навык 2.B] b. Определять результат выполнения условных операторов. [Навык 4.B]

    • AAP-2.H.1 Условные операторы, или «операторы if», влияют на последовательное управление потоком, выполняя различные операторы в зависимости от значения булева выражения.

    • AAP-2.H.2 Справочный листок для экзамена содержит

      Текст:

      IF(condition) { <block of statements> }

      Блок:

      IF condition block of statements

    в котором код в block of statements выполняется, если булево выражение condition возвращает true; никаких действий не предпринимается, если condition возвращает false.

    • AAP-2.H.3 Справочный листок для экзамена содержит

      Текст:

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

      Блок:

      IF condition first block of statements ELSE second block of statements

    в котором код в first block of statements выполняется, если булево выражение condition возвращает true; в противном случае выполняется код в second block of statements.

    Source: College Board AP Course and Exam Description · ⁨Источник: Описание курса и экзамена College Board AP⁩

    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⁩

    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 · ⁨Программа⁩
    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.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.

    Learning Objective 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.

    Русский

    Ключевое понимание (AAP-2): Порядок следования и комбинация инструкций в программе определяют вычисленный результат. Программы используют конструкции итерации и выбора для представления повторений и принятия решений для обработки различных входных значений.

    Цель обучения AAP-2.J: Описать алгоритм, использующий итерацию, без применения языка программирования. [Навык 2.A]

    • AAP-2.J.1 Итерация — это повторяющаяся часть алгоритма. Итерация повторяется заданное количество раз или до тех пор, пока не будет выполнено определенное условие.

    Цель обучения AAP-2.K: Для итерации: a. Писать операторы итерации. [Навык 2.B] b. Определять результат или побочный эффект операторов итерации. [Навык 4.B]

    • AAP-2.K.1 Операторы итерации изменяют последовательное управление потоком, повторяя набор операторов ноль или более раз, пока не будет достигнуто условие завершения.

    • AAP-2.K.2 Справочный листок для экзамена содержит

      Текст:

      REPEAT n TIMES { <block of statements> }

      Блок:

      REPEAT n TIMES block of statements

    в котором block of statements выполняется n раз.

    • AAP-2.K.3 Справочный листок для экзамена содержит

      Текст:

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

      Блок:

      REPEAT UNTIL condition block of statements

    в котором код в block of statements повторяется до тех пор, пока булево выражение condition не вернет true.

    • AAP-2.K.4 В итерации REPEAT UNTIL(condition) возникает бесконечный цикл, когда условие завершения никогда не вернет true.
    • AAP-2.K.5 В итерации REPEAT UNTIL(condition), если условие изначально возвращает true, тело цикла не выполняется вовсе, поскольку проверка условия происходит перед началом цикла.

    Source: College Board AP Course and Exam Description · ⁨Источник: Описание курса и экзамена College Board AP⁩

    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 · ⁨Трассировка цикла по одному проходу⁩

    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. · ⁨Цикл повторяет блок, пока его счетчик проходит диапазон. Пройдитесь по шагам, чтобы следить за обновлением счетчика и накопленной суммы на каждом проходе.⁩

    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 Знание существующих алгоритмов может помочь в создании новых. К числу таких алгоритмов относятся:
      • определение максимального или минимального значения двух или более чисел
      • вычисление суммы или среднего значения двух или более чисел
      • определение, делится ли целое число на другое целое число нацело или нет
      • определение пути робота через лабиринт
    • AAP-2.M.3 Использование существующих правильных алгоритмов в качестве строительных блоков для создания нового алгоритма имеет преимущества, такие как сокращение времени разработки, уменьшение объема тестирования и упрощение выявления ошибок.

    Source: College Board AP Course and Exam Description · ⁨Источник: Описание курса и экзамена College Board AP⁩

    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⁩

    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⁩

    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 · ⁨Программа⁩
    English

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

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

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

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

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

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

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

      procName(arg1, arg2, ...)

      as a way to call

      Text:

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

      Block:

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

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

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

      Text:

      DISPLAY(expression)

      Block:

      DISPLAY expression

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

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

      Text:

      RETURN(expression)

      Block:

      RETURN expression

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

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

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

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

      Text:

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

      Block:

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

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

      Text:

      INPUT()

      Block:

      INPUT

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

    Русский

    Пронизывающее понимание (AAP-3): Программисты разбивают задачи на более мелкие и управляемые части. Создавая процедуры и используя параметры, программисты обобщают процессы, которые можно повторно использовать. Процедуры позволяют программистам опираться на уже протестированный код, что позволяет писать программы быстрее и с большей уверенностью.

    Учебная цель AAP-3.A: Для вызова процедур: a. Написывать операторы для вызова процедур. [Навык 3.B] b. Определять результат или эффект вызова процедуры. [Навык 4.B]

    • AAP-3.A.1 Процедура — это именованная группа инструкций программирования, которая может иметь параметры и возвращать значения.

    • AAP-3.A.2 Процедурам присваиваются разные имена, такие как метод или функция, в зависимости от используемого языка программирования.

    • AAP-3.A.3 Параметры — это входные переменные процедуры. Аргументы определяют значения параметров при вызове процедуры.

    • AAP-3.A.4 Вызов процедуры прерывает последовательное выполнение операторов, заставляя программу выполнять операторы внутри процедуры до завершения. Как только выполняется последний оператор в процедуре (или оператор возврата), управление возвращается в точку непосредственно после места вызова процедуры.

    • AAP-3.A.5 Справочный лист для экзамена предоставляет

      procName(arg1, arg2, ...)

      в качестве способа вызова

      Текст:

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

      Блок:

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

      который принимает ноль или более аргументов; arg1 присваивается parameter1, arg2 присваивается parameter2 и так далее.

    • AAP-3.A.6 Справочный лист для экзамена предоставляет процедуру

      Текст:

      DISPLAY(expression)

      Блок:

      DISPLAY expression

      для вывода значения expression, за которым следует пробел.

    • AAP-3.A.7 Справочный лист для экзамена предоставляет

      Текст:

      RETURN(expression)

      Блок:

      RETURN expression

      который используется для возврата управления в точку вызова процедуры и для возврата значения expression.

    • AAP-3.A.8 Справочный лист для экзамена предоставляет

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

      для присвоения result «значения процедуры», возвращаемого при вызове

      Текст:

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

      Блок:

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

    • AAP-3.A.9 Справочный лист для экзамена предоставляет процедуру

      Текст:

      INPUT()

      Блок:

      INPUT

      которая принимает значение от пользователя и возвращает введенное значение.

    Source: College Board AP Course and Exam Description · ⁨Источник: Описание курса и экзамена College Board AP⁩

    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

      который используется для определения процедуры, принимающей ноль или более аргументов. Процедура содержит block of statements и возвращает значение expression. Оператор RETURN может出现在 в любом месте внутри процедуры и вызывает немедленный возврат из процедуры обратно в вызывающий оператор.

    Source: College Board AP Course and Exam Description · ⁨Источник: Описание курса и экзамена College Board AP⁩

    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⁩

    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: Для симуляций: a. Объяснять, как компьютеры могут использоваться для моделирования реальных явлений или исходов. [Навык 1.A] b. Сравнивать симуляции с реальными контекстами. [Навык 1.D]

    • AAP-3.F.1 Симуляции являются абстракциями более сложных объектов или явлений для конкретной цели.
    • AAP-3.F.2 Симуляция — это представление, использующее различные наборы значений для отражения изменяющегося состояния явления.
    • AAP-3.F.3 Симуляции часто имитируют реальные события с целью получения выводов, позволяя исследовать явление без ограничений реального мира.
    • AAP-3.F.4 Процесс создания абстрактной симуляции включает исключение конкретных деталей или упрощение функциональности.
    • AAP-3.F.5 Симуляции могут содержать предвзятость, вызванную выбором включенных или исключенных элементов реального мира.
    • AAP-3.F.6 Симуляции наиболее полезны, когда реальные события непрактичны для экспериментов (например, слишком большие, слишком маленькие, слишком быстрые, слишком медленные, слишком дорогие или слишком опасные).
    • AAP-3.F.7 Симуляции способствуют формулированию и уточнению гипотез, связанных с рассматриваемыми объектами или явлениями.
    • AAP-3.F.8 Генераторы случайных чисел могут использоваться для моделирования изменчивости, существующей в реальном мире.

    Source: College Board AP Course and Exam Description · ⁨Источник: Описание курса и экзамена College Board AP⁩

    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 Задача принятия решений — это задача с ответом «да»/«нет» (например, существует ли путь от A до B?). Задача оптимизации — это задача, цель которой заключается в поиске «лучшего» решения среди многих (например, какой путь от A до B самый короткий?).
    • AAP-4.A.3 Эффективность — это оценка количества используемых алгоритмом вычислительных ресурсов. Эффективность обычно выражается как функция размера входа.
      • Исключение (EK AAP-4.A.3): Формальный анализ алгоритмов (Big-O) и формальное рассуждение с использованием математических формул выходят за рамки данной программы и экзамена AP.
    • AAP-4.A.4 Эффективность алгоритма определяется через формальное или математическое рассуждение.
    • AAP-4.A.5 Эффективность алгоритма может быть оценена неформально путем определения количества выполнений Statement или группы Statements.
    • 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⁩

    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 Неразрешимая задача — это задача, для которой невозможно построить алгоритм, всегда способный дать правильный ответ «да» или «нет».
      • Исключение (EK AAP-4.B.2): Определение того, является ли данная задача неразрешимой, выходит за рамки данной программы и экзамена AP.
    • AAP-4.B.3 Неразрешимая задача может иметь некоторые экземпляры, имеющие алгоритмическое решение, но не существует алгоритмического решения, способного решить все экземпляры задачи.

    Source: College Board AP Course and Exam Description · ⁨Источник: Описание курса и экзамена College Board AP⁩

    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 · ⁨Computer Systems and Networks (Компьютерные системы и сети)⁩

    Watch lesson · ⁨Смотреть урок⁩
    4.1

    The Internet · ⁨Интернет⁩

    Syllabus · ⁨Программа⁩
    English

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

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

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

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

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

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

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

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

    • CSN-1.D.1 The World Wide Web is a system of linked pages, programs, and files.
    • CSN-1.D.2 HTTP is a protocol used by the World Wide Web.
    • CSN-1.D.3 The World Wide Web uses the Internet.
    Русский

    Основная идея (CSN-1): Компьютерные системы и сети обеспечивают передачу данных.

    Цель обучения CSN-1.A: Объяснить, как вычислительные устройства работают вместе в сети. [Навык 5.A]

    • CSN-1.A.1 Вычислительное устройство — это физический объект, способный выполнять программу. Примерами могут служить компьютеры, планшеты, серверы, маршрутизаторы и умные датчики.
    • CSN-1.A.2 Вычислительная система — это группа вычислительных устройств и программ, работающих совместно для достижения общей цели.
    • CSN-1.A.3 Компьютерная сеть — это группа взаимосвязанных вычислительных устройств, способных отправлять или получать данные.
    • CSN-1.A.4 Компьютерная сеть является типом вычислительной системы.
    • CSN-1.A.5 Путь между двумя вычислительными устройствами в компьютерной сети (отправителем и получателем) — это последовательность непосредственно связанных вычислительных устройств, которая начинается у отправителя и заканчивается у получателя.
    • CSN-1.A.6 Маршрутизация — это процесс нахождения пути от отправителя к получателю.
    • CSN-1.A.7 Пропускная способность компьютерной сети — это максимальное количество данных, которое может быть отправлено за фиксированный промежуток времени.
    • CSN-1.A.8 Пропускную способность обычно измеряют в битах в секунду.

    Цель обучения CSN-1.B: Объяснить, как работает Интернет. [Навык 5.A]

    • CSN-1.B.1 Интернет — это компьютерная сеть, состоящая из взаимосвязанных сетей, использующих стандартизированные открытые (не патентованные) протоколы связи.
    • CSN-1.B.2 Доступ к Интернету зависит от возможности подключения вычислительного устройства к устройству, подключенному к Интернету.
    • CSN-1.B.3 Протокол — это согласованный набор правил, определяющих поведение системы.
    • CSN-1.B.4 Протоколы, используемые в Интернете, являются открытыми, что позволяет пользователям легко подключать дополнительные вычислительные устройства к Интернету.
    • CSN-1.B.5 Маршрутизация в Интернете обычно является динамической; она не задается заранее.
    • CSN-1.B.6 Масштабируемость системы — это ее способность изменять размер и масштаб для удовлетворения новых требований.
    • CSN-1.B.7 Интернет был разработан с учетом масштабируемости.

    Цель обучения CSN-1.C: Объяснить, как данные передаются через Интернет с использованием пакетов. [Навык 5.A]

    • CSN-1.C.1 Информация передается через Интернет в виде потока данных. Потоки данных содержат фрагменты данных, которые инкапсулируются в пакеты.
    • CSN-1.C.2 Пакеты содержат фрагмент данных и метаданные, используемые для маршрутизации пакета между источником и назначением в Интернете, а также для сборки данных.
    • CSN-1.C.3 Пакеты могут поступать на место назначения по порядку, в неправильном порядке или вообще не поступать.
    • CSN-1.C.4 IP, TCP и UDP — распространенные протоколы, используемые в Интернете.

    Цель обучения CSN-1.D: Описать различия между Интернетом и Всемирной паутиной. [Навык 5.A]

    • CSN-1.D.1 Всемирная паутина (World Wide Web) — это система связанных страниц, программ и файлов.
    • 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.

    Русский
    Разъём Ethernet RJ45 — физические каналы передают пакеты через Интернет
    Разъём Ethernet RJ45 — физические каналы передают пакеты через Интернет

    Интернет — это глобальная сеть сетей. Данные передаются в виде пакетов — небольших фрагментов, которые отправляются отдельно и собираются обратно в целевом узле. Два принципа обеспечивают его функционирование в масштабе:

    Интернет — всемирная сеть; веб — одна из служб, работающих на ней
    Интернет — всемирная сеть; веб — одна из служб, работающих на ней
    • Протоколы — это согласованные правила общения. Адреса IP (Internet Protocol) маршрутизируют и пересылают пакеты; TCP собирает их в нужном порядке и запрашивает потерянные; HTTP переносит веб-страницы; DNS преобразует имя, например example.com, в IP-адрес.
    • Избыточность и маршрутизация: между двумя точками существует множество возможных путей, поэтому при отказе одного пути пакеты следуют другим. Это делает Интернет отказоустойчивым.

    Интернет спроектирован как открытая и масштабируемая система — он основан на стандартах, доступных каждому, поэтому продолжает работать, когда к нему подключаются миллиарды устройств. Пропускная способность — это количество данных, которое соединение может передать за секунду.

    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. · ⁨Интернет разбивает сообщение на пронумерованные пакеты, каждый из которых адресован и маршрутизируется независимо (часто по разным путям), а затем собирается в пункте назначения. Такая архитектура обеспечивает отказоустойчивость — если один маршрут выходит из строя, пакеты следуют по другому пути.⁩

    Vocabulary · ⁨Словарь⁩ Train · ⁨Тренировать⁩
    English Русский
    Internet/ˈɪntənet/ Интернет
    packets/ˈpækɪts/ пакеты
    Protocols/ˈprəʊtəkɒlz/ Протоколы
    Redundancy/rɪˈdʌndənsi/ Избыточность
    fault-tolerant/fɒlt ˈtɒlərənt/ отказоустойчивый
    Bandwidth/ˈbændwɪdθ/ Пропускная способность
    reliability/rɪˌlaɪəˈbɪlɪti/ надежность
    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/ ускорение
    Watch lesson · ⁨Смотреть урок⁩
    4.2

    Fault Tolerance · ⁨Отказоустойчивость⁩

    Syllabus · ⁨Программа⁩
    English

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

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

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

    Основная идея (CSN-1): Компьютерные системы и сети обеспечивают передачу данных.

    Цель обучения CSN-1.E: Для отказоустойчивых систем, таких как Интернет: a. Опишите преимущества отказоустойчивости. [Навык 1.D] b. Объясните, как конкретная система является отказоустойчивой. [Навык 5.A] c. Определите уязвимые места к сбоям в системе. [Навык 1.D]

    • CSN-1.E.1 Интернет спроектирован как отказоустойчивая система, используя абстракции для маршрутизации и передачи данных.
    • CSN-1.E.2 Редундантность — это включение дополнительных компонентов, которые могут использоваться для смягчения последствий сбоя системы, если другие компоненты выйдут из строя.
    • CSN-1.E.3 Одним из способов достижения сетевой редундантности является наличие более одного пути между любыми двумя подключенными устройствами.
    • CSN-1.E.4 Если какое-либо конкретное устройство или соединение в Интернете выходит из строя, последующие данные будут отправлены по другому маршруту, если это возможно.
    • CSN-1.E.5 Когда система может переносить сбои и продолжать работать, она называется отказоустойчивой. Это важно, потому что элементы сложных систем выходят из строя в непредвиденное время, часто группами, а отказоустойчивость позволяет пользователям продолжать использовать сеть.
    • CSN-1.E.6 Редундантность внутри системы часто требует дополнительных ресурсов, но может обеспечить преимущество отказоустойчивости.
    • CSN-1.E.7 Редундантность вариантов маршрутизации между двумя точками повышает надежность Интернета и помогает ему масштабироваться для большего количества устройств и пользователей.

    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.

    Русский
    Wi-Fi роутер: локальный шлюз, пересылающий пакеты в сторону глобального Интернета
    Wi-Fi роутер: локальный шлюз, пересылающий пакеты в сторону глобального Интернета

    Система является отказоустойчивой, если она продолжает работать даже при отказе её части. Интернет достигает этого благодаря избыточным соединениям: поскольку пакеты могут направляться по нескольким путям, выход из строя одного роутера или кабеля не прекращает связь — трафик просто перенаправляется. Отказоустойчивость требует дополнительных ресурсов (избыточных путей), но значительно повышает надёжность. Один путь без резервного не является отказоустойчивым.

    Коммутация пакетов отправляет пакеты по независимым маршрутам, позволяя сети переносить отказ канала
    Коммутация пакетов отправляет пакеты по независимым маршрутам, позволяя сети переносить отказ канала
    4.3

    Parallel and Distributed Computing · ⁨Параллельные и распределённые вычисления⁩

    Syllabus · ⁨Программа⁩
    English

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

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

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

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

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

    Фундаментальное понимание (CSN-2): Параллельные и распределенные вычисления используют несколько компьютеров для более быстрого решения сложных задач или обработки больших наборов данных.

    Цель обучения CSN-2.A: Для последовательных, параллельных и распределенных вычислений: a. Сравните решения задач. [Навык 1.D] b. Определите эффективность решений. [Навык 1.D]

    • CSN-2.A.1 Последовательные вычисления — это вычислительная модель, в которой операции выполняются по очереди, одна за другой.
    • CSN-2.A.2 Параллельные вычисления — это вычислительная модель, при которой программа разбивается на несколько меньших последовательных операций, некоторые из которых выполняются одновременно.
    • CSN-2.A.3 Распределенные вычисления — это вычислительная модель, в которой для выполнения программы используется несколько устройств.
    • CSN-2.A.4 Сравнение эффективности решений может быть выполнено путем сравнения времени, необходимого им для выполнения одной и той же задачи.
    • CSN-2.A.5 Последовательное решение занимает столько времени, сколько сумма всех его шагов.
    • CSN-2.A.6 Решение с параллельными вычислениями занимает столько времени, сколько суммарное время его последовательных задач плюс самое длительное время его параллельных задач.
    • CSN-2.A.7 «Ускорение» параллельного решения измеряется временем, затраченным на выполнение задачи последовательно, деленным на время, затраченное на выполнение задачи параллельно.

    Цель обучения CSN-2.B: Опишите преимущества и сложности параллельных и распределенных вычислений. [Навык 1.D]

    • CSN-2.B.1 Параллельные вычисления состоят из параллельной части и последовательной части.
    • CSN-2.B.2 Решения, использующие параллельные вычисления, могут масштабироваться эффективнее, чем решения, использующие последовательные вычисления.
    • CSN-2.B.3 Распределенные вычисления позволяют решать задачи, которые невозможно решить на одном компьютере из-за времени обработки или потребностей в хранении.
    • CSN-2.B.4 Распределенные вычисления позволяют гораздо быстрее решать значительно более сложные задачи, чем это было бы возможно на одном компьютере.
    • CSN-2.B.5 При увеличении использования параллельных вычислений в решении эффективность всё ещё ограничена последовательной частью. Это означает, что на определённом этапе добавление параллельных компонентов перестанет значимо повышать эффективность.

    Source: College Board AP Course and Exam Description · ⁨Источник: Описание курса и экзамена College Board AP⁩

    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.

    Русский
    Серверные стойки дата-центра: распределённые вычисления распределяют нагрузку между множеством машин
    Серверные стойки дата-центра: распределённые вычисления распределяют нагрузку между множеством машин
    • Последовательные вычисления выполняют одну операцию за другой.
    • Параллельные вычисления разбивают задачу на части, которые выполняются одновременно на нескольких процессорах, завершаясь быстрее.
    • Распределённые вычисления используют множество компьютеров, соединённых сетью, для решения одной задачи — необходимо для задач, слишком больших для одной машины.
    Параллельные вычисления: множество процессоров работают одновременно
    Параллельные вычисления: множество процессоров работают одновременно

    Ускорение параллельного решения — это отношение последовательного времени к параллельному. Ускорение ограничено: части, которые обязательно должны выполняться последовательно, нельзя ускорить добавлением процессоров, поэтому удвоение числа процессоров редко удваивает скорость.

    Разбор примера. Задача содержит часть, которая обязательно должна выполняться последовательно и занимает $40$ секунд, плюс часть, которую можно выполнить параллельно, занимающую $60$ секунд на одном процессоре — так что на одном процессоре вся задача занимает $40+60=100$ секунд. Распределите параллелизируемую часть на $3$ процессоров, и она займёт $\tfrac{60}{3}=20$ секунд, так что общее параллельное время составит $40+20=60$ секунд, а ускорение будет равно $\tfrac{100}{60}\approx1.67$. Последовательная часть длительностью $40$ секунд является нижним пределом: даже при бесконечном числе процессоров задача никогда не завершится менее чем за $40$ секунд.

    Навык для экзамена: зная время последовательной и параллельной частей задачи, уметь рассчитать общее параллельное время и ускорение.

    4.3

    Exam tips · ⁨Советы для экзамена⁩

    English
    • 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.
    Русский
    • Описывать, как данные передаются в пакетах по избыточной, отказоустойчивой сети независимых маршрутизаторов.
    • Знать, что протоколы (IP, TCP, HTTP) — это согласованные правила, а открытые стандарты позволяют различным системам взаимодействовать друг с другом.
    • Объяснять масштабируемость и то, как Интернет развивается без центрального управления.
    • Различайте полоса пропускания (скорость) и задержку (время отклика), а также опишите процесс поиска адреса по имени в DNS.
    • Обсудите цифровое неравенство и основы безопасности (шифрование, аутентификация) простыми словами.
  • 5

    Impact of Computing · ⁨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 Способ выполнения задач людьми часто меняется, чтобы incorporates новые вычислительные инновации.
    • IOC-1.A.3 Не каждый эффект вычислительной инновации можно предвидеть заранее.
    • IOC-1.A.4 Один и тот же эффект может восприниматься разными людьми как положительный и отрицательный одновременно, или даже одним и тем же человеком в разных ситуациях.
    • IOC-1.A.5 Достижения в области вычислений способствовали развитию творчества в других областях, таких как медицина, инженерия, связь и искусство.

    Цель обучения IOC-1.B: Объяснить, как вычислительная инновация может оказывать влияние за рамками её предполагаемого назначения. [Навык 5.C]

    • IOC-1.B.1 Вычислительные инновации могут использоваться способами, которые не планировались их создателями:
      • Всемирная паутина изначально предназначалась только для быстрого и легкого обмена информацией внутри научного сообщества.
      • Целевая реклама используется для помощи бизнесу, но она может быть злоупотреблена как на индивидуальном, так и на агрегированном уровне.
      • Машинное обучение и анализ данных позволили инновациям в медицине, бизнесе и науке, однако информация, открытая таким образом, также использовалась для дискриминации групп людей.
    • IOC-1.B.2 Некоторые способы использования вычислительных инноваций могут оказать вредное воздействие на общество, экономику или культуру.
    • IOC-1.B.3 Ответственные программисты стараются учитывать непредвиденные способы использования своих вычислительных инноваций и потенциальные положительные и отрицательные последствия этих новых применений.
    • IOC-1.B.4 Невозможно для программиста учесть все возможные способы использования вычислительной инновации.
    • IOC-1.B.5 Вычислительные инновации часто имели положительные непредвиденные последствия, приводя к прогрессу в других областях.
    • IOC-1.B.6 Быстрое распространение программы или запуск программы с большим количеством пользователей может привести к значительным последствиям, выходящим за рамки intended purpose или контроля программиста.

    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.

    Русский
    Свалка электронных отходов — вычислительная техника имеет как экологические издержки, так и преимущества
    Свалка электронных отходов — вычислительная техника имеет как экологические издержки, так и преимущества

    Каждая инновация в сфере вычислений может быть использована как для того, чтобы помочь, так и для того, чтобы нанести вред – часто одна и та же технология делает и то, и другое. Социальная сеть объединяет людей и может распространять дезинформацию; автоматизация повышает производительность и может привести к потере рабочих мест. Последствия часто бывают непреднамеренными: создатели не могут предвидеть каждое возможное применение. Оценивая вычислительную инновацию, взвешивайте её преимущества и недостатки для людей и общества, и помните, что вред не всегда является умышленным.

    Вычислительная техника влияет на благополучие общества несколькими способами
    Вычислительная техника влияет на благополучие общества несколькими способами

    Вычислительная техника также порождает творчество в других сферах, которое 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.

    Русский

    Цифровое неравенство — это неравный доступ к вычислительной технике и Интернету среди различных групп населения по признакам дохода, географического положения, возраста или страны. Те, кто имеет доступ, получают образование, рабочие места и услуги; те, кто его лишён, отстают всё дальше. Цифровой разрыв формируется под влиянием экономических, социальных и географических факторов, а усилия по его преодолению (доступное оборудование, общественный доступ, инфраструктура) направлены на то, чтобы сделать преимущества вычислительной техники более справедливыми.

    Компьютеры в публичной библиотеке: цифровое неравенство связано с неравным доступом к устройствам, подключению и навыкам
    Компьютеры в публичной библиотеке: цифровое неравенство связано с неравным доступом к устройствам, подключению и навыкам
    Спутниковая тарелка в сельской местности: география всё ещё определяет, у кого быстрый интернет, а кому приходится ждать
    Спутниковая тарелка в сельской местности: география всё ещё определяет, у кого быстрый интернет, а кому приходится ждать
    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.

    Русский

    Краудсорсинг — это получение обратной связи, идей или финансирования от большого количества людей, обычно через Интернет. Он использует знания и усилия многих: картографические проекты, обзоры продуктов, гражданская наука и краудфандинг полностью зависят от него. Интернет позволяет краудсорсингу работать в масштабах и скорости, которые ранее были недостижимы, позволяя проекту привлекать участников со всего мира.

    Вики-марафон: краудсорсинг объединяет труд множества людей в общий ресурс
    Вики-марафон: краудсорсинг объединяет труд множества людей в общий ресурс
    5.5

    Legal and Ethical Concerns · ⁨Юридические и этические вопросы⁩

    Syllabus · ⁨Программа⁩
    English

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

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

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

    Общее понимание (IOC-1): Хотя инновации в области вычислений обычно разрабатываются для достижения конкретной цели, они могут иметь непредвиденные последствия.

    Цель обучения IOC-1.F: Объяснить, как использование вычислительных технологий может вызывать правовые и этические проблемы. [Навык 5.E]

    • IOC-1.F.1 Материалы, созданные на компьютере, являются интеллектуальной собственностью автора или организации.
    • IOC-1.F.2 Легкость доступа и распространения оцифрованной информации вызывает вопросы интеллектуальной собственности, касающиеся права собственности, ценности и использования.
    • IOC-1.F.3 Необходимо принимать меры по защите интеллектуальной собственности.
    • IOC-1.F.4 Использование материалов, созданных кем-то другим, без разрешения и представление их как собственных является плагиатом и может повлечь за собой правовые последствия.
    • IOC-1.F.5 Некоторые примеры законного использования материалов, созданных другими людьми, включают:
      • Creative Commons — публичная лицензия на авторские права, которая позволяет свободно распространять работы, охраняемые авторским правом. Она используется, когда автор хочет предоставить другим право делиться, использовать и создавать производные произведения на основе своей работы.
      • open source (открытый исходный код) — программы, которые предоставляются бесплатно и могут быть перераспределены и изменены.
      • open access (открытый доступ) — результаты онлайн-исследований, доступные без каких-либо ограничений на доступ и без большинства ограничений на использование, таких как авторское право или лицензионные ограничения.
    • IOC-1.F.6 Использование материалов, созданных кем-то, кроме вас, всегда должно сопровождаться ссылкой на источник.
    • IOC-1.F.7 Creative Commons, открытые исходные коды и открытый доступ обеспечили широкий доступ к цифровой информации.
    • IOC-1.F.8 Как и любая технология или медиум, использование вычислительных технологий для причинения вреда отдельным лицам или группам людей поднимает вопросы законодательства и этики.
    • IOC-1.F.9 Вычислительные технологии могут играть роль в социальных и политических вопросах, что, в свою очередь, часто поднимает правовые и этические проблемы.
    • IOC-1.F.10 Цифровой разрыв вызывает этические вопросы, связанные с использованием вычислительных технологий.
    • IOC-1.F.11 Инновации в сфере вычислительных технологий могут порождать правовые и этические споры. Примерами таких инноваций являются:
      • разработка программного обеспечения, позволяющего получать доступ к загрузкам цифровых медиа и стримингу
      • разработка алгоритмов, содержащих предвзятость
      • наличие вычислительных устройств, собирающих и анализирующих данные путем непрерывного мониторинга деятельности

    Source: College Board AP Course and Exam Description · ⁨Источник: Описание курса и экзамена College Board AP⁩

    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.

    Русский
    Пульт управления видеонаблюдением: системы слежки балансируют между безопасностью и вопросами конфиденциальности
    Пульт управления видеонаблюдением: системы слежки балансируют между безопасностью и вопросами конфиденциальности

    Вычислительная техника вызывает вопросы права и этики:

    • Интеллектуальная собственность и авторское право защищают творчество авторов; использование таких материалов может требовать разрешения или лицензии. Лицензии открытого исходного кода и Creative Commons позволяют авторам делиться своими работами на оговоренных условиях.
    • Плагиат – использование чужих работ как своих собственных – неэтичен и часто незаконен.
    • Сбор и использование персональных данных поднимают вопросы конфиденциальности касательно согласия и злоупотреблений.

    Три термина «открытый», которые не являются одним и тем же

    Термин Что он означает
    Открытый исходный код программы, которые бесплатно предоставляются и могут быть перераспределены и изменены кем угодно. Лицензия явно предоставляет эти права — бесплатность не то же самое, что открытый исходный код, а программа, которую нельзя изменить, не является открытым исходным кодом.
    Открытый доступ исследования и другой контент, доступный в интернете бесплатно, поэтому читателю не нужна подписка. Это ни о чем не говорит в плане права на изменение.
    Creative Commons семейство лицензий, которые автор применяет к своей работе, чтобы заранее предоставить конкретные разрешения — например, «вы можете использовать это, указав авторство» или «вы можете использовать это, но не в коммерческих целях».

    Все три способа предоставляют права, которыми автор обладает по умолчанию согласно авторскому праву. Именно поэтому они важны для экзамена: авторское право возникает автоматически, поэтому всё, что не лицензировано явно, ограничено, и для его использования требуется разрешение.

    Техническая возможность чего-либо не делает это действие законным или этичным.

    Что записывается во время вашего просмотра веб-страниц

    Два пути сбора данных, упомянутых в CED, и ни один из них не требует от вас ввода текста:

    • Веб-сайты могут регистрировать и хранить историю лиц, просматривавших их страницы — какие именно страницы, когда, сколько времени и с какого устройства.
    • Поисковые системы могут использовать вашу историю поиска, чтобы предлагать веб-сайты, а также для продажи таргетированной рекламы: реклама следует за поисковым запросом, поэтому товар, найденный один раз, может появляться на протяжении нескольких недель.

    Ни один из них не является злонамеренным по своей природе, и оба являются механизмом работы сервисов, которые люди считают полезными. Суть, которую проверяют экзамены, заключается в том, что данные, собранные для одной цели, могут быть объединены и использованы для другой, часто без ведома человека о том, что он дал на это согласие.

    Vocabulary · ⁨Словарь⁩ Train · ⁨Тренировать⁩
    English Русский
    Creative Commons/kriːˈeɪtɪv ˈkɒmənz/ Creative Commons
    Personally identifiable information (PII)/ˈpɜːsənəli aɪˈdentɪfaɪəbl ˌɪnfəˈmeɪʃn/ Персонально идентифицируемая информация (PII)
    identity theft/aɪˈdentɪti θeft/ кража личности
    phishing/ˈfɪʃɪŋ/ фишинг
    malware/ˈmælweə/ вредоносное ПО
    multi-factor authentication/ˈmʌlti ˈfæktə ɔːˌθentɪˈkeɪʃn/ многофакторная аутентификация
    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 Разнородные персональные данные, такие как геолокация, файлы cookie и история браузера, могут агрегироваться для формирования знаний о человеке.
    • IOC-2.A.8 Lично идентифицируемая информация (PII) и другая информация, размещенная в интернете, могут использоваться для улучшения онлайнового опыта пользователя.
    • IOC-2.A.9 PII, хранящаяся в интернете, может использоваться для упрощения процесса онлайн-покупок.
    • IOC-2.A.10 Коммерческая и государственная систематизация информации может быть использована во вред, если игнорируются вопросы конфиденциальности и другие меры защиты.
    • IOC-2.A.11 Информация, размещенная в интернете, может быть использована не так, как планировалось, и нанести вред. Например, электронное письмо может быть переслано, твиты можно ретвитить, а посты в социальных сетях могут увидеть потенциальные работодатели.
    • IOC-2.A.12 Lично идентифицируемая информация может использоваться для преследования человека, кражи его личности или содействия планированию других преступных действий.
    • IOC-2.A.13 После того как информация помещена в интернет, ее трудно удалить.
    • IOC-2.A.14 Программы могут собирать ваше местоположение и записывать, где вы были, как вы туда попали и сколько времени находились в определенном месте.
    • IOC-2.A.15 Информация, опубликованная в сервисах социальных сетей, может быть использована другими людьми. Совмещение информации из социальных сетей и других источников может помочь вывести личную информацию о вас.

    Цель обучения IOC-2.B: Объяснить, как можно защитить ресурсы вычислительных технологий и как они могут быть использованы неправомерно. [Навык 5.E]

    • IOC-2.B.1 Меры аутентификации защищают устройства и информацию от несанкционированного доступа. К таким мерам относятся сложные пароли и многофакторная аутентификация.
    • IOC-2.B.2 Надежный пароль — это то, что пользователю легко запомнить, но что другому человеку будет сложно угадать, зная эту информацию о пользователе.
    • IOC-2.B.3 Многофакторная аутентификация — это метод контроля доступа к компьютеру, при котором пользователю предоставляется доступ только после успешного предоставления нескольких отдельных доказательств механизму аутентификации, обычно как минимум двух из следующих категорий: знание (то, что он знает), владение (то, чем он владеет) и присущность (то, кто он есть).
    • IOC-2.B.4 Многофакторная аутентификация требует как минимум двух шагов для разблокировки защищенной информации; каждый шаг добавляет новый уровень безопасности, который необходимо преодолеть для получения несанкционированного доступа.
    • IOC-2.B.5 Шифрование — это процесс кодирования данных для предотвращения несанкционированного доступа. Дешифрование — это процесс декодирования данных. Два распространенных подхода к шифрованию:
      • Шифрование с симметричным ключом использует один ключ как для шифрования, так и для дешифрования.
      • Шифрование с открытым ключом сочетает открытый ключ для шифрования и закрытый ключ для дешифрования. Отправителю не нужен закрытый ключ получателя для шифрования сообщения, но закрытый ключ получателя необходим для его дешифрования.
      • Исключающее утверждение (EK IOC-2.B.5): Конкретные математические процедуры шифрования и дешифрования выходят за рамки данной программы и экзамена AP.
    • IOC-2.B.6 Удостоверяющие центры выпускают цифровые сертификаты, подтверждающие владение ключами шифрования, используемыми при безопасных коммуникациях, и основаны на модели доверия.
    • IOC-2.B.7 Программное обеспечение для сканирования компьютерных вирусов и вредоносного ПО может помочь защитить вычислительную систему от заражения.
    • IOC-2.B.8 Компьютерный вирус — это вредоносная программа, способная копировать себя и получать доступ к компьютеру unauthorized способом. Компьютерные вирусы часто прикрепляются к легитимным программам и начинают работать независимо на компьютере.
    • IOC-2.B.9 Вредоносное программное обеспечение (malware) — это программное обеспечение, предназначенное для нанесения ущерба вычислительной системе или захвата частичного контроля над её работой.
    • IOC-2.B.10 Все реальные системы содержат ошибки или конструктивные недостатки, которые могут быть использованы для их компрометации. Регулярные обновления программного обеспечения помогают устранять ошибки, которые могли бы привести к компрометации вычислительной системы.
    • IOC-2.B.11 Пользователи могут контролировать разрешения, предоставляемые программам для сбора информации о пользователях. Пользователям следует проверять настройки разрешений программ для защиты своей конфиденциальности.

    Цель обучения IOC-2.C: Объяснить, как осуществляется несанкционированный доступ к вычислительным ресурсам. [Навык 5.E]

    • IOC-2.C.1 Фишинг — это техника, направленная на обман пользователя с целью получения им персональных данных. Эти данные могут затем быть использованы для доступа к чувствительным онлайн-ресурсам, таким как банковские счета и электронная почта.
    • IOC-2.C.2 Клавиатурный трекер (keylogging) — использование программы для записи каждого нажатия клавиш пользователем компьютера с целью получения мошеннического доступа к паролям и другой конфиденциальной информации.
    • IOC-2.C.3 Данные, передаваемые по публичным сетям, могут быть перехвачены, проанализированы и изменены. Одним из способов этого является через фиктивный точку доступа (rogue access point).
    • IOC-2.C.4 Фиктивная точка доступа (rogue access point) — это беспроводная точка доступа, предоставляющая unauthorized доступ к защищенным сетям.
    • IOC-2.C.5 Вредоносная ссылка может быть замаскирована на веб-странице или в сообщении электронной почты.
    • IOC-2.C.6 Невостребованные электронные письма, вложения, ссылки и формы в письмах могут быть использованы для компрометации безопасности вычислительной системы. Они могут исходить от неизвестных отправителей или от известных отправителей, чья безопасность была нарушена.
    • IOC-2.C.7 Недобросовестные (часто бесплатные) загрузки с сайтов freeware или shareware могут содержать вредоносное программное обеспечение.

    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) (имя, адрес, номера удостоверений) следует передавать осторожно, поскольку она может быть misuse'ом для кражи личности.
    • Угрозы включают фишинг (обман с целью раскрытия информации), вредоносное ПО и слабые пароли.
    • Вредоносная ссылка может быть замаскирована на веб-странице или в электронном письме: видимый вами текст и фактический адрес перехода различны, поэтому ссылка с текстом www.yourbank.com может вести куда угодно. Наведите курсор, чтобы увидеть реальную цель перед нажатием, и проявляйте наибольшую осторожность со ссылками, приходящими неожиданно и создающими срочность.
    • Меры защиты включают надежные, уникальные пароли, множественную проверку подлинности, шифрование (скрытие данных так, чтобы их могли прочитать только авторизованные лица) и обновление программного обеспечения.

    Шифрование является основным инструментом сохранения конфиденциальности данных при передаче и хранении. Быть ответственным пользователем компьютера означает защищать информацию как свою, так и чужую.

    Навык для экзамена: уметь выявлять положительные и отрицательные последствия данного новшества, объяснять риски конфиденциальности или безопасности и называть практики безопасных вычислений, устраняющие их.

    Разобранный пример. Алгоритм найма обучается на прошлых кандидатах компании, которые преимущественно принадлежали к одной группе, а затем отклоняет квалифицированных заявителей из других групп. Назовите проблему и её причину: это вычислительное предвзятие, вызванное предвзятыми обучающими данными — модель усвоила историческую закономерность вместо справедливого правила. Полный ответ на экзамене указывает вред (квалифицированные люди несправедливо отклоняются) и причину (предвзятие исходит из данных, а не из кода).

    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 Русский
    encryption/enˈkrɪpʃn/ шифрование
    open source/ˈəʊpən sɔːs/ open source
    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, конфиденциальность, безопасность и алгоритмическое предвзятие.
    • Объясните, как ** crowd sourcing** (crowdsourcing) и большие наборы данных создают ценность и порождают новые риски.
    • Различайте цифровое неравенство (доступ) и предвзятость (справедливость) и приводите конкретный пример каждого.
    • Подкрепите каждое утверждение конкретным новшеством и эффектом, как требует письменный ответ.
    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/ открытый доступ

Log in or create account · ⁨Войти или создать аккаунт⁩

IGCSE, A-Level & AP