Skip to content · ⁨Bỏ qua nội dung⁩
Subjects · ⁨Môn học⁩

AP Computer Science Principles · ⁨AP Nguyên lý khoa học máy tính⁩

Tips · ⁨Mẹo⁩

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

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

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

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

  • 1

    Creative Development · ⁨Phát triển Sáng tạo⁩

    Watch lesson · ⁨Xem bài học⁩
    1.1

    Collaboration · ⁨Hợp Tác⁩

    Syllabus · ⁨Chương trình⁩
    English

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

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

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

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

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

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

    • CRD-1.C.1 Effective collaborative teams practice interpersonal skills, including but not limited to:
      • communication
      • consensus building
      • conflict resolution
      • negotiation
    Tiếng Việt

    Hiểu biết bền vững (CRD-1): Việc tích hợp nhiều góc nhìn khác nhau thông qua hợp tác giúp cải thiện các sáng kiến công nghệ khi chúng được phát triển.

    Mục tiêu học tập CRD-1.A: Giải thích cách các sáng kiến công nghệ được cải thiện thông qua sự hợp tác. [Kỹ năng 1.C]

    • CRD-1.A.1 Một sáng kiến công nghệ bao gồm một chương trình như một phần thiết yếu trong chức năng của nó.
    • CRD-1.A.2 Một sáng kiến công nghệ có thể là vật lý (ví dụ: ô tô tự lái), phần mềm máy tính phi vật lý (ví dụ: phần mềm chỉnh sửa ảnh), hoặc khái niệm máy tính phi vật lý (ví dụ: thương mại điện tử).
    • CRD-1.A.3 Sự hợp tác hiệu quả tạo ra một sáng kiến công nghệ phản ánh sự đa dạng về tài năng và góc nhìn của những người đã thiết kế ra nó.
    • CRD-1.A.4 Sự hợp tác bao gồm nhiều góc nhìn khác nhau giúp tránh thiên kiến trong quá trình phát triển các sáng kiến công nghệ.
    • CRD-1.A.5 Tham vấn và giao tiếp với người dùng là những khía cạnh quan trọng trong quá trình phát triển các sáng kiến công nghệ.
    • CRD-1.A.6 Thông tin thu thập được từ người dùng tiềm năng có thể được sử dụng để hiểu mục đích của một chương trình dưới nhiều góc nhìn khác nhau và để phát triển một chương trình tích hợp đầy đủ các góc nhìn này.

    Mục tiêu học tập CRD-1.B: Giải thích cách các sáng kiến công nghệ được phát triển bởi các nhóm người. [Kỹ năng 1.C]

    • CRD-1.B.1 Các công cụ trực tuyến hỗ trợ hợp tác bằng cách cho phép các lập trình viên chia sẻ và cung cấp phản hồi về ý tưởng và tài liệu.
    • CRD-1.B.2 Các mô hình phổ biến như lập trình cặp đôi tồn tại để thuận tiện cho sự hợp tác.

    Mục tiêu học tập CRD-1.C: Chứng minh các kỹ năng giao tiếp cá nhân hiệu quả trong quá trình hợp tác. [Kỹ năng 1.C]

    • CRD-1.C.1 Các đội hợp tác hiệu quả thực hành các kỹ năng giao tiếp cá nhân, bao gồm nhưng không giới hạn ở:
      • giao tiếp
      • xây dựng đồng thuận
      • giải quyết xung đột
      • đàm phán

    Source: College Board AP Course and Exam Description · ⁨Nguồn: Mô tả Khóa học và Bài thi College Board AP⁩

    English

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

    Tiếng Việt
    Một puzzle đang được lắp ghép: sự hợp tác và thiết kế mô-đun chắp vá lại lời giải
    Một mảnh ghép đang được hoàn thiện: hợp tác và thiết kế mô-đun lắp ráp giải pháp lại với nhau

    Tin học là một hoạt động hợp tác. Làm việc theo nhóm mang lại nhiều góc nhìn hơn, phát hiện nhiều lỗi hơn và tạo ra chương trình tốt hơn so với làm việc đơn lẻ. Hợp tác hiệu quả sử dụng xây dựng sự đồng thuận, giao tiếp rõ ràng và tận dụng thế mạnh của từng thành viên. Lập trình cặp đôi – hai người cùng một máy tính, một người gõ phím và một người xem xét – là thực hành phổ biến. Trong kỳ thi, bạn cần có khả năng giải thích làm thế nào sự hợp tác đã cải thiện một chương trình (nhiều ý tưởng hơn, ít lỗi hơn, kiểm tra rộng hơn).

    1.2

    Program Function and Purpose · ⁨Chức Năng và Mục Đích Của Chương Trình⁩

    Syllabus · ⁨Chương trình⁩
    English

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

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

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

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

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

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

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

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

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

    Hiểu biết bền vững (CRD-2): Các nhà phát triển tạo ra và đổi mới bằng quy trình thiết kế lặp lại lấy người dùng làm trung tâm, bao gồm các chu kỳ triển khai/phản hồi, và để lại nhiều không gian cho việc thử nghiệm và chấp nhận rủi ro.

    Mục tiêu học tập CRD-2.A: Mô tả mục đích của một sáng kiến công nghệ. [Kỹ năng 1.A]

    • CRD-2.A.1 Mục đích của các sáng kiến công nghệ là giải quyết các vấn đề hoặc theo đuổi sở thích thông qua sự sáng tạo.
    • CRD-2.A.2 Hiểu rõ mục đích của một sáng kiến công nghệ mang lại cho các nhà phát triển khả năng tốt hơn trong việc phát triển sáng kiến đó.

    Mục tiêu học tập CRD-2.B: Giải thích cách một chương trình hoặc đoạn mã hoạt động. [Kỹ năng 4.A]

    • CRD-2.B.1 Chương trình là một tập hợp các câu lệnh chương trình thực hiện một nhiệm vụ cụ thể khi chạy trên máy tính. Một chương trình thường được gọi là phần mềm.
    • CRD-2.B.2 Đoạn mã là một tập hợp các câu lệnh chương trình là một phần của một chương trình.
    • CRD-2.B.3 Một chương trình cần hoạt động tốt cho nhiều loại dữ liệu đầu vào và tình huống khác nhau.
    • CRD-2.B.4 Hành vi của một chương trình là cách chương trình hoạt động trong quá trình thực thi và thường được mô tả thông qua cách người dùng tương tác với nó.
    • CRD-2.B.5 Một chương trình có thể được mô tả một cách tổng quát bằng những gì nó làm, hoặc chi tiết hơn bằng cả những gì chương trình làm và các câu lệnh trong chương trình thực hiện chức năng này như thế nào.

    Mục tiêu học tập CRD-2.C: Xác định đầu vào của một chương trình. [Kỹ năng 3.A]

    • CRD-2.C.1 Đầu vào chương trình là dữ liệu được gửi đến máy tính để xử lý bởi một chương trình. Dữ liệu đầu vào có thể đến từ nhiều dạng khác nhau, chẳng hạn như xúc giác, âm thanh, hình ảnh hoặc văn bản.
    • CRD-2.C.2 Một sự kiện gắn liền với một hành động và cung cấp dữ liệu đầu vào cho một chương trình.
    • CRD-2.C.3 Sự kiện có thể được tạo ra khi một phím được nhấn, chuột được nhấp, chương trình được khởi chạy, hoặc bất kỳ hành động nào khác được xác định xảy ra ảnh hưởng đến luồng thực thi.
    • CRD-2.C.4 Dữ liệu đầu vào thường ảnh hưởng đến kết quả mà một chương trình tạo ra.
    • CRD-2.C.5 Trong lập trình dựa trên sự kiện, các câu lệnh chương trình được thực thi khi bị kích hoạt thay vì thông qua luồng điều khiển tuần tự.
    • CRD-2.C.6 Dữ liệu đầu vào có thể đến từ người dùng hoặc các chương trình khác.

    Mục tiêu học tập CRD-2.D: Xác định đầu ra được tạo ra bởi một chương trình. [Kỹ năng 3.A]

    • CRD-2.D.1 Đầu ra chương trình là bất kỳ dữ liệu nào được gửi từ một chương trình đến một thiết bị. Kết quả đầu ra của chương trình có thể đến từ nhiều dạng khác nhau, chẳng hạn như xúc giác, âm thanh, hình ảnh hoặc văn bản.
    • CRD-2.D.2 Kết quả đầu ra của chương trình thường dựa trên dữ liệu đầu vào của chương trình hoặc trạng thái trước đó (ví dụ: các giá trị nội bộ).

    Source: College Board AP Course and Exam Description · ⁨Nguồn: Mô tả Khóa học và Bài thi College Board AP⁩

    English

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

    Tiếng Việt

    Mỗi chương trình đều được viết vì một mục đích – nó giải quyết một vấn đề hoặc theo đuổi một sở thích. Một chương trình nhận dữ liệu đầu vào, xử lý nó, và tạo ra dữ liệu đầu ra. Dữ liệu đầu vào có thể đến từ người dùng, thiết bị, tệp hoặc chương trình khác; dữ liệu đầu ra có thể trực quan, âm thanh, văn bản hoặc tín hiệu gửi đến thiết bị. Khả năng nêu mục đích của chương trình, và mô tả rõ ràng dữ liệu đầu vào và đầu ra của nó là kỹ năng cốt lõi (và là một phần của nhiệm vụ sáng tạo).

    Mọi chương trình đều phân rã thành đầu vào, xử lý và đầu ra
    Mỗi chương trình đều phân rã thành dữ liệu đầu vào, xử lý và dữ liệu đầu ra
    Mọi chương trình đều tuân theo mô hình đầu vào - xử lý - đầu ra
    Mỗi chương trình đều tuân theo mô hình đầu vào-xử lý-đầu ra
    Explore · ⁨Khám phá⁩

    Explore the input → processing → output model · ⁨Khám phá mô hình đầu vào → xử lý → đầu ra⁩

    Step through the IPO model. Every program takes some input, performs processing on it by following its instructions, then produces output — trace one weather-app example along the pipeline. · ⁨Bước qua mô hình IPO. Mọi chương trình nhận một số đầu vào, thực hiện xử lý trên đó bằng cách tuân theo các hướng dẫn, sau đó tạo ra đầu ra — truy vết một ví dụ ứng dụng thời tiết dọc theo quy trình này.⁩

    1.3

    Program Design and Development · ⁨Thiết Kế và Phát Triển Chương Trình⁩

    Syllabus · ⁨Chương trình⁩
    English

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

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

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

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

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

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

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

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

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

    Hiểu biết bền vững (CRD-2): Các nhà phát triển tạo ra và đổi mới bằng quy trình thiết kế lặp lại lấy người dùng làm trung tâm, bao gồm các chu kỳ triển khai/phản hồi, và để lại nhiều không gian cho việc thử nghiệm và chấp nhận rủi ro.

    Mục tiêu học tập CRD-2.E: Phát triển một chương trình sử dụng quy trình phát triển. [Kỹ năng 1.B]

    • CRD-2.E.1 Một quy trình phát triển có thể được sắp xếp có chủ đích, hoặc mang tính chất khám phá.
    • CRD-2.E.2 Có nhiều quy trình phát triển khác nhau. Các giai đoạn sau đây thường được sử dụng khi phát triển một chương trình:
      • nghiên cứu và phản tư
      • thiết kế
      • tạo mẫu
      • kiểm thử
    • CRD-2.E.3 Một quy trình phát triển lặp lại yêu cầu tinh chỉnh và sửa đổi dựa trên phản hồi, kiểm thử hoặc phản tư trong suốt quá trình. Điều này có thể đòi hỏi việc quay lại các giai đoạn trước đó của quy trình.
    • CRD-2.E.4 Một quy trình phát triển tăng dần là quy trình chia nhỏ vấn đề thành các phần nhỏ hơn và đảm bảo mỗi phần hoạt động đúng trước khi thêm vào tổng thể.

    Mục tiêu học tập CRD-2.F: Thiết kế một chương trình và giao diện người dùng của nó. [Kỹ năng 1.B]

    • CRD-2.F.1 Việc thiết kế một chương trình bao gồm nghiên cứu để xác định các yêu cầu của nó.
    • CRD-2.F.2 Nghiên cứu trong một quy trình phát triển hữu ích để hiểu và xác định các ràng buộc của chương trình, cũng như những mối quan tâm và sở thích của những người sẽ sử dụng chương trình.
    • CRD-2.F.3 Một số cách thức thực hiện nghiên cứu bao gồm các phương pháp sau:
      • thu thập dữ liệu thông qua khảo sát
      • kiểm thử người dùng
      • phỏng vấn
      • quan sát trực tiếp
    • CRD-2.F.4 Các yêu cầu của chương trình mô tả cách một chương trình vận hành và có thể bao gồm mô tả về các tương tác người dùng mà chương trình phải cung cấp.
    • CRD-2.F.5-alt specification của một chương trình xác định các yêu cầu đối với chương trình đó.
    • CRD-2.F.6 Trong một quy trình phát triển, giai đoạn thiết kế phác thảo cách thức thực hiện một-alt specification của chương trình đã cho.
    • CRD-2.F.7 Giai đoạn thiết kế của một chương trình có thể bao gồm:
      • brainstorming (tạo ý tưởng)
      • lên kế hoạch và storyboarding
      • tổ chức chương trình thành các module và thành phần chức năng
      • tạo các biểu đồ đại diện cho bố cục giao diện người dùng
      • phát triển chiến lược kiểm thử cho chương trình

    Mục tiêu học tập CRD-2.G: Mô tả mục đích của một đoạn mã hoặc chương trình bằng cách viết tài liệu. [Kỹ năng 4.A]

    • CRD-2.G.1 Tài liệu chương trình là một bản mô tả bằng văn bản về chức năng của một đoạn mã, sự kiện, thủ tục hoặc chương trình và cách nó được phát triển.
    • CRD-2.G.2 Nhận xét (comments) là một dạng tài liệu chương trình được viết vào trong chương trình để con người đọc và không ảnh hưởng đến cách chương trình chạy.
    • CRD-2.G.3 Các lập trình viên nên ghi chú tài liệu cho chương trình trong suốt quá trình phát triển.
    • CRD-2.G.4 Tài liệu chương trình giúp trong việc phát triển và duy trì các chương trình chính xác khi làm việc cá nhân hoặc trong môi trường lập trình hợp tác.
    • CRD-2.G.5 Không phải tất cả các môi trường lập trình đều hỗ trợ nhận xét, do đó có thể cần các phương pháp tài liệu khác.

    Mục tiêu học tập CRD-2.H: Ghi nhận các đoạn mã được sử dụng từ các nguồn khác. [Kỹ năng 1.C]

    • CRD-2.H.1 Việc ghi nhận bất kỳ đoạn mã nào được phát triển theo cách hợp tác hoặc bởi một nguồn khác là rất quan trọng.
    • CRD-2.H.2 Việc ghi nhận một đoạn mã (hoặc các đoạn mã) được viết bởi người khác và được sử dụng trong một chương trình có thể nằm trong tài liệu chương trình. Phần ghi nhận nên bao gồm nguồn gốc hoặc tên tác giả ban đầu.

    Source: College Board AP Course and Exam Description · ⁨Nguồn: Mô tả Khóa học và Bài thi College Board AP⁩

    English

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

    Investigating what users actually need

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

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

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

    Events, and programs that wait

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

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

    Tiếng Việt
    Một lập trình viên đang gỡ lỗi tại trạm làm việc đa màn hình — thiết kế và thử nghiệm lặp lại
    Một lập trình viên gỡ lỗi tại trạm làm việc đa màn hình — thiết kế và thử nghiệm theo chu kỳ lặp

    Các chương trình được xây dựng thông qua một quy trình lặp lại, không phải theo một đường thẳng: điều tra vấn đề và người dùng, thiết kế (thường với sơ đồ hoặc bản kế hoạch viết tay), triển khai bằng mã, và thử nghiệm – sau đó lặp lại. Một vấn đề lớn được chia nhỏ thành các phần nhỏ hơn (phân rã). Nhận xét và đặt tên rõ ràng tài liệu hóa thiết kế để những người khác (và chính bạn trong tương lai) có thể hiểu nó. Phát triển mang tính tăng tiến – xây dựng và thử nghiệm một phần nhỏ, sau đó thêm phần tiếp theo.

    Các giai đoạn của phát triển chương trình, với thử nghiệm phản hồi để sửa chữa và tinh chỉnh
    Các giai đoạn của phát triển chương trình, với thử nghiệm phản hồi để sửa chữa và tinh chỉnh
    Phần mềm được xây dựng thông qua quy trình phát triển lặp lại, tăng tiến
    Phần mềm được xây dựng thông qua quy trình phát triển lặp lại, tăng tiến

    Điều tra xem người dùng thực sự cần gì

    Trước khi bất kỳ mã nào được viết ra, nhà phát triển sẽ điều tra vấn đề và những người sẽ sử dụng chương trình. Có ba cách để làm điều đó:

    • bảng câu hỏi gửi đến những người dùng tiềm năng, thu thập dữ liệu từ nhiều người nhanh chóng;
    • cuộc phỏng vấn và quan sát trực tiếp người dùng thực hiện tác vụ bằng tay;
    • nghiên cứu các giải pháp hiện có để xem cái gì đã hoạt động và cái gì gây phiền toái cho mọi người.

    Những phát hiện này được chuyển đổi thành thiết kế. Hai sản phẩm hoàn thiện việc đó: danh sách yêu cầu chương trình nêu rõ chính xác chương trình phải làm gì, và sơ đồ biểu diễn bố cục giao diện người dùng – các bản phác thảo cho thấy các điều khiển xuất hiện ở đâu, và mỗi thứ làm gì khi được sử dụng. Thiết kế giao diện trên giấy trước thì rẻ hơn nhiều so với việc phát hiện sau khi lập trình rằng các nút bấm đang ở vị trí sai.

    Sự kiện, và các chương trình chờ đợi

    Không phải chương trình nào cũng chạy thẳng từ đầu đến cuối. Một sự kiện được tạo ra khi một phím được nhấn, chuột được click, chương trình được khởi chạy, hoặc bất kỳ hành động định nghĩa nào khác xảy ra – và một sự kiện thay đổi luồng thực thi: chương trình tạm dừng những gì nó đang làm và chạy mã gắn liền với sự kiện đó, gọi là xử lý sự kiện.

    Đây là lý do tại sao một chương trình có giao diện đồ họa có thể trông như đang làm gì đó: nó đang chờ sự kiện tiếp theo. Thứ tự mà những sự kiện này xuất hiện được quyết định bởi người dùng, không phải bởi lập trình viên, vì vậy cùng một chương trình có thể chạy các khối code theo thứ tự khác nhau mỗi lần được sử dụng.

    Explore · ⁨Khám phá⁩

    Loop through the iterative development process · ⁨Lặp qua quy trình phát triển lặp lại⁩

    Development is iterative — you repeat the stages, improving the program a little on each pass. Step around the loop and notice it returns to the start rather than ending after one run. · ⁨Phát triển mang tính lặp lại — bạn lặp lại các giai đoạn, cải thiện chương trình một chút ở mỗi lần. Bước quanh vòng lặp và nhận thấy nó quay về điểm xuất phát thay vì kết thúc sau một lần chạy.⁩

    1.4

    Identifying and Correcting Errors · ⁨Xác định và Sửa lỗi⁩

    Syllabus · ⁨Chương trình⁩
    English

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

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

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

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

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

    Hiểu biết bền vững (CRD-2): Các nhà phát triển tạo ra và đổi mới bằng quy trình thiết kế lặp lại lấy người dùng làm trung tâm, bao gồm các chu kỳ triển khai/phản hồi, và để lại nhiều không gian cho việc thử nghiệm và chấp nhận rủi ro.

    Mục tiêu học tập CRD-2.I: Đối với các lỗi trong thuật toán hoặc chương trình: a. Xác định lỗi. [Kỹ năng 4.C] b. Sửa lỗi. [Kỹ năng 4.C]

    • CRD-2.I.1 Một lỗi logic là một sai sót trong thuật toán hoặc chương trình khiến nó hoạt động không đúng hoặc bất ngờ.
    • CRD-2.I.2 Một lỗi cú pháp là một sai sót trong chương trình nơi các quy tắc của ngôn ngữ lập trình không được tuân thủ.
    • CRD-2.I.3 Một lỗi thời gian chạy là một sai sót trong chương trình xảy ra trong quá trình thực thi chương trình. Các ngôn ngữ lập trình xác định các lỗi thời gian chạy riêng của chúng.
    • CRD-2.I.4 Một lỗi tràn là một lỗi xảy ra khi máy tính cố gắng xử lý một số nằm ngoài phạm vi giá trị đã được xác định.
    • CRD-2.I.5 Các phương pháp hiệu quả sau đây để tìm và sửa lỗi:
      • các trường hợp kiểm thử
      • truy vết tay
      • trực quan hóa
      • trình gỡ lỗi
      • thêm câu lệnh xuất dữ liệu phụ

    Mục tiêu học tập CRD-2.J: Xác định các đầu vào và các kết quả hoặc hành vi mong đợi tương ứng có thể được sử dụng để kiểm tra tính đúng đắn của một thuật toán hoặc chương trình. [Kỹ năng 4.C]

    • CRD-2.J.1 Trong quá trình phát triển, kiểm thử sử dụng các đầu vào đã xác định để đảm bảo rằng thuật toán hoặc chương trình đang tạo ra các kết quả mong đợi. Các lập trình viên sử dụng kết quả từ việc kiểm thử để sửa đổi thuật toán hoặc chương trình của họ.
    • CRD-2.J.2 Các đầu vào đã xác định dùng để kiểm thử chương trình nên minh họa các kết quả mong đợi khác nhau nằm ở mức hoặc ngay bên ngoài cùng cực (tối thiểu và tối đa) của dữ liệu đầu vào.
    • CRD-2.J.3 Các yêu cầu về chương trình là cần thiết để xác định các đầu vào đã xác định phù hợp cho việc kiểm thử.

    Source: College Board AP Course and Exam Description · ⁨Nguồn: Mô tả Khóa học và Bài thi College Board AP⁩

    English

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

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

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

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

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

    Tiếng Việt

    Một lỗi (bug) là một sai sót trong chương trình; gỡ lỗi (debugging) là tìm và sửa nó. Ba loại:

    Bảng truy vết ghi lại giá trị của từng biến khi chương trình chạy, để tìm lỗi
    Bảng truy vết ghi lại giá trị của từng biến khi chương trình chạy, để tìm lỗi
    • lỗi cú pháp vi phạm quy tắc của ngôn ngữ, khiến chương trình không thể chạy;
    • lỗi thời gian chạy làm chương trình bị sập khi nó đang chạy (ví dụ: chia cho không);
    • lỗi logic cho phép nó chạy nhưng đưa ra kết quả sai.

    Tìm lỗi bằng cách thử nghiệm với các đầu vào khác nhau, thêm câu lệnh in để xem giá trị, và truy vết bằng tay. Chọn các đầu vào thử nghiệm một cách chủ đích: chúng nên minh họa cho các kết quả mong đợi khác nhau tại hoặc ngay bên ngoài mức cực hạn – giá trị tối thiểu và tối đa mà chương trình nên chấp nhận, và một giá trị nằm ngay bên ngoài mỗi giá trị đó. Một chương trình hoạt động tốt với dữ liệu thông thường thường thất bại với một danh sách trống, số không, hoặc một giá trị vượt quá cuối phạm vi, vì vậy những đầu vào này đáng để thử đầu tiên. Sửa một lỗi một và thử nghiệm lại là phương pháp đáng tin cậy.

    Kỹ năng thi: hãy biết tên gọi của loại lỗi và mô tả chiến lược thử nghiệm sẽ bắt được nó – một chủ đề thường xuyên xuất hiện trong trắc nghiệm và nhiệm vụ Tạo (Create).

    Ba loại lỗi lập trình: cú pháp, logic, và thời gian chạy
    Ba loại lỗi lập trình: cú pháp, logic, và thời gian chạy

    Ví dụ minh họa. Một chương trình intended để in trung bình cộng của hai số lại chạy ra avg = a + b / 2. Theo dõi thứ tự thực thi, / chạy trước +, nên nó tính $a+\tfrac{b}{2}$ thay vì trung bình cộng. Thêm dấu ngoặc để sửa lỗi: avg = (a + b) / 2. Thử nghiệm với $a=4,\ b=6$ xác nhận sự sửa đổi — dòng bị lỗi cho kết quả $4+3=7$, dòng đã sửa cho kết quả $\tfrac{10}{2}=5$. Thử nghiệm với các đầu vào đã biết chính là cách bạn tìm và xác định một lỗi logic.

    Explore · ⁨Khám phá⁩

    Trace the guessing-game logic and spot a logic error · ⁨Vẽ đường truy vết logic trò chơi đoán số và chỉ ra một lỗi logic⁩

    Drag the guess and watch which branch runs. A logic error would send the same guess down the wrong branch — the program still runs, but gives the wrong message. The secret number here is 50. · ⁨Kéo và thả giá trị dự đoán để xem nhánh nào được thực thi. Một lỗi logic sẽ đưa cùng một giá trị dự đoán vào nh nhánh sai — chương trình vẫn chạy, nhưng trả về thông báo sai. Số bí mật ở đây là 50.⁩

    Vocabulary · ⁨Từ vựng⁩ Train · ⁨Luyện tập⁩
    English Tiếng Việt
    collaborative/kəˈlæbrətɪv/ hợp tác
    Pair programming/peə ˈprəʊɡræmɪŋ/ lập trình cặp đôi
    input/ˈɪnpʊt/ đầu vào
    output/ˈaʊtpʊt/ đầu ra
    iterative/ˈɪtərətɪv/ lặp lại
    decomposition/ˌdiːkɒmpəˈzɪʃn/ decomposition
    Comments/ˈkɒments/ Bình luận
    surveys/ˈsɜːveɪz/ khảo sát
    diagrams representing the layout of the user interface sơ đồ biểu diễn bố cục giao diện người dùng
    event/ɪˈvent/ sự kiện
    event handler/ɪˈvent ˈhændlə/ xử lý sự kiện
    debugging/ˈdiːbʌɡɪŋ/ kiểm tra lỗi
    syntax error/ˈsɪntæks ˈerə/ lỗi cú pháp
    runtime error/ˈrʌntaɪm ˈerə/ lỗi thời gian chạy
    logic error/ˈlɒdʒɪk ˈerə/ lỗi logic
    1.4

    Exam tips · ⁨Mẹo làm bài thi⁩

    English
    • Much of CSP is assessed through the Create and written performance tasks — explain your reasoning clearly, not just your result.
    • Know the benefits of collaboration and how diverse perspectives reduce bias in a program.
    • Use precise vocabulary (iterative development, program requirements) when you describe a design process.
    • Give and take feedback constructively; credit collaborators and sources.
    • Break a large problem into smaller modules that a team can build in parallel.
    Tiếng Việt
    • Phần lớn CSP được đánh giá thông qua các nhiệm vụ Tạo (Create) và bài thi viết – hãy giải thích lý do của bạn một cách rõ ràng, không chỉ đưa ra kết quả.
    • Hiểu lợi ích của hợp tác và làm thế nào các góc nhìn đa dạng giúp giảm thiểu thiên kiến trong một chương trình.
    • Sử dụng từ vựng chính xác (phát triển lặp lại, yêu cầu chương trình) khi bạn mô tả một quy trình thiết kế.
    • Đưa ra và tiếp nhận phản hồi mang tính xây dựng; ghi công các đồng tác giả và nguồn gốc.
    • Chia một vấn đề lớn thành các module nhỏ hơn mà một nhóm có thể xây dựng song song.
  • 2

    Data · ⁨Dữ liệu⁩

    Watch lesson · ⁨Xem bài học⁩
    2.1

    Binary Numbers · ⁨Số nhị phân⁩

    Syllabus · ⁨Chương trình⁩
    English

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

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

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

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

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

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

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

    Hiểu biết bền vững (DAT-1): Cách máy tính biểu diễn dữ liệu bên trong khác với cách dữ liệu được giải thích và hiển thị cho người dùng. Các chương trình được sử dụng để chuyển đổi dữ liệu sang dạng biểu diễn dễ hiểu hơn đối với con người.

    Mục tiêu học tập DAT-1.A: Giải thích cách dữ liệu có thể được biểu diễn bằng bit. [Kỹ năng 3.C]

    • DAT-1.A.1 Giá trị dữ liệu có thể được lưu trữ trong biến, danh sách các mục, hoặc hằng độc lập và có thể được truyền làm đầu vào (hoặc đầu ra) cho các thủ tục.
    • DAT-1.A.2 Thiết bị tính toán biểu diễn dữ liệu kỹ thuật số, nghĩa là các thành phần cấp thấp nhất của bất kỳ giá trị nào đều là bit.
    • DAT-1.A.3 Bit là viết tắt của số nhị phân và chỉ có thể là 0 hoặc 1.
    • DAT-1.A.4 Một byte gồm 8 bit.
    • DAT-1.A.5 Trừu tượng hóa là quá trình giảm độ phức tạp bằng cách tập trung vào ý tưởng chính. Bằng cách ẩn đi các chi tiết không liên quan đến vấn đề hiện tại và gộp lại các chi tiết liên quan và hữu ích, trừu tượng hóa giúp giảm độ phức tạp và cho phép người ta tập trung vào ý tưởng.
    • DAT-1.A.6 Bit được nhóm lại để biểu diễn các khái niệm trừu tượng. Các khái niệm này bao gồm, nhưng không giới hạn ở, số, ký tự và màu sắc.
    • DAT-1.A.7 Cùng một chuỗi bit có thể đại diện cho các loại dữ liệu khác nhau trong các ngữ cảnh khác nhau.
    • DAT-1.A.8 Dữ liệu tương tự có các giá trị thay đổi mượt mà, thay vì theo các khoảng rời rạc, theo thời gian. Một số ví dụ về dữ liệu tương tự bao gồm cao độ và âm lượng của âm nhạc, màu sắc của một bức tranh, hoặc vị trí của một vận động viên chạy sprint trong cuộc đua.
    • DAT-1.A.9 Việc sử dụng dữ liệu kỹ thuật số để xấp xỉ dữ liệu tương tự thực tế là một ví dụ về trừu tượng hóa.
    • DAT-1.A.10 Dữ liệu tương tự có thể được xấp xỉ gần đúng bằng kỹ thuật kỹ thuật số thông qua kỹ thuật lấy mẫu, nghĩa là đo lường các giá trị của tín hiệu tương tự ở các khoảng thời gian đều đặn gọi là mẫu. Các mẫu được đo để xác định chính xác các bit cần thiết để lưu trữ mỗi mẫu.

    Mục tiêu học tập DAT-1.B: Giải thích hệ quả của việc sử dụng bit để biểu diễn dữ liệu. [Kỹ năng 1.D]

    • DAT-1.B.1 Trong nhiều ngôn ngữ lập trình, số nguyên được biểu diễn bởi một số lượng bit cố định, điều này giới hạn phạm vi của các giá trị số nguyên và các phép toán toán học trên các giá trị đó. Hạn chế này có thể dẫn đến tràn số hoặc các lỗi khác.
    • DAT-1.B.2 Các ngôn ngữ lập trình khác cung cấp cơ chế trừu tượng hóa mà qua đó kích thước của các số nguyên có thể biểu diễn chỉ bị giới hạn bởi dung lượng bộ nhớ của máy tính; đây là trường hợp của ngôn ngữ được định nghĩa trong tờ tham khảo kỳ thi.
    • DAT-1.B.3 Trong các ngôn ngữ lập trình, số lượng bit cố định dùng để biểu diễn số thực giới hạn phạm vi và các phép toán toán học trên các giá trị này; hạn chế này có thể dẫn đến sai số làm tròn và các lỗi khác. Một số số thực được biểu diễn dưới dạng xấp xỉ trong bộ nhớ máy tính.
      • Câu loại trừ: Các hạn chế phạm vi cụ thể cho số thực nằm ngoài phạm vi của khóa học này và Kỳ thi AP.

    Mục tiêu học tập DAT-1.C: Đối với số nhị phân: a. Tính giá trị tương đương nhị phân (cơ số 2) của một số nguyên dương (cơ số 10) và ngược lại. [Kỹ năng 2.B] b. So sánh và sắp xếp thứ tự các số nhị phân. [Kỹ năng 2.B]

    • DAT-1.C.1 Cơ số của số, bao gồm nhị phân và thập phân, được sử dụng để biểu diễn dữ liệu.
    • DAT-1.C.2 Hệ nhị phân (cơ số 2) chỉ sử dụng các tổ hợp của các chữ số không và một.
    • DAT-1.C.3 Thập phân (cơ số 10) chỉ sử dụng các tổ hợp của các chữ số $0 - 9$.
    • DAT-1.C.4 Tương tự như thập phân, vị trí của một chữ số trong chuỗi nhị phân sẽ xác định giá trị số của nó. Giá trị số bằng giá trị bit (0 hoặc 1) nhân với giá trị vị trí của vị trí đó.
    • DAT-1.C.5 Giá trị vị trí của mỗi vị trí được xác định bằng cơ số lũy thừa theo vị trí đó. Các vị trí được đánh số bắt đầu từ vị trí bên phải nhất là 0 và tăng lên 1 cho mỗi vị trí tiếp theo về phía bên trái.

    Source: College Board AP Course and Exam Description · ⁨Nguồn: Mô tả Khóa học và Bài thi College Board AP⁩

    English

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

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

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

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

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

    Tiếng Việt
    Các chữ số nhị phân trên màn hình hiển thị – tất cả dữ liệu kỹ thuật số cuối cùng đều được lưu trữ dưới dạng 0 và 1
    Các chữ số nhị phân trên màn hình hiển thị – tất cả dữ liệu kỹ thuật số cuối cùng đều được lưu trữ dưới dạng 0 và 1

    Máy tính lưu trữ mọi thứ dưới dạng bits – mỗi bit là 0 hoặc 1. Một nhóm 8 bits là một byte. Các số được lưu trữ trong nhị phân (cơ số 2), nơi mỗi vị trí đại diện cho lũy thừa của hai ($1, 2, 4, 8, 16, \dots$) thay vì lũy thừa của mười trong 十进制 (mười phân). Ví dụ, nhị phân 1011 là $8+2+1=11$.

    Bảng giá trị vị trí 8-bit: các số 1 nằm dưới các giá trị cộng lại thành số
    Bảng giá trị vị trí 8-bit: các số 1 nằm dưới các giá trị cộng lại thành số

    Ví dụ hướng dẫn. Để chuyển đổi nhị phân 1101 sang thập phân, viết các giá trị vị trí 8 4 2 1 dưới các bit 1 1 0 1 và cộng những bit có 1: $8+4+0+1=13$. Ngược lại, chuyển 19 sang nhị phân bằng cách trừ đi lũy thừa của hai lớn nhất vừa khớp: $19-16=3$, sau đó $3-2=1$, rồi $1-1=0$, vì vậy các bit nằm ở các vị trí 16, 2, và 1 $\rightarrow$ 10011 (kiểm tra: $16+2+1=19$).

    Vì máy tính có một số lượng bit hữu hạn, nó chỉ có thể biểu diễn một phạm vi giá trị giới hạn. Điều này gây ra hai hiệu ứng được kiểm tra trong kỳ thi:

    • Lỗi tràn (overflow): một số quá lớn so với số bit khả dụng không thể được lưu trữ chính xác.
    • Lỗi làm tròn (round-off): các số có phần thập phân (số thực) chỉ có thể được xấp xỉ, vì vô số giá trị thực phải ánh xạ vào hữu hạn các mẫu bit.

    Tất cả dữ liệu – văn bản, hình ảnh, âm thanh – cuối cùng đều được mã hóa dưới dạng nhị phân. Một hình ảnh là lưới các pixel, mỗi pixel được lưu dưới dạng số cho màu sắc của chúng; âm thanh được lưu dưới dạng số được lấy mẫu nhiều lần mỗi giây.

    Explore · ⁨Khám phá⁩

    Convert between binary and decimal · ⁨Chuyển đổi giữa nhị phân và thập phân⁩

    Computers store numbers in binary (base 2). Each bit is a power of two; add the place values of the 1-bits to read the decimal number. · ⁨Máy tính lưu trữ số trong hệ nhị phân (cơ số 2). Mỗi bit là một lũy thừa của hai; cộng các giá trị vị trí của các bit có giá trị 1 để đọc được số thập phân.⁩

    Vocabulary · ⁨Từ vựng⁩ Train · ⁨Luyện tập⁩
    English Tiếng Việt
    bits/bɪts/ bit
    byte/baɪt/ byte
    binary/ˈbaɪnəri/ nhị phân
    decimal/ˈdesɪml/ số thập phân
    Overflow error/ˌəʊvəˈfləʊ ˈerə/ Lỗi tràn
    Round-off (rounding) error/raʊnd ɒf ˈerə/ Lỗi làm tròn (quy tròn)
    pixels/ˈpɪkslz/ các pixel
    Watch lesson · ⁨Xem bài học⁩
    2.2

    Data Compression · ⁨Nén Dữ Liệu⁩

    Syllabus · ⁨Chương trình⁩
    English

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

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

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

    Hiểu biết bền vững (DAT-1): Cách máy tính biểu diễn dữ liệu bên trong khác với cách dữ liệu được giải thích và hiển thị cho người dùng. Các chương trình được sử dụng để chuyển đổi dữ liệu sang dạng biểu diễn dễ hiểu hơn đối với con người.

    Mục tiêu học tập DAT-1.D: So sánh các thuật toán nén dữ liệu để xác định thuật toán nào tốt nhất trong một ngữ cảnh cụ thể. [Kỹ năng 1.D]

    • DAT-1.D.1 Nén dữ liệu có thể làm giảm kích thước (số lượng bit) của dữ liệu được truyền tải hoặc lưu trữ.
    • DAT-1.D.2 Ít bit hơn không đồng nghĩa với việc ít thông tin hơn.
    • DAT-1.D.3 Mức độ giảm kích thước từ việc nén phụ thuộc vào cả mức độ trùng lặp trong biểu diễn dữ liệu gốc và thuật toán nén được áp dụng.
    • DAT-1.D.4 Thuật toán nén dữ liệu không mất mát thường có thể giảm số bit được lưu trữ hoặc truyền tải trong khi đảm bảo tái tạo hoàn toàn dữ liệu gốc.
    • DAT-1.D.5 Thuật toán nén dữ liệu mất mát có thể giảm đáng kể số bit được lưu trữ hoặc truyền tải nhưng chỉ cho phép tái tạo một sự xấp xỉ của dữ liệu gốc.
    • DAT-1.D.6 Thuật toán nén dữ liệu mất mát thường có thể giảm số bit được lưu trữ hoặc truyền tải nhiều hơn so với thuật toán nén không mất mát.
    • DAT-1.D.7 Trong các tình huống mà chất lượng hoặc khả năng khôi phục lại dữ liệu gốc là quan trọng nhất, các thuật toán nén không mất mát thường được lựa chọn.
    • DAT-1.D.8 Trong các tình huống mà việc giảm thiểu kích thước dữ liệu hoặc thời gian truyền tải là quan trọng nhất, các thuật toán nén có mất mát thường được lựa chọn.

    Source: College Board AP Course and Exam Description · ⁨Nguồn: Mô tả Khóa học và Bài thi College Board AP⁩

    English

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

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

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

    Tiếng Việt
    Mặt đĩa cứng và đầu đọc: dữ liệu được nén và lưu dưới dạng tín hiệu từ
    Mặt đĩa cứng và đầu đọc: dữ liệu được nén và lưu dưới dạng tín hiệu từ

    Nén giảm số bit cần thiết để lưu hoặc truyền dữ liệu. Hai loại:

    Các phương pháp nén: không mất mát so với mất mát, với các ví dụ phổ biến
    Các phương pháp nén: không mất dữ liệu so với có mất dữ liệu, kèm theo các ví dụ phổ biến
    • Nén không mất mát (lossless compression) cho phép bạn khôi phục lại đúng dữ liệu gốc (dùng cho văn bản và chương trình, nơi từng bit đều quan trọng).
    • Nén có mất mát (lossy compression) loại bỏ một phần dữ liệu để thu nhỏ kích thước thêm nữa (dùng cho ảnh, nhạc, video, nơi sự suy giảm chất lượng nhỏ có thể chấp nhận được).

    Việc lựa chọn giữa chúng đòi hỏi sự đánh đổi giữa kích thước và độ trung thực: nén không mất mát giữ nguyên mọi thứ nhưng tiết kiệm ít hơn; nén có mất mát tiết kiệm nhiều hơn nhưng mất chi tiết vĩnh viễn. Ưu tiên nén không mất mát khi dữ liệu bắt buộc phải chính xác.

    Explore · ⁨Khám phá⁩

    Compress a run of repeats · ⁨Nén một chuỗi lặp lại liên tiếp⁩

    Run-length encoding is a lossless compression: a long run of the same symbol is replaced by the symbol and a count, shrinking the data with no information lost. · ⁨Mã hóa độ dài chuỗi là một phương pháp nén không mất mát: một chuỗi dài các ký tự giống nhau được thay thế bằng ký tự đó và một bộ đếm, làm giảm kích thước dữ liệu mà không mất thông tin.⁩

    Vocabulary · ⁨Từ vựng⁩ Train · ⁨Luyện tập⁩
    English Tiếng Việt
    Compression/kəmˈpreʃn/ Nén
    Lossless compression/ˈlɒsləs kəmˈpreʃn/ Nén không mất mát
    Lossy compression/ˈlɒsi kəmˈpreʃn/ Nén mất dữ liệu
    Watch lesson · ⁨Xem bài học⁩
    2.3

    Extracting Information from Data · ⁨Trích xuất Thông tin từ Dữ liệu⁩

    Syllabus · ⁨Chương trình⁩
    English

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

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

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

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

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

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

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

    Hiểu biết bền vững (DAT-2): Các chương trình có thể được sử dụng để xử lý dữ liệu, cho phép người dùng khám phá thông tin và tạo ra tri thức mới.

    Mục tiêu học tập DAT-2.A: Mô tả những thông tin nào có thể được trích xuất từ dữ liệu. [Kỹ năng 5.B]

    • DAT-2.A.1 Thông tin là tập hợp các sự kiện và mẫu được trích xuất từ dữ liệu.
    • DAT-2.A.2 Dữ liệu cung cấp cơ hội để xác định xu hướng, thiết lập mối liên hệ và giải quyết vấn đề.
    • DAT-2.A.3 Dữ liệu đã được xử lý kỹ thuật số có thể cho thấy mối tương quan giữa các biến. Một mối tương quan tìm thấy trong dữ liệu không nhất thiết chỉ ra rằng có mối quan hệ nhân quả. Nghiên cứu bổ sung là cần thiết để hiểu rõ bản chất chính xác của mối quan hệ này.
    • DAT-2.A.4 Thường thì một nguồn duy nhất không chứa dữ liệu cần thiết để rút ra kết luận. Có thể cần phải kết hợp dữ liệu từ nhiều nguồn khác nhau để xây dựng kết luận.

    Mục tiêu học tập DAT-2.B: Mô tả những thông tin nào có thể được trích xuất từ metadata. [Kỹ năng 5.B]

    • DAT-2.B.1 Metadata là dữ liệu về dữ liệu. Ví dụ, một phần dữ liệu có thể là hình ảnh, trong khi metadata có thể bao gồm ngày tạo hoặc dung lượng file của hình ảnh đó.
    • DAT-2.B.2 Những thay đổi và xóa bỏ đối với metadata sẽ không làm thay đổi dữ liệu gốc.
    • DAT-2.B.3 Metadata được sử dụng để tìm kiếm, tổ chức và quản lý thông tin.
    • DAT-2.B.4 Metadata có thể tăng hiệu quả sử dụng dữ liệu hoặc bộ dữ liệu bằng cách cung cấp thông tin bổ sung.
    • DAT-2.B.5 Meta-data cho phép dữ liệu được cấu trúc và tổ chức.

    Mục tiêu học tập DAT-2.C: Xác định các thách thức liên quan đến việc xử lý dữ liệu. [Kỹ năng 5.D]

    • DAT-2.C.1 Khả năng xử lý dữ liệu phụ thuộc vào năng lực của người dùng và công cụ của họ.
    • DAT-2.C.2 Các bộ dữ liệu đều đặt ra thách thức bất kể quy mô, chẳng hạn như:
      • nhu cầu làm sạch dữ liệu
      • dữ liệu không đầy đủ
      • dữ liệu không hợp lệ
      • nhu cầu kết hợp các nguồn dữ liệu
    • DAT-2.C.3 Tùy thuộc vào cách thu thập dữ liệu, chúng có thể không đồng nhất. Ví dụ, nếu người dùng nhập dữ liệu vào một trường mở, cách họ chọn viết tắt, đánh vần hoặc viết hoa một thứ gì đó có thể khác nhau tùy từng người.
    • DAT-2.C.4 Làm sạch dữ liệu là quá trình khiến dữ liệu trở nên đồng nhất mà không thay đổi ý nghĩa của chúng (ví dụ: thay thế tất cả các dạng viết tắt, đánh vần và viết hoa tương đương bằng cùng một từ).
    • DAT-2.C.5 Vấn đề thiên kiến thường được tạo ra bởi loại hoặc nguồn dữ liệu đang được thu thập. Thiên kiến không bị loại bỏ chỉ bằng cách thu thập thêm dữ liệu.
    • DAT-2.C.6 Quy mô của một bộ dữ liệu ảnh hưởng đến lượng thông tin có thể được trích xuất từ nó.
    • DAT-2.C.7 Các bộ dữ liệu lớn khó xử lý bằng một máy tính đơn lẻ và có thể yêu cầu các hệ thống song song.
    • DAT-2.C.8 Khả năng mở rộng của hệ thống là yếu tố quan trọng cần xem xét khi làm việc với các bộ dữ liệu, vì năng lực tính toán của hệ thống ảnh hưởng đến cách các bộ dữ liệu được xử lý và lưu trữ.

    Source: College Board AP Course and Exam Description · ⁨Nguồn: Mô tả Khóa học và Bài thi College Board AP⁩

    English

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

    Tiếng Việt

    Dữ liệu trở nên hữu ích khi chúng ta trích xuất thông tin từ đó – các mô hình, xu hướng và câu trả lời cho các câu hỏi. Bộ dữ liệu lớn có thể tiết lộ mối tương quan mà bộ dữ liệu nhỏ không thể, nhưng dữ liệu phải được làm sạch (sửa lỗi và bất nhất) và thường phải biến đổi hoặc lọc trước. Một mối tương quan giữa hai điều không chứng minh rằng điều này gây ra điều kia – đây là một cảnh báo quan trọng. Thông tin phụ (metadata) (dữ liệu về dữ liệu, như ngày tháng và vị trí của một bức ảnh) giúp tổ chức và tìm kiếm các bộ sưu tập lớn.

    Vocabulary · ⁨Từ vựng⁩ Train · ⁨Luyện tập⁩
    English Tiếng Việt
    Data/ˈdeɪtə/ Dữ liệu
    information/ˌɪnfəˈmeɪʃn/ information
    correlation/ˌkɒrɪˈleɪʃn/ tương quan
    Metadata/ˌmetəˈdeɪtə/ siêu dữ liệu
    filtering/ˈfɪltərɪŋ/ lọc
    visualizing/ˈvɪʒuːəlaɪzɪŋ/ trực quan hóa
    privacy/ˈprɪvəsi/ quyền riêng tư
    2.4

    Using Programs with Data · ⁨Sử dụng Chương trình với Dữ liệu⁩

    Syllabus · ⁨Chương trình⁩
    English

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

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

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

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

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

    Hiểu biết bền vững (DAT-2): Các chương trình có thể được sử dụng để xử lý dữ liệu, cho phép người dùng khám phá thông tin và tạo ra tri thức mới.

    Mục tiêu học tập DAT-2.D: Trích xuất thông tin từ dữ liệu bằng một chương trình. [Kỹ năng 2.B]

    • DAT-2.D.1 Chương trình có thể được sử dụng để xử lý dữ liệu nhằm thu thập thông tin.
    • DAT-2.D.2 Bảng biểu, sơ đồ, văn bản và các công cụ trực quan khác có thể được sử dụng để truyền đạt những insight và tri thức thu được từ dữ liệu.
    • DAT-2.D.3 Công cụ tìm kiếm hữu ích để tìm thông tin một cách hiệu quả.
    • DAT-2.D.4 Hệ thống lọc dữ liệu là công cụ quan trọng để tìm thông tin và nhận diện các mẫu trong dữ liệu.
    • DAT-2.D.5 Các chương trình như bảng tính giúp tổ chức và tìm xu hướng thông tin một cách hiệu quả.
    • DAT-2.D.6 Một số quy trình có thể được sử dụng để trích xuất hoặc sửa đổi thông tin từ dữ liệu bao gồm các điều sau đây:
      • biến đổi mọi thành phần của một bộ dữ liệu, ví dụ như nhân đôi mỗi thành phần trong danh sách, hoặc thêm email của phụ huynh vào mỗi hồ sơ học sinh
      • lọc một bộ dữ liệu, ví dụ như giữ lại chỉ các số dương từ một danh sách, hoặc giữ lại chỉ những học sinh đã đăng ký tham gia ban nhạc từ hồ sơ tất cả học sinh
      • kết hợp hoặc so sánh dữ liệu theo một cách nào đó, ví dụ như cộng tổng một danh sách các con số, hoặc tìm học sinh có điểm GPA cao nhất
      • trực quan hóa một bộ dữ liệu thông qua biểu đồ, đồ thị hoặc các đại diện trực quan khác

    Mục tiêu học tập DAT-2.E: Giải thích cách các chương trình có thể được sử dụng để thu được insight và tri thức từ dữ liệu. [Kỹ năng 5.B]

    • DAT-2.E.1 Các chương trình được sử dụng theo cách lặp lại và tương tác khi xử lý thông tin để cho phép người dùng thu được insight và tri thức về dữ liệu.
    • DAT-2.E.2 Các lập trình viên có thể sử dụng chương trình để lọc và làm sạch dữ liệu kỹ thuật số, từ đó thu được insight và tri thức.
    • DAT-2.E.3 Kết hợp các nguồn dữ liệu, phân cụm dữ liệu và phân loại dữ liệu là các phần của quá trình sử dụng chương trình để thu được insight và tri thức từ dữ liệu.
    • DAT-2.E.4 Insight và tri thức có thể thu được từ việc dịch chuyển và biến đổi thông tin được biểu diễn kỹ thuật số.
    • DAT-2.E.5 Các mẫu có thể nổi lên khi dữ liệu được biến đổi bằng các chương trình.

    Source: College Board AP Course and Exam Description · ⁨Nguồn: Mô tả Khóa học và Bài thi College Board AP⁩

    English

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

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

    Tiếng Việt

    Chương trình xử lý dữ liệu ở quy mô mà con người không thể làm được. Các thao tác phổ biến là lọc (chỉ giữ lại các dòng thỏa mãn điều kiện), làm sạch (loại bỏ lỗi), và trực quan hóa (biểu đồ và đồ thị giúp các mô hình trở nên rõ ràng). Kết hợp dữ liệu từ nhiều nguồn khác nhau có thể tiết lộ thêm thông tin, nhưng cũng đặt ra những lo ngại về quyền riêng tư. Các công cụ tương tác và trực quan hóa cho phép mọi người khám phá dữ liệu và rút ra kết luận của riêng mình.

    Kỹ năng thi: biết cách giải thích làm thế nào một chương trình giúp tìm thông tin trong một bộ dữ liệu lớn, và tại sao mối tương quan hiển thị trong dữ liệu không thiết lập được nhân quả.

    2.4

    Exam tips · ⁨Mẹo làm bài thi⁩

    English
    • Convert confidently between binary, decimal, and (where asked) hexadecimal — practise until it is quick.
    • Remember a bit is one binary digit and a byte is 8 bits; $n$ bits represent $2^n$ values.
    • Explain that all data — numbers, text, images, sound — is stored as binary, and that finite bits cause overflow and round-off.
    • Distinguish lossless from lossy compression and when each is appropriate.
    • Show the analog-to-digital idea: sampling turns a continuous signal into discrete values.
    Tiếng Việt
    • Chuyển đổi tự tin giữa nhị phân, thập phân, và (nếu yêu cầu) thập lục phân — luyện tập cho đến khi nhanh.
    • Nhớ rằng một bit là một chữ số nhị phân và một byte là 8 bit; $n$ bit biểu diễn $2^n$ giá trị.
    • Giải thích rằng tất cả dữ liệu — số, văn bản, hình ảnh, âm thanh — đều được lưu dưới dạng nhị phân, và số bit hữu hạn gây ra tràn và làm tròn.
    • Phân biệt nén không mất mát và nén có mất mát cũng như thời điểm phù hợp cho từng loại.
    • Trình bày ý tưởng chuyển đổi từ analog sang kỹ thuật số: lấy mẫu biến tín hiệu liên tục thành các giá trị rời rạc.
  • 3

    Algorithms and Programming · ⁨Thuật toán và Lập trình⁩

    Watch lesson · ⁨Xem bài học⁩
    English

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

    Tiếng Việt

    Mã bên dưới sử dụng giả mã AP CSP – tài liệu tham khảo trung lập ngôn ngữ của kỳ thi. Phép gán được viết a ← expression, và chỉ mục danh sách bắt đầu từ 1.

    3.1

    Variables and Assignments · ⁨Biến và Gán Giá Trị⁩

    Syllabus · ⁨Chương trình⁩
    English

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

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

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

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

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

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

      Text:

      a ← expression

      Block:

      a ← expression

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

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

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

      still displays 1.

    Tiếng Việt

    Hiểu biết bền vững (AAP-1): Để tìm các giải pháp cụ thể cho các vấn đề có thể áp dụng rộng rãi, các lập trình viên biểu diễn và tổ chức dữ liệu theo nhiều cách khác nhau.

    Mục tiêu học tập AAP-1.A: Biểu diễn một giá trị bằng một biến. [Kỹ năng 3.A]

    • AAP-1.A.1 Một biến là một khái niệm trừu tượng bên trong chương trình có thể chứa một giá trị. Mỗi biến có bộ nhớ dữ liệu liên kết đại diện cho một giá trị tại một thời điểm, nhưng giá trị đó có thể là danh sách hoặc tập hợp khác chứa nhiều giá trị.
    • AAP-1.A.2 Việc sử dụng tên biến có ý nghĩa giúp cải thiện tính dễ đọc của mã nguồn và sự hiểu biết về các giá trị mà biến đại diện.
    • AAP-1.A.3 Một số ngôn ngữ lập trình cung cấp kiểu (types) để biểu diễn dữ liệu, được tham chiếu thông qua các biến. Các kiểu này bao gồm số, Booleans, danh sách và chuỗi.
    • AAP-1.A.4 Một số giá trị phù hợp hơn để biểu diễn bằng một loại dữ liệu cụ thể thay vì loại khác.

    Mục tiêu học tập AAP-1.B: Xác định giá trị của một biến như là kết quả của phép gán. [Kỹ năng 4.B]

    • AAP-1.B.1 toán tử gán cho phép một chương trình thay đổi giá trị được biểu diễn bởi một biến.

    • AAP-1.B.2 Sheet tham khảo kỳ thi cung cấp toán tử "$\leftarrow$" để sử dụng cho việc gán. Ví dụ,

      Văn bản:

      a ← expression

      Khối:

      a ← expression

      đánh giá expression và sau đó gán một bản sao của kết quả vào biến a.

    • AAP-1.B.3 Giá trị được lưu trữ trong một biến sẽ là giá trị gần đây nhất được gán. Ví dụ:

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

      vẫn hiển thị 1.

    Source: College Board AP Course and Exam Description · ⁨Nguồn: Mô tả Khóa học và Bài thi College Board AP⁩

    English

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

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

    Tiếng Việt

    Một biến là một tên gọi dành cho nơi chứa một giá trị. Toán tử gán lưu giá trị ở vế phải vào biến ở vế trái:

    Biến là một nơi lưu trữ có tên mà giá trị của nó có thể thay đổi.
    Biến là một nơi lưu trữ có tên mà giá trị của nó có thể thay đổi.
    a ← 5
    b ← a + 3      // b is now 8
    

    Một biến chỉ chứa một giá trị tại một thời điểm; việc gán lại sẽ thay thế nó. Biến cho phép chương trình lưu đầu vào, nhớ kết quả và tái sử dụng chúng.

    Explore · ⁨Khám phá⁩

    Watch a variable hold and change its value · ⁨Theo dõi biến giữ và thay đổi giá trị của nó⁩

    A variable is a named box that stores one value at a time. An assignment copies a value into the box; assigning again overwrites whatever was there. · ⁨Một biến là một hộp có tên chỉ lưu trữ một giá trị tại một thời điểm. Một phép gán sao chép một giá trị vào hộp này; việc gán lại sẽ ghi đè lên bất cứ thứ gì đã có ở đó.⁩

    Vocabulary · ⁨Từ vựng⁩ Train · ⁨Luyện tập⁩
    English Tiếng Việt
    variable/ˈveərɪəbl/ biến
    assignment/əˈsaɪnmənt/ gán (assignment)
    Data abstraction/ˈdeɪtə əbˈstrækʃn/ trừu tượng hóa dữ liệu
    remainder/rɪˈmeɪndə/ phần dư
    3.2

    Data Abstraction · ⁨Trừu tượng Dữ liệu⁩

    Syllabus · ⁨Chương trình⁩
    English

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

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

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

      [value1, value2, value3, ...]

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

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

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

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

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

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

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

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

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

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

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

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

      [value1, value2, value3, ...]

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

      • Text:

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

        Block:

        aList ← value1, value2, value3

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

      • Text:

        aList ← []

        Block:

        aList ← (empty)

        creates a new empty list and assigns it to aList.

      • Text:

        aList ← bList

        Block:

        aList ← bList

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

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

    Tiếng Việt

    Hiểu biết bền vững (AAP-1): Để tìm các giải pháp cụ thể cho các vấn đề có thể áp dụng rộng rãi, các lập trình viên biểu diễn và tổ chức dữ liệu theo nhiều cách khác nhau.

    Mục tiêu học tập AAP-1.C: Biểu diễn danh sách hoặc chuỗi ký tự bằng một biến. [Kỹ năng 3.A]

    • AAP-1.C.1 Một danh sách là một dãy thứ tự các phần tử. Ví dụ,

      [value1, value2, value3, ...]

      mô tả một danh sách nơi value1 là phần tử đầu tiên, value2 là phần tử thứ hai, value3 là phần tử thứ ba, và cứ thế tiếp diễn.

    • AAP-1.C.2 Một phần tử là một giá trị đơn lẻ trong danh sách được gán một chỉ số duy nhất.

    • AAP-1.C.3 Một chỉ số là phương pháp phổ biến để tham chiếu các phần tử trong danh sách hoặc chuỗi ký tự bằng các số tự nhiên.

    • AAP-1.C.4 Một chuỗi ký tự là một dãy thứ tự các ký tự.

    Mục tiêu học tập AAP-1.D: Đối với trừu tượng hóa dữ liệu: a. Phát triển trừu tượng hóa dữ liệu sử dụng danh sách để lưu trữ nhiều phần tử. [Kỹ năng 3.B] b. Giải thích cách sử dụng trừu tượng hóa dữ liệu quản lý độ phức tạp trong mã chương trình. [Kỹ năng 3.C]

    • AAP-1.D.1 Trừu tượng hóa dữ liệu cung cấp sự phân tách giữa các thuộc tính trừu tượng của một kiểu dữ liệu và các chi tiết cụ thể của biểu diễn của nó.

    • AAP-1.D.2 Trừu tượng hóa dữ liệu quản lý độ phức tạp trong chương trình bằng cách đặt tên cho một tập hợp dữ liệu mà không cần tham chiếu đến các chi tiết cụ thể của biểu diễn.

    • AAP-1.D.3 Các trừu tượng dữ liệu có thể được tạo ra bằng cách sử dụng danh sách.

    • AAP-1.D.4 Việc phát triển một trừu tượng dữ liệu để triển khai trong chương trình có thể dẫn đến một chương trình dễ phát triển và bảo trì hơn.

    • AAP-1.D.5 Các trừu tượng dữ liệu thường chứa các loại phần tử khác nhau.

    • AAP-1.D.6 Việc sử dụng danh sách cho phép nhiều mục liên quan được xem xét như một giá trị duy nhất. Danh sách được gọi là tên khác nhau, chẳng hạn như mảng, tùy thuộc vào ngôn ngữ lập trình.

      • Câu lệnh loại trừ (EK AAP-1.D.6): Việc sử dụng danh sách liên kết nằm ngoài phạm vi của khóa học này và Bài thi AP.
    • AAP-1.D.7 Bảng tham khảo bài thi cung cấp ký hiệu

      [value1, value2, value3, ...]

    để tạo một danh sách với các giá trị đó là mục đầu tiên, thứ hai, thứ ba, v.v. Ví dụ,

    • Văn bản:

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

      Khối:

      aList ← value1, value2, value3

      tạo ra một danh sách mới chứa các giá trị value1, value2, value3, và ... tại các chỉ số 1, 2, 3, và ... tương ứng và gán nó cho aList.

    • Văn bản:

      aList ← []

      Khối:

      aList ← (rỗng)

      tạo ra một danh sách rỗng mới và gán nó cho aList.

    • Văn bản:

      aList ← bList

      Khối:

      aList ← bList

      gán một bản sao của danh sách bList cho danh sách aList. Ví dụ, nếu bList chứa [20, 40, 60], thì aList cũng sẽ chứa [20, 40, 60] sau khi gán.

    • AAP-1.D.8 Bảng tham khảo bài thi mô tả cấu trúc danh sách mà các giá trị chỉ số là từ 1 đến số lượng phần tử trong danh sách, bao gồm cả hai đầu mút. Đối với tất cả các thao tác trên danh sách, nếu chỉ số danh sách nhỏ hơn 1 hoặc lớn hơn độ dài của danh sách, một thông báo lỗi sẽ được tạo ra và chương trình sẽ bị dừng.

    Source: College Board AP Course and Exam Description · ⁨Nguồn: Mô tả Khóa học và Bài thi College Board AP⁩

    English

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

    Tiếng Việt

    Trừ抽象 dữ liệu cho phép bạn quản lý độ phức tạp bằng cách gán một tên duy nhất cho một tập hợp dữ liệu – ví dụ, một danh sách thay vì hàng chục biến riêng biệt. Nó ẩn đi chi tiết: bạn sử dụng tập hợp có tên mà không cần lo lắng về cách nó được lưu trữ. Danh sách (bên dưới) là trừu tượng dữ liệu chính của khóa học.

    3.3

    Mathematical Expressions · ⁨Biểu thức Toán học⁩

    Syllabus · ⁨Chương trình⁩
    English

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

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

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

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

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

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

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

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

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

      Text and Block:

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

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

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

    Tiếng Việt

    Hiểu biết bền vững (AAP-2): Cách các câu lệnh được sắp xếp và kết hợp trong một chương trình xác định kết quả tính toán. Các chương trình tích hợp các cấu trúc lặp và chọn lọc để biểu diễn sự lặp lại và đưa ra quyết định xử lý các giá trị đầu vào khác nhau.

    Mục tiêu Học tập AAP-2.A: Biểu diễn một thuật toán sử dụng thứ tự tuần tự mà không cần dùng ngôn ngữ lập trình. [Kỹ năng 2.A]

    • AAP-2.A.1 Một thuật toán là một tập hợp hữu hạn các câu lệnh thực hiện một nhiệm vụ cụ thể.
    • AAP-2.A.2 Ngoài các ngôn ngữ lập trình trực quan và văn bản, thuật toán có thể được biểu diễn theo nhiều cách khác nhau, chẳng hạn như ngôn ngữ tự nhiên, sơ đồ, và mã giả.
    • AAP-2.A.3 Các thuật toán được thực thi bởi các chương trình được triển khai bằng các ngôn ngữ lập trình.
    • AAP-2.A.4 Mọi thuật toán đều có thể được xây dựng bằng cách kết hợp thứ tự tuần tự, lựa chọn, và lặp lại.

    Mục tiêu Học tập AAP-2.B: Biểu diễn một quy trình thuật toán từng bước bằng các câu lệnh code tuần tự. [Kỹ năng 2.B]

    • AAP-2.B.1 Thứ tự tuần tự là việc áp dụng từng bước của thuật toán theo đúng thứ tự mà các câu lệnh code được đưa ra.
    • AAP-2.B.2 Một câu lệnh code là một phần của mã chương trình biểu thị một hành động cần thực hiện.
    • AAP-2.B.3 Một biểu thức có thể bao gồm một giá trị, một biến, một toán tử, hoặc một lời gọi thủ tục trả về một giá trị.
    • AAP-2.B.4 Các biểu thức được đánh giá để tạo ra một giá trị đơn lẻ.
    • AAP-2.B.5 Việc đánh giá các biểu thức tuân theo một thứ tự các phép toán được định nghĩa bởi ngôn ngữ lập trình.
    • AAP-2.B.6 Các câu lệnh tuần tự được thực thi theo thứ tự chúng xuất hiện trong đoạn code.
    • AAP-2.B.7 Sự rõ ràng và khả năng đọc hiểu là những yếu tố quan trọng khi biểu diễn một thuật toán bằng ngôn ngữ lập trình.

    Mục tiêu Học tập AAP-2.C: Đánh giá các biểu thức sử dụng các toán tử số học. [Kỹ năng 4.B]

    • AAP-2.C.1 Các toán tử số học là một phần của hầu hết các ngôn ngữ lập trình và bao gồm các toán tử cộng, trừ, nhân, chia, và dư (modulus).

    • AAP-2.C.2 Bảng tham khảo bài thi cung cấp a MOD b, đánh giá lấy phần dư khi a được chia cho b. Giả sử rằng a là số nguyên lớn hơn hoặc bằng 0 và b là số nguyên lớn hơn 0. Ví dụ, 17 MOD 5 đánh giá thành 2.

    • AAP-2.C.3 Sheet tham khảo kỳ thi cung cấp các toán tử số học +, -, *, /, và MOD.

      Văn bản và Khối:

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

      Những toán tử này được sử dụng để thực hiện phép tính số học trên a và b. Ví dụ, 17 / 5 được đánh giá thành 3.4.

    • AAP-2.C.4 Thứ tự thực hiện các phép toán trong toán học được áp dụng khi đánh giá biểu thức. Toán tử MOD có cùng độ ưu tiên với các toán tử * và /.

    Source: College Board AP Course and Exam Description · ⁨Nguồn: Mô tả Khóa học và Bài thi College Board AP⁩

    English

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

    Tiếng Việt

    Các chương trình tính toán sử dụng các toán tử +, -, *, / và MOD (phần dư của phép chia, ví dụ: 17 MOD 5 là 2). Các biểu thức tuân theo thứ tự ưu tiên thông thường. MOD đặc biệt hữu ích cho việc kiểm tra tính chia hết (n MOD 2 = 0 có nghĩa là n là số chẵn) và để bao wrap các giá trị quanh một khoảng范围.

    Explore · ⁨Khám phá⁩

    Evaluate an expression step by step · ⁨Đánh giá biểu thức từng bước⁩

    An expression is evaluated with order of operations: multiplication and division happen before addition and subtraction, left to right. · ⁨Một biểu thức được đánh giá theo thứ tự ưu tiên phép toán: nhân và chia diễn ra trước cộng và trừ, từ trái sang phải.⁩

    3.4

    Strings · ⁨Chuỗi ký tự⁩

    Syllabus · ⁨Chương trình⁩
    English

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

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

    • AAP-2.D.1 String concatenation joins together two or more strings end-to-end to make a new string.
    • AAP-2.D.2 A substring is part of an existing string.
    Tiếng Việt

    Hiểu biết bền vững (AAP-2): Cách các câu lệnh được sắp xếp và kết hợp trong một chương trình xác định kết quả tính toán. Các chương trình tích hợp các cấu trúc lặp và chọn lọc để biểu diễn sự lặp lại và đưa ra quyết định xử lý các giá trị đầu vào khác nhau.

    Mục tiêu Học tập AAP-2.D: Đánh giá các biểu thức thao tác với chuỗi. [Kỹ năng 4.B]

    • AAP-2.D.1 Nối chuỗi ghép hai hoặc nhiều chuỗi lại với nhau cuối đầu để tạo ra một chuỗi mới.
    • AAP-2.D.2 Một chuỗi con là một phần của một chuỗi đã tồn tại.

    Source: College Board AP Course and Exam Description · ⁨Nguồn: Mô tả Khóa học và Bài thi College Board AP⁩

    English

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

    Tiếng Việt

    Một chuỗi (string) là một dãy có thứ tự các ký tự, giống như "hello". Chương trình nối chuỗi (nối chuỗi) và tìm chiều dài của chúng. Chuỗi đại diện cho văn bản – tên, tin nhắn, dãy – và là đầu vào/đầu ra phổ biến của chương trình.

    Vocabulary · ⁨Từ vựng⁩ Train · ⁨Luyện tập⁩
    English Tiếng Việt
    string/strɪŋ/ chuỗi ký tự
    concatenation/kənˌkætəˈneɪʃn/ nối chuỗi (concatenation)
    3.5

    Boolean Expressions · ⁨Biểu thức Boolean⁩

    Syllabus · ⁨Chương trình⁩
    English

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

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

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

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

      Text and Block:

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

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

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

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

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

      Text:

      NOT condition

      Block:

      NOT condition

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

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

      Text:

      condition1 AND condition2

      Block:

      condition1 AND condition2

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

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

      Text:

      condition1 OR condition2

      Block:

      condition1 OR condition2

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

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

    Tiếng Việt

    Hiểu biết bền vững (AAP-2): Cách các câu lệnh được sắp xếp và kết hợp trong một chương trình xác định kết quả tính toán. Các chương trình tích hợp các cấu trúc lặp và chọn lọc để biểu diễn sự lặp lại và đưa ra quyết định xử lý các giá trị đầu vào khác nhau.

    Mục tiêu Học tập AAP-2.E: Đối với mối quan hệ giữa hai biến, biểu thức, hoặc giá trị: a. Viết các biểu thức sử dụng các toán tử quan hệ. [Kỹ năng 2.B] b. Đánh giá các biểu thức sử dụng các toán tử quan hệ. [Kỹ năng 4.B]

    • AAP-2.E.1 Một giá trị Boolean là đúng hoặc sai.

    • AAP-2.E.2 Bảng tham khảo bài thi cung cấp các toán tử quan hệ sau: =, ≠, >, <, ≥, và ≤.

      Văn bản và Khối:

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

      Những cái này được sử dụng để kiểm tra mối quan hệ giữa hai biến, biểu thức, hoặc giá trị. Một phép so sánh sử dụng toán tử quan hệ đánh giá thành một giá trị Boolean. Ví dụ, a = b đánh giá thành true nếu a và b bằng nhau; ngược lại, nó đánh giá thành false.

    Mục tiêu Học tập AAP-2.F: Đối với mối quan hệ giữa các giá trị Boolean: a. Viết các biểu thức sử dụng các toán tử logic. [Kỹ năng 2.B] b. Đánh giá các biểu thức sử dụng các toán tử logic. [Kỹ năng 4.B]

    • AAP-2.F.1 Bảng tham khảo bài thi cung cấp các toán tử logic NOT, AND, và OR, đánh giá thành một giá trị Boolean.

    • AAP-2.F.2 Bảng tham khảo bài thi cung cấp

      Văn bản:

      NOT condition

      Khối:

      NOT condition

      trả về kết quả là true nếu condition là false; ngược lại, nó trả về kết quả là false.

    • AAP-2.F.3 Bảng tham khảo bài thi cung cấp

      Văn bản:

      condition1 AND condition2

      Khối:

      condition1 AND condition2

    đánh giá ra true nếu cả condition1 và condition2 đều true; ngược lại, nó đánh giá ra false.

    • AAP-2.F.4 Bảng tham khảo kỳ thi cung cấp

      Văn bản:

      condition1 OR condition2

      Khối:

      condition1 OR condition2

    đánh giá ra true nếu condition1 là true hoặc nếu condition2 là true hoặc nếu cả condition1 và condition2 đều true; ngược lại, nó đánh giá ra false.

    • AAP-2.F.5 Toán hạng của một toán tử logic có thể là một biểu thức Boolean hoặc một giá trị Boolean đơn lẻ.

    Source: College Board AP Course and Exam Description · ⁨Nguồn: Mô tả Khóa học và Bài thi College Board AP⁩

    English

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

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

    These conditions drive every decision and loop.

    Tiếng Việt

    Một biểu thức logic (Boolean expression) trả về true hoặc false. Nó sử dụng toán tử quan hệ (=, ≠, <, >, ≤, ≥) và toán tử logic NOT, AND, OR:

    Ba nhóm toán tử: số học, so sánh, và logic
    Ba nhóm toán tử: số học, so sánh, và logic
    • NOT đảo ngược một giá trị,
    • AND chỉ đúng khi cả hai vế đều đúng,
    • OR đúng khi ít nhất một vế đúng.

    Các điều kiện này dẫn dắt mọi quyết định và vòng lặp.

    Explore · ⁨Khám phá⁩

    Try the OR truth table · ⁨Thử bảng chân lý OR⁩

    A Boolean expression is either true (1) or false (0). OR is true when at least one input is true; flip the inputs to see every case. · ⁨Một biểu thức Boolean luôn đúng (1) hoặc sai (0). Phép OR đúng khi ít nhất một đầu vào là đúng; đảo ngược các đầu vào để xem mọi trường hợp.⁩

    Vocabulary · ⁨Từ vựng⁩ Train · ⁨Luyện tập⁩
    English Tiếng Việt
    Boolean expression/ˈbuːlɪən ekˈspreʃn/ biểu thức Boolean
    conditional (selection)/kənˈdɪʃənl/ có điều kiện (lựa chọn)
    nested conditional/ˈnestɪd kənˈdɪʃənl/ điều kiện lồng nhau
    3.6

    Conditionals · ⁨Điều kiện (Conditional)⁩

    Syllabus · ⁨Chương trình⁩
    English

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

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

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

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

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

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

      Text:

      IF(condition) { <block of statements> }

      Block:

      IF condition block of statements

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

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

      Text:

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

      Block:

      IF condition first block of statements ELSE second block of statements

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

    Tiếng Việt

    Hiểu biết bền vững (AAP-2): Cách các câu lệnh được sắp xếp và kết hợp trong một chương trình xác định kết quả tính toán. Các chương trình tích hợp các cấu trúc lặp và chọn lọc để biểu diễn sự lặp lại và đưa ra quyết định xử lý các giá trị đầu vào khác nhau.

    Mục tiêu học tập AAP-2.G: Diễn đạt một thuật toán sử dụng sự lựa chọn mà không dùng ngôn ngữ lập trình. [Kỹ năng 2.A]

    • AAP-2.G.1 Sự lựa chọn xác định phần nào của thuật toán được thực thi dựa trên việc một điều kiện là true hay false.

    Mục tiêu học tập AAP-2.H: Đối với sự lựa chọn: a. Viết câu lệnh điều kiện. [Kỹ năng 2.B] b. Xác định kết quả của các câu lệnh điều kiện. [Kỹ năng 4.B]

    • AAP-2.H.1 Các câu lệnh điều kiện, hay "câu lệnh if", ảnh hưởng đến luồng điều khiển tuần tự bằng cách thực thi các câu lệnh khác nhau dựa trên giá trị của một biểu thức Boolean.

    • AAP-2.H.2 Bảng tham khảo kỳ thi cung cấp

      Văn bản:

      IF(condition) { <block of statements> }

      Khối:

      IF condition block of statements

      trong đó mã code trong block of statements sẽ được thực thi nếu biểu thức logic condition cho kết quả là true; không có hành động nào được thực hiện nếu condition cho kết quả là false.

    • AAP-2.H.3 Bảng tham khảo kỳ thi cung cấp

      Văn bản:

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

      Khối:

      IF condition first block of statements ELSE second block of statements

    trong đó mã trong first block of statements sẽ được thực thi nếu biểu thức Boolean condition đánh giá là true; ngược lại, mã trong second block of statements sẽ được thực thi.

    Source: College Board AP Course and Exam Description · ⁨Nguồn: Mô tả Khóa học và Bài thi College Board AP⁩

    English

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

    Tiếng Việt

    Một điều kiện (lựa chọn) chọn xem đoạn mã nào sẽ chạy. IF chạy một khối mã chỉ khi điều kiện của nó là đúng; ELSE đưa ra một tùy chọn thay thế:

    Lựa chọn (Selection) chọn giữa các đường đi dựa trên một điều kiện
    Lựa chọn (Selection) chọn giữa các đường đi dựa trên một điều kiện
    IF (score ≥ 60)
    {
        DISPLAY("Pass")
    }
    ELSE
    {
        DISPLAY("Fail")
    }
    
    Explore · ⁨Khám phá⁩

    Follow an if / else decision · ⁨Theo dõi quyết định if / else⁩

    A conditional runs one branch or another depending on whether its condition is true. Slide the value across the threshold and watch which branch is taken. · ⁨Một điều kiện sẽ thực thi một nhánh hoặc nhánh khác tùy thuộc vào điều kiện của nó có đúng hay không. Kéo giá trị vượt qua ngưỡng và xem nhánh nào được chọn.⁩

    3.7

    Nested Conditionals · ⁨Điều kiện Lồng nhau⁩

    Syllabus · ⁨Chương trình⁩
    English

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

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

    • AAP-2.I.1 Nested conditional statements consist of conditional statements within conditional statements.
    Tiếng Việt

    Hiểu biết bền vững (AAP-2): Cách các câu lệnh được sắp xếp và kết hợp trong một chương trình xác định kết quả tính toán. Các chương trình tích hợp các cấu trúc lặp và chọn lọc để biểu diễn sự lặp lại và đưa ra quyết định xử lý các giá trị đầu vào khác nhau.

    Mục tiêu học tập AAP-2.I: Đối với sự lựa chọn lồng nhau: a. Viết câu lệnh điều kiện lồng nhau. [Kỹ năng 2.B] b. Xác định kết quả của các câu lệnh điều kiện lồng nhau. [Kỹ năng 4.B]

    • AAP-2.I.1 Các câu lệnh điều kiện lồng nhau bao gồm các câu lệnh điều kiện nằm bên trong các câu lệnh điều kiện khác.

    Source: College Board AP Course and Exam Description · ⁨Nguồn: Mô tả Khóa học và Bài thi College Board AP⁩

    English

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

    Tiếng Việt

    Một điều kiện lồng nhau đặt một IF bên trong另一个 (hoặc ghép ELSE IF) để chọn giữa hơn hai đường đi. Chỉ nhánh đầu tiên khớp sẽ chạy:

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

    Iteration · ⁨Lặp⁩

    Syllabus · ⁨Chương trình⁩
    English

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

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

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

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

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

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

      Text:

      REPEAT n TIMES { <block of statements> }

      Block:

      REPEAT n TIMES block of statements

      in which the block of statements is executed n times.

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

      Text:

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

      Block:

      REPEAT UNTIL condition block of statements

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

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

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

    Tiếng Việt

    Hiểu biết bền vững (AAP-2): Cách các câu lệnh được sắp xếp và kết hợp trong một chương trình xác định kết quả tính toán. Các chương trình tích hợp các cấu trúc lặp và chọn lọc để biểu diễn sự lặp lại và đưa ra quyết định xử lý các giá trị đầu vào khác nhau.

    Mục tiêu học tập AAP-2.J: Diễn đạt một thuật toán sử dụng lặp mà không dùng ngôn ngữ lập trình. [Kỹ năng 2.A]

    • AAP-2.J.1 Lặp là một phần của thuật toán được lặp lại. Lặp lại một số lần đã chỉ định hoặc cho đến khi một điều kiện nhất định được thỏa mãn.

    Mục tiêu học tập AAP-2.K: Đối với lặp: a. Viết câu lệnh lặp. [Kỹ năng 2.B] b. Xác định kết quả hoặc hiệu ứng phụ của các câu lệnh lặp. [Kỹ năng 4.B]

    • AAP-2.K.1 Các câu lệnh lặp thay đổi luồng điều khiển tuần tự bằng cách lặp lại một nhóm câu lệnh từ zero đến nhiều lần, cho đến khi điều kiện dừng được thỏa mãn.

    • AAP-2.K.2 Bảng tham khảo kỳ thi cung cấp

      Văn bản:

      REPEAT n TIMES { <block of statements> }

      Khối:

      REPEAT n TIMES block of statements

    trong đó block of statements được thực thi n lần.

    • AAP-2.K.3 Bảng tham khảo kỳ thi cung cấp

      Văn bản:

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

      Khối:

      REPEAT UNTIL condition block of statements

    trong đó mã trong block of statements được lặp lại cho đến khi biểu thức Boolean condition đánh giá là true.

    • AAP-2.K.4 Trong lặp REPEAT UNTIL(condition), vòng lặp vô hạn xảy ra khi điều kiện kết thúc sẽ không bao giờ đánh giá là true.
    • AAP-2.K.5 Trong lặp REPEAT UNTIL(condition), nếu điều kiện ban đầu đánh giá là true, thân vòng lặp sẽ không được thực thi bất cứ lúc nào, do điều kiện được kiểm tra trước khi bắt đầu vòng lặp.

    Source: College Board AP Course and Exam Description · ⁨Nguồn: Mô tả Khóa học và Bài thi College Board AP⁩

    English

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

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

    Tiếng Việt

    Lặp (Iteration) lặp lại các lệnh. Giả mã AP có hai dạng:

    Vòng lặp tiền điều kiện (WHILE) kiểm tra trước thân vòng lặp, do đó nó có thể chạy không lần nào
    Vòng lặp tiền điều kiện (WHILE) kiểm tra trước thân vòng lặp, do đó nó có thể chạy không lần nào
    REPEAT 5 TIMES        // a fixed count
    {
        DISPLAY("hi")
    }
    
    REPEAT UNTIL (found)  // until a condition becomes true
    {
        ...
    }
    

    Một vòng lặp chưa bao giờ đạt được điều kiện dừng là vòng lặp vô hạn.

    Explore · ⁨Khám phá⁩

    Trace a loop one pass at a time · ⁨Gieo một vòng lặp từng lượt đi⁩

    A loop repeats a block while its counter runs through a range. Step through to watch the counter and the running total update each pass. · ⁨Một vòng lặp lặp lại một khối lệnh khi bộ đếm của nó chạy qua một khoảng giá trị. Bước qua từng lượt để xem bộ đếm và tổng tích lũy cập nhật mỗi lần lặp.⁩

    Vocabulary · ⁨Từ vựng⁩ Train · ⁨Luyện tập⁩
    English Tiếng Việt
    Iteration (a loop)/ˌɪtəˈreɪʃn/ Lặp lại (vòng lặp)
    infinite loop/ˈɪnfɪnət luːp/ vòng lặp vô hạn
    algorithm/ˈælɡərɪθəm/ thuật toán
    3.9

    Developing Algorithms · ⁨Phát triển Thuật toán⁩

    Syllabus · ⁨Chương trình⁩
    English

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

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

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

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

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

    Hiểu biết bền vững (AAP-2): Cách các câu lệnh được sắp xếp và kết hợp trong một chương trình xác định kết quả tính toán. Các chương trình tích hợp các cấu trúc lặp và chọn lọc để biểu diễn sự lặp lại và đưa ra quyết định xử lý các giá trị đầu vào khác nhau.

    Mục tiêu học tập AAP-2.L: So sánh nhiều thuật toán để xác định xem chúng có tạo ra cùng hiệu ứng phụ hay kết quả hay không. [Kỹ năng 1.D]

    • AAP-2.L.1 Thuật toán có thể được viết theo nhiều cách khác nhau nhưng vẫn hoàn thành cùng một nhiệm vụ.
    • AAP-2.L.2 Các thuật toán trông giống nhau có thể tạo ra các hiệu ứng phụ hoặc kết quả khác nhau.
    • AAP-2.L.3 Một số câu lệnh điều kiện có thể được viết dưới dạng các biểu thức Boolean tương đương.
    • AAP-2.L.4 Một số biểu thức Boolean có thể được viết dưới dạng các câu lệnh điều kiện tương đương.
    • AAP-2.L.5 Có thể phát triển hoặc sử dụng các thuật toán khác nhau để giải quyết cùng một vấn đề.

    Mục tiêu học tập AAP-2.M: Đối với thuật toán: a. Tạo thuật toán. [Kỹ năng 2.A] b. Kết hợp và chỉnh sửa các thuật toán có sẵn. [Kỹ năng 2.B]

    • AAP-2.M.1 Thuật toán có thể được tạo ra từ một ý tưởng, bằng cách kết hợp các thuật toán có sẵn, hoặc bằng cách chỉnh sửa các thuật toán có sẵn.
    • AAP-2.M.2 Kiến thức về các thuật toán có sẵn có thể giúp xây dựng các thuật toán mới. Một số thuật toán có sẵn bao gồm:
      • xác định giá trị lớn nhất hoặc nhỏ nhất của hai hoặc nhiều số
      • tính tổng hoặc trung bình cộng của hai hoặc nhiều số
      • xác định xem một số nguyên chẵn hay lẻ khi chia hết cho một số nguyên khác
      • xác định đường đi của robot qua mê cung
    • AAP-2.M.3 Sử dụng các thuật toán đúng có sẵn làm khối xây dựng để tạo ra một thuật toán khác mang lại lợi ích như giảm thời gian phát triển, giảm thử nghiệm và đơn giản hóa việc xác định lỗi.

    Source: College Board AP Course and Exam Description · ⁨Nguồn: Mô tả Khóa học và Bài thi College Board AP⁩

    English

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

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

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

    Tiếng Việt
    Mã nguồn Python trên màn hình — thuật toán là những hướng dẫn chính xác, có thứ tự
    Mã nguồn Python trên màn hình — thuật toán là những hướng dẫn chính xác, có thứ tự

    Thuật toán không phải là code. Ngoài các ngôn ngữ lập trình trực quan và văn bản, một thuật toán có thể được biểu diễn bằng nhiều cách khác nhau: trong ngôn ngữ tự nhiên (câu thông thường), dưới dạng sơ đồ như flowchart, hoặc trong pseudocode. Những hình thức này dành cho con người — chúng cho phép bạn kiểm tra logic và thống nhất về nó trước khi chọn bất kỳ ngôn ngữ nào, và cùng một thuật toán sau đó có thể được viết bằng bất kỳ ngôn ngữ nào.

    Khi bạn viết mã bằng ngôn ngữ lập trình, sự rõ ràng và khả năng đọc hiểu là những yếu tố quan trọng, không chỉ là trang trí: tên biến có ý nghĩa, thụt lề nhất quán và comment giải thích tại sao thay vì cái gì. Chương trình sẽ cần được đọc và sửa đổi sau này bởi ai đó — thường là chính bạn — và một thuật toán mà không ai theo kịp thì không thể bảo trì hay gỡ lỗi được.

    Một thuật toán là một chuỗi hữu hạn các bước để giải quyết một vấn đề, được xây dựng từ thứ tự thực thi (sequencing), lựa chọn (selection) và lặp lại (iteration). Các thuật toán khác nhau có thể giải quyết cùng một vấn đề, và bạn nên có khả năng kết hợp và điều chỉnh các thuật toán hiện có (ví dụ: đếm các giá trị trong danh sách thỏa mãn một điều kiện, hoặc tìm giá trị lớn nhất). Hãy chạy thử thuật toán bằng tay để kiểm tra xem nó có đúng không.

    Flowchart trình bày một thuật toán sử dụng các ký hiệu tiêu chuẩn
    Flowchart trình bày một thuật toán sử dụng các ký hiệu tiêu chuẩn
    3.10

    Lists · ⁨Danh sách⁩

    Syllabus · ⁨Chương trình⁩
    English

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

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

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

        Text:

        aList[i]

        Block:

        aList i

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

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

        Text:

        x ← aList[i]

        Block:

        x ← aList i

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

      • assigning a value to an element of a list

        Text:

        aList[i] ← x

        Block:

        aList i ← x

        assigns the value of x to aList[i].

        Text:

        aList[i] ← aList[j]

        Block:

        aList i ← aList j

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

      • inserting elements at a given index

        Text:

        INSERT(aList, i, value)

        Block:

        INSERT aList, i, value

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

      • adding elements to the end of the list

        Text:

        APPEND(aList, value)

        Block:

        APPEND aList, value

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

      • removing elements

        Text:

        REMOVE(aList, i)

        Block:

        REMOVE aList, i

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

      • determining the length of a list

        Text:

        LENGTH(aList)

        Block:

        LENGTH aList

        evaluates to the number of elements currently in aList.

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

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

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

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

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

      Text:

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

      Block:

      FOR EACH item IN aList block of statements

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

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

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

    Tiếng Việt

    Hiểu biết bền vững (AAP-2): Cách các câu lệnh được sắp xếp và kết hợp trong một chương trình xác định kết quả tính toán. Các chương trình tích hợp các cấu trúc lặp và chọn lọc để biểu diễn sự lặp lại và đưa ra quyết định xử lý các giá trị đầu vào khác nhau.

    Mục tiêu học tập AAP-2.N: Đối với các thao tác trên danh sách: a. Viết các biểu thức sử dụng chỉ mục danh sách và các thủ tục trên danh sách. [Kỹ năng 2.B] b. Đánh giá các biểu thức sử dụng chỉ mục danh sách và các thủ tục trên danh sách. [Kỹ năng 4.B]

    • AAP-2.N.1 Sheet tham khảo kỳ thi cung cấp các thao tác cơ bản trên danh sách, bao gồm:
      • truy cập phần tử theo chỉ mục

        Văn bản:

        aList[i]

        Khối:

        aList i

        truy cập phần tử của aList tại chỉ mục i. Phần tử đầu tiên của aList nằm ở chỉ mục 1 và được truy cập bằng ký hiệu aList[1].

      • gán giá trị của một phần tử danh sách vào một biến

        Văn bản:

        x ← aList[i]

        Khối:

        x ← aList i

        gán giá trị của aList[i] vào biến x.

      • gán giá trị vào một phần tử của danh sách

        Văn bản:

        aList[i] ← x

        Khối:

        aList i ← x

        gán giá trị của x vào aList[i].

        Văn bản:

        aList[i] ← aList[j]

        Khối:

        aList i ← aList j

        gán giá trị của aList[j] vào aList[i].

      • chèn phần tử tại một chỉ mục cho trước

        Văn bản:

        INSERT(aList, i, value)

        Khối:

        INSERT aList, i, value

        dịch sang phải bất kỳ giá trị nào trong aList tại các chỉ mục lớn hơn hoặc bằng i. Độ dài của danh sách tăng lên 1, và value được đặt tại chỉ mục i trong aList.

      • thêm phần tử vào cuối danh sách

        Văn bản:

        APPEND(aList, value)

        Khối:

        APPEND aList, value

        tăng độ dài của aList lên 1, và value được đặt vào cuối aList.

      • xóa phần tử

        Văn bản:

        REMOVE(aList, i)

        Khối:

        REMOVE aList, i

        xóa mục tại chỉ mục i trong aList và dịch sang trái bất kỳ giá trị nào tại các chỉ mục lớn hơn i. Độ dài của aList giảm đi 1.

      • xác định độ dài của một danh sách

        Văn bản:

        LENGTH(aList)

        Khối:

        LENGTH aList

        đánh giá thành số lượng phần tử hiện có trong aList.

    • AAP-2.N.2 Các thủ tục trên danh sách được triển khai theo quy tắc cú pháp của ngôn ngữ lập trình.

    Mục tiêu học tập AAP-2.O: Đối với các thuật toán liên quan đến các phần tử của danh sách: a. Viết các câu lệnh lặp để duyệt qua một danh sách. [Kỹ năng 2.B] b. Xác định kết quả của một thuật toán bao gồm việc duyệt qua danh sách. [Kỹ năng 4.B]

    • AAP-2.O.1 Duyệt qua một danh sách có thể là duyệt hoàn toàn, nơi tất cả các phần tử trong danh sách được truy cập, hoặc duyệt một phần, nơi chỉ một phần các phần tử được truy cập.

      • Câu loại trừ (EK AAP-2.O.1): Duyệt qua nhiều danh sách cùng lúc sử dụng cùng chỉ mục cho cả hai (duyệt song song) nằm ngoài phạm vi của khóa học và Kỳ thi AP.
    • AAP-2.O.2 Câu lệnh lặp có thể được sử dụng để duyệt qua một danh sách.

    • AAP-2.O.3 Sheet tham khảo kỳ thi cung cấp

      Văn bản:

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

      Khối:

      FOR EACH item IN aList block of statements

      Biến item được gán giá trị của từng phần tử của aList lần lượt, theo thứ tự, từ phần tử đầu tiên đến phần tử cuối cùng. Mã code trong block of statements được thực thi một lần cho mỗi lần gán item.

    • AAP-2.O.4 Kiến thức về các thuật toán có sẵn sử dụng lặp có thể giúp xây dựng các thuật toán mới. Một số ví dụ về các thuật toán có sẵn thường được sử dụng với danh sách bao gồm:

      • xác định giá trị nhỏ nhất hoặc lớn nhất trong một danh sách
      • tính tổng hoặc trung bình cộng của một danh sách số
    • AAP-2.O.5 Thuật toán tìm kiếm tuyến tính hay tìm kiếm tuần tự kiểm tra từng phần tử của một danh sách, theo thứ tự, cho đến khi giá trị mong muốn được tìm thấy hoặc tất cả các phần tử trong danh sách đã được kiểm tra.

    Source: College Board AP Course and Exam Description · ⁨Nguồn: Mô tả Khóa học và Bài thi College Board AP⁩

    English

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

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

    Tiếng Việt

    Một danh sách (list) là một tập hợp có thứ tự các giá trị dưới một tên duy nhất, đây là phép trừu tượng dữ liệu cốt lõi của khóa học. Pseudocode của AP đánh số chỉ mục bắt đầu từ 1:

    Danh sách chứa nhiều giá trị trong một biến, mỗi giá trị được truy cập qua chỉ mục của nó
    Danh sách chứa nhiều giá trị trong một biến, mỗi giá trị được truy cập qua chỉ mục của nó
    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
    

    Duyệt qua danh sách với vòng lặp để tính tổng, đếm, tìm kiếm hoặc tìm giá trị tối đa:

    FOR EACH x IN scores
    {
        total ← total + x
    }
    
    Vocabulary · ⁨Từ vựng⁩ Train · ⁨Luyện tập⁩
    English Tiếng Việt
    list/lɪst/ list (danh sách)
    3.11

    Binary Search · ⁨Tìm kiếm nhị phân⁩

    Syllabus · ⁨Chương trình⁩
    English

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

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

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

    Hiểu biết bền vững (AAP-2): Cách các câu lệnh được sắp xếp và kết hợp trong một chương trình xác định kết quả tính toán. Các chương trình tích hợp các cấu trúc lặp và chọn lọc để biểu diễn sự lặp lại và đưa ra quyết định xử lý các giá trị đầu vào khác nhau.

    Mục tiêu học tập AAP-2.P: Đối với các thuật toán tìm kiếm nhị phân: a. Xác định số lần lặp cần thiết để tìm thấy một giá trị trong tập dữ liệu. [Kỹ năng 1.D] b. Giải thích các yêu cầu cần thiết để hoàn thành tìm kiếm nhị phân. [Kỹ năng 1.A]

    • AAP-2.P.1 Thuật toán tìm kiếm nhị phân bắt đầu từ giữa một tập dữ liệu số đã được sắp xếp và loại bỏ một nửa dữ liệu; quá trình này lặp lại cho đến khi giá trị mong muốn được tìm thấy hoặc tất cả các phần tử đã bị loại bỏ.
      • Câu loại trừ (EK AAP-2.P.1): Các triển khai cụ thể của tìm kiếm nhị phân nằm ngoài phạm vi của khóa học và Kỳ thi AP.
    • AAP-2.P.2 Dữ liệu phải được sắp xếp để sử dụng thuật toán tìm kiếm nhị phân.
    • AAP-2.P.3 Tìm kiếm nhị phân thường hiệu quả hơn so với tìm kiếm tuần tự/tuyến tính khi áp dụng trên dữ liệu đã được sắp xếp.

    Source: College Board AP Course and Exam Description · ⁨Nguồn: Mô tả Khóa học và Bài thi College Board AP⁩

    English

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

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

    Tiếng Việt
    Sổ điện thoại: tìm kiếm nhị phân loại bỏ một nửa số trang còn lại ở mỗi bước
    Sổ điện thoại: tìm kiếm nhị phân loại bỏ một nửa số trang còn lại ở mỗi bước

    Tìm kiếm nhị phân tìm thấy một giá trị trong một danh sách đã sắp xếp nhanh hơn rất nhiều so với việc kiểm tra từng phần tử. Nó xem xét phần tử ở giữa, sau đó loại bỏ một nửa không thể chứa mục tiêu, tiếp tục lặp lại cho đến khi tìm thấy. Mỗi bước giảm một nửa không gian tìm kiếm, vì vậy một danh sách $n$ phần tử mất khoảng $\log_2 n$ bước. Nó yêu cầu dữ liệu phải được sắp xếp trước tiên.

    Tìm kiếm nhị phân giảm một nửa phạm vi ở mỗi bước (danh sách phải được sắp xếp)
    Tìm kiếm nhị phân giảm một nửa phạm vi ở mỗi bước (danh sách phải được sắp xếp)

    Ví dụ minh họa. Tìm kiếm trong một danh sách đã sắp xếp $8$ phần tử, tìm kiếm nhị phân giảm một nửa phạm vi ở mỗi bước: $8\rightarrow4\rightarrow2\rightarrow1$, tối đa $3$ phép so sánh ($\log_2 8=3$), trong khi tìm kiếm tuyến tính có thể mất tới $8$. Lợi thế tăng trưởng theo cấp số nhân: khoảng $1{,}000$ phần tử chỉ cần $\approx10$ bước tìm kiếm nhị phân (nhưng tới $1{,}000$ bước tìm kiếm tuyến tính), và $1{,}000{,}000$ phần tử chỉ cần $\approx20$. Việc giảm một nửa chính là điều khiến nó trở thành một thuật toán có thời gian xử lý hợp lý.

    Vocabulary · ⁨Từ vựng⁩ Train · ⁨Luyện tập⁩
    English Tiếng Việt
    Binary search/ˈbaɪnəri sɜːtʃ/ Tìm kiếm nhị phân
    3.12

    Calling Procedures · ⁨Gọi Quy trình⁩

    Syllabus · ⁨Chương trình⁩
    English

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

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

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

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

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

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

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

      procName(arg1, arg2, ...)

      as a way to call

      Text:

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

      Block:

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

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

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

      Text:

      DISPLAY(expression)

      Block:

      DISPLAY expression

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

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

      Text:

      RETURN(expression)

      Block:

      RETURN expression

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

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

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

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

      Text:

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

      Block:

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

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

      Text:

      INPUT()

      Block:

      INPUT

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

    Tiếng Việt

    Hiểu biết bền vững (AAP-3): Các lập trình viên chia nhỏ các vấn đề thành những phần nhỏ hơn và dễ quản lý hơn. Bằng cách tạo ra các thủ tục và tận dụng tham số, các lập trình viên có thể tổng quát hóa các quy trình để tái sử dụng. Thủ tục cho phép các lập trình viên sử dụng mã nguồn đã được kiểm tra sẵn, giúp họ viết chương trình nhanh hơn và tự tin hơn.

    Mục tiêu học tập AAP-3.A: Đối với lời gọi thủ tục: a. Viết câu lệnh để gọi thủ tục. [Kỹ năng 3.B] b. Xác định kết quả hoặc tác động của một lời gọi thủ tục. [Kỹ năng 4.B]

    • AAP-3.A.1 Một thủ tục là một nhóm các câu lệnh lập trình có tên, có thể có tham số và giá trị trả về.

    • AAP-3.A.2 Thủ tục được gọi bằng các tên khác nhau, chẳng hạn như phương thức hoặc hàm, tùy thuộc vào ngôn ngữ lập trình.

    • AAP-3.A.3 Tham số là các biến đầu vào của một thủ tục. Tham đối xác định giá trị của các tham số khi một thủ tục được gọi.

    • AAP-3.A.4 Một lời gọi thủ tục làm gián đoạn việc thực thi tuần tự của các câu lệnh, khiến chương trình thực thi các câu lệnh bên trong thủ tục trước khi tiếp tục. Khi câu lệnh cuối cùng trong thủ tục (hoặc câu lệnh return) đã được thực thi, luồng điều khiển sẽ trở lại điểm ngay sau nơi thủ tục được gọi.

    • AAP-3.A.5 Bảng tham khảo kỳ thi cung cấp

      procName(arg1, arg2, ...)

      như một cách để gọi

      Văn bản:

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

      Khối:

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

      nhận không hoặc nhiều tham đối; arg1 được gán cho parameter1, arg2 được gán cho parameter2, và cứ thế tiếp diễn.

    • AAP-3.A.6 Bảng tham khảo kỳ thi cung cấp thủ tục

      Văn bản:

      DISPLAY(expression)

      Khối:

      DISPLAY expression

      để hiển thị giá trị của expression, theo sau là một khoảng trắng.

    • AAP-3.A.7 Bảng tham khảo kỳ thi cung cấp câu lệnh

      Văn bản:

      RETURN(expression)

      Khối:

      RETURN expression

      dùng để trả luồng điều khiển về điểm nơi thủ tục được gọi và trả về giá trị của expression.

    • AAP-3.A.8 Bảng tham khảo kỳ thi cung cấp

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

      để gán cho result "giá trị của thủ tục" đang được trả về bởi lời gọi

      Văn bản:

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

      Khối:

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

    • AAP-3.A.9 Bảng tham khảo kỳ thi cung cấp thủ tục

      Văn bản:

      INPUT()

      Khối:

      INPUT

      nhận một giá trị từ người dùng và trả về giá trị đầu vào đó.

    Source: College Board AP Course and Exam Description · ⁨Nguồn: Mô tả Khóa học và Bài thi College Board AP⁩

    English

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

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

    Tiếng Việt

    Một quy trình (function) là một khối code có tên và có thể tái sử dụng. Gọi nó sẽ thực thi code của quy trình đó với các tham số bạn cung cấp, và nó có thể trả về một giá trị:

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

    Các quy trình cho phép bạn sử dụng code mà không cần biết chi tiết hoạt động bên trong — đó là trừu tượng hóa quy trình (procedural abstraction).

    Vocabulary · ⁨Từ vựng⁩ Train · ⁨Luyện tập⁩
    English Tiếng Việt
    procedural abstraction/prəˈsiːdʒərəl əbˈstrækʃn/ trừ抽象 hóa thủ tục
    abstraction/əbˈstrækʃn/ trừu tượng hóa
    library/ˈlaɪbrəri/ thư viện (library)
    simulation/ˌsɪmjʊˈleɪʃn/ mô phỏng
    Efficiency/ɪˈfɪʃənsi/ Hiệu quả
    3.13

    Developing Procedures · ⁨Phát triển Quy trình⁩

    Syllabus · ⁨Chương trình⁩
    English

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

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

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

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

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

      Text:

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

      Block:

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

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

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

      Text:

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

      Block:

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

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

    Tiếng Việt

    Hiểu biết bền vững (AAP-3): Các lập trình viên chia nhỏ các vấn đề thành những phần nhỏ hơn và dễ quản lý hơn. Bằng cách tạo ra các thủ tục và tận dụng tham số, các lập trình viên có thể tổng quát hóa các quy trình để tái sử dụng. Thủ tục cho phép các lập trình viên sử dụng mã nguồn đã được kiểm tra sẵn, giúp họ viết chương trình nhanh hơn và tự tin hơn.

    Mục tiêu học tập AAP-3.B: Giải thích cách sử dụng sự trừu tượng thủ tục giúp quản lý độ phức tạp trong một chương trình. [Kỹ năng 3.C]

    • AAP-3.B.1 Một loại trừu tượng phổ biến là trừu tượng thủ tục, cung cấp tên cho một quy trình và cho phép sử dụng thủ tục chỉ cần biết nó làm gì, chứ không cần biết nó làm như thế nào.
    • AAP-3.B.2 Trừ抽象 thủ tục cho phép giải quyết một vấn đề lớn dựa trên các giải pháp của các vấn đề con nhỏ hơn. Điều này được thực hiện bằng cách tạo ra các thủ tục để giải quyết từng vấn đề con.
    • AAP-3.B.3 Việc phân chia một chương trình máy tính thành các chương trình con riêng biệt được gọi là tính mô-đun.
    • AAP-3.B.4 Sự trừu abstract thủ tục có thể trích xuất các đặc điểm chung để tổng quát hóa chức năng thay vì sao chép mã. Điều này cho phép tái sử dụng mã chương trình, giúp quản lý độ phức tạp.
    • AAP-3.B.5 Sử dụng tham số cho phép tổng quát hóa thủ tục, giúp chúng có thể được tái sử dụng với nhiều giá trị đầu vào hoặc tham đối khác nhau.
    • AAP-3.B.6 Sử dụng trừ抽象 thủ tục giúp cải thiện khả năng đọc hiểu của mã.
    • AAP-3.B.7 Sử dụng trừ抽象 thủ tục trong một chương trình cho phép các lập trình viên thay đổi nội bộ của thủ tục (để làm cho nó nhanh hơn, hiệu quả hơn, tiết kiệm bộ nhớ hơn, v.v.) mà không cần thông báo cho người dùng về sự thay đổi, miễn là hành vi của thủ tục vẫn được giữ nguyên.

    Mục tiêu học tập AAP-3.C: Phát triển trừ抽象 thủ tục để quản lý độ phức tạp trong một chương trình bằng cách viết các thủ tục. [Kỹ năng 3.B]

    • AAP-3.C.1 Bảng tham khảo kỳ thi cung cấp

      Văn bản:

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

      Khối:

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

      dùng để định nghĩa một thủ tục nhận không hoặc nhiều tham đối. Thủ tục chứa block of statements.

    • AAP-3.C.2 Bảng tham khảo kỳ thi cung cấp

      Văn bản:

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

      Khối:

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

      được sử dụng để định nghĩa một thủ tục nhận không hoặc nhiều tham số. Thủ tục chứa block of statements và trả về giá trị của expression. Câu lệnh RETURN có thể xuất hiện ở bất kỳ đâu bên trong thủ tục và gây ra việc trả về ngay lập tức từ thủ tục trở lại câu lệnh gọi.

    Source: College Board AP Course and Exam Description · ⁨Nguồn: Mô tả Khóa học và Bài thi College Board AP⁩

    English

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

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

    Tiếng Việt

    Bạn định nghĩa một quy trình với tên, tham số (dữ liệu đầu vào), và thân quy trình, và tùy chọn RETURN một kết quả trả về:

    Phân rã một chương trình thành các quy trình và quy trình con
    Phân rã một chương trình thành các quy trình và quy trình con
    PROCEDURE Add(a, b)
    {
        RETURN(a + b)
    }
    

    Viết các quy trình của riêng bạn giúp giảm bớt sự lặp lại, chia nhỏ một vấn đề lớn thành các phần có tên, và làm cho chương trình dễ đọc và dễ kiểm tra hơn — đó là cốt lõi của trừu tượng hóa.

    Vocabulary · ⁨Từ vựng⁩ Train · ⁨Luyện tập⁩
    English Tiếng Việt
    procedure (function)/prəˈsiːdʒə/ thuật toán (hàm)
    3.14

    Libraries · ⁨Thư viện⁩

    Syllabus · ⁨Chương trình⁩
    English

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

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

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

    Hiểu biết bền vững (AAP-3): Các lập trình viên chia nhỏ các vấn đề thành những phần nhỏ hơn và dễ quản lý hơn. Bằng cách tạo ra các thủ tục và tận dụng tham số, các lập trình viên có thể tổng quát hóa các quy trình để tái sử dụng. Thủ tục cho phép các lập trình viên sử dụng mã nguồn đã được kiểm tra sẵn, giúp họ viết chương trình nhanh hơn và tự tin hơn.

    Mục tiêu học tập AAP-3.D: Chọn các thư viện hoặc đoạn mã nguồn có sẵn phù hợp để sử dụng trong việc tạo ra các chương trình mới. [Kỹ năng 2.B]

    • AAP-3.D.1 Một thư viện phần mềm chứa các thủ tục có thể được sử dụng trong việc tạo ra các chương trình mới.
    • AAP-3.D.2 Các đoạn mã nguồn có sẵn có thể đến từ các nguồn nội bộ hoặc bên ngoài, chẳng hạn như thư viện hoặc mã nguồn đã được viết trước đó.
    • AAP-3.D.3 Việc sử dụng thư viện đơn giản hóa nhiệm vụ tạo ra các chương trình phức tạp.
    • AAP-3.D.4 Giao diện lập trình ứng dụng (APIs) là các quy định về cách các thủ tục trong thư viện hoạt động và có thể được sử dụng.
    • AAP-3.D.5 Tài liệu hướng dẫn cho API/thư viện là cần thiết để hiểu các hành vi do API/thư viện cung cấp và cách sử dụng chúng.

    Source: College Board AP Course and Exam Description · ⁨Nguồn: Mô tả Khóa học và Bài thi College Board AP⁩

    English

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

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

    Tiếng Việt

    Một thư viện là tập hợp các quy trình sẵn sàng mà người khác có thể tái sử dụng. Một API (Giao diện Lập trình Ứng dụng) tài liệu hóa xem mỗi quy trình làm gì, các tham số của nó và kết quả trả về — vì vậy bạn có thể sử dụng nó mà không cần nhìn vào code của nó. Thư viện tiết kiệm thời gian và cho phép bạn xây dựng dựa trên công việc đã có sẵn và đã được kiểm chứng.

    Tài liệu là một phần của thư viện. Tài liệu cho API hoặc thư viện là cần thiết để hiểu các hành vi mà nó cung cấp và cách sử dụng chúng — mỗi quy trình yêu cầu tham số gì, trả về gì, và làm gì ở các trường hợp đặc biệt. Không có tài liệu, bạn sẽ phải đọc source code, điều đó vô ích đối với trừu tượng hóa; với tài liệu, bạn có thể sử dụng đúng cách một quy trình mà không cần biết hoạt động bên trong của nó.

    3.15

    Random Values · ⁨Giá trị ngẫu nhiên⁩

    Syllabus · ⁨Chương trình⁩
    English

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

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

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

      Text:

      RANDOM(a, b)

      Block:

      RANDOM a, b

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

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

    Tiếng Việt

    Hiểu biết bền vững (AAP-3): Các lập trình viên chia nhỏ các vấn đề thành những phần nhỏ hơn và dễ quản lý hơn. Bằng cách tạo ra các thủ tục và tận dụng tham số, các lập trình viên có thể tổng quát hóa các quy trình để tái sử dụng. Thủ tục cho phép các lập trình viên sử dụng mã nguồn đã được kiểm tra sẵn, giúp họ viết chương trình nhanh hơn và tự tin hơn.

    Mục tiêu học tập AAP-3.E: Đối với việc tạo ra các giá trị ngẫu nhiên: a. Viết biểu thức để tạo ra các giá trị có thể xảy ra. [Kỹ năng 2.B] b. Đánh giá biểu thức để xác định các kết quả có thể. [Kỹ năng 4.B]

    • AAP-3.E.1 Bảng tham khảo kỳ thi cung cấp

      Văn bản:

      RANDOM(a, b)

      Khối:

      RANDOM a, b

      tạo và trả về một số nguyên ngẫu nhiên từ a đến b, bao gồm cả hai đầu mút. Mỗi kết quả đều có khả năng xảy ra ngang nhau. Ví dụ, RANDOM(1, 3) có thể trả về 1, 2, hoặc 3.

    • AAP-3.E.2 Việc sử dụng tạo số ngẫu nhiên trong một chương trình có nghĩa là mỗi lần thực thi có thể tạo ra kết quả khác nhau.

    Source: College Board AP Course and Exam Description · ⁨Nguồn: Mô tả Khóa học và Bài thi College Board AP⁩

    English

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

    Tiếng Việt

    RANDOM(a, b) trả về một số nguyên ngẫu nhiên từ a đến b (bao gồm cả hai đầu mút), cho phép chương trình tạo ra các kết quả không thể dự đoán được — phục vụ cho trò chơi, lấy mẫu, hoặc mô phỏng. Mỗi lần gọi có thể trả về một giá trị khác nhau, do đó một chương trình sử dụng tính ngẫu nhiên sẽ hoạt động khác nhau ở mỗi lần chạy.

    3.16

    Simulations · ⁨Mô phỏng⁩

    Syllabus · ⁨Chương trình⁩
    English

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

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

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

    Hiểu biết bền vững (AAP-3): Các lập trình viên chia nhỏ các vấn đề thành những phần nhỏ hơn và dễ quản lý hơn. Bằng cách tạo ra các thủ tục và tận dụng tham số, các lập trình viên có thể tổng quát hóa các quy trình để tái sử dụng. Thủ tục cho phép các lập trình viên sử dụng mã nguồn đã được kiểm tra sẵn, giúp họ viết chương trình nhanh hơn và tự tin hơn.

    Mục tiêu học tập AAP-3.F: Đối với các mô phỏng: a. Giải thích cách máy tính có thể được sử dụng để đại diện cho các hiện tượng hoặc kết quả trong thế giới thực. [Kỹ năng 1.A] b. So sánh các mô phỏng với bối cảnh thế giới thực. [Kỹ năng 1.D]

    • AAP-3.F.1 Mô phỏng là sự trừu tượng hóa các đối tượng hoặc hiện tượng phức tạp hơn nhằm phục vụ một mục đích cụ thể.
    • AAP-3.F.2 Một mô phỏng là đại diện sử dụng các tập giá trị khác nhau để phản ánh trạng thái thay đổi của một hiện tượng.
    • AAP-3.F.3 Mô phỏng thường mô phỏng lại các sự kiện thực tế với mục đích rút ra kết luận, cho phép điều tra một hiện tượng mà không bị giới hạn bởi thế giới thực.
    • AAP-3.F.4 Quá trình phát triển mô phỏng trừu tượng liên quan đến việc loại bỏ các chi tiết cụ thể hoặc đơn giản hóa chức năng.
    • AAP-3.F.5 Mô phỏng có thể chứa thiên kiến xuất phát từ những lựa chọn về các yếu tố thực tế được bao gồm hoặc loại bỏ.
    • AAP-3.F.6 Mô phỏng hữu ích nhất khi các sự kiện thực tế không khả thi cho thí nghiệm (ví dụ: quá lớn, quá nhỏ, quá nhanh, quá chậm, quá đắt tiền, hoặc quá nguy hiểm).
    • AAP-3.F.7 Mô phỏng hỗ trợ việc xây dựng và tinh chỉnh các giả thuyết liên quan đến các đối tượng hoặc hiện tượng đang xem xét.
    • AAP-3.F.8 Bộ tạo số ngẫu nhiên có thể được sử dụng để mô phỏng sự biến dị tồn tại trong thế giới thực.

    Source: College Board AP Course and Exam Description · ⁨Nguồn: Mô tả Khóa học và Bài thi College Board AP⁩

    English

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

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

    Tiếng Việt

    Một mô phỏng là một chương trình mô hình hóa một quá trình thực tế để nghiên cứu nó một cách an toàn và rẻ tiền. Mô phỏng đơn giản hóa thực tế (loại bỏ các chi tiết) và thường sử dụng tính ngẫu nhiên để mô phỏng các sự kiện ngẫu nhiên. Chúng cho phép bạn thử nghiệm các kịch bản mà trong đời thực sẽ quá tốn kém, chậm chạp, hoặc nguy hiểm — nhưng kết quả của chúng chỉ tốt bằng các giả định của chúng.

    Mô phỏng là một phương pháp làm khoa học, không chỉ đơn thuần là một bức tranh. Vì nó có thể được chạy nhiều lần, rẻ tiền và chỉ thay đổi một biến số tại một thời điểm, mô phỏng thúc đẩy việc xây dựng và tinh chỉnh các giả thuyết về đối tượng hoặc hiện tượng đang xem xét: bạn đưa ra một lời giải thích, chạy mô hình, so sánh kết quả với thực tế, và điều chỉnh cả giả thuyết lẫn mô hình. Đó là lý do tại sao những sự đơn giản hóa của mô phỏng lại quan trọng — một kết quả chỉ hỗ trợ một giả thuyết về thế giới thực ở mức độ mà những gì bị loại bỏ không quan trọng.

    3.17

    Algorithmic Efficiency · ⁨Hiệu suất Thuật toán⁩

    Syllabus · ⁨Chương trình⁩
    English

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

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

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

    Hiểu biết dai dẳng (AAP-4): Tồn tại các vấn đề mà máy tính không thể giải quyết, và ngay cả khi máy tính có thể giải quyết một vấn đề, nó cũng có thể không làm được trong khoảng thời gian hợp lý.

    Mục tiêu học tập AAP-4.A: Để xác định hiệu quả của thuật toán: a. Giải thích sự khác biệt giữa các thuật toán chạy trong khoảng thời gian hợp lý và các thuật toán không làm được. [Kỹ năng 1.D] b. Xác định các tình huống mà giải pháp hồi quy có thể phù hợp hơn. [Kỹ năng 1.D]

    • AAP-4.A.1 Một vấn đề là mô tả chung về một nhiệm vụ có thể (hoặc không thể) được giải quyết bằng thuật toán. Một trường hợp của vấn đề cũng bao gồm đầu vào cụ thể. Ví dụ, sắp xếp là một vấn đề; sắp xếp danh sách (2,3,1,7) là một trường hợp của vấn đề đó.
    • AAP-4.A.2 Một vấn đề quyết định là một vấn đề có câu trả lời có/không (ví dụ: có đường đi từ A đến B không?). Một vấn đề tối ưu hóa là một vấn đề có mục tiêu tìm "giải pháp tốt nhất" trong nhiều giải pháp (ví dụ: đường đi ngắn nhất từ A đến B là gì?).
    • AAP-4.A.3 Hiệu quả là ước lượng lượng tài nguyên tính toán được sử dụng bởi một thuật toán. Hiệu quả thường được biểu diễn dưới dạng hàm của kích thước đầu vào.
      • Câu loại trừ (EK AAP-4.A.3): Phân tích chính thức về thuật toán (Big-O) và lập luận chính thức sử dụng công thức toán học nằm ngoài phạm vi của khóa học này và kỳ thi AP.
    • AAP-4.A.4 Hiệu quả của một thuật toán được xác định thông qua lập luận chính thức hoặc toán học.
    • AAP-4.A.5 Hiệu quả của một thuật toán có thể được đo lường một cách phi chính thức bằng cách xác định số lần một câu lệnh hoặc nhóm câu lệnh được thực thi.
    • AAP-4.A.6 Các thuật toán đúng khác nhau cho cùng một vấn đề có thể có hiệu quả khác nhau.
    • AAP-4.A.7 Các thuật toán có hiệu quả đa thức hoặc chậm hơn (hằng số, tuyến tính, bình phương, lập phương, v.v.) được nói là chạy trong khoảng thời gian hợp lý. Các thuật toán có hiệu quả mũ hay giai thừa là ví dụ về các thuật toán chạy trong khoảng thời gian không hợp lý.
    • AAP-4.A.8 Một số vấn đề không thể được giải quyết trong khoảng thời gian hợp lý vì không có thuật toán hiệu quả nào để giải quyết chúng. Trong những trường hợp này, các giải pháp xấp xỉ được tìm kiếm.
    • AAP-4.A.9 Một hồi quy là tiếp cận vấn đề tạo ra giải pháp không được đảm bảo là tối ưu nhưng có thể được sử dụng khi các kỹ thuật đảm bảo luôn tìm thấy giải pháp tối ưu là không khả thi.
      • Câu loại trừ (AAP-4.A.9): Các giải pháp hồi quy cụ thể nằm ngoài phạm vi của khóa học này và kỳ thi AP.

    Source: College Board AP Course and Exam Description · ⁨Nguồn: Mô tả Khóa học và Bài thi College Board AP⁩

    English

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

    Tiếng Việt

    Hiệu suất là lượng thời gian (hoặc bộ nhớ) mà thuật toán cần thiết khi dữ liệu đầu vào tăng lên. Một thuật toán thời gian hợp lý có khối lượng công việc tăng theo đa thức của kích thước đầu vào (ví dụ: tuyến tính hoặc bậc hai); một thuật toán thời gian không hợp lý tăng nhanh hơn nhiều (ví dụ: nhân đôi với mỗi mục được thêm vào), trở nên bất khả thi đối với dữ liệu đầu vào lớn. Một thuật toán nhanh hơn có thể biến một vấn đề trước đây không thể giải quyết thành có thể. Đôi khi một đáp án chính xác tốn quá lâu, vì vậy người ta sử dụng thuật toán tham khảo (heuristic) – một phương pháp tìm ra đáp án đủ tốt một cách nhanh chóng thay thế.

    Thời gian chạy của thuật toán tăng theo kích thước dữ liệu đầu vào n
    Thời gian chạy của thuật toán tăng theo kích thước dữ liệu đầu vào n
    Vocabulary · ⁨Từ vựng⁩ Train · ⁨Luyện tập⁩
    English Tiếng Việt
    heuristic/hjuːˈrɪstɪk/ phương tiện heuristic
    undecidable/ˌʌndɪˈsaɪdəbl/ không thể giải quyết
    Interface/ˈɪntəfeɪs/ Giao diện
    3.18

    Undecidable Problems · ⁨Các Vấn Đề Không Quyết Định Được⁩

    Syllabus · ⁨Chương trình⁩
    English

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

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

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

    Hiểu biết dai dẳng (AAP-4): Tồn tại các vấn đề mà máy tính không thể giải quyết, và ngay cả khi máy tính có thể giải quyết một vấn đề, nó cũng có thể không làm được trong khoảng thời gian hợp lý.

    Mục tiêu học tập AAP-4.B: Giải thích sự tồn tại của các vấn đề không thể quyết định trong khoa học máy tính. [Kỹ năng 1.A]

    • AAP-4.B.1 Một vấn đề có thể quyết định là một vấn đề quyết định mà một thuật toán có thể được viết để tạo ra đầu ra chính xác cho tất cả các đầu vào (ví dụ: "Số có chẵn không?").
    • AAP-4.B.2 Một vấn đề không thể quyết định là vấn đề mà không có thuật toán nào có thể được xây dựng luôn cung cấp câu trả lời đúng yes/no.
      • Câu loại trừ (EK AAP-4.B.2): Việc xác định liệu một vấn đề đã cho có phải là vấn đề không thể quyết định hay không nằm ngoài phạm vi của khóa học này và kỳ thi AP.
    • AAP-4.B.3 Một vấn đề không thể quyết định có thể có một số trường hợp có giải pháp thuật toán, nhưng không có giải pháp thuật toán nào có thể giải quyết tất cả các trường hợp của vấn đề đó.

    Source: College Board AP Course and Exam Description · ⁨Nguồn: Mô tả Khóa học và Bài thi College Board AP⁩

    English

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

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

    Tiếng Việt

    Một số vấn đề là không quyết định được: không có thuật toán nào có thể giải quyết mọi trường hợp của chúng bằng câu trả lời đúng/sai chính xác. Đây là giới hạn cơ bản của máy tính – không phải do thiếu máy tính nhanh hơn, mà là bằng chứng chứng minh rằng không tồn tại thuật toán nào như vậy.

    Kỹ năng làm bài thi: biết xác định kết quả của một đoạn mã bằng cách truy vết, so sánh hiệu suất của hai thuật toán (thời gian hợp lý so với không hợp lý), và nhận biết sự trừu tượng thủ tục cũng như trừu tượng dữ liệu trong chương trình.

    3.18

    Exam tips · ⁨Mẹo làm bài thi⁩

    English
    • Know a variable is a named store for a value and trace how assignment updates it step by step.
    • Read the AP pseudocode carefully — a <- expression assigns, and lists are 1-indexed on the exam reference sheet.
    • Distinguish a variable from a list (a collection accessed by index) and use list operations correctly.
    • Evaluate expressions with the right precedence and boolean logic (AND, OR, NOT).
    • Pick clear, meaningful variable names — the written tasks reward readable code.
    Tiếng Việt
    • Biết rằng biến là nơi lưu trữ có tên cho một giá trị và truy vết cách gán lại cập nhật nó từng bước một.
    • Đọc kỹ pseudocode AP — a <- expression thực hiện gán lại, và các danh sách đánh chỉ số từ 1 trên trang tham khảo kỳ thi.
    • Phân biệt biến với danh sách (một tập hợp truy cập bằng chỉ số) và sử dụng đúng các thao tác trên danh sách.
    • Đánh giá biểu thức theo độ ưu tiên đúng và logic boolean (AND, OR, NOT).
    • Chọn tên biến rõ ràng, mang ý nghĩa – các bài viết đánh giá code dễ đọc.
  • 4

    Computer Systems and Networks · ⁨Hệ thống Máy tính và Mạng⁩

    Watch lesson · ⁨Xem bài học⁩
    4.1

    The Internet · ⁨Internet⁩

    Syllabus · ⁨Chương trình⁩
    English

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

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

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

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

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

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

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

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

    • CSN-1.D.1 The World Wide Web is a system of linked pages, programs, and files.
    • CSN-1.D.2 HTTP is a protocol used by the World Wide Web.
    • CSN-1.D.3 The World Wide Web uses the Internet.
    Tiếng Việt

    Hiểu biết bền vững (CSN-1): Hệ thống máy tính và mạng hỗ trợ việc truyền dữ liệu.

    Mục tiêu học tập CSN-1.A: Giải thích cách các thiết bị máy tính hoạt động cùng nhau trong một mạng. [Kỹ năng 5.A]

    • CSN-1.A.1 Một thiết bị máy tính là một vật lý có thể chạy một chương trình. Một số ví dụ bao gồm máy tính, máy tính bảng, máy chủ, bộ định tuyến và cảm biến thông minh.
    • CSN-1.A.2 Một hệ thống máy tính là một nhóm các thiết bị máy tính và chương trình hoạt động cùng nhau vì một mục đích chung.
    • CSN-1.A.3 Một mạng máy tính là một nhóm các thiết bị máy tính liên kết với nhau có khả năng gửi hoặc nhận dữ liệu.
    • CSN-1.A.4 Một mạng máy tính là một loại hệ thống máy tính.
    • CSN-1.A.5 Một đường dẫn giữa hai thiết bị máy tính trên một mạng máy tính (người gửi và người nhận) là một chuỗi các thiết bị máy tính được kết nối trực tiếp bắt đầu từ người gửi và kết thúc ở người nhận.
    • CSN-1.A.6 Định tuyến là quá trình tìm đường dẫn từ người gửi đến người nhận.
    • CSN-1.A.7 Băng thông của một mạng máy tính là lượng dữ liệu tối đa có thể được gửi trong một khoảng thời gian cố định.
    • CSN-1.A.8 Băng thông thường được đo bằng bit trên giây.

    Mục tiêu học tập CSN-1.B: Giải thích cách Internet hoạt động. [Kỹ năng 5.A]

    • CSN-1.B.1 Internet là một mạng máy tính bao gồm các mạng liên kết với nhau sử dụng các giao thức truyền thông chuẩn hóa, mở (không độc quyền).
    • CSN-1.B.2 Truy cập Internet phụ thuộc vào khả năng kết nối thiết bị tính toán với một thiết bị đã kết nối Internet.
    • CSN-1.B.3 Một giao thức là một bộ quy tắc đã thống nhất quy định hành vi của một hệ thống.
    • CSN-1.B.4 Các giao thức được sử dụng trong Internet là mở, cho phép người dùng dễ dàng kết nối thêm các thiết bị tính toán vào Internet.
    • CSN-1.B.5 Định tuyến trên Internet thường mang tính động; nó không được xác định trước.
    • CSN-1.B.6 Khả năng mở rộng của một hệ thống là dung lượng để hệ thống thay đổi kích thước và quy mô nhằm đáp ứng các nhu cầu mới.
    • CSN-1.B.7 Internet được thiết kế để có khả năng mở rộng.

    Mục tiêu học tập CSN-1.C: Giải thích cách dữ liệu được gửi qua Internet thông qua các gói tin. [Kỹ năng 5.A]

    • CSN-1.C.1 Thông tin được truyền qua Internet dưới dạng luồng dữ liệu. Các luồng dữ liệu chứa các khối dữ liệu, được đóng gói thành các gói tin.
    • CSN-1.C.2 Các gói tin chứa một khối dữ liệu và metadata được sử dụng để định tuyến gói tin giữa nguồn và đích trên Internet, cũng như để tái cấu trúc dữ liệu.
    • CSN-1.C.3 Các gói tin có thể đến đích theo thứ tự, không theo thứ tự, hoặc thậm chí không đến.
    • CSN-1.C.4 IP, TCP và UDP là các giao thức phổ biến được sử dụng trên Internet.

    Mục tiêu học tập CSN-1.D: Mô tả sự khác biệt giữa Internet và World Wide Web. [Kỹ năng 5.A]

    • CSN-1.D.1 World Wide Web là một hệ thống các trang web, chương trình và tệp tin liên kết với nhau.
    • CSN-1.D.2 HTTP là một giao thức được sử dụng bởi World Wide Web.
    • CSN-1.D.3 World Wide Web sử dụng Internet.

    Source: College Board AP Course and Exam Description · ⁨Nguồn: Mô tả Khóa học và Bài thi College Board AP⁩

    English

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

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

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

    Tiếng Việt
    Đầu nối Ethernet RJ45 — các liên kết vật lý vận chuyển gói tin qua Internet
    Cổng kết nối Ethernet RJ45 — liên kết vật lý vận chuyển gói tin qua Internet

    Internet là mạng toàn cầu gồm các mạng kết nối với nhau. Dữ liệu di chuyển dưới dạng gói tin – những mảnh nhỏ được gửi riêng lẻ và tái lắp ráp tại đích đến. Hai khái niệm giúp nó hoạt động ở quy mô lớn:

    Internet là mạng toàn cầu; Web là một dịch vụ chạy trên đó
    Internet là mạng toàn cầu; web là một dịch vụ chạy trên đó
    • Giao thức là các quy tắc thống nhất để giao tiếp. Địa chỉ IP (Giao thức Internet) định vị và định tuyến gói tin; TCP tái sắp xếp chúng theo thứ tự và yêu cầu gửi lại những cái bị mất; HTTP tải trang web; DNS chuyển đổi tên miền như example.com thành địa chỉ IP.
    • Sự dư thừa và định tuyến: có nhiều đường đi khác nhau giữa hai điểm, vì vậy nếu một đường đi bị hỏng, gói tin sẽ chọn đường khác. Điều này khiến Internet có khả năng chịu lỗi.

    Internet được thiết kế để mở và có thể mở rộng – xây dựng dựa trên tiêu chuẩn mà ai cũng có thể sử dụng, giúp nó tiếp tục hoạt động khi hàng tỷ thiết bị kết nối. Băng thông là lượng dữ liệu mà một kết nối có thể truyền tải mỗi giây.

    Explore · ⁨Khám phá⁩

    How data crosses the Internet in packets · ⁨Cách dữ liệu truyền qua Internet thành các gói tin⁩

    The Internet breaks a message into numbered packets, each addressed and routed independently (often by different paths), then reassembled at the destination. That design makes it fault-tolerant — if one route fails, packets take another. · ⁨Internet chia một tin nhắn thành các gói tin có đánh số, mỗi gói được định tuyến độc lập (thường qua các đường dẫn khác nhau), sau đó được tái tạo lại tại đích đến. Thiết kế này giúp nó chống lỗi — nếu một đường dẫn thất bại, các gói tin sẽ lấy đường khác.⁩

    Vocabulary · ⁨Từ vựng⁩ Train · ⁨Luyện tập⁩
    English Tiếng Việt
    Internet/ˈɪntənet/ Internet
    packets/ˈpækɪts/ các gói tin
    Protocols/ˈprəʊtəkɒlz/ Giao thức
    Redundancy/rɪˈdʌndənsi/ Sự dư thừa
    fault-tolerant/fɒlt ˈtɒlərənt/ chống lỗi
    Bandwidth/ˈbændwɪdθ/ Băng thông
    reliability/rɪˌlaɪəˈbɪlɪti/ độ tin cậy
    Sequential computing/siːˈkwenʃl kəmˈpjuːtɪŋ/ Tính toán tuần tự
    Parallel computing/ˈpærəlel kəmˈpjuːtɪŋ/ Tính toán song song
    Distributed computing/ˈdɪstrɪbjuːtɪd kəmˈpjuːtɪŋ/ Tính toán phân tán
    speedup/ˈspiːdʌp/ tăng tốc
    Watch lesson · ⁨Xem bài học⁩
    4.2

    Fault Tolerance · ⁨Khả Năng Chịu Lỗi⁩

    Syllabus · ⁨Chương trình⁩
    English

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

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

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

    Hiểu biết bền vững (CSN-1): Hệ thống máy tính và mạng hỗ trợ việc truyền dữ liệu.

    Mục tiêu học tập CSN-1.E: Đối với các hệ thống kháng lỗi, như Internet: a. Mô tả lợi ích của khả năng kháng lỗi. [Kỹ năng 1.D] b. Giải thích cách một hệ thống cụ thể có khả năng kháng lỗi. [Kỹ năng 5.A] c. Xác định các điểm yếu dễ dẫn đến thất bại trong hệ thống. [Kỹ năng 1.D]

    • CSN-1.E.1 Internet đã được kỹ thuật hóa để có khả năng kháng lỗi, với các lớp trừu tượng cho việc định tuyến và truyền dữ liệu.
    • CSN-1.E.2 Tính dư thừa là việc bao gồm các thành phần bổ sung có thể được sử dụng để giảm thiểu sự thất bại của hệ thống nếu các thành phần khác gặp sự cố.
    • CSN-1.E.3 Một cách để thực hiện tính dư thừa mạng là có nhiều hơn một đường dẫn giữa bất kỳ hai thiết bị nào được kết nối.
    • CSN-1.E.4 Nếu một thiết bị hoặc kết nối cụ thể trên Internet gặp sự cố, dữ liệu tiếp theo sẽ được gửi qua một lộ trình khác, nếu có thể.
    • CSN-1.E.5 Khi một hệ thống có thể chịu đựng các sự cố mà vẫn tiếp tục hoạt động, nó được gọi là kháng lỗi. Điều này quan trọng vì các thành tố của hệ thống phức tạp thường thất bại vào những thời điểm bất ngờ, thường xảy ra theo nhóm, và khả năng kháng lỗi cho phép người dùng tiếp tục sử dụng mạng.
    • CSN-1.E.6 Tính dư thừa bên trong một hệ thống thường yêu cầu tài nguyên bổ sung nhưng có thể mang lại lợi ích về khả năng kháng lỗi.
    • CSN-1.E.7 Sự dư thừa của các tùy chọn định tuyến giữa hai điểm làm tăng độ tin cậy của Internet và giúp nó mở rộng sang nhiều thiết bị và người dùng hơn.

    Source: College Board AP Course and Exam Description · ⁨Nguồn: Mô tả Khóa học và Bài thi College Board AP⁩

    English

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

    Tiếng Việt
    Bộ định tuyến Wi-Fi: cổng cục bộ chuyển tiếp gói tin về phía Internet rộng hơn
    Bộ phát Wi-Fi: cổng cục bộ chuyển tiếp gói tin về phía Internet rộng hơn

    Một hệ thống có khả năng chịu lỗi nếu nó vẫn hoạt động ngay cả khi một phần của nó bị hỏng. Internet đạt được điều này thông qua các kết nối dư thừa: do gói tin có thể được định tuyến theo nhiều đường khác nhau, sự cố hỏng hóc của một bộ phát hoặc cáp không làm gián đoạn việc trao đổi dữ liệu – lưu lượng sẽ tự động định tuyến lại. Khả năng chịu lỗi đòi hỏi tài nguyên bổ sung (các đường dự phòng) nhưng cải thiện đáng kể độ tin cậy. Một đường đi duy nhất không có đường dự phòng thì không có khả năng chịu lỗi.

    Chuyển đổi gói tin gửi các gói tin theo các tuyến độc lập, giúp mạng chịu được liên kết bị hỏng
    Chuyển mạch gói gửi gói tin theo các đường độc lập, giúp mạng chịu được link bị hỏng
    4.3

    Parallel and Distributed Computing · ⁨Tính Toán song song và Phân tán⁩

    Syllabus · ⁨Chương trình⁩
    English

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

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

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

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

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

    Hiểu biết cốt lõi (CSN-2): Tính toán song song và phân tán tận dụng nhiều máy tính để giải quyết nhanh hơn các vấn đề phức tạp hoặc xử lý các tập dữ liệu lớn.

    Mục tiêu học tập CSN-2.A: Đối với tính toán tuần tự, song song và phân tán: a. So sánh các giải pháp vấn đề. [Kỹ năng 1.D] b. Xác định hiệu suất của các giải pháp. [Kỹ năng 1.D]

    • CSN-2.A.1 Tính toán tuần tự là một mô hình tính toán trong đó các thao tác được thực hiện lần lượt từng bước một theo thứ tự.
    • CSN-2.A.2 Tính toán song song là một mô hình tính toán trong đó chương trình được chia nhỏ thành nhiều thao tác tính toán tuần tự nhỏ hơn, một số trong số đó được thực hiện đồng thời.
    • CSN-2.A.3 Tính toán phân tán là một mô hình tính toán trong đó nhiều thiết bị được sử dụng để chạy một chương trình.
    • CSN-2.A.4 So sánh hiệu suất của các giải pháp có thể được thực hiện bằng cách so sánh thời gian chúng mất để thực hiện cùng một tác vụ.
    • CSN-2.A.5 Một giải pháp tuần tự mất thời gian bằng tổng của tất cả các bước của nó.
    • CSN-2.A.6 Một giải pháp tính toán song parallel mất thời gian bằng tổng các tác vụ tuần tự của nó cộng với tác vụ song song lâu nhất.
    • CSN-2.A.7 "Tốc độ tăng" của một giải pháp song song được đo bằng thời gian hoàn thành tác vụ theo phương pháp tuần tự chia cho thời gian hoàn thành tác vụ khi thực hiện song song.

    Mục tiêu học tập CSN-2.B: Mô tả lợi ích và thách thức của tính toán song song và phân tán. [Kỹ năng 1.D]

    • CSN-2.B.1 Tính toán song song bao gồm một phần song song và một phần tuần tự.
    • CSN-2.B.2 Các giải pháp sử dụng tính toán song song có thể mở rộng hiệu quả hơn so với các giải pháp sử dụng tính toán tuần tự.
    • CSN-2.B.3 Tính toán phân tán cho phép giải quyết các vấn đề mà không thể giải quyết trên một máy tính đơn lẻ do thời gian xử lý hoặc nhu cầu lưu trữ liên quan.
    • CSN-2.B.4 Tính toán phân tán cho phép giải quyết các vấn đề lớn hơn nhiều nhanh hơn so với việc sử dụng một máy tính đơn lẻ.
    • CSN-2.B.5 Khi tăng cường sử dụng tính toán song song trong một giải pháp, hiệu quả của giải pháp vẫn bị giới hạn bởi phần tuần tự. Điều này có nghĩa là ở một thời điểm nào đó, việc thêm các phần song song sẽ không còn làm tăng hiệu quả một cách ý nghĩa nữa.

    Source: College Board AP Course and Exam Description · ⁨Nguồn: Mô tả Khóa học và Bài thi College Board AP⁩

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

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

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

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

    Tiếng Việt
    Kệ máy chủ trung tâm dữ liệu: điện toán phân tán phân bổ công việc trên nhiều máy
    Rack máy chủ trung tâm dữ liệu: tính toán phân tán chia sẻ công việc trên nhiều máy
    • Tính toán tuần tự thực hiện một thao tác một lúc.
    • Tính toán song song chia nhỏ một tác vụ thành các phần chạy cùng lúc trên nhiều bộ xử lý, hoàn thành nhanh hơn.
    • Tính toán phân tán sử dụng nhiều máy tính được kết nối qua mạng để cùng giải quyết một vấn đề – điều cần thiết cho các vấn đề quá lớn so với khả năng của một máy đơn lẻ.
    Điện toán song song: nhiều bộ xử lý hoạt động cùng lúc
    Tính toán song song: nhiều bộ xử lý hoạt động cùng lúc

    Tốc độ tăng của một giải pháp song song là thời gian tuần tự chia cho thời gian song song. Tốc độ tăng bị giới hạn: các phần bắt buộc phải chạy tuần tự không thể được đẩy nhanh bằng cách thêm bộ xử lý, vì vậy việc nhân đôi số bộ xử lý hiếm khi làm tăng gấp đôi tốc độ.

    Ví dụ minh họa. Một nhiệm vụ có một phần bắt buộc chạy tuần tự, tốn $40$ giây, cộng với một phần có thể song song hóa tốn $60$ giây trên một bộ xử lý – vậy trên một bộ xử lý duy nhất, toàn bộ nhiệm vụ mất $40+60=100$ giây. Phân bổ phần song song across $3$ bộ xử lý và nó chỉ mất $\tfrac{60}{3}=20$ giây, nên tổng thời gian song song là $40+20=60$ giây và độ tăng tốc là $\tfrac{100}{60}\approx1.67$. Phần tuần tự dài $40$ giây là mức sàn: ngay cả với vô hạn bộ xử lý, nhiệm vụ cũng không thể hoàn thành dưới $40$ giây.

    Kỹ năng làm bài thi: cho biết thời gian của phần tuần tự và phần song song của một tác vụ, hãy tính được tổng thời gian song song và tốc độ tăng.

    4.3

    Exam tips · ⁨Mẹo làm bài thi⁩

    English
    • Describe how data travels in packets over a redundant, fault-tolerant network of independent routers.
    • Know that protocols (IP, TCP, HTTP) are agreed rules, and that open standards let different systems interoperate.
    • Explain scalability and how the Internet grows without central control.
    • Contrast bandwidth (rate) with latency (delay), and describe the DNS name-to-address lookup.
    • Discuss the digital divide and security basics (encryption, authentication) in plain terms.
    Tiếng Việt
    • Mô tả cách dữ liệu di chuyển dưới dạng gói tin qua mạng các bộ phát độc lập, có sự dư thừa và khả năng chịu lỗi.
    • Biết rằng giao thức (IP, TCP, HTTP) là các quy tắc thống nhất, và các tiêu chuẩn mở cho phép các hệ thống khác nhau tương tác với nhau.
    • Giải thích tính mở rộng và cách Internet phát triển mà không cần kiểm soát tập trung.
    • Phân biệt băng thông (tốc độ) với độ trễ (thời gian phản hồi), và mô tả việc tra cứu tên thành địa chỉ của DNS.
    • Thảo luận về khe hở số và các nguyên tắc bảo mật cơ bản (mã hóa, xác thực) bằng ngôn ngữ dễ hiểu.
  • 5

    Impact of Computing · ⁨Tác động của Công nghệ tính toán⁩

    Watch lesson · ⁨Xem bài học⁩
    5.1

    Beneficial and Harmful Effects · ⁨Tác động Có lợi và Có hại⁩

    Syllabus · ⁨Chương trình⁩
    English

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

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

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

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

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

    Hiểu biết Bền vững (IOC-1): Mặc dù các đổi mới về máy tính thường được thiết kế để đạt được một mục đích cụ thể, chúng có thể dẫn đến những hệ quả không mong muốn.

    Mục tiêu Học tập IOC-1.A: Giải thích cách một tác động của một đổi mới về máy tính có thể vừa mang lại lợi ích vừa gây ra tác hại. [Kỹ năng 5.C]

    • IOC-1.A.1 Con người tạo ra các đổi mới về máy tính.
    • IOC-1.A.2 Cách thức con người hoàn thành các nhiệm vụ thường thay đổi để tích hợp các đổi mới về máy tính mới.
    • IOC-1.A.3 Không phải tất cả các tác động của một đổi mới về máy tính đều được dự báo trước.
    • IOC-1.A.4 Một tác động duy nhất có thể được xem xét là vừa có lợi vừa có hại bởi những người khác nhau, hoặc thậm chí bởi cùng một người.
    • IOC-1.A.5 Những tiến bộ về máy tính đã tạo ra và thúc đẩy sự sáng tạo trong các lĩnh vực khác như y học, kỹ thuật, truyền thông và nghệ thuật.

    Mục tiêu Học tập IOC-1.B: Giải thích cách một đổi mới về máy tính có thể tạo ra tác động vượt ra ngoài mục đích ban đầu của nó. [Kỹ năng 5.C]

    • IOC-1.B.1 Các đổi mới về máy tính có thể được sử dụng theo những cách mà các nhà sáng tạo ban đầu không hề dự định:
      • Mạng World Wide ban đầu chỉ được dự định dành cho việc trao đổi thông tin nhanh chóng và dễ dàng trong cộng đồng khoa học.
      • Quảng cáo nhắm mục tiêu được sử dụng để hỗ trợ doanh nghiệp, nhưng nó cũng có thể bị lạm dụng ở cả cấp độ cá nhân và tổng thể.
      • Học máy và khai thác dữ liệu đã thúc đẩy đổi mới trong y học, kinh doanh và khoa học, nhưng thông tin được phát hiện theo cách này cũng đã được sử dụng để phân biệt đối xử với các nhóm cá nhân.
    • IOC-1.B.2 Một số cách sử dụng các đổi mới về máy tính có thể có tác động có hại lên xã hội, nền kinh tế hoặc văn hóa.
    • IOC-1.B.3 Các lập trình viên có trách nhiệm cố gắng xem xét những cách sử dụng không mong muốn của các đổi mới về máy tính và các tiềm năng tác động có lợi cũng như có hại của những cách sử dụng mới này.
    • IOC-1.B.4 Không thể nào đối với một lập trình viên khi xem xét hết tất cả các cách mà một đổi mới về máy tính có thể được sử dụng.
    • IOC-1.B.5 Các đổi mới về máy tính thường đã tạo ra những tác động có lợi không mong muốn bằng cách dẫn đến những tiến bộ trong các lĩnh vực khác.
    • IOC-1.B.6 Việc chia sẻ nhanh chóng một chương trình hoặc chạy một chương trình với số lượng lớn người dùng có thể dẫn đến những tác động đáng kể vượt ra ngoài mục đích ban đầu hoặc sự kiểm soát của lập trình viên.

    Source: College Board AP Course and Exam Description · ⁨Nguồn: Mô tả Khóa học và Bài thi College Board AP⁩

    English

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

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

    Tiếng Việt
    Một đống chất thải điện tử — công nghệ tính toán mang lại cả chi phí môi trường lẫn lợi ích
    Một đống chất thải điện tử — công nghệ tính toán mang lại cả chi phí môi trường lẫn lợi ích

    Mỗi đổi mới trong công nghệ tính toán đều có thể được sử dụng theo cách có lợi và cách có hại – thường cùng một công nghệ vừa làm được việc này vừa gây ra tác hại đó. Một mạng xã hội kết nối con người và cũng có thể lan truyền tin giả; tự động hóa nâng cao năng suất và cũng có thể loại bỏ vị trí việc làm. Các hệ quả thường là không mong muốn: người tạo ra không thể dự đoán hết mọi cách sử dụng. Khi đánh giá một đổi mới tính toán, hãy cân nhắc cả lợi ích và tác hại đối với con người và xã hội, và nhớ rằng những tác hại không phải lúc nào cũng do cố ý gây ra.

    Công nghệ tính toán ảnh hưởng đến sức khỏe cộng đồng theo nhiều cách khác nhau
    Công nghệ tính toán ảnh hưởng đến sức khỏe cộng đồng theo nhiều cách khác nhau

    Công nghệ tính toán còn thúc đẩy sự sáng tạo trong các lĩnh vực khác, điều mà CED yêu cầu như một lợi ích độc lập, không chỉ đơn thuần là sự thuận tiện: mô hình hóa và hình ảnh y khoa, mô phỏng kỹ thuật, các hình thức mới trong nghệ thuật và âm nhạc, cũng như những loại hình giao tiếp hoàn toàn mới. Những tác động tích cực của một đổi mới thường nằm ở một lĩnh vực xa rời công nghệ tính toán.

    5.2

    The Digital Divide · ⁨Khe Hở Số⁩

    Syllabus · ⁨Chương trình⁩
    English

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

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

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

    Hiểu biết Bền vững (IOC-1): Mặc dù các đổi mới về máy tính thường được thiết kế để đạt được một mục đích cụ thể, chúng có thể dẫn đến những hệ quả không mong muốn.

    Mục tiêu Học tập IOC-1.C: Mô tả các vấn đề góp phần tạo nên khoảng cách số. [Kỹ năng 5.C]

    • IOC-1.C.1 Truy cập Internet khác nhau giữa các đặc điểm kinh tế-xã hội, địa lý và nhân khẩu học, cũng như giữa các quốc gia.
    • IOC-1.C.2 "Khoảng cách số" đề cập đến sự khác biệt trong truy cập vào các thiết bị máy tính và Internet, dựa trên các đặc điểm kinh tế-xã hội, địa lý hoặc nhân khẩu học.
    • IOC-1.C.3 Khoảng cách số có thể ảnh hưởng đến cả các nhóm và cá nhân.
    • IOC-1.C.4 Khoảng cách số đặt ra các vấn đề về công bằng, khả năng tiếp cận và ảnh hưởng, cả ở cấp toàn cầu lẫn địa phương.
    • IOC-1.C.5 Khoảng cách số chịu ảnh hưởng bởi hành động của các cá nhân, tổ chức và chính phủ.

    Source: College Board AP Course and Exam Description · ⁨Nguồn: Mô tả Khóa học và Bài thi College Board AP⁩

    English

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

    Tiếng Việt

    Khoảng cách kỹ thuật số là sự tiếp cận không đồng đều đối với máy tính và Internet giữa các nhóm – dựa trên thu nhập, địa lý, độ tuổi hoặc quốc gia. Những người có quyền truy cập nhận được giáo dục, công việc và dịch vụ; những người không có bị tụt hậu hơn. Khoảng cách này được định hình bởi các yếu tố kinh tế, xã hội và địa lý, và các nỗ lực thu hẹp khoảng cách (thiết bị giá rẻ, truy cập công cộng, hạ tầng) nhằm mục đích mang lại lợi ích của điện toán một cách công bằng hơn.

    Máy tính thư viện công cộng: khe hở số liên quan đến sự bất bình đẳng trong tiếp cận thiết bị, kết nối và kỹ năng
    Máy tính thư viện công cộng: khe hở số liên quan đến sự bất bình đẳng trong tiếp cận thiết bị, kết nối và kỹ năng
    Ăng-ten vệ tinh vùng nông thôn: địa lý vẫn định hình ai có internet tốc độ cao và ai phải chờ đợi
    Ăng-ten vệ tinh vùng nông thôn: địa lý vẫn định hình ai có internet tốc độ cao và ai phải chờ đợi
    5.3

    Computing Bias · ⁨Thiên kiến Tính toán⁩

    Syllabus · ⁨Chương trình⁩
    English

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

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

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

    Hiểu biết Bền vững (IOC-1): Mặc dù các đổi mới về máy tính thường được thiết kế để đạt được một mục đích cụ thể, chúng có thể dẫn đến những hệ quả không mong muốn.

    Mục tiêu Học tập IOC-1.D: Giải thích cách thiên kiến tồn tại trong các đổi mới về máy tính. [Kỹ năng 5.E]

    • IOC-1.D.1 Các đổi mới về máy tính có thể phản ánh các thiên kiến hiện có của con người do các thiên kiến được viết vào thuật toán hoặc do các thiên kiến trong dữ liệu được sử dụng bởi đổi mới đó.
    • IOC-1.D.2 Các lập trình viên nên thực hiện hành động để giảm thiểu thiên kiến trong các thuật toán được sử dụng cho các đổi mới về máy tính như một cách chống lại các thiên kiến hiện có của con người.
    • IOC-1.D.3 Thiên kiến có thể được nhúng ở mọi cấp độ của quá trình phát triển phần mềm.

    Source: College Board AP Course and Exam Description · ⁨Nguồn: Mô tả Khóa học và Bài thi College Board AP⁩

    English

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

    Tiếng Việt
    Xe tự lái trên phố thị – hệ thống tự chủ đặt ra câu hỏi về an toàn và thiên kiến
    Xe tự lái trên phố thị – hệ thống tự chủ đặt ra câu hỏi về an toàn và thiên kiến

    Thiên kiến có thể được xây dựng vào các hệ thống tính toán – thường là vô tình. Nếu dữ liệu dùng để xây dựng hệ thống phản ánh định kiến hiện hữu, hoặc nếu những giả định của nhà thiết kế mang tính một chiều, hệ thống có thể đưa ra kết quả không công bằng (ví dụ: công cụ tuyển dụng ưu tiên một nhóm). Thiên kiến có thể xâm nhập vào mọi giai đoạn – thu thập dữ liệu, thiết kế và sử dụng – vì vậy các hệ thống cần được kiểm tra tính công bằng qua các nhóm khác nhau. Việc nhận thức rằng "máy tính nói thế" không đồng nghĩa với "công bằng" là một thói quen quan trọng.

    5.4

    Crowdsourcing · ⁨Thu gom từ đám đông⁩

    Syllabus · ⁨Chương trình⁩
    English

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

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

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

    Hiểu biết Bền vững (IOC-1): Mặc dù các đổi mới về máy tính thường được thiết kế để đạt được một mục đích cụ thể, chúng có thể dẫn đến những hệ quả không mong muốn.

    Mục tiêu Học tập IOC-1.E: Giải thích cách con người tham gia vào các quy trình giải quyết vấn đề ở quy mô lớn. [Kỹ năng 1.C]

    • IOC-1.E.1 Việc truy cập rộng rãi vào thông tin và dữ liệu công khai giúp xác định các vấn đề, phát triển các giải pháp và phổ biến kết quả.
    • IOC-1.E.2 Khoa học đã bị ảnh hưởng bởi việc sử dụng các phương pháp phân tán và "khoa học công dân" để giải quyết các vấn đề khoa học.
    • IOC-1.E.3 Khoa học công dân là nghiên cứu khoa học được thực hiện toàn bộ hoặc một phần bởi các cá nhân phân tán, nhiều người trong số họ có thể không phải là nhà khoa học, những người đóng góp dữ liệu liên quan vào nghiên cứu bằng cách sử dụng các thiết bị máy tính của riêng mình.
    • IOC-1.E.4 Thu thập thông tin tập thể là thực hành thu nhập ý kiến hoặc thông tin từ một số lượng lớn người dân thông qua Internet.
    • IOC-1.E.5 Năng lực con người có thể được nâng cao thông qua hợp tác thông qua máy tính.
    • IOC-1.E.6 Thu thập thông tin tập thể cung cấp các mô hình hợp tác mới, chẳng hạn như kết nối các doanh nghiệp hoặc các nguyên tắc xã hội với nguồn tài trợ.

    Source: College Board AP Course and Exam Description · ⁨Nguồn: Mô tả Khóa học và Bài thi College Board AP⁩

    English

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

    Tiếng Việt

    Thu gom từ đám đông là phương pháp thu thập ý kiến, ý tưởng hoặc nguồn tài trợ từ một nhóm người lớn, thường trực tuyến. Nó tận dụng tri thức và nỗ lực của nhiều người – các dự án bản đồ, đánh giá sản phẩm, khoa học công dân và quỹ đóng góp đều phụ thuộc vào nó. Internet cho phép thu gom từ đám đông diễn ra ở quy mô và tốc độ chưa từng có, giúp một dự án huy động người đóng góp từ khắp nơi trên thế giới.

    Họp sửa chữa Wikipedia: thu gom từ đám đông tập hợp công sức của nhiều người thành nguồn tài nguyên chung
    Họp sửa chữa Wikipedia: thu gom từ đám đông tập hợp công sức của nhiều người thành nguồn tài nguyên chung
    5.5

    Legal and Ethical Concerns · ⁨Các vấn đề Pháp lý và Đạo đức⁩

    Syllabus · ⁨Chương trình⁩
    English

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

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

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

    Hiểu biết Bền vững (IOC-1): Mặc dù các đổi mới về máy tính thường được thiết kế để đạt được một mục đích cụ thể, chúng có thể dẫn đến những hệ quả không mong muốn.

    Mục tiêu Học tập IOC-1.F: Giải thích cách việc sử dụng máy tính có thể dấy lên các mối lo ngại về pháp lý và đạo đức. [Kỹ năng 5.E]

    • IOC-1.F.1 Vật liệu được tạo ra trên máy tính là sở hữu trí tuệ của người tạo ra hoặc một tổ chức.
    • IOC-1.F.2 Sự dễ dàng trong truy cập và phân phối thông tin kỹ thuật số làm dấy lên các mối lo ngại về sở hữu trí tuệ liên quan đến quyền sở hữu, giá trị và sử dụng.
    • IOC-1.F.3 Cần phải có các biện pháp để bảo vệ sở hữu trí tuệ.
    • IOC-1.F.4 Việc sử dụng vật liệu do người khác tạo ra mà không có sự cho phép và trình bày như của bản thân là đạo văn và có thể có hậu quả pháp lý.
    • IOC-1.F.5 Một số ví dụ về các cách sử dụng hợp pháp đối với vật liệu do người khác tạo ra bao gồm:
      • Creative Commons—một giấy phép bản quyền công cộng cho phép phân phối miễn phí một tác phẩm vốn đã được bảo vệ bản quyền. Điều này được sử dụng khi người sáng tạo nội dung muốn cấp quyền cho người khác chia sẻ, sử dụng và phát triển dựa trên tác phẩm của họ.
      • mã nguồn mở—các chương trình được cung cấp miễn phí và có thể được phân phối lại cũng như chỉnh sửa
      • truy cập mở—kết quả nghiên cứu trực tuyến miễn phí mọi hạn chế về tiếp cận và giảm thiểu nhiều hạn chế về sử dụng, chẳng hạn như hạn chế bản quyền hoặc giấy phép
    • IOC-1.F.6 Việc sử dụng tài liệu do người khác (không phải bạn) tạo ra luôn cần được trích dẫn.
    • IOC-1.F.7 Creative Commons, mã nguồn mở và truy cập mở đã giúp mở rộng khả năng tiếp cận thông tin kỹ thuật số.
    • IOC-1.F.8 Giống như bất kỳ công nghệ hay phương tiện nào khác, việc sử dụng máy tính để gây hại cho cá nhân hoặc nhóm người sẽ làm nổi lên các vấn đề pháp lý và đạo đức.
    • IOC-1.F.9 Máy tính có thể đóng vai trò trong các vấn đề xã hội và chính trị, điều này thường dẫn đến các lo ngại về mặt pháp lý và đạo đức.
    • IOC-1.F.10 Kênh cách biệt kỹ thuật số đặt ra những câu hỏi đạo đức liên quan đến máy tính.
    • IOC-1.F.11 Các đổi mới trong máy tính có thể sinh ra các vấn đề pháp lý và đạo đức. Một số ví dụ bao gồm:
      • sự phát triển phần mềm cho phép truy cập tải xuống và phát trực tuyến phương tiện kỹ thuật số
      • sự phát triển các thuật toán chứa định kiến
      • sự tồn tại của các thiết bị máy tính thu thập và phân tích dữ liệu bằng cách giám sát liên tục các hoạt động

    Source: College Board AP Course and Exam Description · ⁨Nguồn: Mô tả Khóa học và Bài thi College Board AP⁩

    English

    Computing raises questions of law and ethics:

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

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

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

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

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

    What is recorded while you browse

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

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

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

    Tiếng Việt
    Phòng điều khiển camera giám sát: hệ thống giám sát đánh đổi lợi ích an ninh với lo ngại về quyền riêng tư
    Phòng điều khiển camera giám sát: hệ thống giám sát đánh đổi lợi ích an ninh với lo ngại về quyền riêng tư

    Công nghệ tính toán đặt ra các câu hỏi về pháp luật và đạo đức:

    • Sở hữu trí tuệ và bản quyền bảo vệ tác phẩm của người sáng tạo; việc sử dụng chúng có thể đòi hỏi giấy phép hoặc cấp phép. Các giấy phép code nguồn mở và Creative Commons cho phép người sáng tạo chia sẻ tác phẩm dưới các điều kiện đã nêu rõ.
    • Sao chép – sử dụng tác phẩm của người khác như của mình – là phi đạo đức và thường vi phạm pháp luật.
    • Thu thập và sử dụng dữ liệu cá nhân đặt ra câu hỏi về quyền riêng tư liên quan đến sự đồng ý và việc lạm dụng.

    Ba thuật ngữ "mở", vốn không giống nhau

    Thuật ngữ Ý nghĩa
    code nguồn mở các chương trình được cung cấp miễn phí và có thể được phân phối lại và chỉnh sửa bởi bất kỳ ai. Giấy phép trao quyền đó một cách rõ ràng – miễn phí không đồng nghĩa với code nguồn mở, và một chương trình bạn không thể chỉnh sửa dù miễn phí thì không phải là code nguồn mở.
    truy cập mở nghiên cứu và các nội dung khác được cung cấp trực tuyến miễn phí, do đó người đọc không cần đăng ký. Điều này không đề cập đến quyền chỉnh sửa.
    Creative Commons một họ các giấy phép mà người sáng tạo áp dụng lên tác phẩm của mình để trao quyền sử dụng cụ thể trước – ví dụ: "bạn có thể tái sử dụng nếu ghi tên tôi" hoặc "bạn có thể tái sử dụng nhưng không dùng cho mục đích thương mại".

    Cả ba đều là cách trao quyền mà người sáng tạo sở hữu mặc định theo bản quyền. Đó là lý do tại sao chúng quan trọng trong kỳ thi: bản quyền được tự động sinh ra, nên mọi thứ không được cấp phép rõ ràng đều bị hạn chế, và việc sử dụng chúng cần sự cho phép.

    Chỉ vì điều gì đó có thể làm được về mặt kỹ thuật không có nghĩa là nó hợp pháp hay đạo đức.

    Những gì được ghi lại khi bạn duyệt web

    Hai phương thức thu thập mà CED nêu ra, và cả hai đều không cần bạn nhập gì:

    • Các trang web có thể ghi lại và lưu giữ lịch sử của những cá nhân đã xem các trang của họ – trang nào, lúc nào, bao lâu, và từ thiết bị nào.
    • Công cụ tìm kiếm có thể sử dụng lịch sử tìm kiếm của bạn để gợi ý các trang web, và để bán tiếp thị nhắm mục tiêu: quảng cáo sẽ theo dõi kết quả tìm kiếm, đó là lý do một sản phẩm được tìm kiếm một lần sau đó xuất hiện trong nhiều tuần.

    Cả hai đều không phải là độc hại vốn có, và cả hai đều là cơ chế đằng sau các dịch vụ mà người dùng thấy hữu ích. Điểm mà đề thi muốn nhấn mạnh là dữ liệu thu thập cho một mục đích có thể được kết hợp và sử dụng cho một mục đích khác, thường mà người đó không nhận ra họ đã đồng ý với điều đó.

    Vocabulary · ⁨Từ vựng⁩ Train · ⁨Luyện tập⁩
    English Tiếng Việt
    Creative Commons/kriːˈeɪtɪv ˈkɒmənz/ Creative Commons
    Personally identifiable information (PII)/ˈpɜːsənəli aɪˈdentɪfaɪəbl ˌɪnfəˈmeɪʃn/ Thông tin cá nhân có thể xác định được (PII)
    identity theft/aɪˈdentɪti θeft/ giặc窃取 danh tính
    5.6

    Safe Computing · ⁨Máy tính an toàn⁩

    Syllabus · ⁨Chương trình⁩
    English

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

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

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

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

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

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

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

    Hiểu biết bền vững (IOC-2): Việc sử dụng các đổi mới máy tính có thể tiềm ẩn rủi ro đối với an toàn cá nhân và danh tính.

    Mục tiêu học tập IOC-2.A: Mô tả các rủi ro đối với quyền riêng tư từ việc thu thập và lưu trữ dữ liệu cá nhân trên hệ thống máy tính. [Kỹ năng 5.D]

    • IOC-2.A.1 Thông tin có thể xác định danh tính cá nhân (PII) là thông tin về một cá nhân giúp xác định, liên kết, liên quan hoặc mô tả họ. Ví dụ về PII bao gồm:
      • số bảo hiểm xã hội
      • tuổi
      • chủng tộc
      • số điện thoại
      • thông tin y tế
      • thông tin tài chính
      • dữ liệu sinh trắc học
    • IOC-2.A.2 Các công cụ tìm kiếm có thể ghi lại và duy trì lịch sử tìm kiếm do người dùng thực hiện.
    • IOC-2.A.3 Các trang web có thể ghi lại và duy trì lịch sử các cá nhân đã xem trang của họ.
    • IOC-2.A.4 Thiết bị, trang web và mạng có thể thu thập thông tin về vị trí của người dùng.
    • IOC-2.A.5 Công nghệ cho phép thu thập, sử dụng và khai thác thông tin về, bởi và vì cá nhân, nhóm và tổ chức.
    • IOC-2.A.6 Các công cụ tìm kiếm có thể sử dụng lịch sử tìm kiếm để gợi ý các trang web hoặc phục vụ cho tiếp thị có mục tiêu.
    • IOC-2.A.7 Dữ liệu cá nhân khác nhau, chẳng hạn như định vị địa lý, cookie và lịch sử duyệt web, có thể được tổng hợp để tạo ra hiểu biết về một cá nhân.
    • IOC-2.A.8 PII và thông tin khác được đăng lên trực tuyến có thể được sử dụng để cải thiện trải nghiệm trực tuyến của người dùng.
    • IOC-2.A.9 PII được lưu trữ trực tuyến có thể được sử dụng để đơn giản hóa việc mua hàng trực tuyến.
    • IOC-2.A.10 Việc biên tập thông tin bởi các entities thương mại và chính phủ có thể bị khai thác nếu quyền riêng tư và các biện pháp bảo vệ khác bị bỏ qua.
    • IOC-2.A.11 Thông tin được đăng lên trực tuyến có thể được sử dụng theo những cách không được dự định và có thể có tác động gây hại. Ví dụ, một email có thể được chuyển tiếp, tweet có thể được chia sẻ lại, và bài đăng trên mạng xã hội có thể bị nhìn thấy bởi các nhà tuyển dụng tiềm năng.
    • IOC-2.A.12 PII có thể được sử dụng để theo dõi, đánh cắp danh tính của một người hoặc hỗ trợ lên kế hoạch cho các tội phạm khác.
    • IOC-2.A.13 Một khi thông tin được đăng lên trực tuyến, nó rất khó để xóa đi.
    • IOC-2.A.14 Các chương trình có thể thu thập vị trí của bạn và ghi lại nơi bạn đã từng ở, cách bạn đến đó và thời gian bạn ở lại một địa điểm cụ thể.
    • IOC-2.A.15 Thông tin đăng trên các dịch vụ mạng xã hội có thể được người khác sử dụng. Kết hợp thông tin đăng trên mạng xã hội và các nguồn khác có thể được sử dụng để suy luận ra thông tin riêng tư về bạn.

    Mục tiêu học tập IOC-2.B: Giải thích cách tài nguyên máy tính có thể được bảo vệ và cũng có thể bị lạm dụng. [Kỹ năng 5.E]

    • IOC-2.B.1 Các biện pháp xác thực bảo vệ thiết bị và thông tin khỏi truy cập trái phép. Ví dụ về các biện pháp xác thực bao gồm mật khẩu mạnh và xác thực đa yếu tố.
    • IOC-2.B.2 Một mật khẩu mạnh là thứ dễ nhớ cho người dùng nhưng sẽ khó để người khác đoán dựa trên kiến thức về người dùng đó.
    • IOC-2.B.3 Xác thực đa yếu tố là một phương pháp kiểm soát truy cập máy tính trong đó người dùng chỉ được cấp quyền truy cập sau khi thành công cung cấp nhiều bằng chứng riêng biệt cho cơ chế xác thực, thường là ít nhất hai trong các danh mục sau: kiến thức (điều họ biết), sở hữu (điều họ có) và đặc tính (điều họ là).
    • IOC-2.B.4 Xác thực đa yếu tố yêu cầu ít nhất hai bước để mở khóa thông tin được bảo vệ; mỗi bước bổ sung một lớp bảo vệ mới mà phải bị phá vỡ để có được quyền truy cập trái phép.
    • IOC-2.B.5 Mã hóa là quá trình mã hóa dữ liệu để ngăn chặn truy cập trái phép. Giải mã là quá trình giải mã dữ liệu. Hai phương pháp mã hóa phổ biến là:
      • Mã hóa khóa đối xứng sử dụng một khóa cho cả mã hóa và giải mã.
      • Mã hóa khóa công khai ghép một khóa công khai cho mã hóa và một khóa riêng tư cho giải mã. Người gửi không cần khóa riêng tư của người nhận để mã hóa tin nhắn, nhưng khóa riêng tư của người nhận là bắt buộc để giải mã tin nhắn.
      • Tuyên bố loại trừ (EK IOC-2.B.5): Các quy trình toán học cụ thể cho mã hóa và giải mã nằm ngoài phạm vi của khóa học này và kỳ thi AP.
    • IOC-2.B.6 Các tổ chức cấp chứng chỉ (Certificate Authorities) phát hành chứng chỉ số để xác minh quyền sở hữu các khóa mã hóa được sử dụng trong truyền thông an toàn, dựa trên mô hình tin cậy.
    • IOC-2.B.7 Phần mềm quét virus máy tính và phần mềm độc hại có thể giúp bảo vệ hệ thống máy tính khỏi bị nhiễm bệnh.
    • IOC-2.B.8 Virus máy tính là một chương trình độc hại có khả năng sao chép chính nó và xâm nhập vào máy tính theo cách không được ủy quyền. Virus máy tính thường gắn liền với các chương trình hợp lệ và tự chạy độc lập trên máy tính.
    • IOC-2.B.9 Phần mềm độc hại (Malware) là phần mềm được thiết kế nhằm gây hư hại cho hệ thống máy tính hoặc chiếm quyền kiểm soát một phần đối với hoạt động của nó.
    • IOC-2.B.10 Tất cả các hệ thống thực tế đều có lỗi hoặc khiếm khuyết thiết kế có thể bị khai thác để làm suy yếu chúng. Việc cập nhật phần mềm định kỳ giúp sửa chữa các lỗi có thể làm suy yếu hệ thống máy tính.
    • IOC-2.B.11 Người dùng có thể kiểm soát các quyền hạn mà các chương trình có để thu thập thông tin người dùng. Người dùng nên xem xét cài đặt quyền hạn của các chương trình để bảo vệ quyền riêng tư của mình.

    Mục tiêu học tập IOC-2.C: Giải thích cách việc truy cập trái phép vào tài nguyên máy tính diễn ra. [Kỹ năng 5.E]

    • IOC-2.C.1 Phishing là kỹ thuật cố gắng đánh lừa người dùng cung cấp thông tin cá nhân. Thông tin cá nhân đó sau đó có thể được sử dụng để truy cập các tài nguyên trực tuyến nhạy cảm, chẳng hạn như tài khoản ngân hàng và email.
    • IOC-2.C.2 Keylogging (ghi phím) là việc sử dụng một chương trình để ghi lại mọi phím được nhấn bởi người dùng máy tính nhằm mục đích truy cập trái phép mật khẩu và các thông tin bí mật khác.
    • IOC-2.C.3 Dữ liệu gửi qua mạng công cộng có thể bị chặn, phân tích và chỉnh sửa. Một cách mà điều này xảy ra là thông qua điểm truy cập giả mạo.
    • IOC-2.C.4 Điểm truy cập giả mạo (rogue access point) là điểm truy cập không dây cho phép truy cập trái phép vào các mạng an toàn.
    • IOC-2.C.5 Một liên kết độc hại có thể được che giấu trên trang web hoặc trong tin nhắn email.
    • IOC-2.C.6 Email không được yêu cầu, tệp đính kèm, liên kết và biểu mẫu trong email có thể được sử dụng để làm suy yếu bảo mật hệ thống máy tính. Những thứ này có thể đến từ người gửi chưa biết hoặc từ những người gửi đã biết nhưng bảo mật của họ đã bị xâm phạm.
    • IOC-2.C.7 Các bản tải không đáng tin cậy (thường là miễn phí) từ các trang web freeware hoặc shareware có thể chứa phần mềm độc hại.

    Source: College Board AP Course and Exam Description · ⁨Nguồn: Mô tả Khóa học và Bài thi College Board AP⁩

    English

    Protecting personal data is a shared responsibility. Key ideas:

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

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

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

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

    Tiếng Việt

    Bảo vệ dữ liệu cá nhân là trách nhiệm chung. Các ý tưởng chính:

    Mã hóa xáo trộn văn bản gốc bằng khóa; chỉ có khóa mới giải mã được nó
    Mã hóa xáo trộn văn bản gốc bằng khóa; chỉ có khóa mới giải mã được nó
    • Thông tin nhận dạng cá nhân (PII) (tên, địa chỉ, số ID) nên được chia sẻ cẩn thận, vì chúng có thể bị lạm dụng để lừa đảo danh tính.
    • Các mối đe dọa bao gồm phishing (đánh lừa bạn tiết lộ thông tin), phân mềm độc hại, và mật khẩu yếu.
    • Một liên kết độc hại có thể được ngụy trang trên một trang web hoặc trong tin nhắn email: văn bản bạn thấy và địa chỉ thực tế nó dẫn đến là riêng biệt, nên một liên kết hiển thị www.yourbank.com có thể trỏ đến bất cứ đâu. Di chuột qua để xem điểm đến thực tế trước khi nhấp, và hãy nghi ngờ nhất là những liên kết đến bất ngờ và tạo cảm giác cấp bách.
    • Các biện pháp phòng thủ bao gồm mật khẩu mạnh và duy nhất, xác thực đa yếu tố, mã hóa (xáo trộn dữ liệu để chỉ những người được ủy quyền mới đọc được), và cập nhật phần mềm.

    Mã hóa là công cụ trung tâm để giữ dữ liệu riêng tư khi truyền tải và lưu trữ. Là một người dùng máy tính có trách nhiệm nghĩa là bảo vệ thông tin của chính mình và của người khác.

    Kỹ năng làm bài thi: có khả năng xác định tác động có lợi và có hại của một đổi mới công nghệ nhất định, giải thích rủi ro về quyền riêng tư hoặc bảo mật, và nêu một thực hành máy tính an toàn để khắc phục.

    Ví dụ minh họa. Một thuật tuyển dụng được huấn luyện dựa trên những nhân viên quá khứ của công ty, những người chủ yếu thuộc một nhóm, và sau đó từ chối những ứng viên đủ tiêu chuẩn từ các nhóm khác. Hãy nêu vấn đề và nguyên nhân: đây là thiên kiến máy tính, gây ra bởi dữ liệu huấn luyện thiên kiến — mô hình đã học theo mẫu lịch sử thay vì một quy tắc công bằng. Một câu trả lời đầy đủ điểm thi cần nêu cả tác hại (những người đủ tiêu chuẩn bị từ chối phi lý) và nguyên nhân (sự thiên kiến đến từ dữ liệu, không phải từ mã).

    Explore · ⁨Khám phá⁩

    Scramble a message with encryption · ⁨Xáo trộn tin nhắn bằng mã hóa⁩

    Encryption protects data by scrambling it with a key; only someone with the key can read it back. This simple Caesar cipher shifts each letter — real encryption uses the same idea with far stronger keys to keep passwords and messages safe. · ⁨Mã hóa bảo vệ dữ liệu bằng cách xáo trộn nó với một khóa; chỉ người có khóa mới có thể giải mã lại. Mã Caesar đơn giản này dịch chuyển mỗi chữ cái — mã hóa thật sử dụng cùng ý tưởng này nhưng với các khóa mạnh hơn rất nhiều để bảo mật mật khẩu và tin nhắn.⁩

    Vocabulary · ⁨Từ vựng⁩ Train · ⁨Luyện tập⁩
    English Tiếng Việt
    phishing/ˈfɪʃɪŋ/ phishing
    malware/ˈmælweə/ malware (mã độc)
    multi-factor authentication/ˈmʌlti ˈfæktə ɔːˌθentɪˈkeɪʃn/ xác thực đa yếu tố
    encryption/enˈkrɪpʃn/ mã hóa
    open source/ˈəʊpən sɔːs/ mã nguồn mở
    5.6

    Exam tips · ⁨Mẹo làm bài thi⁩

    English
    • Argue both the beneficial and harmful effects of a computing innovation — a balanced answer scores best.
    • Use correct terms for data concerns: PII, privacy, security, and algorithmic bias.
    • Explain how crowdsourcing and large data sets create value and raise new risks.
    • Distinguish the digital divide (access) from bias (fairness) and give a concrete example of each.
    • Tie every claim to a specific innovation and effect, as the written response demands.
    Tiếng Việt
    • Lập luận cả hai tác động có lợi và có hại của một đổi mới công nghệ — một câu trả lời cân bằng sẽ đạt điểm cao nhất.
    • Sử dụng đúng thuật ngữ cho các vấn đề dữ liệu: PII, quyền riêng tư, bảo mật, và thiên kiến thuật toán.
    • Giải thích cách crowdsourcing và tập dữ liệu lớn tạo ra giá trị và đặt ra các rủi ro mới.
    • Phân biệt khoảng cách kỹ thuật số (truy cập) khỏi thiên kiến (công bằng) và đưa ra ví dụ cụ thể cho từng loại.
    • Nối mỗi tuyên bố với một đổi mới và tác động cụ thể, như yêu cầu của bài viết.
    Vocabulary · ⁨Từ vựng⁩ Train · ⁨Luyện tập⁩
    English Tiếng Việt
    digital divide/ˈdɪdʒɪtl dɪˈvaɪd/ khoảng cách kỹ thuật số
    Bias/ˈbaɪəs/ Thiên kiến
    Crowdsourcing/ˈkraʊdsɔːsɪŋ/ Đóng góp tập thể
    Intellectual property/ˌɪntəˈlektʃuːəl ˈprɒpəti/ sở hữu trí tuệ
    copyright/ˈkɒpɪraɪt/ bản quyền
    Open-source/ˈəʊpən sɔːs/ Nguồn mở
    Plagiarism/ˈpleɪdʒərɪzəm/ Sao chép
    open access/ˈəʊpən ˈækses/ tiếp cận mở

Log in or create account · ⁨Đăng nhập hoặc tạo tài khoản⁩

IGCSE, A-Level & AP