NewYork Paris Hà Nội Khách thứ :

NIỀM TIN TƯƠNG LAI

     

Nguyên tắc đào tạo ngành Khoa Học Máy Tính ( Computer Engineering ) ở Mỹ - TS Ngô Quang Hưng

Nhiều công ty công nghệ máy tính than phiền sinh viên tốt nghiệp đại học chưa được trang bị đủ tri thức để đáp ứng được ngay với yêu cầu của thị trường việc. Đây không phải là vấn đề riêng của các ngành Khoa Học Máy Tính ( Computer Engineering ) hay Công Nghệ Thông Tin ( Information Technology ) và càng không phải là vấn đề riêng của Việt Nam.

Các tạp chí chuyên ngành ở Mỹ và các nước khác cũng thỉnh thoảng có bài phàn nàn về việc sinh viên mới ra trường thiếu các mảng kiến thức cần thiết.Trong bài này, tôi xin chia sẻ vài thu thập cá nhân về phương pháp thiết kế chương trình ngành Khoa Học Máy Tính ở Mỹ, và chỉ giới hạn trong phạm vi chương trình đại học.

Các nguyên tắc chung

Chương trình đào tạo cử nhân có khả năng thích ứng được với thay đổi vũ bão của công nghệ và khoa học tính toán; khả năng này bao gồm tính độc lập trong tư duy, tính sáng tạo trong ứng dụng, khả năng tự tìm động lực làm việc và học tập cho bản thân...

Tôi đã đọc không ít các bài báo liệt kê một danh sách dài các mảng kiến thức mà sinh viên mới ra trường còn thiếu. Các công ty mạng máy tính thì than phiền rằng sinh viên lập trình C/C++ kém, kiến thức quản trị mạng không có; các công ty làm web thì phàn nàn sinh viên thiếu kiến thức Java, thương mại điện tử... Rõ ràng là không một chương trình nào có thể bao quát hết những thứ có khả năng cần cho tương lai. Một cử nhân với khả năng thích ứng cao sẽ tự học thêm một cách hiệu quả khi công việc hoặc nghiên cứu có yêu cầu mới.

Khi than phiền rằng giáo dục chưa đáp ứng được với nhu cầu thực tế, các công ty cũng phải có phần trách nhiệm đào tạo các nhân viên tương lai dưới các hình thức thực tập viên ( internship, co-op... ) và các chương trình tập huấn khi mới nhận việc. Các chứng chỉ chuyên môn của các công ty lớn ( Microsoft, Cisco, Oracle...) ngoài mục tiêu thương mại và quảng cáo thương hiệu, cũng có nhiệm vụ làm cầu nối giữa học đường và công nghiệp. Không ai có thể vừa tốt nghiệp xong "nhảy bừa" vào làm tốt một việc bất kỳ.

Nhân tố quan trọng nhất tạo khả năng thích ứng với nhu cầu thực tế là chính bản thân sinh viên. Có lẽ không có ngành nào mà sinh viên có lợi thế trên phương diện tài liệu học tập như ngành Khoa Học Máy Tính. Chỉ cần một chút tiếng Anh chuyên môn là sinh viên đã có thể tìm hiểu trực tuyến hầu hết các tài liệu trên Internet. Với một môi trường học tập và tri thức “mở” như Internet, không thể đổ lỗi hoàn toàn cho “cơ chế giáo dục” thiếu đổi mới.

Chương trình có các thành phần có thể "cá nhân hóa" cho cả giảng viên lẫn sinh viên: để sinh viên có thể chọn học, nghiên cứu về các đề tài phù hợp với sở thích và khả năng của họ; và để giảng viên có thể chọn lọc dạy những thứ họ cần học/nghiên cứu thêm, giữ được sự say mê trong công việc.

Với sinh viên, Chương trình phải có các lớp tự chọn. Sinh viên nào định học thạc sĩ, tiến sĩ, thì có thể chọn các môn lý thuyết. Ngược lại, sinh viên nào muốn biết thêm các kiến thức ứng dụng ngay được thì có thể tự chọn các lớp như quản trị mạng, thiết kế VLSI, lập trình cho embeded systems, bảo mật...

Phần tự chọn làm Chương trình linh hoạt hơn, cho sinh viên sự độc lập tự chủ trong hướng nghiệp. Mặt khác, phần này cũng khiến người thầy thêm phức tạp. Ở Mỹ, mỗi sinh viên đại học đều có một giáo sư hướng dẫn với vai trò chủ yếu là hướng dẫn sinh viên lựa các lớp tự chọn sao cho phù hợp với khả năng, sở thích của sinh viên cùng với các yêu cầu hiện tại của công nghệ. Vai trò này không giống với vai trò hướng dẫn nghiên cứu sinh, dù rằng chúng có phần tương đồng. Để làm tốt công việc này đòi hỏi người thầy phải "tâm lý", có cái nhìn thoáng, và nếu có thể - có nhiều quan hệ với các công ty để giới thiệu sinh viên.

Quan trọng hơn, các giảng viên và giáo sư rất cần một chương trình có thể cá nhân hóa được để phục vụ việc cải thiện kiến thức và làm mới sở thích của chính họ. Không có sự làm mới tri thức của người thầy thì Chương trình sẽ là “ Chương trình chết”, gây hậu quả lâu dài cho nhiều thế hệ sinh viên. Ở Mỹ thì các giáo sư và giảng viên hàng năm đều có thể đề cử một lớp mới thêm vào chương trình, hoặc thay cho một lớp cũ đã lỗi thời. Đó là chưa kể sự tự do gần như tuyệt đối của người thầy trong quyền chọn lựa dạy cái gì trong một lớp nhất định. Sách giáo khoa cũng không giống nhau. Thầy nào thích sách nào thì dạy sách đó, và chủ yếu có tính chất tham khảo. Ngành máy tính có lợi thế rất lớn so với các ngành khác là cái mới ra đời hàng phút hàng giây. Đại số tuyến tính cơ bản không thay đổi mấy so với năm mươi năm trước, nhưng mạng máy tính năm 2006 khác xa năm 1996.

Chương trình nhằm đào tạo các cử nhân có tính chuyên nghiệp cao: tính chuyên nghiệp bao gồm khả năng làm việc trong nhóm, cảm nhận về sự công bằng trong công tác, phương cách giao tiếp ứng xử với đồng nghiệp, cấp trên cấp dưới, hiểu biết về các quyền lao động, luật sở hữu trí tuệ và bằng phát minh...

Chương trình có các lớp với các dự án làm theo nhóm trong đó các thành viên được đánh giá theo kết quả làm việc của nhóm thay vì của từng cá nhân; hướng sinh viên đến một tinh thần trách nhiệm chung cho toàn nhóm; tránh kèn cựa bất đắc chí “tôi làm nhiều/anh làm ít”, “tôi giỏi/anh kém”; chịu trách nhiệm phác thảo kế hoạch và hoàn tất dự án đúng thời hạn... Đây cũng là một trong các cơ hội cho sinh viên luân phiên nhau đóng vai trò “lãnh đạo”, tổ chức và vận hành nhóm một cách khoa học, hướng tới việc đứng đầu các nhóm làm việc thật sự sau này. Thậm chí, một nhóm xuất sắc sẽ có khả năng kết tinh ý tưởng thành một sản phẩm hữu dụng, kinh doanh được ngay khi còn đang đi học.

Ở Mỹ, trừ vài ngoại lệ, không bao giờ có chuyện khoa giữ sinh viên lại làm giảng viên/giáo sư vì hai lý do chính: (a) sinh viên tốt nghiệp trường X sẽ bổ sung được cho trường Y cả về tư duy lẫn chuyên môn, giữ sinh viên lại thì khả năng làm mới tư duy kém đi; và (b) để giữ tính chuyên nghiệp trong sinh hoạt giữa các đồng nghiệp với nhau; khó khi nào một “sinh viên lên giảng viên” lại có thể đối xử với thầy hướng dẫn của mình như một đồng nghiệp thực thụ.

Chương trình phù hợp với cơ sở hạ tầng về nhân lực vật lực hiện tại, và phù hợp với chiến lược phát triển nhân/vật lực trong tương lai của cơ sở đào tạo. Không phải trường nào cũng có một khoa khoa học máy tính khổng lồ như của trường CMU. Các trường như Princeton, Yale, có các khoa Khoa học máy tính nhỏ nhưng chất lượng rất cao, vì họ tập trung phát triển thế mạnh chiều sâu thay vì phát triển tràn lan, ngắn hạn.

Các khoa thường sẽ được chia thành vài nhóm giáo sư/giảng viên, mỗi nhóm chuyên về một phân ngành nào đó. Có 4 nhóm mỗi nhóm 5 người thì tốt hơn là có 20 nhóm mỗi nhóm 1 người. Trường này mạnh về mạng thì trường kia mạnh về thuật toán. Thế mạnh thu hút tài năng và tài năng lại tăng thế mạnh -quả cầu tuyết cứ thế lăn.

Các thế hệ sinh viên cùng một trường sẽ có xu hướng giúp đỡ lẫn nhau, do đó việc có vài sinh viên giỏi, tốt nghiệp xong ở các vị trí quản lý của các công ty xung quanh sẽ có ảnh hưởng rất tích cực đến các thế hệ cử nhân tiếp theo. Vì thế, trong chiến lược phát triển của khoa cần phải có các chương trình học bổng thu hút học sinh giỏi, các chương trình cựu sinh viên để giữ quan hệ tốt với sinh viên cũ, và một ban cố vấn công nghiệp ( industrial advisory board – có thể bao gồm sinh viên cũ ) để thích ứng Chương trình với tình hình hiện tại và đôi khi xin được tài trợ phát triển khoa.

Vai trò của các tổ chức chuyên môn

Ở Mỹ, từ những năm đầu thập niên 60, bốn tổ chức chuyên ngành là ACM, IEEE-CS, AIS, và AITP đã thành lập các nhóm chuyên gia bàn thảo và viết các hướng dẫn về thiết kế chương trình đào tạo trong các ngành liên quan đến tính toán. Gần đây, họ cộng tác với nhau để viết. Bạn có thể đọc thêm phần lịch sử trong bản nháp báo cáo tổng kết năm 2005 (viết tắt là CC2005) của họ để biết thêm chi tiết. Ngoài ra, còn có các tổ chức phi lợi nhuận và phi chính phủ có chức năng kiểm định chất lượng chương trình giáo dục như ABET. Cần phải nhấn mạnh rằng tính độc lập tự chủ của các trường đại học ở Mỹ rất cao, cho nên các tài liệu này chỉ mang tính tham khảo.

CC2005 "gút" lại 5 Chương trình chính hiện nay : Khoa học máy tính ( Computer Science ), Kỹ thuật máy tính ( Computer Engineering ), Hệ thống thông tin ( Information Systems Technology ), Kỹ thuật phần mềm ( Software Engineering ), và Công nghệ thông tin ( Information Technology ).

Ý nghĩa của các Chương trình này có thể tóm tắt như sau :

Kỹ thuật máy tính ( Computer Engineering ) :

Ngành này liên quan đến thiết kế và xây dựng máy tính, các hệ thống máy tính, và các thiết bị liên quan. Hiểu nôm na là nó coi trọng phần cứng.

Hệ thống thông tin ( Information Systems Technology ) :

Ngành này liên quan đến việc thiết kế các hệ thống thông tin cho các cơ quan, tổ chức. Ngành nhấn mạnh vào phần thông tin của Công Nghệ Thông Tin và thường được các khoa kinh doanh ( Business ) dạy. Các chương trình kiểu hệ thống thông tin quản trị ( Information Management Systems ) là thuộc diện này.

Kỹ thuật phần mềm ( Software Engineering ) :

Ngành này đặt trọng tâm ở việc thiết kế, phát triển, bảo trì phần mềm và các chu trình làm việc liên quan đến phần mềm. Trong một chừng mực nhất định, Khoa Học Máy Tính tương đương với ngành xây dựng, và Kỹ thuật phần mềm tương đương với ngành kiến trúc.

Công Nghệ Thông Tin ( Information Technology ) :

Trái với Hệ thống thông tin, ngành Công Nghệ Thông Tin chú trọng vào phần công nghệ. Các doanh nghiệp và các tổ chức tư nhân và nhà nước hiện nay đều cần có một phòng hay một ban Information Technology, với các nghiệp vụ liên quan đến cài đặt mạng, bảo trì máy, cập nhật phần mềm chống worms, virus, đặt tường lửa... Ngành này đang phát triển mạnh vì nhu cầu rất thực tế này.

Khoa Học Máy Tính ( Computer Science ) :

Đây là phân ngành rộng nhất của tính toán. Các chủ đề của ngành này có thể nói là bao quát toàn bộ những thứ liên quan đến tính toán, từ cấu trúc máy tính đến các hệ thống thông minh, người máy, đến thuật toán và lý thuyết tính toán.

Với khối kiến thức khổng lồ như thế, chọn lựa và thiết kết một Chương trình đào tạo hiển nhiên không phải dễ dàng. Cũng chính vì thế, việc các nhiều khoa Khoa Học Máy Tính và nhiều công ty máy tính có nhiều dị biệt về triết lý và nội dung đào tạo cũng là điều dễ hiểu. Hy vọng rằng các nguyên tắc đã nêu phần nào hữu ích trong quá trình thiết kế Chương trình.

Cái “thần” của Khoa Học Máy Tính

Các điều đã viết vẫn là phần cơ học của một chương trình đào tạo và các phần tử liên quan. Để trở thành một kỹ sư hay khoa học gia máy tính thực thụ, sinh viên phải nắm bắt được tinh thần của ngành, bao gồm các khía cạnh kỹ thuật, khoa học, xã hội, và lịch sử của Khoa Học Máy Tính. Đối với sinh viên mới bước vào ngành, ta cần phát triển cho họ các mô hình nhận thức trong não về các khái niệm cơ bản của Khoa Học Máy Tính. Thay vì định nghĩa cụ thể, ta xét một vài ví dụ về cảm nhận cá nhân với Khoa Học Máy Tính :

• Khái niệm “tính toán” (computation), một trong những đóng góp sâu sắc nhất của Khoa Học Máy Tính cho kho tàng tri thức của nhân loại. Tính toán không bị ràng buộc bởi một mô hình cụ thể nào đó ( như mô hình máy Turing, mô hình RAM/Bus/CPU...). Không ít các nhà khoa học tin rằng các quá trình sinh học và vật lý là các quá trình tính toán. Tự nhiên có các thuật toán của nó. Không phải ngẫu nhiên mà Khoa Học Máy Tính đang vươn cánh tay non trẻ của nó sang sinh học, vật lý, kinh tế, toán học, với các phân ngành phát triển cực nhanh những năm gần đây như computational biology, computational physics, quantum computing, computational game theory, computational chemistry, computational neuroscience... Giải Nobel Kinh tế 2005 được trao cho các khoa học gia nghiên cứu lý thuyết trò chơi. Tôi tin vài mươi năm nữa sẽ có Nobel kinh tế cho người làm về computational game theory. Nobel Vật lý liên quan đến tính toán lượng tử có lẽ sẽ đến sớm hơn nữa. Chú ý rằng các phân ngành kể trên không đơn thuần là ứng dụng máy tính vào một khoa học khác. Rất nhiều các quá trình của tự nhiên về cơ bản là quá trình tính toán, và chúng ta mới chỉ bắt đầu khám phá các quá trình tính toán trong tự nhiên.

• Khoa Học Máy Tính không phải là Java, C++, hay lập trình web. Thật đáng buồn khi một sinh viên máy tính nghĩ về ngành máy tính bằng ánh mắt của một lập trình viên. Lập trình có thể là công việc ta phải làm hàng ngày, nhưng mỗi chúng ta cần phải hiểu rằng lập trình chỉ là một phương pháp bổ củi để hiện thực hóa các ý tưởng thiết kế tuyệt đẹp, các thuật toán sâu sắc, hay các hacks thông minh. Bổ củi và khắc gỗ hiển nhiên là khác nhau.

• Cũng thật đáng buồn nếu tầm nhìn của dân máy tính bị gói gọn từ Bill Gates sang Steve Jobs, từ IBM đến Oracle, hay từ search engines đến spreadsheets. Khi nghĩ đến Vật lý ta không chỉ liên tưởng đến CEO của các công ty làm máy tăng tốc hạt, các xưởng sản xuất bom nguyên tử, hay làm vật liệu bán dẫn. Khoa Học Máy Tính còn rất trẻ so với Vật lý, nhưng Khoa Học Máy Tính cũng có một câu chuyện cực kỳ truyền cảm để kể. Ảnh hưởng về mặt khái niệm của Khoa Học Máy Tính đến xã hội và các ngành khoa học khác nhiều không kể xiết.

Sinh viên nào nắm bắt được tinh thần của chuyên môn mình sẽ là sinh viên có nhiều khả năng giỏi chuyên môn và thích ứng tốt nhất.