Saltar al contenido
Temas

AP Principios de Ciencias de la Computación

Consejos

AP Computer Science Principles es el curso de computación amplio: los datos y su representación, algoritmos y abstracción, programación, Internet y el impacto de la computación en la sociedad. El código se escribe en cualquier lenguaje, y el examen utiliza un pseudocódigo neutro del lenguaje, por lo que los conceptos son más importantes que la sintaxis.

La evaluación tiene dos partes. La Tarea de Rendimiento Creativa es un programa que construyes y documentas durante el tiempo de clase; el examen final del curso es de opción múltiple.

Las respuestas escritas sobre tu propio programa son donde se pierden puntos: te piden explicar un algoritmo que escribiste y justificar una abstracción que elegiste, con precisión, con tus propias palabras.

Las notas cubren las ideas principales desde los datos hasta el impacto, con ejemplos de código que puedes ejecutar aquí. La biblioteca contiene las preguntas de muestra del examen, y hay notas sobre la Tarea de Rendimiento Creativa, la cual se evalúa en base a tu propio programa y respuestas escritas, no solo en el examen.

  • 1

    Desarrollo Creativo

    Ver lección
    1.1

    Colaboración

    Syllabus

    Comprensión duradera (CRD-1): La incorporación de múltiples perspectivas a través de la colaboración mejora las innovaciones computacionales a medida que se desarrollan.

    Objetivo de aprendizaje CRD-1.A: Explicar cómo las innovaciones computacionales se mejoran mediante la colaboración. [Habilidad 1.C]

    • CRD-1.A.1 Una innovación computacional incluye un programa como parte integral de su función.
    • CRD-1.A.2 Una innovación computacional puede ser física (p. ej., un automóvil autónomo), software computacional no físico (p. ej., software de edición de imágenes) o un concepto computacional no físico (p. ej., comercio electrónico).
    • CRD-1.A.3 La colaboración efectiva produce una innovación computacional que refleja la diversidad de talentos y perspectivas de quienes la diseñaron.
    • CRD-1.A.4 La colaboración que incluye diversas perspectivas ayuda a evitar sesgos en el desarrollo de innovaciones computacionales.
    • CRD-1.A.5 La consulta y la comunicación con los usuarios son aspectos importantes del desarrollo de innovaciones computacionales.
    • CRD-1.A.6 La información recopilada de posibles usuarios puede utilizarse para comprender el propósito de un programa desde diversas perspectivas y para desarrollar un programa que incorpore plenamente estas perspectivas.

    Objetivo de aprendizaje CRD-1.B: Explicar cómo las innovaciones computacionales son desarrolladas por grupos de personas. [Habilidad 1.C]

    • CRD-1.B.1 Las herramientas en línea apoyan la colaboración al permitir que los programadores compartan e intercambien retroalimentación sobre ideas y documentos.
    • CRD-1.B.2 Modelos comunes como la programación en parejas existen para facilitar la colaboración.

    Objetivo de aprendizaje CRD-1.C: Demostrar habilidades interpersonales efectivas durante la colaboración. [Habilidad 1.C]

    • CRD-1.C.1 Los equipos colaborativos efectivos practican habilidades interpersonales, incluidas, entre otras:
      • comunicación
      • construcción de consensos
      • resolución de conflictos
      • negociación

    Fuente: College Board AP Course and Exam Description

    Un rompecabezas en progreso: la colaboración y el diseño modular unen las piezas para formar la solución
    Un rompecabezas en progreso: la colaboración y el diseño modular unen las piezas para formar la solución

    La informática es una actividad colaborativa. Trabajar en equipo aporta más perspectivas, detecta más errores y produce mejores programas que trabajar solo. Una buena colaboración utiliza la construcción de consensos, la comunicación clara y las fortalezas de cada miembro. La programación en parejas – dos personas en un mismo ordenador, una escribiendo código y otra revisándolo – es una práctica habitual. En el examen, debes ser capaz de explicar cómo la colaboración mejoró un programa (más ideas, menos fallos, pruebas más amplias).

    1.2

    Función y propósito del programa

    Syllabus

    Comprensión duradera (CRD-2): Los desarrolladores crean e innovan mediante un proceso de diseño iterativo centrado en el usuario, que incorpora ciclos de implementación y retroalimentación, y que deja amplio margen para la experimentación y la asunción de riesgos.

    Objetivo de aprendizaje CRD-2.A: Describir el propósito de una innovación computacional. [Habilidad 1.A]

    • CRD-2.A.1 El propósito de las innovaciones computacionales es resolver problemas o perseguir intereses a través de la expresión creativa.
    • CRD-2.A.2 La comprensión del propósito de una innovación computacional proporciona a los desarrolladores una mayor capacidad para crear dicha innovación.

    Objetivo de aprendizaje CRD-2.B: Explicar cómo funciona un programa o un segmento de código. [Habilidad 4.A]

    • CRD-2.B.1 Un programa es un conjunto de instrucciones de programa que realiza una tarea específica cuando es ejecutado por una computadora. A menudo se hace referencia a un programa como software.
    • CRD-2.B.2 Un segmento de código es un conjunto de instrucciones de programa que forma parte de un programa.
    • CRD-2.B.3 Un programa debe funcionar correctamente ante una variedad de entradas y situaciones.
    • CRD-2.B.4 El comportamiento de un programa es la manera en que opera durante su ejecución y suele describirse según la interacción del usuario con él.
    • CRD-2.B.5 Un programa puede describirse de forma general indicando lo que hace, o con más detalle especificando tanto lo que hace el programa como cómo las instrucciones logran esa función.

    Objetivo de aprendizaje CRD-2.C: Identificar la(s) entrada(s) de un programa. [Habilidad 3.A]

    • CRD-2.C.1 Las entradas del programa son datos enviados a una computadora para ser procesados por un programa. La entrada puede presentarse en diversas formas, como táctil, auditiva, visual o textual.
    • CRD-2.C.2 Un evento está asociado a una acción y suministra datos de entrada a un programa.
    • CRD-2.C.3 Los eventos pueden generarse al presionar una tecla, hacer clic con el mouse, iniciar un programa u ocurrir cualquier otra acción definida que afecte el flujo de ejecución.
    • CRD-2.C.4 Las entradas suelen afectar la salida producida por un programa.
    • CRD-2.C.5 En la programación basada en eventos, las instrucciones del programa se ejecutan cuando son activadas, en lugar de hacerlo mediante un flujo de control secuencial.
    • CRD-2.C.6 La entrada puede provenir de un usuario o de otros programas.

    Objetivo de aprendizaje CRD-2.D: Identificar la(s) salida(s) producidas por un programa. [Habilidad 3.A]

    • CRD-2.D.1 Las salidas del programa son todos los datos enviados desde un programa a un dispositivo. La salida del programa puede presentarse en diversas formas, como táctil, auditiva, visual o textual.
    • CRD-2.D.2 La salida del programa generalmente se basa en la entrada del programa o en su estado previo (p. ej., valores internos).

    Fuente: College Board AP Course and Exam Description

    Cada programa se escribe con un propósito: resuelve un problema o persigue un interés. Un programa toma entrada, la procesa y produce salida. Las entradas pueden provenir de un usuario, un dispositivo, un archivo u otro programa; las salidas pueden ser visuales, auditivas, textuales o señales enviadas a un dispositivo. Ser capaz de enunciar el propósito de un programa y describir claramente sus entradas y salidas es una habilidad fundamental (y parte de la tarea de rendimiento Create).

    Cada programa se descompone en entrada, procesamiento y salida
    Cada programa se descompone en entrada, procesamiento y salida
    Cada programa sigue el modelo de entrada-procesamiento-salida
    Cada programa sigue el modelo de entrada-procesamiento-salida
    Explorar

    Explorar el modelo entrada → procesamiento → salida

    Recorrer el modelo IPO. Todo programa toma una entrada, realiza un procesamiento siguiendo sus instrucciones y luego produce una salida: rastrear un ejemplo de aplicación meteorológica a lo largo del proceso.

    1.3

    Diseño y desarrollo de programas

    Syllabus

    Comprensión perdurable (CRD-2): Los desarrolladores crean e innovan mediante un proceso de diseño iterativo centrado en el usuario, que incorpora ciclos de implementación y retroalimentación, y que deja amplio margen para la experimentación y la asunción de riesgos.

    Objetivo de aprendizaje CRD-2.E: Desarrollar un programa utilizando un proceso de desarrollo. [Habilidad 1.B]

    • CRD-2.E.1 Un proceso de desarrollo puede ser ordenado e intencional, o tener una naturaleza exploratoria.
    • CRD-2.E.2 Existen múltiples procesos de desarrollo. Las siguientes fases se utilizan comúnmente al desarrollar un programa:
      • investigación y reflexión
      • diseño
      • prototipado
      • prueba
    • CRD-2.E.3 Un proceso de desarrollo iterativo requiere refinamiento y revisión basados en la retroalimentación, las pruebas o la reflexión a lo largo del proceso. Esto puede implicar volver a fases anteriores del proceso.
    • CRD-2.E.4 Un proceso de desarrollo incremental es aquel que divide el problema en partes más pequeñas y asegura que cada parte funcione correctamente antes de integrarla al conjunto completo.

    Objetivo de aprendizaje CRD-2.F: Diseñar un programa y su interfaz de usuario. [Habilidad 1.B]

    • CRD-2.F.1 El diseño de un programa incluye la investigación para determinar sus requisitos.
    • CRD-2.F.2 La investigación en un proceso de desarrollo es útil para comprender e identificar las restricciones del programa, así como las preocupaciones e intereses de las personas que lo utilizarán.
    • CRD-2.F.3 Algunas formas en que se puede realizar la investigación son las siguientes:
      • recopilación de datos mediante encuestas
      • pruebas con usuarios
      • entrevistas
      • observaciones directas
    • CRD-2.F.4 Los requisitos de un programa describen cómo funciona y pueden incluir una descripción de las interacciones con el usuario que el programa debe proporcionar.
    • CRD-2.F.5 La especificación de un programa define los requisitos del mismo.
    • CRD-2.F.6 En un proceso de desarrollo, la fase de diseño describe cómo lograr la especificación dada del programa.
    • CRD-2.F.7 La fase de diseño de un programa puede incluir:
      • lluvia de ideas
      • planificación y guion gráfico
      • organización del programa en módulos y componentes funcionales
      • creación de diagramas que representen los diseños de la interfaz de usuario
      • desarrollo de una estrategia de pruebas para el programa

    Objetivo de aprendizaje CRD-2.G: Describir el propósito de un segmento de código o de un programa escribiendo documentación. [Habilidad 4.A]

    • CRD-2.G.1 La documentación del programa es una descripción escrita de la función de un segmento de código, evento, procedimiento o programa y de cómo fue desarrollado.
    • CRD-2.G.2 Los comentarios son una forma de documentación del programa escrita dentro del mismo para ser leída por personas y no afectan el funcionamiento del programa.
    • CRD-2.G.3 Los programadores deben documentar un programa a lo largo de su desarrollo.
    • CRD-2.G.4 La documentación del programa ayuda a desarrollar y mantener programas correctos cuando se trabaja individualmente o en entornos de programación colaborativa.
    • CRD-2.G.5 No todos los entornos de programación admiten comentarios, por lo que pueden requerirse otros métodos de documentación.

    Objetivo de aprendizaje CRD-2.H: Reconocer segmentos de código utilizados de otras fuentes. [Habilidad 1.C]

    • CRD-2.H.1 Es importante reconocer cualquier segmento de código que haya sido desarrollado de manera colaborativa o por otra fuente.
    • CRD-2.H.2 El reconocimiento de un segmento de código escrito por otra persona y utilizado en un programa puede realizarse en la documentación del programa. Dicho reconocimiento debe incluir el origen o el nombre del autor original.

    Fuente: College Board AP Course and Exam Description

    Un programador depurando en una estación de trabajo con múltiples monitores — diseño e prueba iterativos
    Un programador depurando en una estación de trabajo con múltiples monitores — diseño e prueba iterativos

    Los programas se construyen mediante un proceso iterativo, no en línea recta: investigar el problema y los usuarios, diseñar (a menudo con un diagrama o plan escrito), implementar en código y probar – luego repetir. Un problema grande se divide en partes más pequeñas (descomposición). Los comentarios y los nombres claros documentan el diseño para que otros (y tu yo futuro) puedan entenderlo. El desarrollo es incremental: construir y probar una pequeña pieza, luego añadir la siguiente.

    Las etapas del desarrollo de programas, donde la prueba retroalimenta para corregir y refinar
    Las etapas del desarrollo de programas, donde la prueba retroalimenta para corregir y refinar
    El software se construye mediante un proceso de desarrollo iterativo e incremental
    El software se construye mediante un proceso de desarrollo iterativo e incremental

    Investigar qué necesitan realmente los usuarios

    Antes de escribir cualquier código, el desarrollador investiga el problema y las personas que usarán el programa. Tres formas de hacerlo:

    • encuestas enviadas a posibles usuarios, que recopilan datos de muchas personas rápidamente;
    • entrevistas y observación directa de los usuarios realizando la tarea manualmente;
    • estudio de soluciones existentes para ver qué funciona ya y qué frustra a la gente.

    Los hallazgos se convierten en un diseño. Dos artefactos lo logran: una lista de requisitos del programa que dice exactamente qué debe hacer el programa, y diagramas que representan la interfaz de usuario – bocetos que muestran qué controles aparecen dónde y qué hace cada uno al usarse. Diseñar la interfaz en papel primero es más barato que descubrir tras la codificación que los botones están en el lugar equivocado.

    Eventos y programas que esperan

    No todos los programas se ejecutan directamente de arriba hacia abajo. Un evento se genera cuando se presiona una tecla, se hace clic con el ratón, se inicia un programa u ocurre cualquier otra acción definida, y un evento cambia el flujo de ejecución: el programa pausa lo que estaba haciendo y ejecuta el código asociado a ese evento, llamado manejador de eventos.

    Por eso un programa con interfaz gráfica puede parecer que no está haciendo nada: está esperando el próximo evento. El orden en que llegan esos eventos lo decide el usuario, no el programador, por lo que el mismo programa puede ejecutar sus bloques en un orden diferente cada vez que se usa.

    Explorar

    Recorrer el proceso de desarrollo iterativo

    El desarrollo es iterativo: repites las etapas, mejorando el programa un poco en cada pasada. Recorre el ciclo y observa que vuelve al inicio en lugar de terminar después de una sola ejecución.

    Vocabulario Entrenar
    Inglés Chino Pinyin
    collaborative/kəˈlæbrətɪv/ 协作 xié zuò
    Pair programming/peə ˈprəʊɡræmɪŋ/ 结对编程 jié duì biān chéng
    input/ˈɪnpʊt/ 输入 shū rù
    output/ˈaʊtpʊt/ 输出 shū chū
    iterative/ˈɪtərətɪv/ 迭代 dié dài
    decomposition/ˌdiːkɒmpəˈzɪʃn/ 分解 fēn jiě
    Comments/ˈkɒments/ 注释 zhù shì
    surveys/ˈsɜːveɪz/ 调查问卷 diào chá wèn juǎn
    diagrams representing the layout of the user interface 用户界面 yòng hù jiè miàn
    event/ɪˈvent/ 事件 shì jiàn
    event handler/ɪˈvent ˈhændlə/ 事件处理程序 shì jiàn chǔ lǐ chéng xù
    debugging/ˈdiːbʌɡɪŋ/ 调试 tiáo shì
    syntax error/ˈsɪntæks ˈerə/ 语法错误 yǔ fǎ cuò wù
    runtime error/ˈrʌntaɪm ˈerə/ 运行时错误 yùn xíng shí cuò wù
    logic error/ˈlɒdʒɪk ˈerə/ 逻辑错误 luó jí cuò wù
    1.4

    Identificación y corrección de errores

    Syllabus

    Comprensión perdurable (CRD-2): Los desarrolladores crean e innovan mediante un proceso de diseño iterativo centrado en el usuario, que integra ciclos de implementación y retroalimentación, y que deja amplio margen para la experimentación y la asunción de riesgos.

    Objetivo de aprendizaje CRD-2.I: Para los errores en un algoritmo o programa: a. Identificar el error. [Habilidad 4.C] b. Corregir el error. [Habilidad 4.C]

    • CRD-2.I.1 Un error de lógica es un fallo en el algoritmo o programa que provoca que este se comporte de manera incorrecta o inesperada.
    • CRD-2.I.2 Un error de sintaxis es un fallo en el programa donde no se cumplen las reglas del lenguaje de programación.
    • CRD-2.I.3 Un error en tiempo de ejecución es un fallo en el programa que ocurre durante la ejecución de este. Los lenguajes de programación definen sus propios errores en tiempo de ejecución.
    • CRD-2.I.4 Un error de desbordamiento es un error que ocurre cuando una computadora intenta manejar un número que está fuera del rango de valores definido.
    • CRD-2.I.5 Las siguientes son formas efectivas de encontrar y corregir errores:
      • casos de prueba
      • trazado manual
      • visualizaciones
      • depuradores
      • añadir statement(s) de salida adicionales

    Objetivo de aprendizaje CRD-2.J: Identificar entradas y salidas esperadas o comportamientos correspondientes que puedan utilizarse para verificar la corrección de un algoritmo o programa. [Habilidad 4.C]

    • CRD-2.J.1 En el proceso de desarrollo, las pruebas utilizan entradas definidas para asegurar que un algoritmo o programa produce los resultados esperados. Los programadores usan los resultados de las pruebas para revisar sus algoritmos o programas.
    • CRD-2.J.2 Las entradas definidas utilizadas para probar un programa deben demostrar los diferentes resultados esperados que están en o justo más allá de los extremos (mínimo y máximo) de los datos de entrada.
    • CRD-2.J.3 Se necesitan requisitos del programa para identificar las entradas definidas apropiadas para las pruebas.

    Fuente: College Board AP Course and Exam Description

    Un error (bug) es un fallo en un programa; la depuración es encontrarlo y corregirlo. Tres tipos:

    Una tabla de trazado registra el valor de cada variable mientras se ejecuta el programa, para encontrar errores
    Una tabla de trazado registra el valor de cada variable mientras se ejecuta el programa, para encontrar errores
    • un error de sintaxis viola las reglas del lenguaje, por lo que el programa no se ejecutará;
    • un error de tiempo de ejecución provoca un fallo del programa mientras se ejecuta (p. ej., división por cero);
    • un error de lógica permite que se ejecute pero da un resultado incorrecto.

    Encuentra errores mediante la prueba con diferentes entradas, añadiendo instrucciones de impresión para ver valores y rastreando el código manualmente. Elige las entradas de prueba deliberadamente: deben demostrar los diferentes resultados esperados en o justo más allá de los extremos – los valores mínimo y máximo que el programa debería aceptar, y un valor justo fuera de cada uno de ellos. Un programa que funciona bien con datos ordinarios a menudo falla con una lista vacía, un cero o un valor una posición después del final de un rango, por lo que esas son las entradas que vale la pena probar primero. Corregir un error a la vez y volver a probar es el método fiable.

    Habilidad para el examen: ser capaz de nombrar el tipo de error y describir una estrategia de prueba que lo detectaría – un tema recurrente tanto en preguntas de opción múltiple como en tareas Create.

    Tres tipos de error de programación: sintaxis, lógica y tiempo de ejecución
    Tres tipos de error de programación: sintaxis, lógica y tiempo de ejecución

    Ejemplo resuelto. Un programa diseñado para imprimir el promedio de dos números en su lugar ejecuta avg = a + b / 2. Al rastrear el orden de las operaciones, / se ejecuta antes que +, por lo que calcula $a+\tfrac{b}{2}$ en lugar del promedio. Añade paréntesis para corregirlo: avg = (a + b) / 2. La prueba con $a=4,\ b=6$ confirma la corrección – la línea con error da $4+3=7$, la línea corregida da $\tfrac{10}{2}=5$. Probar con entradas conocidas es exactamente cómo encuentras y confirmas un error de lógica.

    Explorar

    Rastrear la lógica del juego de adivinanzas y detectar un error lógico

    Arrastra el número de prueba y observa qué rama se ejecuta. Un error lógico enviaría el mismo número por la rama incorrecta: el programa sigue funcionando, pero muestra el mensaje equivocado. El número secreto aquí es 50.

    1.4

    Consejos para el examen

    • Gran parte de CSP se evalúa a través de las tareas de rendimiento Create y escritas – explica tu razonamiento con claridad, no solo tu resultado.
    • Conoce los beneficios de la colaboración y cómo las perspectivas diversas reducen el sesgo en un programa.
    • Usa vocabulario preciso (desarrollo iterativo, requisitos del programa) cuando describes un proceso de diseño.
    • Ofrece y recibe comentarios de manera constructiva; atribuye mérito a los colaboradores y fuentes.
    • Divide un problema grande en módulos más pequeños que un equipo pueda construir en paralelo.
  • 2

    Datos

    Ver lección
    2.1

    Números Binarios

    Syllabus

    Comprensión Duradera (DAT-1): La forma en que una computadora representa internamente los datos es diferente a la manera en que los datos son interpretados y mostrados al usuario. Se utilizan programas para traducir los datos a una representación más fácil de entender para las personas.

    Objetivo de Aprendizaje DAT-1.A: Explicar cómo los datos pueden representarse utilizando bits. [Habilidad 3.C]

    • DAT-1.A.1 Los valores de datos pueden almacenarse en variables, listas de elementos o constantes independientes y pueden pasarse como entrada (o salida) a procedimientos.
    • DAT-1.A.2 Los dispositivos informáticos representan los datos digitalmente, lo que significa que los componentes de nivel más bajo de cualquier valor son bits.
    • DAT-1.A.3 Bit es una abreviatura de dígito binario y puede ser 0 o 1.
    • DAT-1.A.4 Un byte tiene 8 bits.
    • DAT-1.A.5 Abstracción es el proceso de reducir la complejidad centrándose en la idea principal. Al ocultar detalles irrelevantes para la pregunta en cuestión y agrupar detalles relacionados y útiles, la abstracción reduce la complejidad y permite centrarse en la idea.
    • DAT-1.A.6 Los bits se agrupan para representar abstracciones. Estas abstracciones incluyen, pero no se limitan a, números, caracteres y colores.
    • DAT-1.A.7 La misma secuencia de bits puede representar diferentes tipos de datos en distintos contextos.
    • DAT-1.A.8 Los datos analógicos tienen valores que cambian suavemente, en lugar de en intervalos discretos, a lo largo del tiempo. Algunos ejemplos de datos analógicos incluyen el tono y el volumen de la música, los colores de un cuadro o la posición de un corredor durante una carrera.
    • DAT-1.A.9 El uso de datos digitales para aproximar datos analógicos del mundo real es un ejemplo de abstracción.
    • DAT-1.A.10 Los datos analógicos pueden aproximarse digitalmente mediante una técnica de muestreo, que consiste en medir los valores de la señal analógica en intervalos regulares llamados muestras. Las muestras se miden para determinar los bits exactos requeridos para almacenar cada muestra.

    Objetivo de Aprendizaje DAT-1.B: Explicar las consecuencias del uso de bits para representar datos. [Habilidad 1.D]

    • DAT-1.B.1 En muchos lenguajes de programación, los enteros se representan con un número fijo de bits, lo que limita el rango de valores enteros y las operaciones matemáticas sobre esos valores. Esta limitación puede resultar en desbordamiento u otros errores.
    • DAT-1.B.2 Otros lenguajes de programación proporcionan una abstracción mediante la cual el tamaño de los enteros representables está limitado únicamente por el tamaño de la memoria de la computadora; este es el caso para el lenguaje definido en la hoja de referencia del examen.
    • DAT-1.B.3 En los lenguajes de programación, el número fijo de bits utilizado para representar números reales limita el rango y las operaciones matemáticas sobre estos valores; esta limitación puede dar lugar a errores de redondeo u otros errores. Algunos números reales se representan como aproximaciones en el almacenamiento de la computadora.
      • Enunciado de exclusión: Las limitaciones específicas del rango para números reales están fuera del alcance de este curso y del Examen AP.

    Objetivo de Aprendizaje DAT-1.C: Para los números binarios: a. Calcular el equivalente binario (base 2) de un entero positivo (base 10) y viceversa. [Habilidad 2.B] b. Comparar y ordenar números binarios. [Habilidad 2.B]

    • DAT-1.C.1 Las bases numéricas, incluidas la binaria y la decimal, se utilizan para representar datos.
    • DAT-1.C.2 La binaria (base 2) utiliza solo combinaciones de los dígitos cero y uno.
    • DAT-1.C.3 La decimal (base 10) utiliza solo combinaciones de los dígitos $0 - 9$.
    • DAT-1.C.4 Al igual que con la decimal, la posición de un dígito en la secuencia binaria determina su valor numérico. El valor numérico es igual al valor del bit (0 o 1) multiplicado por el valor posicional de su posición.
    • DAT-1.C.5 El valor posicional de cada posición se determina elevando la base a la potencia de la posición. Las posiciones se numeran comenzando desde la posición más a la derecha con 0 e incrementándose en 1 para cada posición subsiguiente hacia la izquierda.

    Fuente: College Board AP Course and Exam Description

    Dígitos binarios en una pantalla — todos los datos digitales se almacenan finalmente como 0s y 1s
    Dígitos binarios en una pantalla — todos los datos digitales se almacenan finalmente como 0s y 1s

    Las computadoras almacenan todo como bits (un solo dígito, ya sea 0 o 1). Un grupo de 8 bits forma un byte. Los números se almacenan en binario (base 2), donde cada posición representa una potencia de dos ($1, 2, 4, 8, 16, \dots$) en lugar de las potencias de diez del sistema decimal. Por ejemplo, el binario 1011 equivale a $8+2+1=11$.

    Tabla de valores posicionales de 8 bits: los 1s están debajo de los valores que suman al número total
    Tabla de valores posicionales de 8 bits: los 1s están debajo de los valores que suman al número total

    Ejemplo resuelto. Para convertir el binario 1101 a decimal, escribe los valores posicionales 8 4 2 1 debajo de los bits 1 1 0 1 y suma aquellos correspondientes a un 1: $8+4+0+1=13$. A la inversa, para convertir 19 a binario, resta la mayor potencia de dos posible: $19-16=3$, luego $3-2=1$, y finalmente $1-1=0$. Así, los bits se ubican en las posiciones de 16, 2 y 1 $\rightarrow$ 10011 (comprobación: $16+2+1=19$).

    Debido a que una computadora tiene un número finito de bits, solo puede representar un rango limitado de valores. Esto provoca dos efectos evaluados en el examen:

    • Error de desbordamiento (overflow): un número demasiado grande para los bits disponibles no puede almacenarse correctamente.
    • Error de redondeo: los números con decimales (números reales) solo pueden ser aproximados, ya que infinitos valores reales deben mapearse sobre patrones de bits finitos.

    Todos los datos —texto, imágenes, sonido— se codifican finalmente en binario. Una imagen es una cuadrícula de píxeles, cada uno almacenado como números que representan sus colores; el sonido se almacena como números muestreados muchas veces por segundo.

    Explorar

    Convertir entre binario y decimal

    Las computadoras almacenan números en binario (base 2). Cada bit representa una potencia de dos; suma los valores posicionales de los bits en 1 para leer el número decimal.

    Vocabulario Entrenar
    Inglés Chino Pinyin
    bits/bɪts/ 位 wèi
    byte/baɪt/ 字节 zì jié
    binary/ˈbaɪnəri/ 二进制 èr jìn zhì
    decimal/ˈdesɪml/ 十进制 shí jìn zhì
    Overflow error/ˌəʊvəˈfləʊ ˈerə/ 溢出错误 yì chū cuò wù
    Round-off (rounding) error/raʊnd ɒf ˈerə/ 舍入错误 shě rù cuò wù
    pixels/ˈpɪkslz/ 像素 xiàng sù
    Ver lección
    2.2

    Compresión de Datos

    Syllabus

    Comprensión duradera (DAT-1): La forma en que una computadora representa internamente los datos es diferente a la manera en que los datos son interpretados y mostrados al usuario. Se utilizan programas para traducir los datos a una representación más fácil de entender para las personas.

    Objetivo de aprendizaje DAT-1.D: Comparar algoritmos de compresión de datos para determinar cuál es el mejor en un contexto particular. [Habilidad 1.D]

    • DAT-1.D.1 La compresión de datos puede reducir el tamaño (número de bits) de los datos transmitidos o almacenados.
    • DAT-1.D.2 Menos bits no significan necesariamente menos información.
    • DAT-1.D.3 La cantidad de reducción de tamaño mediante la compresión depende tanto de la cantidad de redundancia en la representación original de los datos como del algoritmo de compresión aplicado.
    • DAT-1.D.4 Los algoritmos de compresión de datos sin pérdida pueden reducir generalmente el número de bits almacenados o transmitidos, garantizando al mismo tiempo la reconstrucción completa de los datos originales.
    • DAT-1.D.5 Los algoritmos de compresión de datos con pérdida pueden reducir significativamente el número de bits almacenados o transmitidos, pero solo permiten la reconstrucción de una aproximación de los datos originales.
    • DAT-1.D.6 Los algoritmos de compresión de datos con pérdida pueden reducir generalmente el número de bits almacenados o transmitidos más que los algoritmos de compresión sin pérdida.
    • DAT-1.D.7 En situaciones donde la calidad o la capacidad de reconstruir los datos originales es máxima e importante, se suelen elegir algoritmos de compresión sin pérdida.
    • DAT-1.D.8 En situaciones donde minimizar el tamaño de los datos o el tiempo de transmisión es máximo e importante, se suelen elegir algoritmos de compresión con pérdida.

    Fuente: College Board AP Course and Exam Description

    Platos y cabezal de disco duro: datos comprimidos y almacenados como patrones magnéticos
    Platos y cabezal de disco duro: datos comprimidos y almacenados como patrones magnéticos

    La compresión reduce la cantidad de bits necesarios para almacenar o transmitir datos. Existen dos tipos:

    Métodos de compresión: sin pérdida versus con pérdida, con ejemplos comunes
    Métodos de compresión: sin pérdida versus con pérdida, con ejemplos comunes
    • Compresión sin pérdida: permite restaurar los datos exactos originales (se usa para texto y programas, donde cada bit importa).
    • Compresión con pérdida: descarta algunos datos para reducir aún más el tamaño (se usa para fotos, música y video, donde una pequeña pérdida de calidad es aceptable).

    Elegir entre ellos implica un equilibrio entre tamaño y fidelidad: la sin pérdida conserva todo pero ahorra menos espacio; la con pérdida ahorra más pero pierde detalles permanentemente. Se prefiere la compresión sin pérdida cuando los datos deben ser exactos.

    Explorar

    Comprimir una serie de repeticiones

    La codificación de longitud de carrera es una compresión sin pérdida: una larga serie del mismo símbolo se reemplaza por el símbolo y un contador, reduciendo los datos sin perder información.

    Vocabulario Entrenar
    Inglés Chino Pinyin
    Compression/kəmˈpreʃn/ 压缩 yā suō
    Lossless compression/ˈlɒsləs kəmˈpreʃn/ 无损压缩 wú sǔn yā suō
    Lossy compression/ˈlɒsi kəmˈpreʃn/ 有损压缩 yǒu sǔn yā suō
    Data/ˈdeɪtə/ 数据 shù jù
    information/ˌɪnfəˈmeɪʃn/ 信息 xìn xī
    correlation/ˌkɒrɪˈleɪʃn/ 相关性 xiāng guān xìng
    Metadata/ˌmetəˈdeɪtə/ 元数据 yuán shù jù
    filtering/ˈfɪltərɪŋ/ 过滤 guò lǜ
    visualizing/ˈvɪʒuːəlaɪzɪŋ/ 可视化 kě shì huà
    privacy/ˈprɪvəsi/ 隐私 yǐn sī
    Ver lección
    2.3

    Extracción de Información de los Datos

    Syllabus

    Comprensión duradera (DAT-2): Los programas pueden utilizarse para procesar datos, lo que permite a los usuarios descubrir información y crear nuevo conocimiento.

    Objetivo de aprendizaje DAT-2.A: Describir qué información se puede extraer de los datos. [Habilidad 5.B]

    • DAT-2.A.1 La información es la colección de hechos y patrones extraídos de los datos.
    • DAT-2.A.2 Los datos ofrecen oportunidades para identificar tendencias, hacer conexiones y resolver problemas.
    • DAT-2.A.3 Los datos procesados digitalmente pueden mostrar correlación entre variables. Una correlación encontrada en los datos no indica necesariamente una relación causal. Se requiere investigación adicional para comprender la naturaleza exacta de la relación.
    • DAT-2.A.4 A menudo, una única fuente no contiene los datos necesarios para sacar una conclusión. Puede ser necesario combinar datos de diversas fuentes para formular una conclusión.

    Objetivo de aprendizaje DAT-2.B: Describir qué información se puede extraer de los metadatos. [Habilidad 5.B]

    • DAT-2.B.1 Los metadatos son datos sobre datos. Por ejemplo, la pieza de dato puede ser una imagen, mientras que los metadatos pueden incluir la fecha de creación o el tamaño del archivo de la imagen.
    • DAT-2.B.2 Los cambios y las eliminaciones realizados en los metadatos no alteran los datos principales.
    • DAT-2.B.3 Los metadatos se utilizan para buscar, organizar y gestionar la información.
    • DAT-2.B.4 Los metadatos pueden aumentar el uso efectivo de los datos o conjuntos de datos al proporcionar información adicional.
    • DAT-2.B.5 Los metadatos permiten estructurar y organizar los datos.

    Objetivo de aprendizaje DAT-2.C: Identificar los desafíos asociados con el procesamiento de datos. [Habilidad 5.D]

    • DAT-2.C.1 La capacidad de procesar datos depende de las habilidades de los usuarios y sus herramientas.
    • DAT-2.C.2 Los conjuntos de datos plantean desafíos independientemente de su tamaño, tales como:
      • la necesidad de limpiar los datos
      • datos incompletos
      • datos inválidos
      • la necesidad de combinar fuentes de datos
    • DAT-2.C.3 Dependiendo de cómo se hayan recopilado los datos, estos pueden no ser uniformes. Por ejemplo, si los usuarios ingresan datos en un campo abierto, la forma en que optan por abreviar, deletrear o capitalizar algo puede variar de un usuario a otro.
    • DAT-2.C.4 La limpieza de datos es un proceso que hace que los datos sean uniformes sin cambiar su significado (p. ej., reemplazar todas las abreviaciones, ortografías y mayúsculas equivalentes con la misma palabra).
    • DAT-2.C.5 Los problemas de sesgo suelen crearse por el tipo o la fuente de los datos que se están recopilando. El sesgo no se elimina simplemente recolectando más datos.
    • DAT-2.C.6 El tamaño de un conjunto de datos afecta la cantidad de información que se puede extraer de él.
    • DAT-2.C.7 Los grandes conjuntos de datos son difíciles de procesar utilizando una sola computadora y pueden requerir sistemas paralelos.
    • DAT-2.C.8 La escalabilidad de los sistemas es una consideración importante al trabajar con conjuntos de datos, ya que la capacidad computacional de un sistema afecta cómo se pueden procesar y almacenar los conjuntos de datos.

    Fuente: College Board AP Course and Exam Description

    Los datos se vuelven útiles cuando extraemos información de ellos —patrones, tendencias y respuestas a preguntas—. Los grandes conjuntos de datos pueden revelar correlaciones que un conjunto pequeño no podría, pero los datos deben limpiarse (corrigiendo errores e inconsistencias) y a menudo transformarse o filtrarse primero. Una correlación entre dos cosas no prueba que una cause la otra —una advertencia clave—. Los metadatos (datos sobre los datos, como la fecha y ubicación de una foto) ayudan a organizar y buscar grandes colecciones.

    2.4

    Uso de Programas con Datos

    Syllabus

    Comprensión perdurable (DAT-2): Los programas pueden utilizarse para procesar datos, lo que permite a los usuarios descubrir información y crear nuevo conocimiento.

    Objetivo de aprendizaje DAT-2.D: Extraer información de los datos mediante un programa. [Habilidad 2.B]

    • DAT-2.D.1 Los programas pueden utilizarse para procesar datos y obtener información.
    • DAT-2.D.2 Las tablas, diagramas, textos y otras herramientas visuales pueden usarse para comunicar ideas y conocimientos obtenidos de los datos.
    • DAT-2.D.3 Las herramientas de búsqueda son útiles para encontrar información de manera eficiente.
    • DAT-2.D.4 Los sistemas de filtrado de datos son herramientas importantes para encontrar información y reconocer patrones en los datos.
    • DAT-2.D.5 Programas como las hojas de cálculo ayudan a organizar y encontrar tendencias en la información de manera eficiente.
    • DAT-2.D.6 Algunos procesos que se pueden utilizar para extraer o modificar información a partir de los datos incluyen:
      • transformar cada elemento de un conjunto de datos, como duplicar cada elemento de una lista, o agregar el correo electrónico de un padre a cada registro de estudiante
      • filtrar un conjunto de datos, como mantener solo los números positivos de una lista, o mantener solo a los estudiantes que se inscribieron en la banda a partir del registro de todos los estudiantes
      • combinar o comparar datos de alguna manera, como sumar una lista de números, o encontrar al estudiante con el promedio más alto
      • visualizar un conjunto de datos mediante un gráfico, gráfica u otra representación visual

    Objetivo de aprendizaje DAT-2.E: Explicar cómo los programas pueden utilizarse para obtener ideas y conocimientos a partir de los datos. [Habilidad 5.B]

    • DAT-2.E.1 Los programas se utilizan de forma iterativa e interactiva al procesar información para permitir que los usuarios obtengan ideas y conocimientos sobre los datos.
    • DAT-2.E.2 Los programadores pueden usar programas para filtrar y limpiar datos digitales, obteniendo así ideas y conocimientos.
    • DAT-2.E.3 La combinación de fuentes de datos, el agrupamiento de datos y la clasificación de datos son partes del proceso de uso de programas para obtener ideas y conocimientos a partir de los datos.
    • DAT-2.E.4 Las ideas y el conocimiento pueden obtenerse al traducir y transformar información representada digitalmente.
    • DAT-2.E.5 Pueden surgir patrones cuando los datos se transforman utilizando programas.

    Fuente: College Board AP Course and Exam Description

    Los programas procesan datos a escalas inimaginables para los seres humanos. Las operaciones comunes incluyen filtrar (mantener solo las filas que cumplen una condición), limpiar (eliminar errores) y visualizar (gráficos y diagramas que hacen visibles los patrones). Combinar datos de múltiples fuentes puede revelar más información, pero plantea preocupaciones sobre la privacidad. Las herramientas interactivas y visualizaciones permiten a las personas explorar los datos y llegar a sus propias conclusiones.

    Habilidad para el examen: debes poder explicar cómo un programa ayuda a encontrar información en un gran conjunto de datos, y por qué la correlación mostrada en los datos no establece causalidad.

    2.4

    Consejos para el examen

    • Convierte con confianza entre binario, decimal y (cuando se solicite) hexadecimal —practica hasta hacerlo rápidamente—.
    • Recuerda que un bit es un único dígito binario y un byte son 8 bits; $n$ bits representan $2^n$ valores.
    • Explica que todos los datos —números, texto, imágenes, sonido— se almacenan en binario, y que los bits finitos causan desbordamiento y redondeo.
    • Distingue entre compresión sin pérdida y con pérdida y cuándo es apropiada cada una.
    • Demuestra el concepto de analógico a digital: el muestreo convierte una señal continua en valores discretos.
  • 3

    Algoritmos y Programación

    Ver lección

    El código de abajo utiliza la pseudocódigo AP CSP – la referencia neutra al idioma del examen. La asignación se escribe como a ← expression, y los índices de las listas comienzan en 1.

    3.1

    Variables y Asignaciones

    Syllabus

    Comprensión duradera (AAP-1): Para encontrar soluciones específicas a problemas generalizables, los programadores representan y organizan datos de múltiples maneras.

    Objetivo de aprendizaje AAP-1.A: Representar un valor con una variable. [Habilidad 3.A]

    • AAP-1.A.1 Una variable es una abstracción dentro de un programa que puede contener un valor. Cada variable tiene almacenamiento de datos asociado que representa un valor a la vez, pero ese valor puede ser una lista u otra colección que a su vez contiene múltiples valores.
    • AAP-1.A.2 El uso de nombres de variables significativos ayuda con la legibilidad del código del programa y la comprensión de qué valores están representados por las variables.
    • AAP-1.A.3 Algunos lenguajes de programación proporcionan tipos para representar datos, los cuales se referencian mediante variables. Estos tipos incluyen números, booleanos, listas y cadenas.
    • AAP-1.A.4 Algunos valores son más adecuados para su representación utilizando un tipo de dato en lugar de otro.

    Objetivo de aprendizaje AAP-1.B: Determinar el valor de una variable como resultado de una asignación. [Habilidad 4.B]

    • AAP-1.B.1 El operador de asignación permite a un programa cambiar el valor representado por una variable.

    • AAP-1.B.2 La hoja de referencia del examen proporciona el operador "$\leftarrow$" para usarlo en la asignación. Por ejemplo,

      Texto:

      a ← expression

      Bloque:

      a ← expression

      evalúa expression y luego asigna una copia del resultado a la variable a.

    • AAP-1.B.3 El valor almacenado en una variable será el valor asignado más recientemente. Por ejemplo:

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

      aún muestra 1.

    Fuente: College Board AP Course and Exam Description

    Una variable es un lugar con nombre que almacena un valor. El operador de asignación guarda el valor del lado derecho en la variable del lado izquierdo:

    Una variable es un almacenamiento con nombre cuyo valor puede cambiar
    Una variable es un almacenamiento con nombre cuyo valor puede cambiar
    a ← 5
    b ← a + 3      // b is now 8
    

    Una variable mantiene un solo valor a la vez; asignar nuevamente lo reemplaza. Las variables permiten a un programa almacenar entradas, recordar resultados y reutilizarlos.

    Explorar

    Observar cómo una variable retiene y cambia su valor

    Una variable es una caja nombrada que almacena un valor a la vez. Una asignación copia un valor dentro de la caja; asignar nuevamente sobrescribe lo que había antes.

    Vocabulario Entrenar
    Inglés Chino Pinyin
    variable/ˈveərɪəbl/ 变量 biàn liàng
    assignment/əˈsaɪnmənt/ 赋值 fù zhí
    Data abstraction/ˈdeɪtə əbˈstrækʃn/ 数据抽象 shù jù chōu xiàng
    remainder/rɪˈmeɪndə/ 余数 yú shù
    string/strɪŋ/ 字符串 zì fú chuàn
    concatenation/kənˌkætəˈneɪʃn/ 拼接 pīn jiē
    Boolean expression/ˈbuːlɪən ekˈspreʃn/ 布尔表达式 bù ěr biǎo dá shì
    conditional (selection)/kənˈdɪʃənl/ 条件语句 tiáo jiàn yǔ jù
    nested conditional/ˈnestɪd kənˈdɪʃənl/ 嵌套条件 qiàn tào tiáo jiàn
    Iteration (a loop)/ˌɪtəˈreɪʃn/ 迭代 dié dài
    infinite loop/ˈɪnfɪnət luːp/ 无限循环 wú xiàn xún huán
    algorithm/ˈælɡərɪθəm/ 算法 suàn fǎ
    3.2

    Abstracción de Datos

    Syllabus

    Comprensión duradera (AAP-1): Para encontrar soluciones específicas a problemas generalizables, los programadores representan y organizan datos de múltiples maneras.

    Objetivo de aprendizaje AAP-1.C: Representar una lista o cadena mediante una variable. [Habilidad 3.A]

    • AAP-1.C.1 Una lista es una secuencia ordenada de elementos. Por ejemplo,

      [value1, value2, value3, ...]

      describe una lista donde value1 es el primer elemento, value2 es el segundo elemento, value3 es el tercer elemento, y así sucesivamente.

    • AAP-1.C.2 Un elemento es un valor individual en una lista que tiene asignado un índice único.

    • AAP-1.C.3 Un índice es un método común para hacer referencia a los elementos en una lista o cadena utilizando números naturales.

    • AAP-1.C.4 Una cadena es una secuencia ordenada de caracteres.

    Objetivo de aprendizaje AAP-1.D: Para la abstracción de datos: a. Desarrollar la abstracción de datos utilizando listas para almacenar múltiples elementos. [Habilidad 3.B] b. Explicar cómo el uso de la abstracción de datos gestiona la complejidad en el código del programa. [Habilidad 3.C]

    • AAP-1.D.1 La abstracción de datos proporciona una separación entre las propiedades abstractas de un tipo de dato y los detalles concretos de su representación.

    • AAP-1.D.2 Las abstracciones de datos gestionan la complejidad en los programas al dar un nombre a una colección de datos sin hacer referencia a los detalles específicos de la representación.

    • AAP-1.D.3 Las abstracciones de datos pueden crearse utilizando listas.

    • AAP-1.D.4 Desarrollar una abstracción de datos para implementar en un programa puede resultar en un programa más fácil de desarrollar y mantener.

    • AAP-1.D.5 Las abstracciones de datos a menudo contienen diferentes tipos de elementos.

    • AAP-1.D.6 El uso de listas permite tratar varios elementos relacionados como un solo valor. Las listas se denominan de diferentes maneras, como array, dependiendo del lenguaje de programación.

      • Declaración de exclusión (EK AAP-1.D.6): El uso de listas vinculadas está fuera del alcance de este curso y del Examen AP.
    • AAP-1.D.7 La hoja de referencia del examen proporciona la notación

      [value1, value2, value3, ...]

      para crear una lista con esos valores como el primer, segundo, tercer elemento, y así sucesivamente. Por ejemplo,

      • Texto:

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

      Bloque:

      aList ← value1, value2, value3

      crea una nueva lista que contiene los valores value1, value2, value3 y ... en los índices 1, 2, 3 y ... respectivamente, y la asigna a aList.

      • Texto:

        aList ← []

      Bloque:

      aList ← (vacío)

      crea una nueva lista vacía y la asigna a aList.

      • Texto:

        aList ← bList

      Bloque:

      aList ← bList

      asigna una copia de la lista bList a la lista aList. Por ejemplo, si bList contiene [20, 40, 60], entonces aList también contendrá [20, 40, 60] después de la asignación.

    • AAP-1.D.8 La hoja de referencia del examen describe una estructura de lista cuyos valores de índice van desde 1 hasta el número de elementos en la lista, inclusive. Para todas las operaciones de lista, si un índice de lista es menor que 1 o mayor que la longitud de la lista, se produce un mensaje de error y el programa terminará.

    Fuente: College Board AP Course and Exam Description

    La abstracción de datos le permite gestionar la complejidad al dar un solo nombre a una colección de datos — por ejemplo, una lista en lugar de docenas de variables separadas. Oculta detalles: usted usa la colección nombrada sin preocuparse por cómo está almacenada. Las listas (más abajo) son la principal abstracción de datos del curso.

    Vocabulario Entrenar
    Inglés Chino Pinyin
    list/lɪst/ 列表 liè biǎo
    3.3

    Expresiones Matemáticas

    Syllabus

    Comprensión duradera (AAP-2): La forma en que se secuestran y combinan las declaraciones en un programa determina el resultado calculado. Los programas incorporan constructos de iteración y selección para representar repeticiones y tomar decisiones con el fin de manejar valores de entrada variados.

    Objetivo de aprendizaje AAP-2.A: Expresar un algoritmo que utilice secuenciación sin usar un lenguaje de programación. [Habilidad 2.A]

    • AAP-2.A.1 Un algoritmo es un conjunto finito de instrucciones que cumplen una tarea específica.
    • AAP-2.A.2 Más allá de los lenguajes de programación visuales y textuales, los algoritmos pueden expresarse de diversas formas, como lenguaje natural, diagramas y pseudocódigo.
    • AAP-2.A.3 Los algoritmos ejecutados por programas se implementan mediante lenguajes de programación.
    • AAP-2.A.4 Todo algoritmo puede construirse utilizando combinaciones de secuenciación, selección e iteración.

    Objetivo de aprendizaje AAP-2.B: Representar un proceso algorítmico paso a paso utilizando sentencias de código secuenciales. [Habilidad 2.B]

    • AAP-2.B.1 La secuenciación es la aplicación de cada paso de un algoritmo en el orden en que aparecen las sentencias de código.
    • AAP-2.B.2 Una sentencia de código es una parte del código de un programa que expresa una acción que debe llevarse a cabo.
    • AAP-2.B.3 Una expresión puede constar de un valor, una variable, un operador o una llamada a procedimiento que devuelve un valor.
    • AAP-2.B.4 Las expresiones se evalúan para producir un único valor.
    • AAP-2.B.5 La evaluación de expresiones sigue un orden de operaciones definido por el lenguaje de programación.
    • AAP-2.B.6 Las sentencias secuenciales se ejecutan en el orden en que aparecen en el segmento de código.
    • AAP-2.B.7 La claridad y la legibilidad son consideraciones importantes al expresar un algoritmo en un lenguaje de programación.

    Objetivo de aprendizaje AAP-2.C: Evaluar expresiones que utilizan operadores aritméticos. [Habilidad 4.B]

    • AAP-2.C.1 Los operadores aritméticos forman parte de la mayoría de los lenguajes de programación e incluyen los operadores de suma, resta, multiplicación, división y módulo.

    • AAP-2.C.2 La hoja de referencia del examen proporciona a MOD b, que se evalúa como el residuo cuando a se divide por b. Asumir que a es un entero mayor o igual a 0 y b es un entero mayor que 0. Por ejemplo, 17 MOD 5 se evalúa como 2.

    • AAP-2.C.3 La hoja de referencia del examen proporciona los operadores aritméticos +, -, *, / y MOD.

      Texto y Bloque:

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

      Estos se utilizan para realizar operaciones aritméticas sobre a y b. Por ejemplo, 17 / 5 se evalúa como 3.4.

    • AAP-2.C.4 El orden de operaciones utilizado en matemáticas se aplica al evaluar expresiones. El operador MOD tiene la misma precedencia que los operadores * y /.

    Fuente: College Board AP Course and Exam Description

    Los programas calculan con los operadores +, -, *, / y MOD (el resto de una división, p. ej., 17 MOD 5 es 2). Las expresiones siguen el orden de operaciones habitual. MOD es especialmente útil para probar divisibilidad (n MOD 2 = 0 significa que n es par) y para envolver valores alrededor de un rango.

    Explorar

    Evaluar una expresión paso a paso

    Una expresión se evalúa siguiendo la jerarquía de operaciones: la multiplicación y la división ocurren antes que la suma y la resta, de izquierda a derecha.

    3.4

    Cadenas de texto

    Syllabus

    Comprensión Duradera (AAP-2): La forma en que las sentencias se secuencian y combinan en un programa determina el resultado calculado. Los programas incorporan construcciones de iteración y selección para representar la repetición y tomar decisiones con el fin de manejar valores de entrada variados.

    Objetivo de Aprendizaje AAP-2.D: Evaluar expresiones que manipulan cadenas. [Habilidad 4.B]

    • AAP-2.D.1 La concatenación de cadenas une dos o más cadenas extremo con extremo para formar una nueva cadena.
    • AAP-2.D.2 Una subcadena es parte de una cadena existente.

    Fuente: College Board AP Course and Exam Description

    Una cadena es una secuencia ordenada de caracteres, como "hello". Los programas unen cadenas (concatenación) y encuentran su longitud. Las cadenas representan texto — nombres, mensajes, secuencias — y son una entrada y salida comunes de programas.

    3.5

    Expresiones Booleanas

    Syllabus

    Comprensión Duradera (AAP-2): La forma en que se secuencian y combinan las instrucciones en un programa determina el resultado calculado. Los programas incorporan constructos de iteración y selección para representar repeticiones y tomar decisiones para manejar valores de entrada variados.

    Objetivo de Aprendizaje AAP-2.E: Para relaciones entre dos variables, expresiones o valores: a. Escribir expresiones utilizando operadores relacionales. [Habilidad 2.B] b. Evaluar expresiones que utilizan operadores relacionales. [Habilidad 4.B]

    • AAP-2.E.1 Un valor booleano es verdadero o falso.

    • AAP-2.E.2 La hoja de referencia del examen proporciona los siguientes operadores relacionales: =, ≠, >, <, ≥ y ≤.

      Texto y Bloque:

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

      Estos se utilizan para probar la relación entre dos variables, expresiones o valores. Una comparación que utiliza un operador relacional evalúa a un valor booleano. Por ejemplo, a = b evalúa a true si a y b son iguales; de lo contrario, evalúa a false.

    Objetivo de Aprendizaje AAP-2.F: Para relaciones entre valores booleanos: a. Escribir expresiones utilizando operadores lógicos. [Habilidad 2.B] b. Evaluar expresiones que utilizan operadores lógicos. [Habilidad 4.B]

    • AAP-2.F.1 La hoja de referencia del examen proporciona los operadores lógicos NOT, AND y OR, los cuales evalúan a un valor booleano.

    • AAP-2.F.2 La hoja de referencia del examen proporciona

      Texto:

      NOT condition

      Bloque:

      NOT condition

      que evalúa a true si condition es false; de lo contrario evalúa a false.

    • AAP-2.F.3 La hoja de referencia del examen proporciona

      Texto:

      condition1 AND condition2

      Bloque:

      condition1 AND condition2

      que evalúa a true si tanto condition1 como condition2 son true; de lo contrario evalúa a false.

    • AAP-2.F.4 La hoja de referencia del examen proporciona

      Texto:

      condition1 OR condition2

      Bloque:

      condition1 OR condition2

      que evalúa a true si condition1 es true o si condition2 es true o si tanto condition1 como condition2 son true; de lo contrario evalúa a false.

    • AAP-2.F.5 El operando para un operador lógico es ya sea una expresión booleana o un único valor booleano.

    Fuente: College Board AP Course and Exam Description

    Una expresión booleana se evalúa como true (verdadero) o false (falso). Utiliza operadores relacionales (=, ≠, <, >, ≤, ≥) y operadores lógicos NOT (NO), AND (Y), OR (O):

    Las tres familias de operadores: aritméticos, relacionales y lógicos
    Las tres familias de operadores: aritméticos, relacionales y lógicos
    • NOT invierte un valor,
    • AND es verdadero solo cuando ambos lados son verdaderos,
    • OR es verdadero cuando al menos uno de los lados es verdadero.

    Estas condiciones guían cada decisión y bucle.

    Explorar

    Probar la tabla de verdad OR

    Una expresión Booleana es verdadera (1) o falsa (0). OR es verdadera cuando al menos una entrada es verdadera; invierte las entradas para ver todos los casos.

    3.6

    Condicionales

    Syllabus

    Comprensión Duradera (AAP-2): La forma en que se secuencian y combinan las instrucciones en un programa determina el resultado calculado. Los programas incorporan constructos de iteración y selección para representar la repetición y tomar decisiones para manejar valores de entrada variados.

    Objetivo de Aprendizaje AAP-2.G: Expresar un algoritmo que utilice selección sin usar un lenguaje de programación. [Habilidad 2.A]

    • AAP-2.G.1 La selección determina qué partes de un algoritmo se ejecutan basándose en si una condición es true o false.

    Objetivo de Aprendizaje AAP-2.H: Para la selección: a. Escribir instrucciones condicionales. [Habilidad 2.B] b. Determinar el resultado de las instrucciones condicionales. [Habilidad 4.B]

    • AAP-2.H.1 Las instrucciones condicionales, o "instrucciones if", afectan el flujo secuencial del control ejecutando diferentes instrucciones basándose en el valor de una expresión booleana.

    • AAP-2.H.2 La hoja de referencia del examen proporciona

      Texto:

      IF(condition) { <block of statements> }

      Bloque:

      IF condition block of statements

      en el cual el código en block of statements se ejecuta si la expresión booleana condition se evalúa como true; no se realiza ninguna acción si condition se evalúa como false.

    • AAP-2.H.3 La hoja de referencia del examen proporciona

      Texto:

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

      Bloque:

      IF condition first block of statements ELSE second block of statements

      en el cual el código en first block of statements se ejecuta si la expresión booleana condition se evalúa como true; de lo contrario, se ejecuta el código en second block of statements.

    Fuente: College Board AP Course and Exam Description

    Un condicional (selección) elige qué código ejecutar. IF ejecuta un bloque solo cuando su condición es verdadera; ELSE ofrece una alternativa:

    Selection chooses between paths based on a condition
    La selección elige entre rutas basándose en una condición
    IF (score ≥ 60)
    {
        DISPLAY("Pass")
    }
    ELSE
    {
        DISPLAY("Fail")
    }
    
    Explorar

    Seguir una decisión if / else

    Una condicional ejecuta una rama u otra dependiendo de si su condición es verdadera. Desliza el valor a través del umbral y observa qué rama se toma.

    3.7

    Condicionales Anidados

    Syllabus

    Comprensión duradera (AAP-2): La forma en que se secencian y combinan las instrucciones en un programa determina el resultado calculado. Los programas incorporan constructos de iteración y selección para representar repeticiones y tomar decisiones para manejar valores de entrada variados.

    Objetivo de aprendizaje AAP-2.I: Para la selección anidada: a. Escribir sentencias condicionales anidadas. [Habilidad 2.B] b. Determinar el resultado de las sentencias condicionales anidadas. [Habilidad 4.B]

    • AAP-2.I.1 Las sentencias condicionales anidadas consisten en sentencias condicionales dentro de otras sentencias condicionales.

    Fuente: College Board AP Course and Exam Description

    Un condicional anidado coloca un IF dentro de otro (o encadena ELSE IF) para elegir entre más de dos rutas. Solo se ejecuta la primera rama coincidente:

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

    Iteración

    Syllabus

    Comprensión Duradera (AAP-2): La forma en que se secuencian y combinan las instrucciones en un programa determina el resultado calculado. Los programas incorporan estructuras de iteración y selección para representar repeticiones y tomar decisiones para manejar valores de entrada variados.

    Objetivo de Aprendizaje AAP-2.J: Expresar un algoritmo que utilice iteración sin emplear un lenguaje de programación. [Habilidad 2.A]

    • AAP-2.J.1 La iteración es una parte repetitiva de un algoritmo. La iteración se repite un número especificado de veces o hasta que se cumple una condición dada.

    Objetivo de Aprendizaje AAP-2.K: Para la iteración: a. Escribir instrucciones de iteración. [Habilidad 2.B] b. Determinar el resultado o efecto secundario de las instrucciones de iteración. [Habilidad 4.B]

    • AAP-2.K.1 Las instrucciones de iteración modifican el flujo secuencial de control repitiendo un conjunto de instrucciones cero o más veces, hasta que se cumple una condición de parada.

    • AAP-2.K.2 La hoja de referencia del examen proporciona

      Texto:

      REPEAT n TIMES { <block of statements> }

      Bloque:

      REPEAT n TIMES block of statements

      en el cual se ejecuta block of statements n veces.

    • AAP-2.K.3 La hoja de referencia del examen proporciona

      Texto:

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

      Bloque:

      REPEAT UNTIL condition block of statements

      en el cual el código en block of statements se repite hasta que la expresión booleana condition se evalúa como true.

    • AAP-2.K.4 En la iteración REPEAT UNTIL(condition), se produce un bucle infinito cuando la condición final nunca se evaluará como true.

    • AAP-2.K.5 En la iteración REPEAT UNTIL(condition), si la condición se evalúa inicialmente como true, el cuerpo del bucle no se ejecuta en absoluto, debido a que la condición se verifica antes del bucle.

    Fuente: College Board AP Course and Exam Description

    Iteración (un bucle) repite instrucciones. La pseudocódigo AP tiene dos formas:

    Un bucle pre-condición (WHILE) prueba antes del cuerpo, por lo que puede ejecutarse cero veces
    Un bucle de pre-condición (WHILE) verifica antes del cuerpo, por lo que puede ejecutarse cero veces
    REPEAT 5 TIMES        // a fixed count
    {
        DISPLAY("hi")
    }
    
    REPEAT UNTIL (found)  // until a condition becomes true
    {
        ...
    }
    

    Un bucle que nunca cumple su condición de parada es un bucle infinito.

    Explorar

    Rastrear un bucle una pasada a la vez

    Un bucle repite un bloque mientras su contador recorre un rango. Avanza paso a paso para ver cómo el contador y el total acumulado se actualizan en cada pasada.

    3.9

    Desarrollo de Algoritmos

    Syllabus

    Comprensión Duradera (AAP-2): La forma en que se secuencian y combinan las sentencias en un programa determina el resultado calculado. Los programas incorporan constructos de iteración y selección para representar repeticiones y tomar decisiones que manejen valores de entrada variados.

    Objetivo de Aprendizaje AAP-2.L: Comparar múltiples algoritmos para determinar si producen el mismo efecto secundario o resultado. [Habilidad 1.D]

    • AAP-2.L.1 Los algoritmos pueden escribirse de diferentes formas y aún así lograr las mismas tareas.
    • AAP-2.L.2 Los algoritmos que parecen similares pueden producir efectos secundarios o resultados diferentes.
    • AAP-2.L.3 Algunas sentencias condicionales pueden escribirse como expresiones booleanas equivalentes.
    • AAP-2.L.4 Algunas expresiones booleanas pueden escribirse como sentencias condicionales equivalentes.
    • AAP-2.L.5 Se pueden desarrollar o utilizar diferentes algoritmos para resolver el mismo problema.

    Objetivo de Aprendizaje AAP-2.M: Para los algoritmos: a. Crear algoritmos. [Habilidad 2.A] b. Combinar y modificar algoritmos existentes. [Habilidad 2.B]

    • AAP-2.M.1 Los algoritmos pueden crearse a partir de una idea, mediante la combinación de algoritmos existentes o modificando algoritmos existentes.
    • AAP-2.M.2 El conocimiento de algoritmos existentes puede ayudar a construir nuevos. Algunos algoritmos existentes incluyen:
      • Determinar el valor máximo o mínimo de dos o más números
      • Calcular la suma o el promedio de dos o más números
      • Identificar si un número entero es o no divisible exactamente por otro número entero
      • Determinar la trayectoria de un robot a través de un laberinto
    • AAP-2.M.3 Utilizar algoritmos correctos existentes como bloques de construcción para crear otro algoritmo tiene beneficios como reducir el tiempo de desarrollo, reducir las pruebas y simplificar la identificación de errores.

    Fuente: College Board AP Course and Exam Description

    Código fuente de Python en una pantalla — los algoritmos son instrucciones precisas y ordenadas
    Código fuente de Python en una pantalla — los algoritmos son instrucciones precisas y ordenadas

    Un algoritmo no es lo mismo que código. Más allá de los lenguajes de programación visuales y textuales, un algoritmo puede expresarse de una variedad de formas: en lenguaje natural (oraciones ordinarias), como un diagrama tal como un diagrama de flujo, o en pseudocódigo. Esas formas son para personas — le permiten verificar la lógica y estar de acuerdo en ella antes de elegir cualquier lenguaje, y luego el mismo algoritmo puede escribirse en cualquier lenguaje.

    Cuando lo escribe en un lenguaje de programación, la claridad y legibilidad son consideraciones importantes, no adornos: nombres de variables significativos, sangría consistente y comentarios que expliquen el porqué en lugar del qué. El programa debe ser leído y modificado después por alguien — a menudo usted — y un algoritmo que nadie puede seguir no se puede mantener ni depurar.

    Un algoritmo es una secuencia finita de pasos que resuelve un problema, construida a partir de secuenciación, selección e iteración. Diferentes algoritmos pueden resolver el mismo problema, y debería poder combinar y modificar algoritmos existentes (por ejemplo, contar los valores en una lista que cumplen una condición, o encontrar el mayor). Rastree un algoritmo a mano para verificar que sea correcto.

    Un diagrama de flujo presenta un algoritmo usando los símbolos estándar
    Un diagrama de flujo presenta un algoritmo usando los símbolos estándar
    3.10

    Listas

    Syllabus

    Comprensión duradera (AAP-2): La forma en que las sentencias se secuencian y combinan en un programa determina el resultado calculado. Los programas incorporan constructos de iteración y selección para representar repeticiones y tomar decisiones con el fin de manejar valores de entrada variados.

    Objetivo de aprendizaje AAP-2.N: Para operaciones sobre listas: a. Escribir expresiones que utilicen indexación de listas y procedimientos de lista. [Habilidad 2.B] b. Evaluar expresiones que utilicen indexación de listas y procedimientos de lista. [Habilidad 4.B]

    • AAP-2.N.1 La hoja de referencia del examen proporciona operaciones básicas sobre listas, incluyendo:
      • acceder a un elemento por índice

        Texto:

        aList[i]

        Bloque:

        aList i

        accede al elemento de aList en el índice i. El primer elemento de aList está en el índice 1 y se accede mediante la notación aList[1].

      • asignar el valor de un elemento de una lista a una variable

        Texto:

        x ← aList[i]

        Bloque:

        x ← aList i

        asigna el valor de aList[i] a la variable x.

      • asignar un valor a un elemento de una lista

        Texto:

        aList[i] ← x

        Bloque:

        aList i ← x

        asigna el valor de x a aList[i].

        Texto:

        aList[i] ← aList[j]

        Bloque:

        aList i ← aList j

        asigna el valor de aList[j] a aList[i].

      • insertar elementos en un índice dado

        Texto:

        INSERT(aList, i, value)

        Bloque:

        INSERT aList, i, value

        desplaza hacia la derecha cualquier valor en aList en índices mayores o iguales a i. La longitud de la lista aumenta en 1, y value se coloca en el índice i en aList.

      • añadir elementos al final de la lista

        Texto:

        APPEND(aList, value)

        Bloque:

        APPEND aList, value

        aumenta la longitud de aList en 1, y value se coloca al final de aList.

      • eliminar elementos

        Texto:

        REMOVE(aList, i)

        Bloque:

        REMOVE aList, i

        elimina el ítem en el índice i en aList y desplaza hacia la izquierda cualquier valor en índices mayores que i. La longitud de aList disminuye en 1.

      • determinar la longitud de una lista

        Texto:

        LENGTH(aList)

        Bloque:

        LENGTH aList

        evalúa al número de elementos actualmente en aList.

    • AAP-2.N.2 Los procedimientos de lista se implementan de acuerdo con las reglas de sintaxis del lenguaje de programación.

    Objetivo de aprendizaje AAP-2.O: Para algoritmos que involucran elementos de una lista: a. Escribir sentencias de iteración para recorrer una lista. [Habilidad 2.B] b. Determinar el resultado de un algoritmo que incluye recorridos de lista. [Habilidad 4.B]

    • AAP-2.O.1 Recorrer una lista puede ser un recorrido completo, donde se accede a todos los elementos de la lista, o un recorrido parcial, donde solo se accede a una parte de los elementos.

      • Exclusión (EK AAP-2.O.1): Recorrer múltiples listas al mismo tiempo utilizando el mismo índice para ambas (recorridos paralelos) está fuera del alcance de este curso y del Examen AP.
    • AAP-2.O.2 Las sentencias de iteración pueden utilizarse para recorrer una lista.

    • AAP-2.O.3 La hoja de referencia del examen proporciona

      Texto:

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

      Bloque:

      FOR EACH item IN aList block of statements

      La variable item se asigna el valor de cada elemento de aList secuencialmente, en orden, desde el primer elemento hasta el último elemento. El código en block of statements se ejecuta una vez por cada asignación de item.

    • AAP-2.O.4 El conocimiento de algoritmos existentes que usan iteración puede ayudar a construir nuevos algoritmos. Algunos ejemplos de algoritmos existentes que a menudo se utilizan con listas incluyen:

      • determinar un valor mínimo o máximo en una lista
      • calcular una suma o promedio de una lista de números
    • AAP-2.O.5 Los algoritmos de búsqueda lineal o búsqueda secuencial revisan cada elemento de una lista, en orden, hasta que se encuentra el valor deseado o se han revisado todos los elementos de la lista.

    Fuente: College Board AP Course and Exam Description

    Una lista es una colección ordenada de valores bajo un solo nombre, la abstracción de datos clave del curso. La pseudocódigo AP indexa desde 1:

    Una lista contiene muchos valores en una variable, cada uno encontrado por su índice
    Una lista contiene muchos valores en una sola variable, cada uno encontrado por su índice
    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
    

    Recorra una lista con un bucle para sumar, contar, buscar o encontrar un máximo:

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

    Búsqueda Binaria

    Syllabus

    Comprensión duradera (AAP-2): La forma en que se secuncian y combinan las instrucciones en un programa determina el resultado calculado. Los programas incorporan constructos de iteración y selección para representar repeticiones y tomar decisiones para manejar valores de entrada variados.

    Objetivo de aprendizaje AAP-2.P: Para los algoritmos de búsqueda binaria: a. Determinar el número de iteraciones necesarias para encontrar un valor en un conjunto de datos. [Habilidad 1.D] b. Explicar los requisitos necesarios para completar una búsqueda binaria. [Habilidad 1.A]

    • AAP-2.P.1 El algoritmo de búsqueda binaria comienza en el medio de un conjunto de datos numéricos ordenados y elimina la mitad de los datos; este proceso se repite hasta que se encuentra el valor deseado o se han eliminado todos los elementos.
      • Afirmación de exclusión (EK AAP-2.P.1): Las implementaciones específicas del algoritmo de búsqueda binaria están fuera del alcance del curso y del examen AP.
    • AAP-2.P.2 Los datos deben estar en orden para utilizar el algoritmo de búsqueda binaria.
    • AAP-2.P.3 La búsqueda binaria suele ser más eficiente que la búsqueda secuencial/lineal cuando se aplica a datos ordenados.

    Fuente: College Board AP Course and Exam Description

    Una guía telefónica: la búsqueda binaria reduce a la mitad las páginas restantes en cada paso
    Una guía telefónica: la búsqueda binaria reduce a la mitad las páginas restantes en cada paso

    La búsqueda binaria encuentra un valor en una lista ordenada mucho más rápido que revisar cada elemento. Mira el elemento del medio, luego descarta la mitad que no puede contener el objetivo, repitiendo hasta encontrarlo. Cada paso reduce a la mitad el espacio de búsqueda, por lo que una lista de $n$ elementos toma aproximadamente $\log_2 n$ pasos. Requiere que los datos estén ordenados primero.

    La búsqueda binaria reduce el rango a la mitad en cada paso (la lista debe estar ordenada)
    La búsqueda binaria reduce a la mitad el rango en cada paso (la lista debe estar ordenada)

    Ejemplo resuelto. Al buscar en una lista ordenada de $8$ elementos, la búsqueda binaria reduce el rango a la mitad en cada paso: $8\rightarrow4\rightarrow2\rightarrow1$, como máximo $3$ comparaciones ($\log_2 8=3$), mientras que una búsqueda lineal podría tomar hasta $8$. La ventaja crece exponencialmente: unos $1{,}000$ elementos necesitan solo $\approx10$ pasos de búsqueda binaria (pero hasta $1{,}000$ lineales), y $1{,}000{,}000$ elementos necesitan solo $\approx20$. Reducir a la mitad es lo que lo convierte en un algoritmo de tiempo razonable.

    Vocabulario Entrenar
    Inglés Chino Pinyin
    Binary search/ˈbaɪnəri sɜːtʃ/ 二分搜索 èr fēn sōu suǒ
    3.12

    Llamadas a Procedimientos

    Syllabus

    Comprensión duradera (AAP-3): Los programadores dividen los problemas en piezas más pequeñas y manejables. Al crear procedimientos y aprovechar los parámetros, los programadores generalizan procesos que pueden reutilizarse. Los procedimientos permiten a los programadores recurrir a código existente que ya ha sido probado, lo que les permite escribir programas más rápidamente y con mayor confianza.

    Objetivo de aprendizaje AAP-3.A: Para las llamadas a procedimientos: a. Escribir sentencias para llamar a procedimientos. [Habilidad 3.B] b. Determinar el resultado o efecto de una llamada a procedimiento. [Habilidad 4.B]

    • AAP-3.A.1 Un procedimiento es un grupo nombrado de instrucciones de programación que puede tener parámetros y valores devueltos.

    • AAP-3.A.2 Los procedimientos se denominan de manera diferente, como método o función, dependiendo del lenguaje de programación.

    • AAP-3.A.3 Los parámetros son variables de entrada de un procedimiento. Los argumentos especifican los valores de los parámetros cuando se llama a un procedimiento.

    • AAP-3.A.4 Una llamada a procedimiento interrumpe la ejecución secuencial de las sentencias, haciendo que el programa ejecute las sentencias dentro del procedimiento antes de continuar. Una vez que se ejecuta la última sentencia del procedimiento (o una sentencia return), el flujo de control se devuelve al punto inmediatamente posterior a donde se llamó al procedimiento.

    • AAP-3.A.5 La hoja de referencia del examen proporciona

      procName(arg1, arg2, ...)

      como una forma de llamar a

      Texto:

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

      Bloque:

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

      que toma cero o más argumentos; arg1 se asigna a parameter1, arg2 se asigna a parameter2, y así sucesivamente.

    • AAP-3.A.6 La hoja de referencia del examen proporciona el procedimiento

      Texto:

      DISPLAY(expression)

      Bloque:

      DISPLAY expression

      para mostrar el valor de expression, seguido de un espacio.

    • AAP-3.A.7 La hoja de referencia del examen proporciona la

      Texto:

      RETURN(expression)

      Bloque:

      RETURN expression

      sentencia, que se utiliza para devolver el flujo de control al punto donde se llamó al procedimiento y para devolver el valor de expression.

    • AAP-3.A.8 La hoja de referencia del examen proporciona

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

      para asignar a result el "valor del procedimiento" que está siendo devuelto por la llamada a

      Texto:

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

      Bloque:

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

    • AAP-3.A.9 La hoja de referencia del examen proporciona el procedimiento

      Texto:

      INPUT()

      Bloque:

      INPUT

      que acepta un valor del usuario y devuelve el valor de entrada.

    Fuente: College Board AP Course and Exam Description

    Un procedimiento (función) es un bloque de código con nombre y reutilizable. Llamarlo ejecuta su código con los argumentos que usted proporcione, y puede devolver un valor:

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

    Los procedimientos le permiten usar código sin conocer sus mecanismos internos — abstracción procedural.

    3.13

    Desarrollo de Procedimientos

    Syllabus

    Comprensión duradera (AAP-3): Los programadores descomponen los problemas en piezas más pequeñas y manejables. Al crear procedimientos y aprovechar los parámetros, los programadores generalizan procesos que pueden reutilizarse. Los procedimientos permiten a los programadores utilizar código existente que ya ha sido probado, lo que les permite escribir programas más rápidamente y con mayor confianza.

    Objetivo de aprendizaje AAP-3.B: Explicar cómo el uso de la abstracción procedural gestiona la complejidad en un programa. [Habilidad 3.C]

    • AAP-3.B.1 Un tipo común de abstracción es la abstracción procedural, la cual proporciona un nombre para un proceso y permite usar un procedimiento conociendo solo qué hace, no cómo lo hace.
    • AAP-3.B.2 La abstracción procedural permite basar la solución de un problema grande en las soluciones de subproblemas más pequeños. Esto se logra creando procedimientos para resolver cada uno de los subproblemas.
    • AAP-3.B.3 La subdivisión de un programa informático en subprogramas separados se denomina modularidad.
    • AAP-3.B.4 Una abstracción procedural puede extraer características compartidas para generalizar la funcionalidad en lugar de duplicar el código. Esto permite la reutilización del código del programa, lo que ayuda a gestionar la complejidad.
    • AAP-3.B.5 El uso de parámetros permite generalizar los procedimientos, posibilitando su reutilización con una variedad de valores o argumentos de entrada.
    • AAP-3.B.6 El uso de la abstracción procedural mejora la legibilidad del código.
    • AAP-3.B.7 El uso de la abstracción procedural en un programa permite a los programadores cambiar los aspectos internos del procedimiento (para hacerlo más rápido, más eficiente, utilizar menos almacenamiento, etc.) sin necesidad de notificar a los usuarios del cambio, siempre que se conserve lo que hace el procedimiento.

    Objetivo de aprendizaje AAP-3.C: Desarrollar abstracciones procedurales para gestionar la complejidad en un programa mediante la escritura de procedimientos. [Habilidad 3.B]

    • AAP-3.C.1 La hoja de referencia del examen proporciona

      Texto:

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

      Bloque:

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

      que se utiliza para definir un procedimiento que toma cero o más argumentos. El procedimiento contiene block of statements.

    • AAP-3.C.2 La hoja de referencia del examen proporciona

      Texto:

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

      Bloque:

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

      que se utiliza para definir un procedimiento que toma cero o más argumentos. El procedimiento contiene block of statements y devuelve el valor de expression. La instrucción RETURN puede aparecer en cualquier punto dentro del procedimiento y provoca un retorno inmediato desde el procedimiento hasta la instrucción llamante.

    Fuente: College Board AP Course and Exam Description

    Usted define un procedimiento con un nombre, parámetros (entradas) y un cuerpo, y opcionalmente RETURN (devolver) un resultado:

    Decomposing a program into procedures and sub-procedures
    Descomponer un programa en procedimientos y subprocedimientos
    PROCEDURE Add(a, b)
    {
        RETURN(a + b)
    }
    

    Escribir sus propios procedimientos reduce la repetición, divide un problema grande en piezas nombradas, y hace que los programas sean legibles y más fáciles de probar — la esencia de la abstracción.

    Vocabulario Entrenar
    Inglés Chino Pinyin
    procedure (function)/prəˈsiːdʒə/ 过程 guò chéng
    procedural abstraction/prəˈsiːdʒərəl əbˈstrækʃn/ 过程抽象 guò chéng chōu xiàng
    abstraction/əbˈstrækʃn/ 抽象 chōu xiàng
    library/ˈlaɪbrəri/ 库 kù
    simulation/ˌsɪmjʊˈleɪʃn/ 模拟 mó nǐ
    Efficiency/ɪˈfɪʃənsi/ 效率 xiào lǜ
    heuristic/hjuːˈrɪstɪk/ 启发式 qǐ fā shì
    undecidable/ˌʌndɪˈsaɪdəbl/ 不可判定 bù kě pàn dìng
    3.14

    Bibliotecas

    Syllabus

    Comprensión duradera (AAP-3): Los programadores descomponen los problemas en partes más pequeñas y manejables. Al crear procedimientos y aprovechar parámetros, los programadores generalizan procesos que pueden reutilizarse. Los procedimientos permiten a los programadores utilizar código existente que ya ha sido probado, lo que les permite escribir programas de forma más rápida y con mayor confianza.

    Objetivo de aprendizaje AAP-3.D: Seleccionar bibliotecas o segmentos de código existentes adecuados para usarlos en la creación de nuevos programas. [Habilidad 2.B]

    • AAP-3.D.1 Una biblioteca de software contiene procedimientos que pueden utilizarse en la creación de nuevos programas.
    • AAP-3.D.2 Los segmentos de código existentes pueden provenir de fuentes internas o externas, como bibliotecas o código escrito previamente.
    • AAP-3.D.3 El uso de bibliotecas simplifica la tarea de crear programas complejos.
    • AAP-3.D.4 Las interfaces de programación de aplicaciones (API) son especificaciones sobre cómo se comportan y pueden usarse los procedimientos de una biblioteca.
    • AAP-3.D.5 La documentación de una API/biblioteca es necesaria para comprender los comportamientos que ofrece la API/biblioteca y cómo utilizarlos.

    Fuente: College Board AP Course and Exam Description

    Una biblioteca es una colección de procedimientos hechos listos que otros pueden reutilizar. Una API (Interface de Programación de Aplicaciones) documenta qué hace cada procedimiento, sus parámetros y su resultado — para que pueda usarla sin ver su código. Las bibliotecas ahorran tiempo y le permiten construir sobre trabajo existente y probado.

    La documentación es parte de la biblioteca. La documentación de una API o biblioteca es necesaria para comprender los comportamientos que proporciona y cómo usarlos — qué espera cada procedimiento como parámetro, qué devuelve y qué hace en los bordes. Sin ella, tendría que leer el código fuente, lo cual anula el propósito de la abstracción; con ella, puede usar un procedimiento correctamente sin saber cómo funciona internamente.

    Vocabulario Entrenar
    Inglés Chino Pinyin
    Interface/ˈɪntəfeɪs/ 应用程序接口 yìng yòng chéng xù jiē kǒu
    3.15

    Valores Aleatorios

    Syllabus

    Comprensión duradera (AAP-3): Los programadores descomponen los problemas en piezas más pequeñas y manejables. Al crear procedimientos y aprovechar parámetros, los programadores generalizan procesos que pueden reutilizarse. Los procedimientos permiten a los programadores recurrir a código existente que ya ha sido probado, lo que les posibilita escribir programas de manera más rápida y con mayor seguridad.

    Objetivo de aprendizaje AAP-3.E: Para la generación de valores aleatorios: a. Escribir expresiones para generar valores posibles. [Habilidad 2.B] b. Evaluar expresiones para determinar los resultados posibles. [Habilidad 4.B]

    • AAP-3.E.1 La hoja de referencia del examen proporciona

      Texto:

      RANDOM(a, b)

      Bloque:

      RANDOM a, b

      que genera y devuelve un número entero aleatorio desde a hasta b, inclusive. Cada resultado tiene la misma probabilidad de ocurrir. Por ejemplo, RANDOM(1, 3) podría devolver 1, 2 o 3.

    • AAP-3.E.2 El uso de la generación de números aleatorios en un programa significa que cada ejecución puede producir un resultado diferente.

    Fuente: College Board AP Course and Exam Description

    RANDOM(a, b) devuelve un entero aleatorio de a a b (inclusive), permitiendo que un programa produzca resultados impredecibles — para juegos, muestreo o simulaciones. Cada llamada puede dar un valor diferente, por lo que un programa que usa aleatoriedad se comporta de manera diferente en cada ejecución.

    3.16

    Simulaciones

    Syllabus

    Comprensión perdurable (AAP-3): Los programadores descomponen problemas en partes más pequeñas y manejables. Al crear procedimientos y aprovechar parámetros, los programadores generalizan procesos que pueden reutilizarse. Los procedimientos permiten a los programadores recurrir a código existente que ya ha sido probado, lo que les posibilita escribir programas de forma más rápida y con mayor seguridad.

    Objetivo de aprendizaje AAP-3.F: Para las simulaciones: a. Explicar cómo las computadoras pueden utilizarse para representar fenómenos o resultados del mundo real. [Habilidad 1.A] b. Comparar simulaciones con contextos del mundo real. [Habilidad 1.D]

    • AAP-3.F.1 Las simulaciones son abstracciones de objetos o fenómenos más complejos con un propósito específico.
    • AAP-3.F.2 Una simulación es una representación que utiliza conjuntos variables de valores para reflejar el estado cambiante de un fenómeno.
    • AAP-3.F.3 Las simulaciones a menudo imitan eventos del mundo real con el fin de extraer inferencias, permitiendo la investigación de un fenómeno sin las limitaciones del mundo real.
    • AAP-3.F.4 El proceso de desarrollo de una simulación abstracta implica eliminar detalles específicos o simplificar la funcionalidad.
    • AAP-3.F.5 Las simulaciones pueden contener sesgos derivados de las elecciones de elementos del mundo real que fueron incluidos o excluidos.
    • AAP-3.F.6 Las simulaciones son más útiles cuando los eventos del mundo real son imprácticos para experimentos (p. ej., demasiado grandes, demasiado pequeños, demasiado rápidos, demasiado lentos, demasiado costosos o demasiado peligrosos).
    • AAP-3.F.7 Las simulaciones facilitan la formulación y refinamiento de hipótesis relacionadas con los objetos o fenómenos bajo consideración.
    • AAP-3.F.8 Los generadores de números aleatorios pueden utilizarse para simular la variabilidad que existe en el mundo real.

    Fuente: College Board AP Course and Exam Description

    Una simulación es un programa que modela un proceso del mundo real para estudiarlo de forma segura y económica. Las simulaciones simplifican la realidad (omitirán detalles) y a menudo usan aleatoriedad para imitar eventos fortuitos. Le permiten probar escenarios que serían demasiado costosos, lentos o peligrosos en la vida real — pero sus resultados son tan buenos como sus supuestos.

    Una simulación es una forma de hacer ciencia, no solo una imagen. Debido a que puede ejecutarse muchas veces, económicamente y cambiando una variable a la vez, una simulación facilita la formulación y refinamiento de hipótesis sobre el objeto o fenómeno bajo consideración: usted propone una explicación, ejecuta el modelo, compara el resultado con la realidad y ajusta ya sea la hipótesis o el modelo. Por eso importan las simplificaciones de una simulación — un resultado solo apoya una hipótesis sobre el mundo real en la medida en que lo que se omitió no importa.

    3.17

    Eficiencia Algorítmica

    Syllabus

    Comprensión Duradera (AAP-4): Existen problemas que las computadoras no pueden resolver, y aún cuando una computadora puede resolver un problema, es posible que no pueda hacerlo en un tiempo razonable.

    Objetivo de Aprendizaje AAP-4.A: Para determinar la eficiencia de un algoritmo: a. Explicar la diferencia entre algoritmos que se ejecutan en un tiempo razonable y aquellos que no. [Habilidad 1.D] b. Identificar situaciones en las que una solución heurística puede ser más apropiada. [Habilidad 1.D]

    • AAP-4.A.1 Un problema es una descripción general de una tarea que puede (o no puede) resolverse algorítmicamente. Una instancia de un problema también incluye una entrada específica. Por ejemplo, ordenar es un problema; ordenar la lista (2,3,1,7) es una instancia del problema.
    • AAP-4.A.2 Un problema de decisión es un problema con una respuesta de sí/no (p. ej., ¿hay un camino de A a B?). Un problema de optimización es un problema cuyo objetivo es encontrar la solución "mejor" entre muchas (p. ej., ¿cuál es el camino más corto de A a B?).
    • AAP-4.A.3 La eficiencia es una estimación de la cantidad de recursos computacionales utilizados por un algoritmo. La eficiencia se expresa típicamente como una función del tamaño de la entrada.
      • Declaración de exclusión (EK AAP-4.A.3): El análisis formal de algoritmos (Big-O) y el razonamiento formal mediante fórmulas matemáticas están fuera del alcance de este curso y del examen AP.
    • AAP-4.A.4 La eficiencia de un algoritmo se determina mediante un razonamiento formal o matemático.
    • AAP-4.A.5 La eficiencia de un algoritmo puede medirse informalmente determinando el número de veces que se ejecuta una declaración o un grupo de declaraciones.
    • AAP-4.A.6 Diferentes algoritmos correctos para el mismo problema pueden tener diferentes eficiencias.
    • AAP-4.A.7 Los algoritmos con una eficiencia polinomial o más lenta (constante, lineal, cuadrática, cúbica, etc.) se dice que se ejecutan en un tiempo razonable. Los algoritmos con eficiencias exponenciales o factoriales son ejemplos de algoritmos que se ejecutan en un tiempo irrazonable.
    • AAP-4.A.8 Algunos problemas no pueden resolverse en un tiempo razonable porque no existe un algoritmo eficiente para resolverlos. En estos casos, se buscan soluciones aproximadas.
    • AAP-4.A.9 Una heurística es un enfoque para un problema que produce una solución que no está garantizada como óptima, pero que puede utilizarse cuando las técnicas que garantizan siempre encontrar una solución óptima son imprácticas.
      • Declaración de exclusión (AAP-4.A.9): Las soluciones heurísticas específicas están fuera del alcance de este curso y del examen AP.

    Fuente: College Board AP Course and Exam Description

    Eficiencia es cuánto tiempo (o memoria) necesita un algoritmo a medida que crece su entrada. Un algoritmo de tiempo razonable crece como un polinomio del tamaño de la entrada (p. ej., lineal o cuadrático); un algoritmo de tiempo irrazonable crece mucho más rápido (p. ej., duplicándose con cada elemento añadido), volviéndose impráctico para entradas grandes. Un algoritmo más rápido puede hacer solucionable un problema que antes era imposible. A veces una respuesta exacta tarda demasiado, por lo que se usa en su lugar una heurística — un enfoque que encuentra una respuesta lo suficientemente buena rápidamente.

    Cómo crece el tiempo de ejecución de un algoritmo con el tamaño de entrada n
    Cómo crece el tiempo de ejecución de un algoritmo con el tamaño de entrada n
    3.18

    Problemas Indecidibles

    Syllabus

    Comprensión Duradera (AAP-4): Existen problemas que las computadoras no pueden resolver, e incluso cuando una computadora puede resolver un problema, puede que no sea capaz de hacerlo en un tiempo razonable.

    Objetivo de Aprendizaje AAP-4.B: Explicar la existencia de problemas indecisibles en la ciencia de la computación. [Habilidad 1.A]

    • AAP-4.B.1 Un problema decidible es un problema de decisión para el cual se puede escribir un algoritmo que produzca una salida correcta para todas las entradas (p. ej., "¿Es el número par?").
    • AAP-4.B.2 Un problema indecisible es aquel para el cual no se puede construir ningún algoritmo que esté siempre en condiciones de proporcionar una respuesta correcta de sí o no.
      • Enunciado de exclusión (EK AAP-4.B.2): Determinar si un problema dado es indecible está fuera del alcance de este curso y del Examen AP.
    • AAP-4.B.3 Un problema indecisible puede tener algunas instancias que tienen una solución algorítmica, pero no existe ninguna solución algorítmica que pueda resolver todas las instancias del problema.

    Fuente: College Board AP Course and Exam Description

    Algunos problemas son ind decidibles: ningún algoritmo puede resolver todos sus casos con una respuesta correcta de sí/no. Esta es una limitación fundamental de la computación — no un tema de necesitar una computadora más rápida, sino una prueba de que tal algoritmo no puede existir.

    Habilidad de examen: poder determinar el resultado de un segmento de código rastreándolo, comparar la eficiencia de dos algoritmos (tiempo razonable vs irrazonable) y reconocer la abstracción procedural y de datos en un programa.

    3.18

    Consejos para el examen

    • Sepa que una variable es un almacenamiento con nombre para un valor y rastree cómo la asignación la actualiza paso a paso.
    • Lea la pseudocódigo AP cuidadosamente — a <- expression asigna, y las listas están indexadas desde 1 en la hoja de referencia del examen.
    • Distinga una variable de una lista (una colección accedida por índice) y use correctamente las operaciones de lista.
    • Evalúe expresiones con la precedencia correcta y la lógica booleana (AND, OR, NOT).
    • Elija nombres de variables claros y significativos — las tareas escritas recompensan el código legible.
  • 4

    Sistemas Informáticos y Redes

    Ver lección
    4.1

    Internet

    Syllabus

    Comprensión duradera (CSN-1): Los sistemas informáticos y las redes facilitan la transferencia de datos.

    Objetivo de aprendizaje CSN-1.A: Explicar cómo los dispositivos informáticos trabajan juntos en una red. [Habilidad 5.A]

    • CSN-1.A.1 Un dispositivo informático es un artefacto físico que puede ejecutar un programa. Algunos ejemplos incluyen computadoras, tabletas, servidores, routers y sensores inteligentes.
    • CSN-1.A.2 Un sistema informático es un grupo de dispositivos informáticos y programas que trabajan juntos para un propósito común.
    • CSN-1.A.3 Una red informática es un grupo de dispositivos informáticos interconectados capaces de enviar o recibir datos.
    • CSN-1.A.4 Una red informática es un tipo de sistema informático.
    • CSN-1.A.5 Un camino entre dos dispositivos informáticos en una red informática (un emisor y un receptor) es una secuencia de dispositivos informáticos directamente conectados que comienza en el emisor y termina en el receptor.
    • CSN-1.A.6 El enrutamiento es el proceso de encontrar un camino desde el emisor hasta el receptor.
    • CSN-1.A.7 El ancho de banda de una red informática es la cantidad máxima de datos que se pueden enviar en un período de tiempo fijo.
    • CSN-1.A.8 El ancho de banda generalmente se mide en bits por segundo.

    Objetivo de aprendizaje CSN-1.B: Explicar cómo funciona Internet. [Habilidad 5.A]

    • CSN-1.B.1 Internet es una red informática compuesta por redes interconectadas que utilizan protocolos de comunicación estandarizados y abiertos (no propietarios).
    • CSN-1.B.2 El acceso a Internet depende de la capacidad de conectar un dispositivo informático a un dispositivo conectado a Internet.
    • CSN-1.B.3 Un protocolo es un conjunto de reglas acordadas que especifican el comportamiento de un sistema.
    • CSN-1.B.4 Los protocolos utilizados en Internet son abiertos, lo que permite a los usuarios conectar fácilmente más dispositivos informáticos a Internet.
    • CSN-1.B.5 El enrutamiento en Internet generalmente es dinámico; no se especifica con anticipación.
    • CSN-1.B.6 La escalabilidad de un sistema es la capacidad del mismo para cambiar de tamaño y escala para satisfacer nuevas demandas.
    • CSN-1.B.7 Internet fue diseñado para ser escalable.

    Objetivo de aprendizaje CSN-1.C: Explicar cómo se envían los datos a través de Internet mediante paquetes. [Habilidad 5.A]

    • CSN-1.C.1 La información se transmite a través de Internet como un flujo de datos. Los flujos de datos contienen fragmentos de datos, los cuales están encapsulados en paquetes.
    • CSN-1.C.2 Los paquetes contienen un fragmento de datos y metadatos utilizados para enrutarse entre el origen y el destino en Internet, así como para la reensamblaje de datos.
    • CSN-1.C.3 Los paquetes pueden llegar al destino en orden, desordenados o no llegar en absoluto.
    • CSN-1.C.4 IP, TCP y UDP son protocolos comunes utilizados en Internet.

    Objetivo de aprendizaje CSN-1.D: Describir las diferencias entre Internet y la World Wide Web. [Habilidad 5.A]

    • CSN-1.D.1 La World Wide Web es un sistema de páginas, programas y archivos vinculados.
    • CSN-1.D.2 HTTP es un protocolo utilizado por la World Wide Web.
    • CSN-1.D.3 La World Wide Web utiliza Internet.

    Fuente: College Board AP Course and Exam Description

    Un conector Ethernet RJ45 — los enlaces físicos transportan paquetes a través de Internet
    Un conector Ethernet RJ45 — los enlaces físicos transportan paquetes a través de Internet

    El Internet es una red global de redes. Los datos viajan como paquetes – pequeños fragmentos que se envían por separado y se reensamblan en el destino. Dos ideas permiten su funcionamiento a gran escala:

    Internet es la red mundial; la web es un servicio que corre sobre ella
    Internet es la red mundial; la web es un servicio que corre sobre ella
    • Protocolos son reglas acordadas para la comunicación. Las direcciones IP (Internet Protocol) dirigen y enrutean paquetes; TCP los reensambla en orden y solicita nuevamente los perdidos; HTTP transporta páginas web; DNS traduce un nombre como example.com a una dirección IP.
    • Redundancia y enrutamiento: existen muchas rutas posibles entre dos puntos, por lo que si una ruta falla, los paquetes toman otra. Esto hace que Internet sea tolerante a fallos.

    Internet está diseñado para ser abierto y escalable – construido sobre estándares que cualquiera puede usar, por lo que sigue funcionando cuando billones de dispositivos se conectan. El ancho de banda es la cantidad de datos que una conexión puede transportar por segundo.

    Explorar

    Cómo viajan los datos por Internet en paquetes

    Internet divide un mensaje en paquetes numerados, cada uno direccionado y enrutado de forma independiente (a menudo por rutas diferentes), y luego se vuelven a ensamblar en el destino. Este diseño lo hace tolerante a fallos: si una ruta falla, los paquetes toman otra.

    Vocabulario Entrenar
    Inglés Chino Pinyin
    Internet/ˈɪntənet/ 互联网 hù lián wǎng
    packets/ˈpækɪts/ 数据包 shù jù bāo
    Protocols/ˈprəʊtəkɒlz/ 协议 xié yì
    Redundancy/rɪˈdʌndənsi/ 冗余 rǒng yú
    fault-tolerant/fɒlt ˈtɒlərənt/ 容错 róng cuò
    Bandwidth/ˈbændwɪdθ/ 带宽 dài kuān
    reliability/rɪˌlaɪəˈbɪlɪti/ 可靠性 kě kào xìng
    Sequential computing/siːˈkwenʃl kəmˈpjuːtɪŋ/ 顺序计算 shùn xù jì suàn
    Parallel computing/ˈpærəlel kəmˈpjuːtɪŋ/ 并行计算 bìng xíng jì suàn
    Distributed computing/ˈdɪstrɪbjuːtɪd kəmˈpjuːtɪŋ/ 分布式计算 fēn bù shì jì suàn
    speedup/ˈspiːdʌp/ 加速比 jiā sù bǐ
    Ver lección
    4.2

    Tolerancia a Fallos

    Syllabus

    Comprensión Duradera (CSN-1): Los sistemas informáticos y las redes facilitan la transferencia de datos.

    Objetivo de Aprendizaje CSN-1.E: Para los sistemas tolerantes a fallos, como Internet: a. Describir los beneficios de la tolerancia a fallos. [Habilidad 1.D] b. Explicar cómo un sistema dado es tolerante a fallos. [Habilidad 5.A] c. Identificar vulnerabilidades ante fallos en un sistema. [Habilidad 1.D]

    • CSN-1.E.1 Internet ha sido diseñado para ser tolerante a fallos, con abstracciones para el enrutamiento y la transmisión de datos.
    • CSN-1.E.2 La redundancia es la inclusión de componentes adicionales que pueden utilizarse para mitigar la falla de un sistema si otros componentes fallan.
    • CSN-1.E.3 Una forma de lograr la redundancia de red es tener más de una ruta entre cualquier par de dispositivos conectados.
    • CSN-1.E.4 Si falla un dispositivo o conexión específico en Internet, los datos subsiguientes se enviarán por una ruta diferente, si es posible.
    • CSN-1.E.5 Cuando un sistema puede soportar fallos y continuar funcionando, se denomina tolerante a fallos. Esto es importante porque los elementos de los sistemas complejos fallan en momentos inesperados, a menudo en grupos, y la tolerancia a fallos permite a los usuarios seguir utilizando la red.
    • CSN-1.E.6 La redundancia dentro de un sistema suele requerir recursos adicionales, pero puede ofrecer el beneficio de la tolerancia a fallos.
    • CSN-1.E.7 La redundancia de las opciones de enrutamiento entre dos puntos aumenta la fiabilidad de Internet y ayuda a escalarlo a más dispositivos y más personas.

    Fuente: College Board AP Course and Exam Description

    Un router Wi-Fi: la puerta de enlace local que reenvía paquetes hacia la red más amplia de Internet
    Un router Wi-Fi: la puerta de enlace local que reenvía paquetes hacia la red más amplia de Internet

    Un sistema es tolerante a fallos si sigue funcionando incluso cuando parte de él falla. Internet logra esto mediante conexiones redundantes: como los paquetes pueden enrutarse por múltiples caminos, el fallo de un router o cable no detiene la comunicación – el tráfico simplemente se redirige. La tolerancia a fallos requiere recursos adicionales (las rutas redundantes), pero mejora significativamente la fiabilidad. Una sola ruta sin respaldo no es tolerante a fallos.

    Conmutación por paquetes envía paquetes por rutas independientes, permitiendo que la red toleren enlaces fallidos
    Conmutación por paquetes envía paquetes por rutas independientes, permitiendo que la red toleren enlaces fallidos
    4.3

    Cómputo Paralelo y Distribuido

    Syllabus

    Comprensión perdurable (CSN-2): El cómputo paralelo y distribuido aprovecha múltiples computadoras para resolver problemas complejos o procesar grandes conjuntos de datos más rápidamente.

    Objetivo de aprendizaje CSN-2.A: Para el cómputo secuencial, paralelo y distribuido: a. Comparar soluciones de problemas. [Habilidad 1.D] b. Determinar la eficiencia de las soluciones. [Habilidad 1.D]

    • CSN-2.A.1 El cómputo secuencial es un modelo computacional en el que las operaciones se realizan una a la vez, en orden.
    • CSN-2.A.2 El cómputo paralelo es un modelo computacional en el que el programa se divide en múltiples operaciones de cómputo secuencial más pequeñas, algunas de las cuales se ejecutan simultáneamente.
    • CSN-2.A.3 El cómputo distribuido es un modelo computacional en el que se utilizan múltiples dispositivos para ejecutar un programa.
    • CSN-2.A.4 La comparación de la eficiencia de las soluciones puede realizarse comparando el tiempo que tardan en realizar la misma tarea.
    • CSN-2.A.5 Una solución secuencial tarda tanto como la suma de todos sus pasos.
    • CSN-2.A.6 Una solución de cómputo paralelo tarda tanto como sus tareas secuenciales más la duración de su tarea paralela más larga.
    • CSN-2.A.7 El "aceleramiento" de una solución paralela se mide dividiendo el tiempo que tomó completar la tarea de forma secuencial entre el tiempo que tomó completarla de forma paralela.

    Objetivo de aprendizaje CSN-2.B: Describir los beneficios y desafíos del cómputo paralelo y distribuido. [Habilidad 1.D]

    • CSN-2.B.1 El cómputo paralelo consiste en una porción paralela y una porción secuencial.
    • CSN-2.B.2 Las soluciones que utilizan cómputo paralelo pueden escalar de manera más efectiva que las soluciones que utilizan cómputo secuencial.
    • CSN-2.B.3 El cómputo distribuido permite resolver problemas que no podrían resolverse en una sola computadora debido al tiempo de procesamiento o a los requisitos de almacenamiento implicados.
    • CSN-2.B.4 El cómputo distribuido permite resolver problemas mucho más grandes más rápido de lo que sería posible con una sola computadora.
    • CSN-2.B.5 Al aumentar el uso del cómputo paralelo en una solución, la eficiencia de esta sigue estando limitada por la porción secuencial. Esto significa que, en algún momento, añadir porciones paralelas ya no aumentará significativamente la eficiencia.

    Fuente: College Board AP Course and Exam Description

    Gabinetes de servidores de centros de datos: el cómputo distribuido reparte el trabajo entre muchas máquinas
    Gabinetes de servidores de centros de datos: el cómputo distribuido reparte el trabajo entre muchas máquinas
    • Cómputo secuencial ejecuta una operación a la vez.
    • Cómputo paralelo divide una tarea en partes que se ejecutan al mismo tiempo en múltiples procesadores, terminando más rápido.
    • Cómputo distribuido utiliza muchas computadoras conectadas por una red para trabajar en un solo problema – esencial para problemas demasiado grandes para una sola máquina.
    Cómputo paralelo: muchos procesadores trabajan al mismo tiempo
    Cómputo paralelo: muchos procesadores trabajan al mismo tiempo

    La aceleración de una solución paralela es el tiempo secuencial dividido por el tiempo paralelo. La aceleración tiene límites: las partes que deben ejecutarse en secuencia no pueden acelerarse agregando procesadores, por lo que duplicar los procesadores rara vez duplica la velocidad.

    Ejemplo resuelto. Una tarea tiene una parte que debe ejecutarse secuencialmente, que toma $40$ segundos, más una parte paralelizable que toma $60$ segundos en un procesador – así que en un solo procesador toda la tarea tarda $40+60=100$ segundos. Si se reparte la parte paralela entre $3$ procesadores, toma $\tfrac{60}{3}=20$ segundos, por lo que el tiempo total paralelo es $40+20=60$ segundos y la aceleración es $\tfrac{100}{60}\approx1.67$. La parte secuencial de $40$ segundos es un límite inferior: incluso con infinitos procesadores, la tarea nunca podrá terminar en menos de $40$ segundos.

    Habilidad para el examen: dados los tiempos para las porciones secuenciales y paralelas de una tarea, ser capaz de calcular el tiempo total paralelo y la aceleración.

    4.3

    Consejos para el examen

    • Describir cómo viajan los datos en paquetes a través de una red redundante y tolerante a fallos de routers independientes.
    • Saber que los protocolos (IP, TCP, HTTP) son reglas acordadas, y que los estándares abiertos permiten la interoperabilidad entre diferentes sistemas.
    • Explicar la escalabilidad y cómo crece Internet sin control central.
    • Contrastar el ancho de banda (tasa) con la latencia (retraso), y describir la búsqueda de nombres a direcciones del DNS.
    • Discutir la brecha digital y los conceptos básicos de seguridad (criptografía, autenticación) en términos sencillos.
  • 5

    Impacto de la Computación

    Ver lección
    5.1

    Efectos Benéficos y Perjudiciales

    Syllabus

    Comprensión Duradera (IOC-1): Si bien las innovaciones computacionales suelen diseñarse para lograr un propósito específico, pueden tener consecuencias no intencionales.

    Objetivo de Aprendizaje IOC-1.A: Explicar cómo un efecto de una innovación computacional puede ser tanto benéfico como perjudicial. [Habilidad 5.C]

    • IOC-1.A.1 Las personas crean innovaciones computacionales.
    • IOC-1.A.2 La forma en que las personas completan tareas suele cambiar para incorporar nuevas innovaciones computacionales.
    • IOC-1.A.3 No todos los efectos de una innovación computacional se anticipan por adelantado.
    • IOC-1.A.4 Un único efecto puede considerarse tanto benéfico como perjudicial según diferentes personas, o incluso según la misma persona.
    • IOC-1.A.5 Los avances en computación han generado y aumentado la creatividad en otros campos, como la medicina, la ingeniería, las comunicaciones y las artes.

    Objetivo de Aprendizaje IOC-1.B: Explicar cómo una innovación computacional puede tener un impacto más allá de su propósito previsto. [Habilidad 5.C]

    • IOC-1.B.1 Las innovaciones computacionales pueden utilizarse de formas que sus creadores no habían previsto originalmente:
      • La World Wide Web fue diseñada inicialmente solo para el intercambio rápido y fácil de información dentro de la comunidad científica.
      • La publicidad segmentada se utiliza para ayudar a las empresas, pero puede ser malutilizada tanto a nivel individual como agregado.
      • El aprendizaje automático y la minería de datos han permitido la innovación en medicina, negocios y ciencia, pero la información descubierta de esta manera también ha sido utilizada para discriminar contra grupos de personas.
    • IOC-1.B.2 Algunas de las formas en que se pueden utilizar las innovaciones computacionales pueden tener un impacto perjudicial en la sociedad, la economía o la cultura.
    • IOC-1.B.3 Los programadores responsables intentan considerar las formas no intencionales en que sus innovaciones computacionales pueden ser utilizadas y los posibles efectos benéficos y perjudiciales de estos nuevos usos.
    • IOC-1.B.4 No es posible para un programador considerar todas las formas en que una innovación computacional puede ser utilizada.
    • IOC-1.B.5 Las innovaciones computacionales han tenido a menudo efectos benéficos no intencionales al conducir a avances en otros campos.
    • IOC-1.B.6 El intercambio rápido de un programa o la ejecución de un programa con un gran número de usuarios puede resultar en impactos significativos más allá del propósito previsto o del control del programador.

    Fuente: College Board AP Course and Exam Description

    Una pila de residuos electrónicos — la computación tiene costos ambientales, pero también beneficios
    Una pila de residuos electrónicos — la computación tiene costos ambientales, pero también beneficios

    Cada innovación computacional puede utilizarse de formas que ayuden y de formas que perjudiquen; a menudo, la misma tecnología hace ambas cosas. Una red social conecta personas y puede propagar desinformación; la automatización aumenta la productividad y puede eliminar empleos. Los efectos frecuentemente son no intencionales: los creadores no pueden prever cada uso posible. Al evaluar una innovación computacional, sopesa sus beneficios y perjuicios para las personas y la sociedad, y recuerda que los daños no siempre son deliberados.

    La computación afecta el bienestar público de varias maneras
    La computación afecta el bienestar público de varias maneras

    La computación también genera creatividad en otros campos, lo cual el CED solicita como un beneficio por derecho propio, no simplemente como conveniencia: modelado e imagen en medicina, simulación en ingeniería, nuevas formas en las artes y la música, y nuevos tipos de comunicación. Los efectos benéficos de una innovación a menudo se encuentran en un campo muy ajeno a la computación.

    5.2

    La Brecha Digital

    Syllabus

    Comprensión Duradera (IOC-1): Si bien las innovaciones informáticas suelen diseñarse para cumplir un propósito específico, pueden tener consecuencias no intencionadas.

    Objetivo de Aprendizaje IOC-1.C: Describir los factores que contribuyen a la brecha digital. [Habilidad 5.C]

    • IOC-1.C.1 El acceso a Internet varía según las características socioeconómicas, geográficas y demográficas, así como entre países.
    • IOC-1.C.2 La "brecha digital" se refiere a las diferencias en el acceso a dispositivos informáticos e Internet, basadas en características socioeconómicas, geográficas o demográficas.
    • IOC-1.C.3 La brecha digital puede afectar tanto a grupos como a individuos.
    • IOC-1.C.4 La brecha digital plantea cuestiones de equidad, acceso e influencia, tanto a nivel global como local.
    • IOC-1.C.5 La brecha digital se ve afectada por las acciones de individuos, organizaciones y gobiernos.

    Fuente: College Board AP Course and Exam Description

    La brecha digital 数字鸿沟 es el acceso desigual a la computación e Internet entre grupos — por ingresos, geografía, edad o país. Quienes tienen acceso obtienen educación, empleo y servicios; quienes no tienen acceso quedan más rezagados. La brecha está determinada por factores económicos, sociales y geográficos, y los esfuerzos para cerrarla (dispositivos asequibles, acceso público, infraestructura) buscan hacer que los beneficios de la computación sean más justos.

    Computadoras de biblioteca pública: la brecha digital trata sobre el acceso desigual a dispositivos, conectividad y habilidades
    Computadoras de biblioteca pública: la brecha digital trata sobre el acceso desigual a dispositivos, conectividad y habilidades
    Antena satelital rural: la geografía todavía determina quién obtiene internet rápido y quién espera
    Antena satelital rural: la geografía todavía determina quién obtiene internet rápido y quién espera
    5.3

    Sesgo Computacional

    Syllabus

    Comprensión perdurable (IOC-1): Aunque las innovaciones computacionales suelen diseñarse para lograr un propósito específico, pueden tener consecuencias no deseadas.

    Objetivo de aprendizaje IOC-1.D: Explicar cómo existe el sesgo en las innovaciones computacionales. [Habilidad 5.E]

    • IOC-1.D.1 Las innovaciones computacionales pueden reflejar los sesgos humanos existentes debido a los sesgos integrados en los algoritmos o a los sesgos presentes en los datos utilizados por la innovación.
    • IOC-1.D.2 Los programadores deben tomar medidas para reducir el sesgo en los algoritmos utilizados en las innovaciones computacionales como forma de contrarrestar los sesgos humanos existentes.
    • IOC-1.D.3 Los sesgos pueden estar incrustados en todos los niveles del desarrollo de software.

    Fuente: College Board AP Course and Exam Description

    Un automóvil autónomo en una calle de ciudad — los sistemas autónomos plantean preguntas sobre seguridad y sesgo
    Un automóvil autónomo en una calle de ciudad — los sistemas autónomos plantean preguntas sobre seguridad y sesgo

    El sesgo 偏见 puede estar incorporado en los sistemas computacionales, a menudo sin intención. Si los datos utilizados para construir un sistema reflejan prejuicios existentes, o si las suposiciones de los diseñadores son unilaterales, el sistema puede producir resultados injustos (por ejemplo, una herramienta de contratación que favorece a un grupo). El sesgo puede ingresar en cada etapa — recolección de datos, diseño y uso — por lo que los sistemas deben probarse para verificar su equidad entre diferentes grupos. Reconocer que "la computadora dijo eso" no es lo mismo que "justo" es un hábito importante.

    5.4

    Crowdsourcing

    Syllabus

    Comprensión duradera (IOC-1): Aunque las innovaciones informáticas suelen diseñarse para cumplir un propósito específico, pueden tener consecuencias no deseadas.

    Objetivo de aprendizaje IOC-1.E: Explicar cómo las personas participan en procesos de resolución de problemas a gran escala. [Habilidad 1.C]

    • IOC-1.E.1 El acceso generalizado a la información y los datos públicos facilita la identificación de problemas, el desarrollo de soluciones y la difusión de resultados.
    • IOC-1.E.2 La ciencia se ha visto afectada por el uso de la "ciencia ciudadana" distribuida para resolver problemas científicos.
    • IOC-1.E.3 La ciencia ciudadana es la investigación científica llevada a cabo total o parcialmente por individuos distribuidos, muchos de los cuales pueden no ser científicos, que contribuyen con datos relevantes a la investigación utilizando sus propios dispositivos informáticos.
    • IOC-1.E.4 Crowdsourcing es la práctica de obtener entrada o información de un gran número de personas a través de Internet.
    • IOC-1.E.5 Las capacidades humanas pueden mejorarse mediante la colaboración a través de la informática.
    • IOC-1.E.6 El crowdsourcing ofrece nuevos modelos de colaboración, como conectar empresas o causas sociales con financiamiento.

    Fuente: College Board AP Course and Exam Description

    El crowdsourcing 众包 obtiene insumos, ideas o financiamiento de un gran grupo de personas, generalmente en línea. Aprovecha el conocimiento y el esfuerzo de muchos: proyectos de mapeo, reseñas de productos, ciencia ciudadana y crowdfunding dependen de él. Internet hace posible el crowdsourcing a una escala y velocidad nunca antes alcanzadas, permitiendo que un proyecto reciba contribuciones de todo el mundo.

    Edición masiva en Wikipedia: el crowdsourcing agrupa el trabajo de muchas personas en un recurso compartido
    Edición masiva en Wikipedia: el crowdsourcing agrupa el trabajo de muchas personas en un recurso compartido
    Vocabulario Entrenar
    Inglés Chino Pinyin
    digital divide/ˈdɪdʒɪtl dɪˈvaɪd/ 数字鸿沟 shù zì hóng gōu
    Bias/ˈbaɪəs/ 偏见 piān jiàn
    Crowdsourcing/ˈkraʊdsɔːsɪŋ/ 众包 zhòng bāo
    Intellectual property/ˌɪntəˈlektʃuːəl ˈprɒpəti/ 知识产权 zhī shí chǎn quán
    5.5

    Preocupaciones Legales y Éticas

    Syllabus

    Comprensión duradera (IOC-1): Si bien las innovaciones computacionales suelen diseñarse para cumplir un propósito específico, pueden tener consecuencias no deseadas.

    Objetivo de aprendizaje IOC-1.F: Explicar cómo el uso de la computación puede generar preocupaciones legales y éticas. [Habilidad 5.E]

    • IOC-1.F.1 El material creado en una computadora es propiedad intelectual del creador o de una organización.
    • IOC-1.F.2 La facilidad de acceso y distribución de la información digitalizada plantea preocupaciones sobre la propiedad intelectual respecto a la titularidad, el valor y el uso.
    • IOC-1.F.3 Se deben tomar medidas para salvaguardar la propiedad intelectual.
    • IOC-1.F.4 El uso de material creado por otra persona sin permiso y presentado como propio constituye plagio y puede tener consecuencias legales.
    • IOC-1.F.5 Algunos ejemplos de formas legales de utilizar material creado por otras personas incluyen:
      • Creative Commons—una licencia pública de copyright que permite la distribución gratuita de una obra protegida por derechos de autor que de otro modo lo estaría. Se utiliza cuando el creador del contenido desea otorgar a otros el derecho de compartir, usar y derivar obras a partir de su creación.
      • open source (código abierto)—programas que se ponen a disposición gratuitamente y que pueden redistribuirse y modificarse.
      • open access (acceso abierto)—publicaciones de investigación en línea disponibles sin restricciones de acceso y con pocas o ninguna restricción de uso, tales como limitaciones de copyright o licencias.
    • IOC-1.F.6 El uso de material creado por alguien distinto a uno mismo debe citarse siempre.
    • IOC-1.F.7 Creative Commons, el código abierto y el acceso abierto han permitido un amplio acceso a la información digital.
    • IOC-1.F.8 Al igual que con cualquier tecnología o medio, el uso de la computación para dañar a individuos o grupos de personas genera preocupaciones legales y éticas.
    • IOC-1.F.9 La computación puede jugar un papel en problemas sociales y políticos, lo cual a menudo genera preocupaciones legales y éticas.
    • IOC-1.F.10 La brecha digital plantea preocupaciones éticas relacionadas con la computación.
    • IOC-1.F.11 Las innovaciones computacionales pueden generar preocupaciones legales y éticas. Algunos ejemplos de estas incluyen:
      • el desarrollo de software que permite el acceso a descargas y transmisiones de medios digitales
      • el desarrollo de algoritmos que incluyen sesgos
      • la existencia de dispositivos computacionales que recopilan y analizan datos mediante el monitoreo continuo de actividades

    Fuente: College Board AP Course and Exam Description

    Sala de control CCTV: los sistemas de vigilancia intercambian ganancias de seguridad contra preocupaciones de privacidad
    Sala de control CCTV: los sistemas de vigilancia intercambian ganancias de seguridad contra preocupaciones de privacidad

    La computación plantea preguntas de ley y ética:

    • Propiedad intelectual 知识产权 y copyright 版权 protegen el trabajo de los creadores; su uso puede requerir permiso o licencia. Las licencias de código abierto 开源 y Creative Commons permiten a los creadores compartir su trabajo bajo términos establecidos.
    • Plagio 抄袭 — usar el trabajo de otros como propio — es poco ético y a menudo ilegal.
    • La recopilación y uso de datos personales plantea preguntas de privacidad sobre consentimiento y mal uso.

    Los tres términos "abiertos", que no son lo mismo

    Término Qué significa
    código abierto open source programas que se ponen a disposición gratuitamente y pueden ser redistribuidos y modificados por cualquiera. La licencia otorga explícitamente esos derechos; que sea gratuito no es lo mismo que código abierto, y un programa gratuito que no puedes modificar no es código abierto.
    acceso abierto open access 开放获取 investigación y otro contenido puesto a disposición en línea sin cargo, por lo que un lector no necesita suscripción. No dice nada sobre el derecho a modificarlo.
    Creative Commons 知识共享 una familia de licencias que un creador aplica a su propio trabajo para otorgar permisos específicos de antemano — por ejemplo, "puedes reutilizar esto si me das crédito" o "puedes reutilizar esto pero no comercialmente".

    Los tres son formas de otorgar derechos que el creador posee por defecto bajo copyright. Por eso importan para el examen: el copyright es automático, por lo que cualquier cosa que no esté licenciada explícitamente está restringida, y su uso requiere permiso.

    Que algo sea técnicamente posible no lo hace legal ni ético.

    ¿Qué se registra mientras navegas

    Dos rutas de recopilación que menciona el CED, y ninguna requiere que escribas nada:

    • Los sitios web pueden registrar y mantener un historial de las personas que han visto sus páginas — qué páginas, cuándo, cuánto tiempo y desde qué dispositivo.
    • Los motores de búsqueda pueden usar tu historial de búsquedas para sugerir sitios web y realizar marketing dirigido: el anuncio sigue a la búsqueda, por eso un producto consultado una vez aparece durante semanas.

    Ninguno es inherentemente malicioso, y ambos son el mecanismo detrás de servicios que las personas encuentran útiles. El punto que el examen busca es que los datos recopilados para un propósito pueden combinarse y usarse para otro, a menudo sin que la persona se dé cuenta de que aceptó hacerlo.

    Vocabulario Entrenar
    Inglés Chino Pinyin
    copyright/ˈkɒpɪraɪt/ 版权 bǎn quán
    Open-source/ˈəʊpən sɔːs/ 开源 kāi yuán
    Plagiarism/ˈpleɪdʒərɪzəm/ 抄袭 chāo xí
    open access/ˈəʊpən ˈækses/ 开放获取 kāi fàng huò qǔ
    Creative Commons/kriːˈeɪtɪv ˈkɒmənz/ 知识共享 zhī shí gòng xiǎng
    Personally identifiable information (PII)/ˈpɜːsənəli aɪˈdentɪfaɪəbl ˌɪnfəˈmeɪʃn/ 个人身份信息 gè rén shēn fèn xìn xī
    identity theft/aɪˈdentɪti θeft/ 身份盗窃 shēn fèn dào qiè
    open source/ˈəʊpən sɔːs/ 开源 kāi yuán
    5.6

    Computación Segura

    Syllabus

    Comprensión Duradera (IOC-2): El uso de innovaciones computacionales puede implicar riesgos para la seguridad personal y la identidad.

    Objetivo de Aprendizaje IOC-2.A: Describir los riesgos a la privacidad derivados de la recopilación y almacenamiento de datos personales en un sistema informático. [Habilidad 5.D]

    • IOC-2.A.1 La información identificable personalmente (PII, por sus siglas en inglés) es información sobre un individuo que lo identifica, vincula, relaciona o describe. Los ejemplos de PII incluyen:
      • Número de seguridad social
      • edad
      • raza
      • número(s) de teléfono
      • información médica
      • información financiera
      • datos biométricos
    • IOC-2.A.2 Los motores de búsqueda pueden registrar y mantener un historial de las búsquedas realizadas por los usuarios.
    • IOC-2.A.3 Los sitios web pueden registrar y mantener un historial de las personas que han visitado sus páginas.
    • IOC-2.A.4 Los dispositivos, sitios web y redes pueden recopilar información sobre la ubicación de un usuario.
    • IOC-2.A.5 La tecnología permite la recopilación, el uso y la explotación de información sobre, por y para individuos, grupos e instituciones.
    • IOC-2.A.6 Los motores de búsqueda pueden utilizar el historial de búsquedas para sugerir sitios web o para marketing dirigido.
    • IOC-2.A.7 Los datos personales dispares, como la geolocalización, las cookies y el historial de navegación, pueden agregarse para crear conocimiento sobre un individuo.
    • IOC-2.A.8 La PII y otra información publicada en línea pueden utilizarse para mejorar las experiencias en línea de un usuario.
    • IOC-2.A.9 La PII almacenada en línea puede utilizarse para simplificar las compras en línea.
    • IOC-2.A.10 La curaduría comercial y gubernamental de la información puede ser explotada si se ignoran la privacidad y otras protecciones.
    • IOC-2.A.11 La información publicada en línea puede utilizarse de maneras no previstas y que pueden tener un impacto dañino. Por ejemplo, un correo electrónico puede reenviarse, los tweets pueden retwittearse y las publicaciones de redes sociales pueden ser vistas por potenciales empleadores.
    • IOC-2.A.12 La PII puede utilizarse para acosar o robar la identidad de una persona o para ayudar en la planificación de otros actos delictivos.
    • IOC-2.A.13 Una vez que la información se publica en línea, es difícil eliminarla.
    • IOC-2.A.14 Los programas pueden recopilar su ubicación y registrar dónde ha estado, cómo llegó allí y cuánto tiempo estuvo en una ubicación determinada.
    • IOC-2.A.15 La información publicada en servicios de redes sociales puede ser utilizada por otras personas. Combinar la información publicada en redes sociales con otras fuentes puede utilizarse para deducir información privada sobre usted.

    Objetivo de Aprendizaje IOC-2.B: Explicar cómo pueden protegerse los recursos computacionales y cómo pueden ser malutilizados. [Habilidad 5.E]

    • IOC-2.B.1 Las medidas de autenticación protegen los dispositivos y la información contra el acceso no autorizado. Ejemplos de medidas de autenticación incluyen contraseñas fuertes y autenticación multifactor.
    • IOC-2.B.2 Una contraseña fuerte es algo que es fácil de recordar para un usuario pero que sería difícil de adivinar para alguien más basándose en el conocimiento de ese usuario.
    • IOC-2.B.3 La autenticación multifactor es un método de control de acceso a computadoras en el que a un usuario solo se le otorga acceso tras presentar con éxito varias piezas separadas de evidencia a un mecanismo de autenticación, típicamente en al menos dos de las siguientes categorías: conocimiento (algo que sabe), posesión (algo que tiene) e inherencia (algo que es).
    • IOC-2.B.4 La autenticación multifactor requiere al menos dos pasos para desbloquear información protegida; cada paso añade una nueva capa de seguridad que debe superarse para obtener acceso no autorizado.
    • IOC-2.B.5 La encriptación es el proceso de codificación de datos para prevenir el acceso no autorizado. La desencriptación es el proceso de decodificación de los datos. Dos enfoques comunes de encriptación son:
      • La encriptación de clave simétrica implica una sola clave tanto para la encriptación como para la desencriptación.
      • La encriptación de clave pública empareja una clave pública para la encriptación y una clave privada para la desencriptación. El remitente no necesita la clave privada del receptor para encriptar un mensaje, pero se requiere la clave privada del receptor para desencriptar el mensaje.
      • Enunciado de exclusión (EK IOC-2.B.5): Los procedimientos matemáticos específicos para la encriptación y la desencriptación están fuera del alcance de este curso y del Examen AP.
    • IOC-2.B.6 Las autoridades de certificación emiten certificados digitales que validan la propiedad de las claves de encriptación utilizadas en comunicaciones seguras y se basan en un modelo de confianza.
    • IOC-2.B.7 El software de escaneo de virus y malware de computadora puede ayudar a proteger un sistema informático contra infecciones.
    • IOC-2.B.8 Un virus de computadora es un programa malicioso que puede copiarse a sí mismo y acceder a una computadora de manera no autorizada. Los virus de computadora a menudo se adjuntan a programas legítimos y comienzan a ejecutarse independientemente en una computadora.
    • IOC-2.B.9 El malware es software destinado a dañar un sistema informático o a tomar el control parcial de su funcionamiento.
    • IOC-2.B.10 Todos los sistemas del mundo real tienen errores o defectos de diseño que pueden ser explotados para comprometerlos. Las actualizaciones regulares del software ayudan a corregir errores que podrían comprometer un sistema informático.
    • IOC-2.B.11 Los usuarios pueden controlar los permisos que tienen los programas para recopilar información del usuario. Los usuarios deben revisar la configuración de permisos de los programas para proteger su privacidad.

    Objetivo de Aprendizaje IOC-2.C: Explicar cómo se obtiene el acceso no autorizado a los recursos computacionales. [Habilidad 5.E]

    • IOC-2.C.1 El phishing es una técnica que intenta engañar a un usuario para que proporcione información personal. Esa información personal luego puede utilizarse para acceder a recursos en línea sensibles, como cuentas bancarias y correos electrónicos.
    • IOC-2.C.2 El keylogging (captura de teclas) es el uso de un programa para registrar cada pulsación de tecla realizada por un usuario de computadora con el fin de obtener acceso fraudulento a contraseñas y otra información confidencial.
    • IOC-2.C.3 Los datos enviados a través de redes públicas pueden ser interceptados, analizados y modificados. Una forma en que esto puede ocurrir es a través de un punto de acceso furtivo.
    • IOC-2.C.4 Un punto de acceso furtivo es un punto de acceso inalámbrico que otorga acceso no autorizado a redes seguras.
    • IOC-2.C.5 Un enlace malicioso puede estar disfrazado en una página web o en un mensaje de correo electrónico.
    • IOC-2.C.6 Los correos electrónicos no solicitados, archivos adjuntos, enlaces y formularios en correos electrónicos pueden utilizarse para comprometer la seguridad de un sistema informático. Estos pueden provenir de remitentes desconocidos o de remitentes conocidos cuya seguridad ha sido comprometida.
    • IOC-2.C.7 Las descargas no confiables (a menudo gratuitas) de sitios de freeware o shareware pueden contener malware.

    Fuente: College Board AP Course and Exam Description

    Proteger los datos personales es una responsabilidad compartida. Ideas clave:

    La cifrado mezcla el texto plano con una clave; solo la clave puede descifrarlo
    La cifrado mezcla el texto plano con una clave; solo la clave puede descifrarlo
    • La información de identificación personal (PII) 个人身份信息 (nombre, dirección, números de identificación) debe compartirse con cuidado, ya que puede ser malutilizada para robo de identidad 身份盗窃.
    • Las amenazas incluyen phishing 网络钓鱼 (engañarte para revelar información), malware 恶意软件 y contraseñas débiles.
    • Un enlace malicioso puede estar disfrazado en una página web o en un correo electrónico: el texto que ves y la dirección a la que realmente va son separados, por lo que un enlace que dice www.yourbank.com puede apuntar a cualquier lugar. Pasa el cursor para ver el destino real antes de hacer clic, y desconfía especialmente de un enlace que llega inesperadamente y crea urgencia.
    • Las defensas incluyen contraseñas fuertes y únicas, autenticación multifactor 多因素认证, cifrado 加密 (mezclar datos para que solo personas autorizadas puedan leerlas) y mantener el software actualizado.

    El cifrado es la herramienta central para mantener los datos privados en tránsito y almacenamiento. Ser un usuario responsable de la computadora significa proteger tu propia información y la de los demás.

    Habilidad de examen: poder identificar los efectos benéficos y perjudiciales de una innovación dada, explicar un riesgo de privacidad o seguridad, y nombrar una práctica de computación segura que lo aborde.

    Ejemplo resuelto. Un algoritmo de contratación se entrena con las contrataciones pasadas de una empresa, que eran mayoritariamente de un grupo, y luego rechaza solicitantes calificados de otros grupos. Nombra el problema y su causa: este es sesgo computacional, causado por datos de entrenamiento sesgados — el modelo aprendió el patrón histórico en lugar de una regla justa. Una respuesta completa de examen que obtiene la puntuación máxima establece el daño (personas calificadas son rechazadas injustamente) y su causa (el sesgo provino de los datos, no del código).

    Explorar

    Desordenar un mensaje con cifrado

    El cifrado protege los datos desordenándolos con una clave; solo alguien con la clave puede leerlo de nuevo. Este simple cifrado César desplaza cada letra: el cifrado real usa la misma idea con claves mucho más fuertes para mantener seguros las contraseñas y los mensajes.

    Vocabulario Entrenar
    Inglés Chino Pinyin
    phishing/ˈfɪʃɪŋ/ 网络钓鱼 wǎng luò diào yú
    malware/ˈmælweə/ 恶意软件 è yì ruǎn jiàn
    multi-factor authentication/ˈmʌlti ˈfæktə ɔːˌθentɪˈkeɪʃn/ 多因素认证 duō yīn sù rèn zhèng
    encryption/enˈkrɪpʃn/ 加密 jiā mì
    5.6

    Consejos para el examen

    • Argumenta ambos los efectos benéficos y perjudiciales de una innovación computacional; una respuesta equilibrada obtiene mejores puntuaciones.
    • Usa los términos correctos para las preocupaciones de datos: PII, privacidad, seguridad y sesgo algorítmico.
    • Explica cómo el crowdsourcing y los grandes conjuntos de datos crean valor y generan nuevos riesgos.
    • Distingue la brecha digital (acceso) del sesgo (equidad) y da un ejemplo concreto de cada uno.
    • Vincula cada afirmación a una innovación y efecto específicos, tal como lo exige la respuesta escrita.

Iniciar sesión o crear cuenta

IGCSE, A-Level & AP