Hiển thị các bài đăng có nhãn Suy nghiệm. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn Suy nghiệm. Hiển thị tất cả bài đăng

Thứ Ba, 6 tháng 11, 2018

Quản lý thời gian

QUẢN LÝ THỜI GIAN


Bước 1. Xác định các mục đích cuộc sống
- Phát triển bản thân:
  + Chuyên môn, Quản lý
  + Tư duy: tư duy logic, phương pháp học tập
  + Tĩnh tâm
  + Sức khỏe
- Gia đình: dạy con, chăm sóc gia đình
- Công việc

Bước 2. Xác định các nhiệm vụ quan trọng
- Số lượng: khoảng 2-3 nhiệm vụ
- Tiêu chuẩn của nhiệm vụ: theo tiêu chuẩn SMART:
  + Cụ thể
  + Đo lường được
  + Có thể đạt được
  + Thích đáng với hoàn cảnh cụ thể
  + Có thời hạn cụ thể

Bước 3. Lên lịch hoạt động tuần
- Gán nhiệm vụ với thời gian cụ thể trong tuần

Bước 4.
... còn tiếp

Thứ Năm, 1 tháng 11, 2018

Lý do chia sẽ kiến thức

LÝ DO CHIA SẼ KIẾN THỨC


Tại sao chúng ta nên chia sẽ những gì chúng ta biết?

Lý do người ta chia sẽ kiến thức và nên chia sẽ kiến thức là:
1. Để giúp đỡ những người cần có kiến thức đó
Giúp đỡ mọi người có thể xuất phát từ:
- Những khó khăn mà mình đã gặp phải, nhưng không tìm được ai, tài liệu nào để hỗ trợ cho chúng ta. Nên chúng ta chia sẽ chỉ đơn giản là để giúp đỡ những ai  gặp phải những khó khăn như chúng ta đã gặp.
- Xuất phát từ tâm lý cá nhân là cảm thấy mình có giá trị khi khi mình có thể giúp đỡ được ai đó.

2. Chia sẽ kiến thức là một phương pháp học hiệu quả:
Chúng ta học lần thứ nhất khi chúng ta giải quyết vấn đề. Khi chúng ta giải quyết vấn đề chúng ta sẽ phân tích vấn đề, rồi chọn mô hình đã biết để giải quyết khó khăn trước mắt. Khi không giải quyết được chúng ta chọn lại mô hình khác, hay dựa trên những logic phân tích được chúng ta tinh chỉnh lại phương pháp đã có để giải quyết vấn đề. Qua việc giải quyết vấn đề như vậy chúng ta sẽ học cách phân tích đề, học cách chọn mô hình, học cách tinh chỉnh mô hình, nhưng mục tiêu cuối cùng chúng ta nhắm tời là giải cho được vấn đề đang gặp, còn quá trình đi đến lời giải vấn đề có mức đô ưu tiên thấp hơn.

Chúng ta học lần thứ hai khi chúng ta có thời gian suy ngẫm lại vấn đề đã giải quyết. Khi chúng ta chia sẽ kiến thức (như viết blog, viết sách, giảng dạy, ...) đó là cơ hội tuyệt vời để chúng ta suy ngẫm lại. Bằng phương tiện chia sẽ, chúng ta sẽ:
  + Suy ngẫm, nghiền ngẫm lại những điều đã biết
  + Nhìn nhận lại quá trình suy nghĩ, và đặt ra những câu hỏi như: vấn đề cốt lõi ở đây là gì? Tại sao đi theo con đường đó thì giải quyết vấn đề? Tạo sao chúng ta bị chi phối làm đi lạc khỏi lời giải của vấn đề, ...
  + Liên kết những ý tưởng khác lại với nhau
  + Sắp xếp lại ý tưởng cho rành mạch

Như vậy, việc chia sẽ kiến thức vừa là cơ hội để giúp đỡ người khác, vừa là cơ hội để nghiền ngẫm, học tập để thấu hiểu vấn đề hơn.



Thứ Tư, 31 tháng 10, 2018

Cách tiếp cận kiến thức mới

CÁCH TIẾP CẬN KIẾN THỨC MỚI


Kiến thức mới có thể ví như là vùng đất mới mà lần đầu tiên chúng ta tiếp cận, khám phá. Cho nên khi học một kiến thức mới chúng ta sẽ lúng túng, vụng về là chuyện thường tình. Tuy nhiên chúng ta có thể tiếp cần kiến thức dễ dàng hơn, dễ ghi nhớ hơn nếu chúng ta có phương pháp tiếp cận hiệu quả. Phương pháp sau là một gợi ý để chúng ta có thể tiếp cận kiến thức mới một cách nhanh chóng

Bước 1. Bài toán / Vấn đề:
Phát biểu ngắn gọn bài toán/vấn đề muốn giải quyết

Bước 2. Nêu hiệu quả của kiến thức/phương pháp mới để giải quyết bài toán trên

Bước 3. Biểu diễn
Nêu định nghĩa/khái niệm cốt lõi của phương pháp

Bước 4. Các phép toán
Nêu các phép toán/thao tác của phương pháp cung cấp


Lý do nên tham gia các kỳ thi lập trình

LÝ DO NÊN THAM GIA CÁC KỲ THI LẬP TRÌNH


Mục đích của thi lập trình: 
Mục đích của thi lập trình (competitive programming) là viết chương trình máy tính để giải quyết các vấn đề liên quan đến logic và toán học. Các bài toán cần giải quyết nằm trong phạm vi: tổ hợp, lý thuyết số, lý thuyết đồ thị, hình học, phân tích chuỗi và các cấu trúc dữ liệu [1].

Tiến trình giải quyết vấn đề: 
Giải quyết vấn đề bằng lập trình thường gồm 4 bước chính:
(1) đọc hiểu rõ chi tiết vấn đề
(2) thiết kế thuật toán hiệu quả
(3) cài đặt thuật toán bằng ngôn ngữ cụ thể
(4) kiểm thử, debug chương trình kỹ càng

Lợi ích của việc tham gia thi lập trình:
Qua đó chúng ta thấy khi tham gia thi lập trình sẽ giúp chúng ta:
1. Kiến thức: chúng ta sẽ có đầy đủ kiến thức cơ bản về phương pháp giải quyết vấn đề bằng lập trình như: cấu trúc dữ liệu, thuật toán, phương pháp thiết kế thuật toán
2. Kỹ năng: chúng ta sẽ có kỹ năng đọc đề, kỹ năng phân tích logic, kỹ năng sử dụng các kỹ thức uyển chuyển, kỹ năng thiết kế thuật toán, kỹ năng sử dụng ngôn ngữ lập trình, kỹ năng debug, kỹ năng code các ý thành các chương trình
3. Thái độ: 
- Tự tin: vì đã có đầy đủ kiến thức cơ bản, kỹ năng sử dụng các kiến thức cơ bản một cách uyển chuyển, linh hoạt
- Khiêm tốn: bên cạnh sự tự tin về những gì mình có, chúng ta cũng sẽ có thái độ khiêm tốn vì có nhiều vấn đề không phải lúc nào chúng ta cũng giải quyết được, cần phải có thời gian, phương pháp tiếp cận phù hợp.
- Chú ý chi tiết, kỹ càng: trước khi thiết kế ra thuật toán hiệu quả, chúng ta cần tận dụng từng ràng buộc của bài toán (chú ý chi tiết từng ràng buộc của bài toán), nhìn nhận các kiến thức ở nhiều góc nhìn khác nhau (các kiến thức được xem xét kỹ càng).
- Điềm tĩnh: Qua giải quyết các vấn đề khó, chúng ta sẽ được tôi luyện thái độ điềm tĩnh trong suy nghĩ, bình tĩnh phân tích từng nội dung của vấn đề.
4. Cơ hội: khi đã có kiến thức, kỹ năng giỏi, chúng ta mới có cơ hội để giúp đỡ, chia sẽ các kiến thức kỹ năng với những người cần giúp đỡ.

Tài liệu tham khảo
[1]. https://en.wikipedia.org/wiki/Competitive_programming


Thứ Ba, 30 tháng 10, 2018

Chiến lược thi ACM/ICPC

CHIẾN LƯỢC THI ACM/ICPC

Vai trò thành viên trong nhóm: 
  1. Vai trò Người đọc đề (A): Chuyên đọc đề và giải thích đề
  2. Vai trò Người lập trình (B): Tập trung code
  3. Vai trò Người giám sát (C): Quan sát người B code và phát hiện lỗi để báo ngay


1. Bắt đầu nhận đề thi
Lúc đầu:
- Cả 3 thành viên đều đóng vai trò người đọc đề: đọc lướt qua các đề bài để xác định đề bài dễ nhất. 
- Theo dõi bảng scoreboard để xác định bài dễ nhất (được nhiều nhóm giải được nhất)

Sau khi đã xác nhận bài dễ nhất: 
  + Hai người sẽ đóng vai B, C: Tập trung đọc kỹ đề và giải quyết bài toán đó
  + Người thứ ba đóng vai trò Người đọc đề: Tìm đề bài dễ tiếp theo, đọc hiểu kỹ để giải thích lại cho hai người còn lại sau này.


2. Giải quyết bài toán
Bước 1. Đọc đề và tìm thuật toán: Cả B và C:
  + Cùng đọc hiểu kỹ bài toàn
  + Lấy nhiều ví dụ và cùng giải thử
  + Một người đưa ra ý tưởng giải, một người lắng nghe và nhận xét, xác định đúng không, và bổ sung khi cần
  + Đưa ra các bước giải cụ thể
  + Xác định các hàm cần viết
  + Viết ra giấy các bước 
  + Viết ra giấy tên các hàm cần cài đặt

Bước 2. Cài đặt chương trình
  + Một người đóng vai trò viết code
  + Một người đóng vai trò quan sát, phát hiện sai sót
  + Nếu đang cài đặt mà người viết code bị  bí thì hai người đổi vai trò cho nhau

Bước 3. Test và Debug
  + Chạy các test case
  + Debug các lỗi

Bước 4. Submit bài
  + Bỏ các dòng lệnh debug
  + Submit bài

3. Qua bài mới
Sau khi giải quyết thành công một bài thì qua bài dễ kế tiếp
- Người A trình bày nội dung bài toán
- Nguời B, C đọc lại đề lần nữa để xác định nội dung giải thích và tiến hành giải quyết bài toán
- Người A tìm bài dễ tiếp theo để đọc hiểu đề


Khó khăn và giải pháp đọc hiểu một bài toán tin học

NHỮNG KHÓ KHĂN KHI ĐỌC HIỂU MỘT BÀI TOÁN TIN HỌC


Khi đọc một bài toán tin học, chúng ta thường có những cảm nhận tâm lý ban đầu có thể gây cản chở cho chúng ta đọc hiểu bài toán. Một trong những cảm nhận thông thường khi chúng ta nhìn qua đề bài như sau:

1. Đề bài quá dài
- Điều này sẽ làm cho chúng ta ngại đọc vì sợ mất nhiều thời gian đọc đề
- Bài có nhiều sự kiện nên chúng ta ngại vì khó nhớ hết các sự kiện trong bài


2. Miền giá trị của biến quá lớn
- Làm cho chúng ta cảm nhận bài toán chắc sẽ khó


Một số gợi ý sau giúp chúng ta giải tỏa được phần nào tâm lý trên
1. Đề bài quá dài
- Đọc đến đâu nên ghi chú lại những thông tin quan trọng cần nhớ.
- Tóm tắt ý từng đoạn muốn nói gì, diễn đạt lại theo ý mình
- Dùng ký hiệu toán để mô tả bài toán: ví dụ như đặt tên biến, sử dụng các phép toán, biểu diễn các ràng buộc bài toán bằng các phương trình, các bất phương trình. Cách làm này sẽ bỏ đi các "râu ria" của bài toán và sẽ giúp ta đi vào bản chất yêu cầu của bài toán.


2. Miền giá trị của biến quá lớn
- Hãy xem đây là thông tin hướng dẫn cách chúng ta tìm ra thuật toán, nghĩa là nếu làm theo cách thông thường thì sẽ bị vướng về số lớn.
- Đề bài gợi chúng ta nên suy nghĩ theo hướng xử lý khác, như:
  + Thay vì xử cả số, thì chúng ta xử lý từng vị trí chữ số,
  + Tìm mẫu kết quả trong các ví dụ
  + Duyệt một lần (tìm kiếm tuyến tính)
  + Tìm kiếm nhị phân
  + Tìm bất phương trình, tìm điều kiện để dấu bằng xảy ra trong bất phương trình
  + Tìm công thức toán tổ hợp (tránh vòng lặp)
  + Tìm min của nghiệm, tìm max của nghiệm, cho nghiệm bằng max rồi từ từ tối ưu cho nhỏ lại
...




Quy trình giải quyết một bài toán tin học

QUY TRÌNH GIẢI QUYẾT MỘT BÀI TOÁN TIN HỌC


Quy trình giải một bài toán tin học
Giải quyết một bài toán tin học thường được tiến hành theo các bước sau:
  1. Đọc hiểu bài toán
  2. Thiết kế thuật toán
  3. Viết chương trình
  4. Kiểm tra chương trình
  5. Rà soát lại trước khi submit bài

1. Đọc hiểu bài toán
Giai đoạn đầu tiên là cần phải hiểu đúng yêu cầu bài toán. Chỉ cần hiểu sai, hiểu lầm một khái niệm trong bài toán có thể dẫn đến lời giải hoàn toàn sai. Đã hiểu sai bài toán rồi thì dù chúng ta bỏ công sức thiết kế thuật toán tối ưu cở nào, cẩn thận code từng dòng lệnh ra sao thì công sức ấy cũng là công "giã tràng xe cát biển đông"!

Ví dụ: Đề cho đường thẳng đi qua 2 điểm, nhưng khi đọc vì quá chú tâm đến 2 điểm nên có thể chúng ta lại nghĩ là đoạn thẳng.

Cho nên chúng ta nên cẩn trọng khi đọc đề bài toán. Giành thời gian để đọc hiểu từng đoạn văn yêu cần của bài toán. Cần suy ngẫm từ từ cho đến khi hiểu rõ các ngõ ngách của đề bài.

Một số bước để đọc hiểu đề bài toán có thể tóm tắt như sau:
  1. Đọc từng câu, từng đoạn, để hiểu cơ bản bài toán
  2. Đọc input và output của bài toán
  3. Đọc lại từng câu, từng đoạn, hiểu rõ từng câu, từng đoạn của bài toán
  4. Đọc input và output của bài toán, chú ý kích thước dữ liệu của bài toán
  5. Giải các ví dụ trong đề bài để hiểu rõ thêm bài toán
  6. Lấy thêm các ví dụ để hiểu rõ thêm bài toán

- Nếu vẫn chưa hiểu bài toán, thì đọc đi đọc lại để tìm những chổ chưa hiểu. Nếu vẫn chưa hiểu bài toán thì nên nghĩ ngơi một chút, rồi sau đó cứ đọc đi đọc lại cho đến khi nào hiểu bài toán.

Bài toán cần đọc lại nhiều lần để:
(1) Cảm giác thân thuộc với bài toán
(2) Mỗi lần đọc là một lần nghĩ khác đi một chút bài toán
(3) Phát hiện ra một số điều trước đây chưa nhìn ra


Tóm lại, đọc đề bài toán cần hết sức cẩn trọng, chưa hiểu đề, hiểu đề lơ mờ thì nhất quyết không giải bài toán đó.


2. Thiết kết thuật toán
Để thiết kế ra được thuật toán giải quyết bài toán, chúng ta cần phải tự mình giải trước các ví dụ của bài toán. Trong quá trình tự giải quyết các ví dụ, chúng ta sẽ dần dần hình thành hướng giải quyết bài toán. Từ đó đưa ra quy tắc từng bước giải quyết bài toán. Sau đó chúng ta cần kiểm nghiệm quy tắc này bằng cách áp dụng quy tắc đưa ra xem có thể giải các ví dụ được không.

Như vậy, chúng ta có thể đưa ra một số bước gợi ý để tìm lời giải của bài toán
  1. Lấy từng ví dụ, từ nhỏ đến lớn. Giải các ví dụ bài toán theo như cách bài toán muốn định hướng chúng ta làm (không quan tâm có hiệu quả hay không mà chỉ quan tâm giải được)
  2. Quan sát các nghiệm của bài toán: Bằng cách quan sát các nghiệm của bài toán, chúng ta có thể phát hiện ra quy luật của nghiệm, từ đó dẫn đến lời giải bài toán
  3. Quan sát quá trình tự giải bài toán, có thể hình thành nên bộ quy tắc từng bước để giải bài toán
  4. Tối ưu bộ quy tắc để có thể giải nhanh hơn
  5. Thử sắp xếp dữ liệu xem có lợi thế gì không
  6. Chú ý kích thước dữ liệu của bài toán để từ đó tinh chỉnh quy tắc giải bài toán
  7. Thử phân loại bài toán này thuộc dạng phương pháp nào: chia để trị, tham lam, quy hoạch động, vét, sắp xếp, tìm kiếm nhị phân, tìm kiếm 2 con trỏ, tìm kiếm tam phân, BFS, Lý thuyết đồ thị, ...








Thứ Bảy, 27 tháng 10, 2018

Tài liệu tham khảo giá trị

CÁC TÀI LIỆU THAM KHẢO GIÁ TRỊ


Những cuốn sách về phương pháp học
  1. Peter Hollins, "Learn Like Einstein: Memorize More, Read Faster, Focus Better, and Master Anything With Ease… Become An Expert in Record Time (Accelerated Learning)", 2017
  2. Benedict Carey, "How We Learn: The Surprising Truth About When, Where, and Why It Happens", 2015


Những cuốn sách về tâm trí
  1. Buddhism (Đạo Phật)
  2. Epictetus, "Art of Living", 2013 (Nghệ thuật sống)
  3. Lao Tzu, "Tao" (Đạo đức kinh của Lão Tử)
  4. Viktor E. Frankl, "Man's Search for Meaning", 2006 (Đi tìm lẽ sống)
  5. Stephen R. Covey, "The 8th Habit: From Effectiveness to Greatness", 2005
  6. Michael A. Singer, "The Untethered Soul, The Journey Beyond Yourself", 2007 (Cởi trói linh hồn)
  7. Don Miguel Ruiz, "The Four Agreements, A Practical Guide to Personal Freedom", 1997 (Bốn thỏa ước)





Đức phật

Epictetus

Lão Tử

Viktor E. Frankl

Michael A. Singer

Stephen R. Covey

Don Miguel Ruiz

Thứ Năm, 25 tháng 10, 2018

Vòng lặp kép học tập

VÒNG LẶP KÉP CỦA HỌC TẬP

Tác giả: hai nhà tâm lý học người Mỹ Chris Argyris và Donald Schön

Năm: 1974

Nội dung:

Nguồn: https://doublelooplearning.co.uk/about/ 


Phương pháp vòng lặp đơn: là khi chúng ta cố gắng khắc phục vấn đề bằng cách tìm ra phương thức hành động khác, trong khi các giá trị, mục tiêu, kế hoạch hay quy tắc… vẫn giữ nguyên.

Phương pháp vòng lặp kép: là khi chúng ta tìm ra nguyên nhân thực sự đằng sau vấn đề, có thể nghi ngờ, đặt câu hỏi và thay đổi các giá trị, mục tiêu, kế hoạch hay nguyên tắc…

Điều này có nghĩa là thay vì chỉ cố gắng sửa đổi hành động để đạt được mục tiêu như trong phương pháp vòng lặp đơn, chúng ta nghiên cứu, tìm ra nguyên nhân cốt lõi phát sinh vấn đề và khắc phục từ đó. Với tổ chức, đó có thể là các chính sách, quy chuẩn; với cá nhân, nó có thể là các giả định, động cơ mà chúng ta dựa trên nó để đưa ra các kế hoạch, mục tiêu.

Phương pháp vòng lặp kép đòi hỏi chủ thể phải có khả năng:
  • Tự nhận thức bản thân để biết được đâu thực sự là nguyên nhân bởi sai lầm thường nằm trong chủ thể
  • Dũng cảm chấp nhận sai lầm
  • Hành động hợp lý để sửa đổi

Tài liệu tham khảo:
- Argyris, M. and Schön, D. (1974) Theory in Practice. Increasing professional effectiveness, San Francisco: Jossey-Bass. Landmark statement of 'double-loop' learning' and distinction between
espoused theory and theory-in-action.
- Argyris, C. and Schon, D. A. (1978) Organizational Learning: A theory of action perspective. Reading, MA: Addison Wesley.

Tiếp cận ngôn ngữ lập trình mới

TIẾP CẬN NGÔN NGỮ LẬP TRÌNH NHƯ THẾ NÀO?


Khi dự định học một ngôn ngữ lập trình mới, chúng ta thường cảm thấy choáng ngợp vì sự lạ lẫm, đồ sộ, phức tạp của ngôn ngữ mới. Chính vì vậy, chúng ta cần suy nghĩ về phương pháp tiếp cận ngôn ngữ để việc học ngôn ngữ mới diễn ra tự nhiên và nhanh chóng.

Khi học một ngôn ngữ lập trình mới, chúng ta có thể từng bước tìm hiểu các thành phần cơ bản của ngôn ngữ như sau:
- Học cách khai báo một số kiểu cơ bản: số nguyên, số thực, ký tự, chuỗi, mảng một chiều, mảng hai chiều (hay nhiều chiều hơn)
- Xem qua các phép toán trên số: +, -, x, :, chia lấy dư (mod)
- Tìm hiểu 3 loại lệnh: lệnh gán, lệnh điều kiện, lệnh lặp
- Các thao tác trên mảng một chiều, hai chiều
- Sử dụng các hàm cơ bản trên chuỗi: sao chép chuỗi con, xóa chuỗi con, chèn chuỗi con, ...
- Cách viết hàm
- Viết thử các thuật toán cơ bản: như sắp xếp, tìm kiếm, ...

Sau khi đã tìm hiểu và thực hành các nội dung trên, chúng ta có thể tự tin cho rằng mình đã nắm được nội dung cơ bản của ngôn ngữ mới và có thể sử dụng ngôn ngữ mới để làm việc và/hoặc sẵn sàng học thêm những phần cao cấp khác của ngôn ngữ mới.

Thứ Ba, 23 tháng 10, 2018

Lập trình là gì

LẬP TRÌNH LÀ GÌ?


Lập trình là gì?
Lập trình là giải quyết vấn đề bằng cách viết các chương trình máy tính.

Định nghĩa ngắn gọn trên, nhấn mạnh rằng người lập trình là người giải quyết vấn đề, là một solver. Qua đó định hướng cho người lập trình là phải luôn luôn có thói quen suy nghĩ về các cách giải quyết vấn đề.

Học lập trình cần học gì?
Vì lập trình là giải quyết vấn đề nên người lập trình cần phải học:
(1) Học ngôn ngôn ngữ lập trình: Học ngôn ngữ lập trình để chúng ta có thể hiểu được khả năng của máy tính, khả năng của ngôn ngữ. Và qua ngôn ngữ lập trình chúng ta sẽ thể hiện các ý tưởng của mình cho máy tính thực hiện
(2) Học phương pháp giải quyết vấn đề: Học phương pháp giải quyết vấn đề thông qua các phần như
  + Học các thuật toán và cấu trúc dữ liệu kinh điển
  + Học phương pháp thiết kế thuật toán, như: (1) phương pháp chia để trị, (2) phương pháp quy hoạch động, (3) phương pháp tham lam, (4) phương quay lui, (5) phương pháp nhánh cận
  + Học các mô hình toán, công cụ toán cho từng loại bài toán
  + Rèn luyện, tìm tòi, học hỏi các ý tưởng giải quyết từng bài toán cụ thể khác nhau

Việc học ngôn ngữ mới có thể thực hiện trong 1-2 tuần là có thể nắm được cơ bản của ngôn ngữ và có có thể sử dụng ngôn ngữ đó để làm việc. Trong quá trình làm việc chúng ta sẽ tìm hiểu thêm về ngôn ngữ và sẽ dần dần thành thạo ngôn ngữ.

Việc học phương pháp giải quyết vấn đề là hành trình không bao giờ kết thúc. Chính vì vậy chúng ta không thể ép bản thân phải nắm mọi thứ trong thời gian ngắn. Chúng ta cứ từ từ học, cần học điều đặn mỗi ngày một chút


Lập trình, khoa học và nghệ thuật

Lập trình, khoa học và nghệ thuật

Lập trình vừa mang tính khoa học vừa mang tính nghệ thuật

1. Tính khoa học của lập trình thể hiện:
Mỗi bước trong thuật toán, mỗi lệnh trong chương trình phải:
- Có lý do
- Logic
- Chính xác
- Được chứng minh rõ ràng hay phải dựa trên mô hình toán, hay mô hình xác suất đã được chứng minh
- Tính khoa học còn thể hiện ở sự bất định của chương trình, chương trình thường có lỗi, cần luôn cải tiến, xem đi xem lại


2. Tính nghệ thuật của lập trình thể hiện:
- Trong ý tưởng:
  + Ý tưởng đơn giản, hiệu quả
  + Ý tưởng có tính bất ngờ
  + Ý tưởng được lấy ra trong đời sống thường ngày hay trong thế giới tự nhiên
  + Mỗi ý tưởng đều có một câu truyện đằng sau nó

- Trong khi viết chương trình:
  + Cấu trúc chương trình đơn giản, rõ ràng, đẹp đẽ
  + Các biến được đặt tên có nghĩa, dễ đọc, dễ hiểu
  + Mỗi đoạn chương trình được viết ngắn gọn, dễ đọc, dễ nhớ
  + Mỗi dòng lệnh, đoạn mã thể hiện một câu truyện. Chúng diễn đạt rất tự nhiên những suy nghĩ của người lập trình

Cho nên khi lập trình, chúng ta cần chú ý, thể hiện cả tính khoa học và tính nghệ thuật trongchương trình.

Thứ Bảy, 24 tháng 2, 2018

Các khía cạnh của toán học

Toán học có 3 khía cạnh:
1. Các cấu trúc (biểu diễn, mô tả): cấu trúc đồ thị, cấu trúc nhóm (cấu trúc đối xứng), cấu trúc số phức, cấu trúc số tự nhiên, ... Cần phải học cách phân tích các cấu trúc, tìm các cấu trúc thích hợp.
2. Các đại lượng (con số, các phép toán, các đo lường, tính toán)
3. Các thuật toán (phương pháp tiếp cận, chiến lược, các bước)


Thứ Năm, 22 tháng 5, 2014

Chấm điểm

Sưu tầm được bài viết "Chấm điểm" của tác giả Nguyễn Huỳnh Mai thấy đúng ý nghĩ của mình nên chép về đây để làm tài liệu tham khảo. Đúng là phải tận dụng việc chấm điểm như là công cụ để học hỏi chứ không phải là công cụ thể hiện quyền lực của thầy/cô giáo.

Bàn về cách thức “chấm điểm” học trò

(Dân trí) - Sau 30 năm đi dạy và nghiên cứu về giáo dục, tôi vẫn chưa tìm được một phương pháp chấm điểm trò một cách thật hữu hiệu, công bằng và khách quan.

Tôi vẫn thường kể thí dụ sau đây cho sinh viên: đưa một bài luận văn của một thí sinh Tú Tài ở Pháp cho ba giám khảo khác nhau với những tiêu chỉ chấm điểm rỏ ràng : ba giám khảo này sẽ cho ba điểm khác nhau. Cũng với một bài luận văn, đưa cho một giám khảo ở hai lúc khác nhau, giám khảo này sẽ cho hai điểm khác nhau.

Vai trò chấm điểm của thầy?
Đứng trên bục giảng, đối diện với những chờ đợi của học trò, người đi dạy có rất nhiều việc phải làm, có rất nhiều trách nhiệm chứ không phải chỉ truyền dạy kiến thức. Trong tất cả những việc phải làm, riêng bản thân tôi rất “kỵ” vai trò chấm điểm, phê phán hay xếp hạng học trò. Tôi vẫn nghĩ rằng trường học là nơi đào tạo, là nơi để trẻ học làm người, là nơi để các em phát triển khả năng và là nơi để các em sống hạnh phúc nữa. Chứ không phải là nơi để bị hay được phê phán, thưởng hay phạt.

Ý kiến của bạn về vấn đề này xin gửi đến Diễn đàn Dân trí qua địa chỉ e-mail:thaolam@dantri.com.vn
Đồng thời tôi cũng biết rằng xã hội không phải là một thiên đường, là một cái gì lý tưởng, chỉ có trong truyện thần tiên. Trường học cũng phải có ít nhất một phần tối thiểu luật lệ và chế tài. Để có thể hoạt động bình thường và cũng để chuẩn bị cho các em ra đời, đối mặt với xã hội. Có những học trò cần phải thi mới học.

“Cần phải thi mới học” - Không phải bẩm sinh các em có nhu cầu này - Có thể vì văn hóa xã hội đã gây nên tình trạng ấy : vì xã hội xem trọng bằng cấp nên người đi học phải thi đổ. Cứu cánh của sự học thành ra “để thi đổ”  và trường học trở nên lò luyện thi ... 

Nhưng ngay ở Bỉ, cũng có nhiều học trò chỉ học vì phải thi. Thế nhưng từ từ, một số nhà sư phạm bắt đầu lên tiếng phân tích mọi mặt của vấn đề thi cử, đánh giá học trò, đánh giá quá trình học và đồng thời đề nghị vài phương pháp nhỏ để việc “chấm điểm” học trò được thực hiện hoàn chỉnh hơn.

Từ những thập niên 60, nhiều tiếng nói đã  đề nghị về những phương thức để chấm điểm học trò mà nổi tiếng nhất có lẻ là những bài thi trắc nghiệm (QCM)  được xem như là một hình thức dễ áp dụng, học trò không cần khả năng viết bài, có thể bao phủ hết chương trình của môn học lại dễ chấm, sáng sủa, ít nhầm lẫn...

Thế nhưng việc chấm điểm học trò không phải chỉ là công cụ chấm điểm (thực ra mỗi hình thức - câu hỏi mở, trắc nghiệm, thi viết, thi vấn đáp, ... - đều có cái khả thi và cái bất khả thi) mà sâu xa hơn nhiều. Có những điểm làm cho học trò sung sướng nhận bằng cấp, cũng như có những điểm ám ảnh người đi học trong suốt quảng đời còn lại (tiếng Pháp gọi là névrose d'échec – bệnh ám ảnh thất bại?). Dĩ nhiên đấy là hai thái cực.

Chấm điểm cái gì ?
Một số đông người đi dạy chỉ chấm điểm khả năng lặp lại (savoir-restituer) vốn hiểu biết đã thu thập được thầy truyền cho. Nói một cách quá đáng, tôi thường bảo rằng học trò của tôi không phải là những con vẹt, chúng không phải lặp lại những gì tôi đã giảng.

Các giáo sư, nhất là giáo sư các môn khoa học như Toán, Vật lý, ... chấm điểm khả năng ứng dụng (savoir-appliquer)  qua các bài tập, ...

Cao hơn tí, nhiều đồng nghiệp tôi đòi ở học trò khả năng làm việc (savoir-faire)  tức là thêm vào đó sự sáng tạo, dấu ấn riêng của các em khi đứng trước một hoàn cảnh phức tạp hơn để đi đến giải pháp thích hợp (chẳng hạn học nhạc pháp lý thuyết, sau đó sáng tác).

Học là để làm người, có học thì có thể có xu hướng làm người trọn vẹn hơn (nhờ những môn như triết học, chính trị học, kinh tế, xã hội học nếu chấm điểm được khả năng đó (savoir-être)  thì rất hay.

Những điều nói trên có vẻ lý thuyết nhưng chúng thể hiện được sự đa dạng của những gì học trò lĩnh hội được ở trường. Đa dạng đến nổi mà người đi dạy phải biết những giới hạn của cái điểm mình cho học trò.

Chấm điểm chỉ là một dấu ghi nhận, có giá trị tương đối,  rằng ở khoảng thời gian nào đó, người học trò đã lĩnh hội / hay không lĩnh hội được một số hành trang hiểu biết mà thầy chờ đợi. Học trò kém một môn không có nghĩa là em ngu hay dốt.

Chấm điểm chế tài hay chấm điểm để phát triển?
Hình thức thứ nhất – chế tài – là để cho lên lớp, để cấp bằng. Chấm điểm ở cuối học trình. Sau đó trò nào đậu thì mừng với kết quả,   còn những trò khác thì không biết tại sao mình thi rớt .

Hình thức thứ hai - để phát triển - chấm điểm để thấy chỗ nào đã hiểu hết, đoạn nào đã suôn sẻ và chỗ nào chưa thấu đáo hầu làm lại, đào sâu hơn để thấu đáo. Sau khi thi, với bài thi trên tay, thầy và trò phân tích để hiểu thêm, học cách khác, thay đổi phương pháp chẳng hạn,  để kết quả tốt hơn.
Nói một cách cực đoan : nếu chỉ chấm điểm kiểu chế tài, trò nào không đủ điểm phải ngồi lại lớp, phải thi lại, ...  việc ngồi lại lớp, mất một năm, nhiều khi không có ích lợi gì vì thầy và trò vẫn không hiểu những “nguyên nhân” của bảng điểm xấu để có thể làm tốt hơn.

Đi vào cụ thể?
Tôi chưa bao giờ đề nghị từ bỏ việc chấm điểm chế tài ở cuối học trình  mặc dù hình thức này có nhiều điểm tiêu cực.

Tôi chỉ đề nghị thêm vào đó, nhiều cuộc chấm điểm trong suốt học trình để thầy và trò “nắm vững tình hình” để mà cùng đi tiếp, để có thể “trở tay” đúng lúc, tìm hình thức thay đổi khi có vấn đề. Chấm điểm và đào tạo thành “một công mà hai việc” liên đới với nhau. Thế ta sẽ tránh được tình trạng đậu hay rớt ở cuối học trình mà tất cả các trò “đều xong học trình”.

Lý thuyết có vẻ đơn giản nhưng để thực hiện được 12 năm học không có thi “tốt nghiệp” (tương đương với trung học bên nhà)  nước Bỉ đã qua một quá trình làm thử, thay đổi, ... với khả năng cung cấp không những giáo dục cưỡng bách cho tất cả đến 18 tuổi mà còn cung cấp những trường thích hợp (phổ thông, kỷ thuật hay chuyên nghề, ... ) tùy theo nhu cầu và khả năng của mỗi trò.

Việc chấm điểm trong học trình cần được thầy và trò thống nhất trong tư duy. Nếu thầy nêu rõ mục đích, chỉ tiêu của môn mình dạy, truyền cho trò những cách để đánh giá quá trình học thì cả thầy và trò đều có thể đồng trách nhiệm, một loại “khế ước” giửa thầy và trò.  Sự “được người lớn tin cậy, tín cẩn” làm trẻ “lớn” hẳn lên, cố xứng đáng niềm tin đó. Trẻ con nhờ thế có thể trưởng thành sớm hơn ta tưởng tượng, nắm vận mệnh học hành trong tay.

“Chấm điểm” trở thành, ít nhất là một phần, “tự chấm điểm” và trong chừng mực ấy, không còn là một công cụ thể hiện “quyền lực của thầy” .

Từ một chuyện chuyên thuần giáo dục, chấm điểm trò cũng là một vấn đề liên hệ đến xã hội, văn hóa và đạo đức.

Cá nhân và kinh nghiệm riêng ?
Tôi có dùng “chấm điểm-trả bài” (évaluation-restitution) cho những sinh viên năm đầu đối với những hiểu biết căn bản cần có. Trước kỳ thi, các em được chuẩn bị về hình thức các câu hỏi, những gì tôi chờ đợi, tiêu chuẩn chấm điểm, ... Những sinh viên khác, tôi dùng hình thức thi với sách và tài liệu mở (examen à livres ouverts) và cuối cùng thì tôi chấm điểm những nghiên cứu của sinh viên.
                                                           
Nguyễn Huỳnh Mai <huynhmai@poirrier.be> 

Thứ Bảy, 5 tháng 4, 2014

Nhớ

Chỉ có một người nuôi nấng, chăm lo cho ta suốt cuộc đời
Chỉ có một người thương yêu, lo lắng cho ta suốt cuộc đời
Chỉ có một một tình yêu vô điều kiện, mà ta ít khi nhận ra
... Và chỉ có một nỗi buồn, nỗi nhớ luôn theo ta suốt cuộc đời này.

Video 1. Mẹ



Video 2. Nhật ký của Mẹ