kiện tiên quyết là phải có kỹ năng lập trình. Vậy thì trong chương trình đào tạo bên cạnh học phần Cấu trúc dữ liệu và giải thuật là nội dung kiến thức bổ trợ cộng thêm kiến thức, kỹ năng của học phần Kĩ thuật lập trình sẽ giúp cho SV hình thành được những chương trình trên máy tính bằng ngôn ngữ lập trình nào đó để thực thi ý tưởng tạo ra sản phẩm ứng dụng trong thực tế.
Trong quá trình tìm hiểu chương trình đào tạo ngành KTĐT – VT của một số trường Đại học thuộc khu vực miền Trung và Tây Nguyên, và tìm hiểu kỹ nội dung học phần Kĩ thuật lập trình, tác giả nhận thấy rằng một số tên học phần trong chương trình đào tạo của một số trường Đại học khác như Kĩ thuật mô phỏng trên máy tính, Lập trình cơ sở, điều khiển lập trình, Nhập môn Kĩ thuật lập trình, Kĩ thuật lập trình nâng cao, Ngôn ngữ lập trình C/C++/C#,… có phần lớn nội dung tương tự với nội dung của học phần Kĩ thuật lập trình trong chương trình đào tạo ngành KTĐT – VT trường Đại học Quy Nhơn.
2.1.2 Đặc điểm nội dung môn học Kĩ thuật lập trình
Kĩ thuật lập trình là kĩ thuật thực thi một giải pháp phần mềm (Chương trình = cấu trúc dữ liệu + giải thuật) dựa trên một hay nhiều ngôn ngữ lập trình phù hợp với yêu cầu đặc thù của ứng dụng. Hay nói một cách khác, kĩ thuật lập trình = Cấu trúc dữ liệu + Giải thuật + Ngôn ngữ lập trình.
Quan điểm môn học Kĩ thuật lập trình là tập trung vào việc tư duy và phương pháp lập trình. Học kiến thức này sẽ tạo khả năng cho SV dễ thích ứng với các ứng dụng khác nhau hoặc là dễ thích ứng với các ngôn ngữ lập trình khác như Java, C#, C++, Visual Basic,… Đồng thời, môn học này nhấn mạnh tính chuyên nghiệp trong lập trình, tức là có thể giúp tạo ra một chương trình hiệu quả và chất lượng.
Việc dạy học lập trình cần phải xuất phát từ những đặc trưng của tin học với tư cách là một ngành khoa học kĩ thuật, đồng thời qua giảng dạy mà thể hiện những đặc trưng đó. Khi dạy học lập trình, chúng ta đòi hỏi SV phải
học từ khóa nào, lệnh nào, cấu trúc ngữ pháp của câu lệnh. Từ đó, chọn kiểu dữ liệu cần tổ chức cho phù hợp với tình huống đó, chọn những lệnh tương ứng với cấu trúc dữ liệu đã xây dựng cho phép mã hóa thuật toán xử lý tình huống đặt ra, cấu trúc chương trình tối ưu theo thuật toán đã xây dựng. GV phải biết chọn tình huống công việc thích hợp xuất phát từ thực tiễn cuộc sống hàng ngày gần gũi với SV, cấu trúc lại công việc theo ý định chủ đạo của thầy, tinh lọc, loại bỏ những thuộc tính không cần thiết, thu nhỏ kích thước bài toán, tổ chức lại tình huống đó theo ý đồ sư phạm. Căn cứ mục tiêu tiết học, nội dung kiến thức liên quan, GV cài đặt những tri thức định dạy cho SV vào trong đó theo trình tự và nội dung cần dạy một cách logic, để từ đó SV có thể chiếm lĩnh chúng một cách say mê, hào hứng thông qua hoạt động tự giác, tích cực, chủ động và sáng tạo.
Đối với SV ngành KTĐT, VT, GV chọn ngôn ngữ lập trình C/C++ để minh họa cho các kĩ thuật lập trình vì hai ngôn ngữ này tiêu biểu, đủ để thực hiện các kĩ thuật lập trình quan trọng. Hơn nữa, đây là hai ngôn ngữ quan trọng nhất cho SV ngành KTĐT, VT, là công cụ hỗ trợ đắc lực cho SV ngành này có thể sử dụng minh họa cho các kỹ thuât khác liên quan đến lập trình thiết bị.
* Chuẩn đầu ra của học phần (ký hiệu CLOs)
Học phần đóng góp cho chuẩn đầu ra của chương trình đào tạo (ký hiệu PLO: Program learning Outcomes) theo mức độ sau: L = Mức thấp; M = Mức trung bình; H = Mức cao. (Bảng 1.5)
Với nội dung chi tiết học phần Kĩ thuật lập trình cho SV ngành KTĐT
– VT được trình bày ở PHỤ LỤC 8, khi phân tích nội dung môn học, tác giả nhận thấy rằng một số kiến thức, chủ đề bài học trong học phần này như cách sử dụng ngôn ngữ lập trình (C/C++), các kĩ thuật lập trình, các chiến lược thuật toán, minh họa các kĩ thuật liên quan đến lập trình thiết bị,… có khả
năng tác động đến các yếu tố cấu thành của tư duy điện toán. Điều này phù hợp với định hướng phát triển TDĐT được đề cập trong luận án này. Do vậy, trong phạm vi luận án này, tôi chọn bài giảng liên quan đến cách sử dụng ngôn ngữ lập trình hướng đối tượng C++ để minh họa cho các biện pháp đề xuất trong luận án.
Bảng 2.1. Chuẩn đầu ra của học phần Kĩ thuật lập trình
Chuẩn đầu ra học phần (CLOs) | Chuẩn đầu ra CTĐT (PLOs) | Mức độ đạt được | ||
Ký hiệu | Mô tả | |||
(1) | (2) | (3) | (4) | (5) |
Kiến thức | ||||
CO1 CO3 | CLO1 | Biết viết chương trình bằng ngôn ngữ lập trình C/C++ | PLO3, PLO4 | L |
CO1 CO3 | CLO2 | Hiểu rõ các kiến thức về ngôn ngữ lập trình C/C++ | PLO3, PLO4 | L |
CO1 CO3 | CLO3 | Áp dụng được các thuật toán về duyệt và đệ quy trong lĩnh vực kĩ thuật điện | PLO3, PLO4 | M |
CO2 CO3 CO4 CO5 | CLO4 | Áp dụng được các giải thuật cho các bài toán đồ thị về kĩ thuật điện | PLO3, PLO4 | M |
CO2 CO3 CO5 | CLO5 | Áp dụng được giải thuật cho một số bài toán kĩ thuật | PLO3, PLO4 | M |
CO1 CO3 | CLO6 | Phân tích và lập trình được các chương trình ứng dụng giải quyết các vấn đề cấp thiết của ngành điện. | PLO3, PLO4 | H |
Có thể bạn quan tâm!
- Biểu Diễn Mối Quan Hệ Giữa Tdđt Với Ngành Ktđt - Vt
- Thang Đo Solo Về Mức Độ Hiểu Biết Của Sv Học Lập Trình
- Mức Độ Gv Sử Dụng Biện Pháp Kích Thích Tư Duy Trong Quá Trình Dạy Học
- Dạy học kĩ thuật lập trình cho sinh viên ngành Kĩ thuật điện tử - viễn thông theo hướng phát triển tư duy điện toán - 12
- Dạy học kĩ thuật lập trình cho sinh viên ngành Kĩ thuật điện tử - viễn thông theo hướng phát triển tư duy điện toán - 13
- Biện Pháp 2: Hướng Dẫn Sv Phân Rã Hoạt Động Lập Trình Thành Những Hoạt Động Thành Phần, Phân Chia Vấn Đề Phức Tạp Thành Đơn Giản Hơn Theo Trình
Xem toàn bộ 235 trang tài liệu này.
Chuẩn đầu ra học phần (CLOs) | Chuẩn đầu ra CTĐT (PLOs) | Mức độ đạt được | ||
Ký hiệu | Mô tả | |||
Kỹ năng | ||||
CO2 CO3 CO4 CO5 | CLO7 | Phân tích, hình thành ý tưởng, áp dụng các thuật toán phù hợp để lập trình các ứng dụng trong ngành điện. Phân tích, hình thành ý tưởng, xây dựng các thuật toán phù hợp cho các vấn đề cấp thiết của ngành điện. | PLO8 | M |
CO2 CO3 CO4 CO5 | CLO8 | Tham gia trao đổi với thầy, bạn bè, đồng nghiệp; làm việc nhóm để giải quyết các vấn đề lập trình nhằm đạt kết quả tốt nhất. Sử dụng thành thạo C/C++ và các thuật toán để lập trình các ứng dụng trong môi trường làm việc đa ngành. Hiểu được cuộc cách mạng công nghiệp đang diễn ra và tham gia vào môi trường này. Lập chương trình thiết kế hệ thống điện, thiết bị điện và viết chương trình cho các hệ thống điều khiển tự động. | PLO8 | M |
Mức tự chủ và trách nhiệm | ||||
CO1 CO2 CO6 | CLO9 | Nhận thức được tầm quan trọng của môn học trong công việc thực tế, từ đó kiên trì học tập, yêu thích nghiên cứu, giải quyết các vấn đề trong lĩnh vực kĩ thuật điện. | PLO15 | L |
CO1 CO2 CO7 | CLO10 | Biết được những ảnh hưởng nghiêm trọng khi hệ thống làm việc không ổn định, bị lỗi, có nhiều lỗ hổng, từ đó hình thành ý thức trách nhiệm nghề nghiệp. | PLO14 | L |
(1): Ký hiệu mục tiêu học phần (CO) - (2): Ký hiệu CĐR của học phần (CLO) - (3): Mô tả CĐR, bắt đầu bằng những động từ chủ động trong yêu cầu về năng lực - (4), (5): Ký hiệu CĐR của CTĐT (PLO) và mức năng lực tương ứng được phân bổ cho học phần
2.2 MỘT SỐ BIỆN PHÁP DẠY HỌC PHÁT TRIỂN TƯ DUY ĐIỆN TOÁN CHO SINH VIÊN KTĐT-VT
Căn cứ vào yếu tố cấu thành tư duy điện toán cùng với những định hướng phát triển tư duy điện toán, việc dạy học môn Kĩ thuật lập trình có nhiều tiềm năng phát triển tư duy điện toán cho SV. Tác giả tập trung vào việc phát triển các kỹ năng chính của tư duy điện toán trong việc giải quyết vấn đề cho SV bằng một số biện pháp đề xuất sau:
2.2.1 Biện pháp 1: Lựa chọn nội dung chứa đựng cơ hội để hình thành và phát triển tư duy điện toán cho SV.
a. Cơ sở đề xuất biện pháp 1:
Như đã phân tích ở trên, tư duy điện toán gắn chặt với tư duy thuật toán mà nền tảng của nó là toán học. Điều này có vai trò đặc biệt quan trọng không chỉ với sinh viên thuộc lĩnh vực Kĩ thuật điện tử - viễn thông, mà Toán học (Mathematics) là công cụ trung tâm kết nối các lĩnh vực liên quan đến Khoa học (Science), Công nghệ (Technology), Kĩ thuật (Engineering) – STEM. Biện pháp này đề cập đến việc khai thác ngay những kiến thức toán mà sinh đã được học ở bậc đại học nhưng trên góc nhìn của ứng dụng gắn với máy tính, gắn với tính toán có dữ liệu lớn, tiệm cận thực tiễn và là xu hướng của nhiều nghề nghiệp trong tương lai.
Biện pháp này nhằm xây dựng hệ thống nội dung chứa đựng cơ hội rèn luyện, phát triển tư duy điện toán. Nội dung là một số vấn đề gắn với kiến thức cơ bản của nhiều lĩnh vực và ứng dụng thực tiễn, nhưng có tính chất tổng quát (toán).
Tư duy điện toán phải được xác lập ở mức tổng quát, tương thích với tư duy “tin học” (tức là biện pháp kỹ năng trong tư duy điện toán phải gắn kết nối được với các nội dung toán học đó) và lập trình dựa trên nền tảng là tư duy “toán học”.
b. Mục đích biện pháp 1:
- Khai thác, lựa chọn để xây dựng hệ thống nội dung chứa đựng cơ hội rèn luyện, phát triển tư duy điện toán. Nội dung là một số vấn đề gắn với kiến thức cơ bản ở bậc đại học, có cơ hội áp dụng vào nhiều lĩnh vực khác nhau và ứng dụng thực tiễn.
- Cài đặt các cơ hội vận dụng kết hợp tư duy điện toán và thiết bị để xác lập thuật toán trước khi viết chương trình, tức là cần đặt sinh viên vào một góc nhìn khác về kiến thức toán học ứng dụng và thiết bị dưới “lăng kính” tư duy điện toán.
- Nội dung phải hướng tới phát triển và xác lập được tư duy điện toán ở mức khái quát để có thể tận dụng được thế mạnh của công nghệ nói chung.
c. Một số nội dung cơ bản:
c1. Thuật toán lặp cho các phương trình phi tuyến tổng quát và ứng dụng
Mục đích: có tính chất mở đầu, dẫn dắt học sinh, hình thành phương pháp tư duy điện toán.
Chẳng hạn, xét bài toán tìm nghiệm gần đúng của phương trình phi tuyến sau 𝑓(𝑥) = 0 sao cho sai số nghiệm không vượt quá 𝜖, biết rằng phương trình có nghiệm trên đoạn [a,b] và f(x) là hàm số cho trước.
Bài toán tìm nghiệm gần đúng của phương trình f(x) = 0 xuất hiện trong khoa học kĩ thuật và trong thực tế cuộc sống vì khi một hàm số tổng quát f thường phức tạp mà chưa có phương pháp hoặc không thể xác định nghiệm đúng của nó. Ở đây, sẽ sử dụng thuật toán lặp cho các phương trình phi tuyến đó như phương pháp sai vị, phương pháp chia đôi, phương pháp Newton,…
* Phương pháp chia đôi (Bisection method)
Phương pháp này áp dụng cho lớp hàm liên tục f từ đoạn [a, b] vào R thỏa mãn điều kiện f(a). f(b) < 0 và phương trình f(x) = 0 có duy nhất một nghiệm x* (a, b).
(𝑥𝑛)𝑛∈𝑁
Ta đặt a0 = a, b0 = b và I0 = [a0, b0], xây dựng dãy bước thuật toán như sau:
Bước 1: Tìm đoạn con chứa nghiệm I1 I0 , ta đặt:
theo từng
𝑥0
𝑎0 + 𝑏0
= 2
Nếu f(a). f(x0) < 0 thì nghiệm x* (a, x0) nên ta loại bỏ đoạn còn lại và đặt [a1, b1] = [a, x0]. Ngược lại, nếu f(a). f(x0) < 0 thì nghiệm x* (x0, b) nên ta loại bỏ đoạn còn lại và đặt [a1, b1] = [x0, b].
Bước 2: Lặp lại quy trình tìm các đoạn con chứa nghiệm của đoạn In = [an , bn] với n 1 như ở Bước 1.
Đoạn chương trình mô phỏng thuật toán chia đôi:
def hamf(x):
return x-np.cos(x)/3
def chiadoi(a,b,N): for i in range(N):
c = (a+b)/2
z = hamf(a)*hamf(c)
if z < 0:
b = c
else:
a = c x = c
return [x,(b-a)/2]
Khai thác phát triển tư duy điện toán cần được nhấn mạnh ở giai đoạn này, khi mà ta có thể tổ chức cho sinh viên khai thác thuật toán chia đôi để phát triển được những thuật toán mới, phù hợp với những vấn đề thực tiễn khác nhau. Chẳng hạn, thuật toán sai vị sau:
(𝑥𝑛)𝑛∈𝑁
Với thuật toán này, nếu f là hàm lồi (hoặc lõm) tại lân cận của thì
Ta đặt a0 = a, b0 = b và I0 = [a0, b0], xây dựng dãy bước thuật toán như sau:
theo từng
Bước 1: Tìm đoạn con chứa nghiệm I1 I0 , ta xây dựng đa thức nội của f với hai mốc nội suy là a0 và b4, tức là đường thẳng đi qua hai điểm (a0, f(a0)) và (b0, f(b0)). Lấy giao điểm x0 của đường thẳng này với trục hoành, ta được:
𝑎0
= 𝑎0
𝑎0 − 𝑏0
0 0
− 𝑓(𝑎 ) − 𝑓(𝑏 )
𝑓(𝑎0
) = 𝑏0
𝑏0 − 𝑎0
0 0
− 𝑓(𝑏 ) − 𝑓(𝑎 )
𝑓(𝑏0)
= 𝑓(𝑎0)𝑏0 − 𝑓(𝑏0)𝑎0
𝑓(𝑎0) − 𝑓(𝑏0)
Nếu f(a). f(x0) < 0 thì nghiệm x* (a, x0) nên ta loại bỏ đoạn còn lại và đặt [a1, b1] = [a, x0]. Ngược lại, nếu f(a). f(x0) < 0 thì nghiệm x* (x0, b) nên ta loại bỏ đoạn còn lại và đặt [a1, b1] = [x0, b].
Bước 2: Lặp lại quy trình tìm các đoạn con chứa nghiệm của đoạn In = [an , bn] với n 1 như ở Bước 1.
* Ngoài ra, còn một số thuật toán Newton – Raphson, thuật toán dây cung,… GV có thể sử dụng để phát triển tư duy điện toán trong quá trình dạy học lập trình.
c2. Thuật toán giải hệ đại số tuyến tính
Đại số tuyến tính là trung tâm của hầu hết các lĩnh vực toán học. Ví dụ, đại số tuyến tính là cơ bản trong các bài thuyết trình hiện đại về hình học, bao gồm cả việc xác định các đối tượng cơ bản như đường thẳng, mặt phẳng và phép quay. Đại số tuyến tính được sử dụng nhiều trong toán học, như trong đại số đại cương, giải tích hàm, hình học giải tích... để giải các bài toán như phép quay trong không gian, nội suy bình phương nhỏ nhất, nghiệm của hệ phương trình vi phân, tìm đường tròn qua ba điểm...