Chú ý nếu đọc thấy dài dòng, các bạn scroll xuống dưới xem phần bôi vàng và góp ý nội dung luôn nhé.
Để đáp ứng mong muốn trở thành lập trình viên nói chung và lập trình Java nói riêng, Techmaster cứ 2 tháng lại mở một khóa học Java. Nhu cầu học Java của các học viên rất khác nhau:
- Học cho biết vì từ trước đến giờ chưa bao giờ lập trình. Nghe nói học Java căn bản nên đi học. (>20 bạn).
- Học để có thêm kinh nghiệm thực hành nhiều hơn vì ở trường đại học cũng học Java nhưng chả hiểu gì và không có thực hành (~ 25 bạn).
- Học để đi xin việc, đi làm (35 bạn).
- Học Java để học tiếp lập trình Android (~ 13 bạn)
- Học để làm giảng viên dạy môn lập trình JAVA ở một số trường đại học, cao đẳng địa phương (2 bạn).
- Học chuẩn bị kiến thức trước khi đi du học (~ 12 bạn)
Sở dĩ tôi có thông kê như vậy vì bất kỳ học viên nào đăng ký học tôi đều hỏi mấy câu:
- Học để làm gì?
- Tại sao chọn học Java mà không phải làm môn khác?
- Bạn đang làm gì? học gì? Bạn biết đến ngôn ngữ Java từ đâu và từ ai?...
Sau 8 khóa học Java được mở: 6 khóa do thầy Nhữ Đình Thuận dạy, 2 khóa do thầy Đỗ Minh Hiền dạy. Tất cả chúng tôi (Thuận, Hiền, Cường) đều chưa hài lòng với nội dung giáo trình giảng dạy. Bởi vì:
- Dạy ngắn quá (<17 buổi) thì phải thực dụng, dạy ngay trên các ví dụ mẫu chạy được. Học viên sướng vì thấy ngay kết quả. Học ít buổi, đóng ít tiền là điểm lợi. Nhưng căn bản lại không vững. Chưa kịp xây dựng tư duy phân tích yêu cầu, giải quyết vấn đề, tất nhiên là kỹ năng thiết kế ứng dụng là không thể thì lớp đã học xong. Cái này có lẽ hợp cho bạn nào đã lập trình ngôn ngữ khác, đã có những kỹ năng lập trình, tư duy logic viết mã đã hình thành, chỉ cần biết Java làm được gì để chuyển đổi. Còn với dân ngoại đạo thì sẽ có 2 kết cục:
- Hóa ra lập trình khó hơn mình tưởng, học một khóa ngắn cho biết rồi thôi, đỡ lãng phí tiền và thời gian nếu đăng ký học khóa học dài. Tỷ lệ này chiếm 65%
- Lập trình có vẻ hay nhỉ, mình cũng nắm được vài thứ. Sau khóa này, học thêm 1-2 khóa nữa để nắm rõ hơn. Đối tượng này thường là các anh em yêu tin học, nhưng khi thi đại học không đủ điểm vào khóa tin hoặc bị bố mẹ bắt học ngành không thích. Nay không thể kìm lòng được học phát cho thỏa lòng. Tỷ lệ này chiếm 35%. Các anh em này thường học rất máu lửa, chăm chỉ, nhiệt huyết. Mình chưa thấy trong nhóm này chưa có ai không xin được việc đúng ý muốn. Vì họ đến với lập trình bằng tình yêu đích thực.
- Dạy vừa (> 30 buổi). Mỗi tuần học 2 buổi. Cần khoảng 5 tháng để học chọn khóa học. Sau khi học xong, học viên còn phải làm đồ án tốt nghiệp. Tỷ lệ tốt nghiệp được chỉ được 20-25 %. Chỉ cần học hết đến buổi 30 đã là thành công. Vì một buổi học tại Techmaster kéo dài 3 tiếng, nghỉ giữa giờ 10 phút, nghe giảng, thảo luận, code, mọi thứ diễn ra rất khẩn trương. Nếu không theo được, thì chỉ cần 2 buổi nghe không hiểu thì đúng là như tra tấn. Do đó các học viên học đến buổi 30 thì cũng thu lượm được khá kiến thức, kỹ năng để xin đi thực tập ở một công ty phần mềm với mức lương thực tập 3-4 triệu VND/tháng. Những bạn làm đồ án tốt nghiệp, bảo thành công thì rất ngon, có thể xin những việc có mức lương tốt hơn. Nhu cầu tuyển dụng lập trình viên Java ở Hà nội, Hồ Chí Minh ngày càng tăng. Lập trình Android cần Java, hệ thống web application, ứng dụng doanh nghiệp lớn: ngân hàng, tài chính, đặc biệt là gia công cũng cần.
Thực ra để lập trình Java nghiêm túc, nếu chỉ học 5 tháng cũng chỉ ở mức sơ đẳng thôi. Chứ có gì nhiều nhặn
. Các bạn còn chưa học cấu trúc dữ liệu và giải thuật mà chỉ học về mảng , vài loại collection thường dùng, hiểu sâu về Asynchronous programming, concurrent programming thì phải qua nhiều ví dụ cụ thể, thực tế hơn nữa. Hay như lập trình web application có quá nhiều framework: Play Framework, Struts, Spring MVC, Vaadin. Khoảng 3 năm trở lại đây lại nổi lên non blocking I/O framework như Netty, Akka. Cái này các web site có số lượng truy cập rất lớn...Rồi dạy lập trình kết nối cơ sở dữ liệu lại phải bổ xung kiến thức về cơ sở dữ liệu quan hệ, truy vấn SQL. Rồi các design pattern mà Java chính là cái nôi sản sinh ra. Có nên dạy mấy cái hại não này không nhỉ?
Quá ít thì ra chả biết làm gì. Cưỡi ngựa xem hoa. Quá nhiều thì bội thực. Nhiều bạn xin được việc rồi mà lớp vẫn chưa kết thúc. Trong một thời gian dài, trước mỗi khóa học Java, tôi thường tranh luận với thầy Thuận và thầy Hiền. Chủ đề vẫn là: Java 8 có Lamda, concurrent, parallel collection, dạy đi, dạy cái cũ mãi, chán rồi. Bổ xung đi, dạy tới đi, không là lạc hậu, học viên họ chán các thầy đó. Quả thực tôi tạo ra áp lực rất lớn cho các thầy. Trong bối cảnh, các thầy vẫn phải đi làm, lập trình và thậm chí đang bảo trì các hệ thống Java version 6 viết từ 4-5 năm về trước.
Sang năm 2015, để nội dung khóa học bổ ích, thú vị và thực dụng hơn nữa, chúng tôi quyết định để mở nội dung giáo trình trước khi khóa học bắt đầu. Dự kiến như dưới đây, bạn nào muốn đóng góp ý tưởng, nội dụng gì xin email trực tiếp cho tôi, cuong@techmaster.vn. Cảm ơn các bạn rất nhiều.
Tên học phần | Thứ tự buổi học | Số giờ học (h) | Nội dung đào tạo |
Phần 1: Tổng quan | 1 | 3 | Chương 1: Lịch sử phát triển công nghệ JAVA |
Chương 2: Tổng quan về JAVA SE? | |||
Bài tập về nhà 1: Viết và thực thi hàm main cho chương trình mã hóa mật khẩu | |||
2 | 3 | Chương 3: Thư viện .jar, đóng gói bảo vệ sourcecode sử dụng Proguard | |
Bài tập về nhà 2: Chạy ví dụ tìm hiểu thứ tự nạp Class trên Compile-time libraries của Netbeans | |||
Phần 2: Core Java cơ bản | 3 | 3 | Chương 4: Lập trình hướng đối tượng |
Chương 5: Các thành phần cơ bản của Java | |||
Bài tập về nhà 3: Thiết kế Class theo lập trình hướng đối tượng | |||
4 | 3 | Chương 6: Mảng dữ liệu 1 chiều và nhiều chiều, các thuật toán sắp xếp | |
Bài tập về nhà 4: Tạo mảng dữ liệu, đếm phần tử và sắp xếp phần tử | |||
5 | 3 | Chương 7: Mô tả và quyền truy cập đối tượng | |
Chương 8: Các toán tử và phép gán | |||
Bài tập về nhà 5: Sử dụng Swing thiết kế giao diện đăng nhập tài khỏa và mật khẩu. | |||
6 | 3 | Chương 9: Java Doc và các design pattern thường dùng | |
Bài tập về nhà 6: Viết một thư viện theo chuẩn design pattern export & import Java doc. | |||
7 | 3 | Chương 10: Điều khiển luồng, ngoại lệ và xác nhận | |
Chương 11: Các lớp cơ bản của java | |||
Bài tập về nhà 7: Viết chương trình quản lý thời gian biểu | |||
8 | 3 | Chương 12: Xử lý lỗi (try-catch), sử dụng thư viện ghi log SLF4J | |
Bài tập về nhà 8: Thực hiện ghi log cho chương trình sau | |||
9 | 3 | Chương 13: Đối tượng Object , kiểu danh sách và Nested Class | |
Bài tập về nhà 9: Thực hành ghi log với log4j và slf4j | |||
10 | 3 | Chương 14: Build ứng dụng theo kiểu ANT và kiểu MAVEN, kết hợp 2 kiểu | |
Bài tập về nhà 10: Chuyển kiểu build MAVEN của project sau sang kiểu ANT | |||
11 | 3 | Chương 15: Xử lý kiểu dữ liệu DateTime, Calendar ghép nối String | |
Bài tập về nhà 11: Chuyển đổi dữ liệu DateTime, Calendar, String | |||
12 | 3 | Chương 16: Các thuật toán thường dùng: sắp xếp, tìm kiếm, đệ quy, mã hóa 1 chiều, mã hóa 2 chiều | |
Bài tập về nhà 12: Viết chương trình tính giá trị hàm số bất kỳ và vẽ đồ thị hàm số | |||
Phần 3: Java network | 13 | 3 | Chương 15: Những khái niệm mạng cơ bản |
Chương 16: Những khái niệm cơ bản về giao tiếp trên mạng | |||
Bài tập về nhà 13: Bạn hãy viết một ứng dụng hiển thị thông tin về máy chủ web site | |||
14 | 3 | Chương 17: Servlet và Applet | |
Bài tập về nhà 14: Bạn hãy viết một ứng dụng web servlet hiển thị giao diện website đăng nhập tài khoản. | |||
15 | 3 | Chương 18: Stream | |
Bài tập về nhà 15: Viết một ứng dụng web servlet thực hiện upload file sử dụng đầy đủ các Filter Streams | |||
16 | 3 | Chương 19: Làm việc với Excel và CSV | |
Bài tập về nhà 16: Viết ứng dụng thực hiện xuất dữ liệu ra Excel và CSV | |||
17 | 3 | Chương 20: SMTP, POP3, Gửi Email trong Java | |
Bài tập về nhà 17: Viết ứng dụng gửi Email, đính kèm file | |||
18 | 3 | Chương 20: Thread | |
Bài tập về nhà 18: Viết một thread thực hiện gửi email tự động định kỳ 30 giây 1 lần | |||
19 | 3 | Chương 21: Lớp InetAddress | |
Chương 22: Lập trình Socket cho máy khách | |||
Bài tập về nhà 19: Viết ứng dụng gửi tin nhắn giữa hai tài khoản qua socket | |||
20 | 3 | Chương 23: Lập trình Socket cho Server | |
Bài tập về nhà 20: viết ứng dụng truyền file cho nhau qua socket, sử dụng các đầy đủ các Filter Streams | |||
Phần 4: Java database | 21 | 3 | Chương 24: Tổng quan về JDBC |
Chương 25: Java với MySQL và Oracle | |||
Bài tập về nhà 21: Viết ứng dụng thực hiện thêm mới theo lô dữ liệu người dùng vào cơ sở dữ liệu MySQL | |||
22 | 3 | Chương 26: MetaData | |
Chương 27: Batch Processing & Transaction Management | |||
Bài tập về nhà 22: Viết ứng dụng thực hiện tìm kiếm người dùng theo tên trong cơ sở dữ liệu. | |||
23 | 3 | Chương 28: Sử dụng pool C3P0 quản lý kết nối, xử lý commit, rollback dữ liệu | |
Bài tập về nhà 23: Thêm mới, sửa, xóa dữ liệu sử dụng pool C3P0 | |||
24 | 3 | Chương 29: Xử lý Resultset, giới hạn dữ liệu, phân trang tìm kiếm | |
Bài tập về nhà 24: Viết hàm chuyển dữ liệu từ Resultset ra List, List, List | |||
Phần 5: Java Web | 25 | 3 | Chương 30: Lập trình Applet |
Bài tập về nhà 25: Tạo giao diện thêm mới sửa xóa dữ liệu với thư viện Swing trên Applet | |||
26 | 3 | Chương 31: Lập trình trên trang JSP | |
Bài tập về nhà 26: Tạo giao diện và xử lý dữ liệu trên trang JSP | |||
27 | 3 | Chương 40: Extjs và MySQL | |
Bài tập về nhà 27: Lập trình chức năng quản lý thông tin học sinh sử dụng Extjs và MySQL | |||
28 | 3 | Chương 41: Giới thiệu về framework vaadin | |
Chương 42: Tạo project và build một ứng dụng vaadin | |||
Bài tập về nhà 28: Build ứng dụng vaadin Bài tập về nhà 29: Viết ứng dụng web vaadin đầu tiên | |||
29 | 3 | Chương 43: Viết một ứng dụng web vaadin | |
Chương 44: User Interface component | |||
Chương 45: Managing layout | |||
Bài tập về nhà 30: Bạn hãy viết một giao diện web theo thiết kế | |||
30 | 3 | Chương 46: Theme | |
Chương 47: Vaadin SQLContainer | |||
Bài tập về nhà 31: Viết ứng dụng lấy dữ liệu từ cơ sở dữ liệu và hiển thị lên giao diện web | |||
Tốt nghiệp | Bảo vệ tốt nghiệp | ||
Tổng thời lượng | 90 |
Trích đoạn email trao đổi với thầy Hiền, giảng viên khóa học Java 30 buổi. Hiện thầy Hiền đang lập trình Java tại Viettel
Hi Hiền,
Anh đã xem syllabus của em. Anh có một số câu hỏi, em trả lời inline cho anh.
1- Nội dung em dạy, có những buổi học nào mình có thấy bài tập từ các quyển sách như Introduction to Java hoặc Java Cookbook để học viên làm bài tập. Hoặc lấy code ra thực hành?
2- Một số phần nội dung sau này, anh thấy hơi thiên và Vaadim. Một framework mà em quan tâm nghiên cứu. Đứng về góc độ học viên liệu họ có lợi nhất chưa?
3- Ở mỗi bài học, anh thấy em có đề bài tập về nhà luôn. Chi tiết thì tốt, nhưng chỉ 1 bài thì chưa đủ. Cần có khoảng 3-4 bài.
3 bài đầu cực dễ. Khuyến khích các bạn post lên FaceBook group bài giải. chia sẻ với nhau thành một nhóm cộng đồng.
4- 30 buổi không cần học gấp gáp như trước nữa. Hãy dành hẳn 9 buổi đầu để làm kỹ chapter 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 quyển Introduction to Java đã. Xác định là học viên đầu vào kém chứ không phải là ứng viên thi vào Viettel.
Nền tảng lý thuyết chắc, thực hành làm đi làm lại, có những bài tập vui vui, được giảng viên động viên. Được đồng đội giải thích hỗ trợ sẽ giúp tỷ lệ lớp tốt nghiệp cao hơn.
5- Phần dạy HTML, CSS, JavaScript em không cần phải dạy nữa. Anh chuyển tất cả các học viên lớp Java ghép vào lớp Rails do Quyết dạy. Do phần này khá độc lập với Java nên học viên lớp Java có thể học HTML, CSS, JavaScript bất kỳ điểm nào.
Em dạy 3-4 buổi để hướng dẫn học viên làm khoảng 3-4 đề tài tốt nghiệp dạng như:
- Quản lý điểm sinh viên
- Quản lý mặt hàng - phân loại
- Chương trình crawling thông tin trên web site
- ...
Em bổ xung thêm cho anh, viết luôn vào đây để anh đưa vào curriculum.
6- Curriculum thực tế, giảng viên dạy hay, nhiệt tình, nhiều bạn học đến buổi cuối sao có ít học viên làm được đồ án vậy?. Nguyên nhân rất có thể là học viên họ chưa nắm rõ làm sao để có được bằng, hoặc lúc biết được thì vào những buổi cuối cùng nên không kịp làm nữa.
Cách xử lý
A- Ngay từ buổi đầu, và tất cả các buổi tiếp theo, giảng viên cần đặt ra mục tiêu khả thi cụ thể, thực hiện được để làm dự án.
B- Hãy giúp từng học viên hoàn thành các chặng nhỏ, cho họ thấy họ đang đạt được một cái gì đó.
Mình phải truyền được cảm hứng, đam mê, và niềm vui cho học viên khi họ hoàn thành được mission đặt ra. Cái này cực kỳ quan trọng.
Bình luận