Công nghệ thông tin đóng vai trò quan trọng, hầu nhưu không thể tách rời trong cuộc sống xã hội hiện nay.
Tại Việt Nam, kết hợp với sự phát triển của Internet, công nghệ thông tin ngày càng được áp dụng mạnh, thúc đẩy công cuộc đổi mới, phát triển nhanh hiện đại hóa những ngành kinh tế, tăng cường sự cạnh tranh của các doanh nghiệp, hỗ trợ quá trình hội nhập quốc tế và nâng cao chất lượng sống của mọi người, tạo ra nhiều ứng dụng trong các lĩnh vực giải trí, thương mại, quản lý, y tế, giáo dục,....
Công nghệ thông tin những năm gần đây trở thành một ngành quan trọng của đất nước, nhu cầu nhân lực rất lớn, công nghệ thông tin dần trở thành một ngành được chú trọng trong hệ thống đào tạo của các trường đại học. Trong đó học lập trình là một việc thiết yếu và cần thiết của sinh viên học công nghệ thông tin. Một thứ quyết định không ít tới năng lực của lập trình viên là khả năng lập trình. Việc lập trình tốt là nòng cốt để sinh viên có thể tiến xa hơn. Ngoài việc lập trình, sinh viên có thể chuyển sang làm các công việc khác như Technical Writer, Project Manager, Thiết kế (UI/UX), ...
Dạy và học lập trình ở các trường đại học ngày càng được cải thiện, bổ sung và phát triển. Tuy nhiên thực tế lại vẫn còn tồn đọng những hạn chế dẫn đến chất lượng sinh viên ra trường còn thấp. Nhu cầu nhân lực lớn nhưng nhiều sinh viên ra trường vẫn thất nghiệp, không đáp ứng được nhu cầu của nhà tuyển dụng, nguyên do một phần là vì khả năng lập trình yếu, tạo ra một khoảng trống lớn giữa sinh viên và lập trình viên.
Việc dạy và học lập trình vẫn còn hạn chế bởi vì các nguyên nhân sau:
Số môn học lập trình ở trường còn rất ít, vì vậy bài thực hành, bài thi là cơ hội để sinh viên có thể rèn luyện kĩ năng, tư duy, tuy nhiên khi đã học xong môn thi có cơ chế để bắt buộc các sinh viên phải tiếp tục rèn luyện lập trình
Không có những nguồn tài nguyên được chọn lọc để sinh viên có thể tìm hiểu và tự học
Chương 1: Tổng quan Trang 2 Vấn đề phải giải quyết bao gồm:
Tạo môi trường cho sinh viên thực hành code và cung cấp nhiều bài toán được chọn lọc cho sinh viên tham gia và luyện tập
Ràng buộc sinh viên phải thực hành code Sau đây nhóm sẽ khảo sát một số hệ thống tương tự.
1.1.1. LeetCode
1.1.1.1. Giới thiệu
Leetcode là một Online Judge phổ biến trên thế giới, LeetCode cung cấp cho người dùng một kho thách thức, giúp các lập trình viên thỏa sức luyện tập nâng cao kỹ năng, chuẩn bị cho các buổi phỏng vấn về kỹ thuật.
Hình 1.1: LeetCode
1.1.1.2. Tính năng
LeetCode hỗ trợ người dùng một số tính năng chính sau:
Luyện tập:
o Thách thức được phân loại theo nhiều chủ đề như: mảng, chuỗi, danh sách liên kết, hàng đợi…
o Hỗ trợ công cụ tìm kiếm và lọc thách thức theo tên, độ khó, tình trạng chủ đề giúp cho người dùng có thể tìm kiếm thách thức phù hợp với vùng kiến thức mong muốn.
Chương 1: Tổng quan Trang 3 o Tuyển tập những thách thức được người dùng yêu thích, những thách thức
từ các công ty nổi tiếng như Google, Facebook, Amazon.
o Thách thức có hiển thị tình trạng giúp người dùng biết được thách thức chưa làm, đang làm và đã hoàn thành.
o Hệ thống có biểu đồ thống kê tình trạng luyện tập của người dùng.
Làm bài:
o Hỗ trợ làm bài với nhiều ngôn ngữ.
o Hệ thống lưu trữ lịch sử nộp bài của người dùng với nhiều thông tin như tình trạng, thời gian, bộ nhớ, ngày nộp bài.
o Một số câu hỏi có hỗ trợ gợi ý và đáp án.
o Mô tả thách thức rõ ràng, dễ hiểu.
o Hỗ trợ debug, phím tắt, retrieve code, reset code.
o Code editor có hỗ trợ thay đổi theme, font.
o Có khu vực cho phép người chơi trao đổi về thách thức.
o Số lượng test case cực nhiều.
Học tập:
o Các khóa học liên quan đến nhiều chủ đề khác nhau.
o Khóa học được chia ra nhiều phần rõ ràng, chi tiết.
o Chia sẻ kinh nghiệm cho xử lý thách thức cho người dùng.
Thi đấu:
o Số lượng cuộc thi phong phú.
o Có bảng xếp hạng.
o Bảng xếp hạng thể hiện thông tin rõ ràng thời gian, tình trạng làm bài của từng thách thức.
Phỏng vấn:
o Các bộ thách thức phong phú của nhiều công ty lớn trên thế giới.
1.1.1.3. Kết luận
LeetCode được sử dụng phổ biến bởi nhiều công ty lớn trong thế giới. Hệ thống đem lại một trải nghiệm thú vị cho người dùng. Tuy nhiên, vẫn còn vài điểm mà nhóm cảm thấy chưa tốt khi trải nghiệm.
Ưu điểm:
Chương 1: Tổng quan Trang 4 o Kho thách thức đa dạng phong phú.
o Các khóa học trình bày rõ ràng, dễ hiểu, các câu hỏi có tính thực hành cao.
o Chức năng làm bài hỗ trợ người dùng nhiều tính năng.
o Số lượng cuộc thi phong phú.
o Các bộ câu hỏi phỏng vấn có tính thực tiễn cao sát với nhu cầu của các công ty lớn.
o Số lượng test case cực lớn.
o Biểu đồ thống kê lịch sử luyện lập, hiển thị tình trạng làm bài với từng thách thức.
o Code Editor cho phép thay đổi theme, font. Hỗ trợ chức năng Autocomplete.
Nhược điểm:
o Chưa kiểm soát được tình trạng chia sẽ mã nguồn giữa các người dùng.
o Một số mà hình có giao diện khá đơn điệu.
1.1.2. CodeLearn
1.1.2.1. Giới thiệu
CodeLearn là hệ thống, nền tảng tương tác trực tuyến giúp lập trình viên có thể học tập, rèn luyện kỹ năng lập trình. Hệ thống được phát triển bở FPT vì vậy các thách thức khá, quen thuộc, gần gũi với lập trình viên Việt Nam.
Hình 1.2: CodeLearn
Chương 1: Tổng quan Trang 5 1.1.2.2. Tính năng
CodeLearn hỗ trợ người dùng một số tính năng chính sau:
Luyện tập:
o Thách thức được phân loại theo nhiều chủ đề như: mảng, chuỗi, truy cấn cơ sở dữ liệu.
o Hỗ trợ công cụ tìm kiếm và lọc thách thức theo tên, độ khó, tình trạng giúp cho người dùng có thể tìm kiếm thách thức phù hợp với vùng kiến thức mong muốn.
o Có bảng xếp hạng cho từng thách thức.
o Thách thức có hiển thị tình trạng giúp người dùng biết được thách thức chưa làm, đang làm và đã hoàn thành.
Làm bài:
o Hỗ trợ làm bài với nhiều ngôn ngữ.
o Hệ thống lưu trữ lịch sử nộp bài của người dùng với nhiều thông tin như tình trạng, thời gian, ngày nộp bài.
o Mô tả thách thức rõ ràng, dễ hiểu.
o Có khu vực cho phép người chơi trao đổi về thách thức.
Học tập:
o Các khóa học liên quan đến nhiều chủ đề khác nhau.
o Khóa học được chia ra nhiều phần rõ ràng, chi tiết.
o Chia sẻ kinh nghiệm cho xử lý thách thức cho người dùng.
o Các bộ câu hỏi trắc nghiệm đa dạng.
Thi đấu:
o Bảng xếp hạng real-time.
o Bảng xếp hạng thể hiện thông tin rõ ràng thời gian, tình trạng làm bài, số lần nộp bài của từng thách thức.
1.1.2.3. Kết luận
CodeLearn là một trong số ít các hệ thống hỗ trợ các lập trình viên luyện tập và nâng cao khả năng lập trình được phát triển bởi công ty từ Việt Nam mà vẫn không thua kém gì các hệ thống đã có chỗ đứng trong thị trường.
Chương 1: Tổng quan Trang 6
Ưu điểm:
o Kho thách thức đa dạng phong phú.
o Các khóa học trình bày rõ ràng, dễ hiểu, các câu hỏi có tính thực hành cao.
o Chức năng làm bài hỗ trợ người dùng nhiều tính năng.
o Biểu đồ thống kê lịch sử luyện lập, hiển thị tình trạng làm bài với từng thách thức.
Nhược điểm:
o Chưa kiểm soát được tình trạng chia sẽ mã nguồn giữa các người dùng.
o Code Editor chưa hỗ trợ nhiều tính năng.