Skip to content

Module 2.2 · Choose a strategy (Chọn cách tiếp cận) ​

Thuộc Package 2 · Design an Algorithm.

::: pearl-bigidea Tôi sẽ làm được gì

Tôi biết một bài toán luôn có nhiều lời giải đúng, và tôi chọn được cái phù hợp với hoàn cảnh.

::: Unit4Mastery level5 tới 12Lớp (VN)6 tới 12Key concept chínhDevelopment (Phát triển) · Patterns (Quy luật)

Unit 1 · More than one right answer (Không chỉ một cách đúng) ​

Tôi sẽ làm được nghĩ ra ít nhất hai cách giải cho cùng một bài, rồi so chúng.

Mastery level 5-10 · Lớp 6-11 · Development (Phát triển) BậcLearner làm được gìĐang hình thànhNghĩ ra một cách rồi làm luônĐạtNêu được hai cách khác nhau và so ưu nhượcVữngChọn có lý do, và nói rõ hoàn cảnh nào thì cách kia tốt hơn

Bằng chứng đạt. Learner trình bày hai cách giải cùng bài và nói rõ mình chọn cái nào, vì sao.

Hiểu lầm thường gặp. Bài nào cũng có một lời giải chuẩn. Trong lập trình thật, phần lớn quyết định là đánh đổi giữa các phương án cùng đúng, và học sinh quen với trang chấm tự động dễ tưởng chỉ có một đáp án.

Knowledge node. Nhiều lời giải · So sánh phương án · Đánh đổi thiết kế

Unit 2 · Search and sort (Tìm kiếm và sắp xếp) ​

Tôi sẽ làm được dùng các cách tìm kiếm và sắp xếp cơ bản, và biết cái nào hợp khi nào.

Mastery level 7-11 · Lớp 8-12 · Patterns (Quy luật) BậcLearner làm được gìĐang hình thànhChỉ biết duyệt lần lượt từ đầu tới cuốiĐạtDùng được tìm kiếm nhị phân và vài thuật toán sắp xếpVữngNhận ra tìm kiếm nhị phân đòi hỏi dữ liệu đã sắp xếp, và cân được cái giá đó

Bằng chứng đạt. Learner quyết định có nên sắp xếp trước hay không, dựa trên số lần sẽ phải tìm kiếm.

Hiểu lầm thường gặp. Thuật toán nhanh hơn thì luôn nên dùng. Nếu chỉ tìm một lần thì duyệt tuần tự rẻ hơn sắp xếp rồi tìm nhị phân. Cái giá chuẩn bị phải được tính vào.

Knowledge node. Tìm kiếm tuần tự · Tìm kiếm nhị phân · Sắp xếp · Điều kiện áp dụng

Unit 3 · Divide and conquer (Chia để trị) ​

Tôi sẽ làm được giải một bài lớn bằng cách chia đôi liên tục cho tới khi phần nhỏ dễ giải.

Mastery level 9-12 · Lớp 10-12 · Systems (Hệ thống) · Patterns (Quy luật) BậcLearner làm được gìĐang hình thànhChỉ nghĩ theo hướng duyệt tuần tựĐạtÁp dụng được chia đôi vào tìm kiếm và sắp xếpVữngNhận ra dạng bài nào chia được và dạng nào không

Bằng chứng đạt. Learner áp dụng ý chia đôi vào một bài chưa từng gặp, ngoài phạm vi tìm kiếm và sắp xếp.

Hiểu lầm thường gặp. Chia để trị là một thuật toán cụ thể. Nó là một lối nghĩ, và learner sẽ gặp lại nó ở Module 4.2 khi thu hẹp vùng nghi ngờ để gỡ lỗi.

Knowledge node. Chia để trị · Chia đôi · Sắp xếp trộn · Độ sâu chia

Unit 4 · Recursion (Đệ quy) ​

Tôi sẽ làm được giải một bài bằng cách gọi lại chính cách giải đó trên bài nhỏ hơn.

Mastery level 9-12 · Lớp 10-12 · Patterns (Quy luật) · Models (Mô hình) BậcLearner làm được gìĐang hình thànhThấy đệ quy như một vòng luẩn quẩn khó hiểuĐạtViết được hàm đệ quy có trường hợp cơ sở đúngVữngNhận ra đệ quy luôn cần một điều kiện dừng, và biết khi nào nó tốn kém

Bằng chứng đạt. Learner giải thích được vì sao đệ quy thiếu trường hợp cơ sở sẽ chạy mãi cho tới khi tràn bộ nhớ.

Hiểu lầm thường gặp. Đệ quy là cách viết ngắn gọn hơn của vòng lặp. Nó là một cách nghĩ khác: giả sử bài nhỏ hơn đã giải xong rồi, ta chỉ cần xử lý một bước. Learner nào chấp nhận được giả định đó thì đệ quy hết khó ngay.

Knowledge node. Đệ quy · Trường hợp cơ sở · Ngăn xếp lời gọi · Tràn ngăn xếp

Dạy module này theo kiểu IB ​

Concept-based. Khái niệm dẫn dắt là Development: thiết kế là chọn giữa các phương án cùng đúng, dựa trên cái giá của mỗi cái.

Inquiry. Khuôn đoán số, dành cho unit 2 và 3: textGiáo viên nghĩ một số từ 1 tới 1000. Learner đoán. ↓ Vòng 1: bắt buộc đoán tuần tự 1, 2, 3... (rất lâu) ↓ Vòng 2: được hỏi "lớn hơn hay nhỏ hơn" ↓ Đếm số lần đoán ở cả hai vòng. Ghi lên bảng. ↓ "Nếu số từ 1 tới 1 TRIỆU thì mỗi cách mất bao nhiêu lần?"

Câu cuối là chỗ learner tự chạm vào khác biệt giữa tăng tuyến tính và tăng theo loga: một bên nhân lên nghìn lần, một bên chỉ thêm mười lần đoán. Đó là cửa vào Module 2.3 mà không cần một công thức nào.

Module 2.3 · Cost of a solution →