Lập trình
Giải quyết vấn đề, viết mã dễ đọc và nền tảng xây dựng phần mềm.
03Giảng dạy
Hai hướng bổ trợ nhau: lập trình biến ý tưởng thành các bước thực thi; toán học phát triển khả năng suy luận để hiểu các bước đó.
Giải quyết vấn đề, viết mã dễ đọc và nền tảng xây dựng phần mềm.
Tư duy logic, ngôn ngữ toán học và giải quyết vấn đề có hệ thống.
Từ giải thích đến ví dụ có hướng dẫn, sau đó tự luyện tập.
∴GÓC HỌC TẬP
Một ví dụ nhỏ về cách tôi thích giảng dạy: bắt đầu bằng ý tưởng có thể chạy, sau đó chỉ ra cấu trúc phía sau.
Bắt đầu bằng một biến tích lũy. Sau mỗi vòng lặp, tổng tăng thêm giá trị hiện tại.
def sum_to(n):
total = 0
for value in range(1, n + 1):
total += value
return total
sum_to(5) # 15Với n là số nguyên không âm, vòng lặp thực hiện n phép cộng: thời gian O(n), bộ nhớ phụ O(1).
Viết cùng một tổng theo hai chiều. Mỗi cặp số theo cột đều bằng n + 1 và có n cặp.
S = 1 + 2 + ⋯ + n
S = n + (n − 1) + ⋯ + 1
2S = n(n + 1)
S = n(n + 1) / 2Công thức cho ta cách tính trực tiếp và lý do vì sao lời giải đúng.
Tính tổng các số chẵn từ 2 đến 2n. Bạn có thể viết cả vòng lặp lẫn công thức trực tiếp không?
2 + 4 + ⋯ + 2n = 2(1 + 2 + ⋯ + n) = n(n + 1).
sum(range(2, 2 * n + 1, 2))Hai cách nhìn bổ trợ nhau: mã diễn tả từng bước; toán học chỉ ra cấu trúc.