Showing posts with label tailieu. Show all posts
Showing posts with label tailieu. Show all posts

9/24/2022

Xử lý ngôn ngữ tự nhiên | Tài liệu, chuyên ngành


Xử lý ngôn ngữ tự nhiên là môn học kỹ sư mà các bạn theo bên Hệ thống thông tin (HTTT) hay Công nghệ phần mềm (CNPM) đều phải học. Thoạt nghe thì chúng ta chắc ai cũng nghỉ tới những công nghệ AI gì đó cao siêu, nhưng môn học này không dạy như vậy, môn học này dạy đúng bản chất thực sự gọi là xử lý ngôn ngữ tự nhiên. Các bạn sẽ được học về các bài toán cụ thể của xử lý ngôn ngữ tự nhiên và các phương pháp để giải quyết các bài toán này và thường là các phương pháp giải quyết bằng xác suất. Các bài toán cụ thể mà môn học đề cập tới như là: Tách từ tiếng Việt, gán nhãn từ loại, phân tích cú pháp, phân tích vai nghĩa, nghĩa từ vựng và phân giải nhập nhằng.

Nếu các bạn chưa biết thì chúng ta có một thư viện cũng khá nổi tiếng trong bài toán tách từ tiếng việt của thầy Trần Việt Trung là thư viện Pyvi, có thể nhiều bạn chưa biết hoặc cũng có thể nhiều bạn đã dùng nhưng chưa biết nó là của thầy Trung. Github của thư viện trên github của thầy Trung tại https://github.com/trungtv/pyvi.

Môn học này thường sẽ thi tự luận và thường tập chung vào các dạng bài: 

  • Tính xác suất bigram (ở chương 2, mô hình ngôn ngữ)
  • Thuật toán CKY (ở chương 5a, phân tích cú pháp)
  • Thuật toán Early (ở chương 5a, phân tích cú pháp)
  • Vẽ cây cú pháp (ở chương 5a, phân tích cú pháp)
  • Tính xác suất cây cú pháp (ơ chương 5b, phân tích xác suất)
  • ...

Tài liệu môn học: 

Về bài tập lớn, bài tập lớn các bạn sẽ phải làm về xử lý ngôn ngữ tự nhiên. Nếu đề tài mà nhóm bạn chọn bạn không chắc chắn nó là một đề tài của xử lý ngôn ngữ tự nhiên hãy hỏi lại cô giáo để tránh làm lệch đề. Các bạn có thể tham khảo danh sách đề tài của cô Lê Thanh Hương TẠI ĐÂY.

Các bạn có thể xem qua trang web về môn học Xử lý ngôn ngữ tự nhiên (NLP) của cô Lê Thanh Hương tại website cá nhân của cô Hương: https://users.soict.hust.edu.vn/huonglt/NLP/

6/01/2022

Phát triển ứng dụng đa nền tảng | Tài liệu, chuyên ngành


Phát triển ứng dụng đa nền tảng trình bày khái niệm cơ bản, quy trình, công cụ và các thư viện, framework hỗ trợ để xây dựng ứng dụng đa nền tảng và chủ yếu chính là React Native và Flutter (Cross platform). 

Nếu ai học KHMT thì ở module 1 các bạn cũng đã được học môn học "Phát triển ứng dụng cho thiết bị di động", môn học này giới thiệu về phát triển các ứng dụng trên mobile với các công cụ phát triển gốc trên Android (Native platform) bằng ngôn ngữ lập trình Java. Nếu bạn muốn biết thêm về ưu nhược điểm của Native platform và cross platform thì có thể xem qua bài viết trước đó trên website của mình: Native với Cross Platform: ưu và nhược điểm


Các bạn sẽ học được gì ở môn học này? Như bao môn khác, không thể nào qua 1 môn học mà các bạn có thể trở thành một nhà phát triển ứng dụng đa nền tảng được, môn học chỉ cung cấp cho bạn những thứ cơ bản nhất để nếu bạn nào có theo hướng này thì cũng sẽ cần tự mình nghiên cứu thêm rất nhiều hay là đi thực tập tại các công ty để có thể học hỏi thêm từ các doanh nghiệp.

Trong phát triển ứng dụng đa nền tảng các bạn sẽ được dạy tập chung chủ yếu vào các phần chính: 

  • Tổng quan và kiến trúc của thiết bị di động (kiến trúc android, kiến trúc iOS, kiến trúc đa nền tảng)
  • Dart và Flutter
  • Javascript và React native

(Tham khảo bài viết: Các điểm nhấn trong cú pháp của ES6)

Với bài tập lớn các bạn có thể tùy ý lựa chọn xây dựng ứng dụng đa nền tảng dựa trên Flutter hoặc React Native tùy ý. Các bạn đã được cung cấp sẵn backend khi làm bài tập lớn và công việc của mỗi nhóm chỉ là xây dựng ứng dụng frontend cho thiết bị di động với công nghệ đa nền tảng. Dĩ nhiên là các bạn được phép thêm các chức năng, chỉnh sửa để có một ứng dụng ưng ý hơn, thậm chí đây còn là điều bắt buộc khi trong kỳ mình học bản backend thầy đưa cho là một bản backend bị thiếu một số chức năng và thầy giáo không tìm được bản đầy đủ. Hoặc các bạn cũng có thể xây dựng một con backend mới hoàn toàn nếu có thời gian, nhưng nhớ là con backend các bạn xây dựng mới nên có các chức năng cũng phải giống với con backend mà thầy giáo cung cấp.

Môn học này có 1 số thầy giáo phụ trách như là thầy Nguyễn Mạnh TuấnNguyễn Tiến Thành,... Các bạn học thầy Tuấn thì có vẻ điểm sẽ cao hơn, học thầy Thành thì sẽ được làm các đề thi thử trước khi các bạn thi cuối kì.

Một số tài liệu dành cho môn học: 

Môn học này sẽ có 1 số kiến thức xung quanh môn học được thầy giáo hay hỏi trong quá trình học tập, mình sẽ viết thành các bài viết riêng đăng sau bài viết này vì chúng cũng là những vấn đề không nhỏ.

4/17/2022

Thuật toán pagerank xếp hạng đồ thị | Ôn tập khai phá web


Pagerank là thuật toán xếp hạng đồ thị dựa trên cấu trúc tổng quát, chúng ta có cách để tính được chính xác thứ hạng của từng đỉnh, tuy nhiên khi số đỉnh càng lớn, việc tính toán chính xác là điều gây mất thời gian và không cần thiết. Trong bài viết này mình sẽ hướng dẫn 3 cách để xếp hạng các đỉnh cho đồ thị (mình gọi nhanh là 3 thuật toán pagerank). Về lý thuyết thì các bạn có thể xem slide bài giảng của các thầy/ cô TẠI ĐÂY.

Đề bài: Cho một đồ thị có 3 đỉnh và quan hệ giữa các đỉnh như hình dưới, với d = 1 (damping factor) hãy tính toán thứ hạng của từng đỉnh.



Trong bài viết này mình giải quyết với damping factor = 1, đây là trường hợp dễ nhất trong các trường hợp, với damping factor khác 1 mình sẽ có bài viết sau giới thiệu lại, vì damping factor khác 1 chúng ta cần lắm rõ lý thuyết và công thức một tí, tuy nhiên thì cơ bản vẫn sẽ tương tự.

1. Tính chính xác pagerank bằng hệ phương trình

Ta có hệ phương trình sau: 

$\begin{cases}r_a = r_c\\r_b = r_a / 2 \\r_c = r_a / 2 + r_b & (1)\\r_a + r_b + r_c = 1\end{cases}$

Mình giải thích qua tại sao lại có hệ phương trình này nha, đầu tiên là tổng thứ hạng của tất cả các đỉnh lúc nào cũng bằng 1 rồi, vậy ta luôn có được phương trình thứ 4 là $r_a + r_b + r_c = 1$.

Tiếp theo để giải được một hệ phương trình có 3 ẩn số thì ít nhất chúng ta phải cần thêm 2 phương trình nữa, ở đây chúng ta sẽ cứ tìm ra hết các phương trình có thể.

Với phương trình đầu $r_a = r_c$, nếu viết đầy đủ thì phải là $r_a = r_c / 1$, với CA là một cạnh của đồ thị và đỉnh C có 1 bậc ra. Với phương trình thứ 2 $r_b = r_a / 2$, với AB là một cạnh của đồ thị và đỉnh A có 2 bậc ra. Với phương trình thứ 3 $r_c = r_a / 2 + r_b$, với AC, BC là một cạnh của đồ thị và A, B lần lượt có 2 và 1 bậc ra.

Tiếp theo việc giải phương trình này thì dễ rồi, chúng ta thay thế xuống phương trình cuối sẽ có: 

$r_a + r_a / 2 + r_a / 2 + r_a / 2 = 1$

$=> r_a = 2 / 5, r_b = 1/5, r_c = 2 /5 $.

Chắc là cũng có nhiều bạn thắc mắc là giải dễ như vậy tại sao lại cần cách các xấp xỉ làm gì? Mình cũng sẽ giải thích luôn là đây chỉ là ví dụ với 3 đỉnh, trong các bài toán thực tế thì một đồ thị thường lên tới hàng triệu đỉnh thì việc giải HPT để tìm ra thứ hạng chính xác là điều cực kì khó khăn và không cần thiết.

2. Tính xấp xỉ pagerank bằng thuật toán lặp

Để bắt đầu cách này trước hết chúng ta vẫn phải tìm ra hệ phương trinh $(1)$ trước nha.

Sau đó bắt đầu chúng ta khởi tạo giá trị thứ hạng cho từng đỉnh: $r_a(0) = r_b(0) = r_c(0) = 1/3$, chúng ta có thể khởi tạo bất kì giá trị nào cũng được nha, nếu khởi tạo hơi lỗi thì chúng ta sẽ phải mất nhiều lần lặp hơn mới tìm ra được điểm hội tụ, còn nếu khởi tạo tốt thì có thể chỉ mất 1,2 vòng lặp. Kí hiệu $(0)$ đằng sau mỗi $r_a, r_b, r_c$ để thể hiện cho số vòng lặp, trong trường hợp khởi tạo thì số vòng đã lặp là 0.

+ Vòng 1: 

$r_a(1) = r_c(0) / 1 = 1 / 3$

$r_b(1) = r_a(0) / 2 = 1 / 6$

$r_c(1) = r_a(0) / 2 + r_b(0) / 1 = 1 / 2$

+ Vòng 2: 

$r_a(2) = r_c(1) / 1 = 1 /2$

$r_b(2) = r_a(1) / 2 = 1/ 6$

$r_c(2) = r_a(1) / 2 + r_b(1) / 1 = 1 /3$

+ Vòng 3: 

$r_a(3) = r_c(2) / 1 = 1 / 3$

$r_b(3) = r_a(2) / 1 = 1/ 4$

$r_c(3) = r_a(2) / 2 + r_b(2) / 1 = 5 / 12$

+ Vòng 4: 

$r_a(4) = r_c(3) / 1 = 5 / 12$

$r_b(4) = r_a(3) / 2 = 1 / 6$

$r_c(4) = r_a(3) / 2 + r_b(3) / 1 = 5 / 12$

+ Vòng ...

Lặp tới bao nhiêu vòng là tùy vào yêu cầu bài toán mà thầy/ cô giáo đưa ra, còn trên thực tế chúng ta sẽ lặp tới khi nào hội tụ, tức là khi mà vòng lặp sau kết quả không đổi so với kết quả trước hoặc là thay đổi nhỏ hơn một số denta rất nhỏ do chúng ta định nghĩa ra trước.

3. Tính xấp xỉ pagerank bằng thuật toán lặp với ma trận

Lặp bằng tay như cách 2 có thể khiến các bạn rơi vào trầm cảm, cách 3 này như là một cách tóm gọn lại của cách 2 bằng ma trận vậy.

Đầu tiên vẫn là khởi tạo giá trị ban đầu $r_a = r_b = r_c = 1 / 3$

Ta có ma trận: 

$\begin{bmatrix}0 & 1/2 & 1/2\\0 & 0 & 1\\1 & 0 & 0\end{bmatrix}$

Ma trận này có được bằng cách lấy 1 chia đều cho số cạnh ra, ví dụ đỉnh A có 2 cạnh ra là AB và AC thì tương ứng vị trí của ma trận là $\begin{bmatrix}0 & 1/2 & 1/2\end{bmatrix}$, tương tự với các đỉnh còn lại.

+ Lặp vòng 1: 

$\begin{bmatrix}1/3 \\ 1/3 \\ 1/3\end{bmatrix} * \begin{bmatrix}0 & 1/2 & 1/2\\0 & 0 & 1\\1 & 0 & 0\end{bmatrix} = \begin{bmatrix}1/3 \\ 1/6 \\ 1/2\end{bmatrix}$

+ Lặp vòng 2: 

$\begin{bmatrix}1/3 \\ 1/6 \\ 1/2\end{bmatrix} * \begin{bmatrix}0 & 1/2 & 1/2\\0 & 0 & 1\\1 & 0 & 0\end{bmatrix} = \begin{bmatrix}1/2 \\ 1/6 \\ 1/3\end{bmatrix}$

+ Lặp vòng 3: 

$\begin{bmatrix}1/2 \\ 1/6 \\ 1/3\end{bmatrix} * \begin{bmatrix}0 & 1/2 & 1/2\\0 & 0 & 1\\1 & 0 & 0\end{bmatrix} = \begin{bmatrix}1/3 \\ 1/4 \\ 5/12\end{bmatrix}$

+ Lặp vòng 4: 

$\begin{bmatrix}1/3 \\ 1/4 \\ 5/12\end{bmatrix} * \begin{bmatrix}0 & 1/2 & 1/2\\0 & 0 & 1\\1 & 0 & 0\end{bmatrix} = \begin{bmatrix}5/12 \\ 1/6 \\ 5/12\end{bmatrix}$

Chúng ta có thể thấy sau 4 lần lặp, kết quả ở cách 3 tương ứng với kết quả ở cách 2.

Để nắm vững kiến thức, các bạn nên đọc thêm slide, làm thêm các bài tập về pagerank, chúc mọi người học tập tốt!

4/06/2022

Khai phá web | Tài liệu, chuyên ngành


Khai phá web là một môn tự chọn được dạy trong học phần kỹ sư của khoa học máy tính và kỹ thuật thuật máy tính. Bởi vì là một môn tự chọn nên các bạn hoàn toàn có thể chọn một môn khác thay thế môn này.

Với khai phá web các bạn sẽ được nhắc lại các kiến thức về Machine learning, Deep learning, một số các phần mới như là tìm kiếm thông tin. Ngoài ra thì các bạn sẽ được đi vào và giới thiệu tới các bài toán cụ thể như là: phân tích liên kết, phân tích quan điểm, trích rút thông tin, khai phá truy vấn & quảng cáo trực tuyến. 

Khi học về những năm cuối, nhất là những bạn theo định hướng hệ thống thông tin thì các bạn sẽ thấy các môn học có sự giao nhau rất nhiều, ví dụ như môn nhập môn khoa học dữ liệu các bạn sẽ thấy có 1 ít về các kiến thức Machine Learning đã được học, 1 ít kiến thức về tìm kiếm thông tin bên khai phá web, 1 ít kiến thức về bigdata đã được học ở lưu trữ và xử lý dữ liệu lớn cộng với 1 phần kiến thức mới là trực quan hóa dữ liệu. Điều này thì cũng hợp lý thôi, các môn học hay các lĩnh vực trong CNTT nói chung và KHMT nói riêng thì có sự liên quan chặt chẽ với nhau chứ không thể nói là môn này, lĩnh vực này tách riêng biệt hoàn toàn với các khác được. Tuy nhiên thì mỗi môn sẽ tập chung vào một phần chính như khi các bạn học nhập môn AI, nhập môn ML các bạn sẽ được tập chung chính vào giới thiệu các thuật toán, cách làm, làm như nào, tối ưu như nào, tức là học sâu về phần mô hình, còn khi học khai phá web các bạn sẽ được giới thiệu sâu hơn về phần ứng dụng như là ứng dụng các mô hình này vào các bài toán thực tế, còn trong nhập môn khoa học dữ liệu các bạn sẽ được học sâu hơn về phần xử lý và trực quan hóa dữ liệu.

Về nhận xét của mình về môn học thì môn học là một môn cũng khá hay, các bạn có thể chọn nó làm 1 trong 3 môn tự chọn kỹ sư của mình.

Thầy dạy môn này có thầy Nguyễn Kiêm Hiếu, thầy thì giao khá nhiều bài tập trong tuần, cũng như các bạn có thể phải làm các bài quizz nhỏ từng tuần. Tuy nhiên thì thầy chấm điểm cũng khá thoáng, học thầy các bạn cũng sẽ được nghe các buổi seminar do sinh viên của thầy trình bày cũng khá hay và thú vị. Các bạn có thể theo dõi website cá nhân của thầy Hiếu tại đây: https://users.soict.hust.edu.vn/hieunk/

Tài liệu môn học

- Slide môn học khai phá web: TẢI VỀ SLIDE
- Đề thi tham khảo khai phá web: TẢI VỀ ĐỀ THI THAM KHẢO

2/06/2022

Nhập môn học máy và khai phá dữ liệu | Tài liệu, sở sở ngành CNTT


Học máy là một lĩnh vực của trí tuệ nhân tạo liên quan tới việc nghiên cứu và xây dựng các kỹ thuật cho phép các hệ thống học tự động để giải quyết những vấn đề cụ thể. Nếu bạn đã học qua môn nhập môn trí tuệ nhân tạo thì ắt hẳn đã có một chương giới thiệu về học máy và 2 bài toán với 2 phương pháp kinh điển trong học máy đó là phân loại văn bản với Naive Bayes và phân cụm với KNN. Với môn học này, chúng ta sẽ được tìm hiểu kĩ hơn, sâu hơn, được giới thiệu nhiều phương pháp hơn, cách làm quen và sử dụng thư viện,...

Với các bạn học kỹ thuật máy tính thì môn này thuộc học phần kỹ sư và các bạn cũng không được học môn nhập môn trí tuệ nhân tạo nên có thể là một môn mới mẻ, còn đối với các bạn học khoa học máy tính, mặc dù có 2 bài nói về học máy thôi nhưng một số thầy/cô thường nói nhiều hơn về những gì được đề cập trong slide nên có thể những kiến thức trong môn học này có một số đã là kiến thức cũ mà các bạn đã từng được học qua. 

Môn này có một số thầy/cô dạy và các thầy/cô đều dạy rất hay, mỗi người đều có những nét đặc biệt riêng. Nếu bạn học thầy Nguyễn Nhật Quang thì bạn sẽ được học khá bài bản, tuy nhiên thì thầy chỉ dạy tập chung những gì trong slide, nếu bạn không có định hướng theo AI thì học thầy Quang là khá hợp lí, nếu bạn học thầy Ngô Văn Linh thì sẽ được nghe thêm rất nhiều kiến thức mà thầy nói thêm, các vấn đề nâng cao mà mình nghĩ bạn nào có định hướng theo AI thì nên học thầy Linh.

Thầy Khoát có một kênh youtube và các video bài giảng về học máy, các bạn muốn xem và học trước có thể xem tại: https://youtu.be/jc1wo_8VA1w

BÀI TẬP LỚN

Bài tập lớn thì sẽ xung quanh các vấn đề về học máy rồi, nếu các bạn học thầy Quang thì yêu cầu về bài tập lớn sẽ đơn giản hơn khi học thầy Linh, các chủ đề bài tập lớn xoay quanh các chủ đề kinh điển như là: 
- Các bài toán phân loại (phân loại văn bản, phân loại thư rác, phân loại hoa iris)
- Các bài toán nhận dạng (nhận dạng chữ viết, nhận dạng khuôn mặt, nhận dạng biển số xe,...)
- Các bài toán dự đoán (dự đoán giá nhà, dự đoán giá xe máy) 
- ...

TÀI LIỆU MÔN HỌC

- Tải về slide thầy Quang: TẢI VỀ SLIDE

- Tải về slide thầy Linh: TẢI VỀ SLIDE

THI CUỐI KÌ

Về đề thi cuối kì, do ảnh hưởng của dịch nên chúng ta cũng chưa thể biết trước là sẽ thi cuối kì dạng trắc nghiệm hay tự luận nên các bạn phải chú ý thông báo của thầy/cô giáo trong mail hoặc trên qldt. 

1/27/2022

Phân tích và thiết kế hệ thống | Tài liệu, cơ sở ngành CNTT


Nếu các bạn học môn công nghệ phần mềm trước thì có lẽ các bạn đã được giới thiệu và làm quen trước về một số các biểu đồ như biểu đồ use-case, biểu đồ luồng, biểu đồ hoạt động, biểu đồ lớp,... Với môn phân tích và thiết kế hệ thống thì chính xác là các bạn được học lại nhưng mà đi một cách kĩ càng hơn khi phân tích và vẽ các biểu đồ trên.

Ở OOP thì các bạn được làm quen với 2 biểu đồ là biểu đồ use-case và biểu đồ lớp, sang tới công nghệ phần mềm các bạn được giới thiệu và làm quen với nhiều các loại biểu đồ hơn và tới phân tích thiết kế hệ thống các bạn sẽ được làm quen với gần như tất cả các loại biểu đồ đó là: 

  • Biểu đồ lớp 
  • Biểu đồ đối tượng
  • Biểu đồ triển khai 
  • Biểu đồ gói 
  • Biểu đồ thành phần 
  • Biểu đồ cấu trúc đa hợp
  • Biểu đồ ca sử dụng (use-case)
  • Biểu đồ hoạt động 
  • Biểu đồ trình tự 
  • Biểu đồ giao tiếp 
  • Biểu đồ máy trạng thái
  • Biểu đồ thời gian
  • Biểu đồ tổng quan tương tác

Mỗi biểu đồ sẽ đặc trưng cho một giai đoạn, góc nhìn trong quy trình phát triển phần mềm của bạn. Theo mình được biết thì việc vẽ những biểu đồ này sẽ nằm trong phần công việc của một BA (Business Analyst), dĩ nhiên là một lập trình viên ít nhất cũng phải nhìn được hiểu các biểu đồ này.

Môn học này là môn đi học chỉ học biểu đồ và làm bài tập lớn hay đi thi thì cũng chỉ thi vẽ biểu đồ thôi. Nhìn chung thì bước phân tích và thiết kế là một bước rất quan trọng trong quy trình phát triển phần mềm, tuy nhiên đôi khi đi làm ở công ty hay là các bài tập lớn ở trường thì chúng ta thường bỏ qua bước này mà bước ngay vào bước viết mã nguồn cho phần mềm sau đó dùng các công cụ để gen lại các biểu đồ dí vào báo cáo cho có, nhưng đấy là các môn khác thôi với môn này các bạn làm bài tập lớn sẽ không cần code và chỉ phải phân tích và thiết kế. 

Môn này có một số thầy dạy, tuy nhiên mình thấy thầy dạy hay nhất là thầy Nguyễn Nhật Quang, thầy dạy rất tỉ mỉ, giải thích rõ từng phần một, điểm thì thầy cho cũng khá thoải mái, các bạn có thể xem qua website cá nhân của thầy Quang TẠI ĐÂY.

Một số tài liệu dành cho môn học: 

- Slide bài giảng - thầy Nguyễn Nhật Quang: TẢI VỀ SLIDE BÀI GIẢNG

- Một số đề thi cuối kì môn phân tích và thiết kế hệ thống: TẢI VỀ ĐỀ THI THAM KHẢO

Một số tài liệu tham khảo thêm: 

- Thực hành về xây dựng biểu đồ use-case: TẢI VỀ TÀI LIỆU

- Thực hành về xây dựng biểu đồ lớp, biểu đồ trạng thái: TẢI VỀ TÀI LIỆU

- Tham khảo biểu đồ use-case chi tiết: TẢI VỀ TÀI LIỆU

Tài liệu khác: 

- Tài liệu phân tích thiết kế hệ thống thông tin - PTIT: TẢI VỀ GIÁO TRÌNH

1/24/2022

Tổng hợp các câu hỏi về Apache Spark | Ôn tập cuối kì môn Lưu trữ và xử lý dữ liệu lớn


Xem phần trước: Tổng hợp các câu hỏi về Apache Hadoop | Ôn tập cuối kì môn Lưu trữ và xử lý dữ liệu lớn


Số thứ tự Câu hỏi Đáp án Câu Trả Lời
1 Spark được phát triển bằng ngôn ngữ nào A. Java
B. Scala
C. Python
D. R
B
2 Trong Spark Streaming dữ liệu có thể lấy từ những nguồn nào? A. Kafka
B. Flume
C. Kinesis
D. Tất cả
D
3 Apache Spark có API cho các ngôn ngữ: A. Java
B. Scala
C. Python
D. Tất cả
D
4 Đâu không phải là một thành phần trong hệ sinh thái Spark? A. Sqoop
B. GraphX
C. MLlib
D. BlinkDB
A
5 Cấu trúc dữ liệu cơ bản của Spark Streaming là gì? A. DStream
B. RDD
C. Shared Variable
D. Không có trong số đáp án trên
A
6 Thuật toán nào sau đây không có trong Spark MLlib A. Streaming Linear Regression
B. Streaming KMeans
C. Tanimoto distance
D. Không có trong các phương án trên
C
7 DStream là gì? A. Chuỗi các RDD liên tục
B. Chuỗi Dataframe liên tục
C. Chuỗi Dataset liên tục
D. Không có trong các phương án trên
A
8 Đâu không phải là một đặc điểm của Spark A. Hỗ trợ xử lý tính toán trên RAM
B. Tính chịu lỗi
C. Tiết kiệm chi phí
D. Tương thích với hệ thống lưu trữ tệp khác
C
9 Đâu không phải là một ouput operation của DStream A. SaveAsTextFiles
B. ForeachRDD
C. SaveAsHadoopFiles
D. ReduceByKeyAndWindow
D
10 Apache Spark có khả năng xử lý hàng loạt khi chạy trên RAM nhanh hơn bao nhiêu lần so với MapReduce A. 10
B. 20
C. 100
D. 200
C
11 Đâu là lý do khiến Spark nhanh hơn MapReduce A. Công cụ thực thi DAG và tính toán trên RAM
B. Hỗ trợ cho việc sử dụng nhiều ngôn ngữ khác nhau như Scala; Java; Python; R
C. RDD là bất biến và có khả năng chịu lỗi cao
D. Không có trong các phương án trên
A
12 Điều nào sau đây là đúng khi nói về RDD A. RDD là một mô hình lập trình
B. RDD là một tập hợp đối tượng bất biến
C. Là database
D. Không có trong các phương án trên
B
13 Khả năng chịu lỗi của RDD thể hiện qua đâu? A. Tính bất biến của RDD
B. DAG (Directed Acyclic Graph)
C. Lazy-evaluation
D. Không có trong các phương án trên
14 Đầu vào dữ liệu cho chương trình Spark có thể là: A. Local files
B. HDFS; NFS
C. Amazon S3; Elasticsearch
D. Cả 3 phương án trên
D
15 Đâu là lệnh lưu dữ liệu ra ngoài chương trình Spark? A. input.saveAsTextFile('file:///usr/zeppelin/notebook/dataset/new.txt')
B. input.saveAsTextFile('/usr/zeppelin/notebook/dataset/new.txt')
C. input.saveAs('file:///usr/zeppelin/notebook/dataset/new.txt')
D. input.saveAsTextFile:'file:///usr/zeppelin/notebook/dataset/new.txt'
A
16 Đâu là cách submit đúng một job lên Spark cluster hoặc chế độ local A. ./spark-submit wordcount.py README.md
B. ./spark-submit README.md wordcount.py
C. spark-submit wordcount.py README.md
D. Phương án A và C
A
17 Câu lệnh MapReduce trong Spark dưới đây chia mỗi dòng thành từ dựa vào delimiter nào: input.flatMap(lambda x: x.split('\t')).map(lambda x: (x;1)).reduceByKey(add) A. Tab
B. Dấu cách
C. Dấu hai chấm
D. Dấu phẩy
A

Tham khảo: https://data-flair.training/

11/01/2021

Tổng hợp các câu hỏi về Apache Hadoop | Ôn tập cuối kì môn Lưu trữ và xử lý dữ liệu lớn


Câu 1: Mục tiêu chính của Apache Hadoop 

Lưu trữ dữ liệu khả mở và xử lý dữ liệu mạnh mẽ. Tiết kiệm chi phí khi lưu trữ và xử lý lượng dữ liệu lớn.

Bạn có thể xem thêm chi tiết mục tiêu của Hadoop [TẠI ĐÂY]

Câu 2: Hadoop giải quyết bài toán chịu lỗi thông qua kỹ thuật gì

- Hadoop chịu lỗi thông qua kỹ thuật dư thừa

- Các tệp tin được phân mảnh, các mảnh được nhân bản ra các node khác trên cụm

- Các công việc cần tính toán được phân mảng thành các tác vụ độc lập 


Câu 3: Mô tả cách thức 1 client được dữ liệu trên HDFS

Client truy vấn namenode để biết được vị trí các chunks. Namenode trả về vị trí các chunks. Client kết nối song song với các datanode để đọc các chunk.

Bạn có thể xem chi tiêt quá trình đọc dữ liệu này [TẠI ĐÂY]


Câu 4: Mô tả cách thức 1 client ghi dữ liệu trên HDFS

Client kết nối tới namenode để chỉ định khối lượng dữ liệu cần ghi. Namnode chỉ định vị trí các chunk cho client. Client khi chunk tới datanode đầu tiền, sau đó các datanode tự động thực thi nhân bản. Quá trình kết thúc khi tất cả các chunk và nhân bản đã được thực thi thành công. 

Bạn có thể xem chi tiêt quá trình ghi dữ liệu này [TẠI ĐÂY]


Câu 5: Các thành phần chính trong Hadoop Ecosystem

Hadoop Ecosytem là một nền tảng cung cấp các giải pháp để lưu trữ và xử lý lượng lớn dữ liệu. 

Các thành phần chính trong Hadoop Ecosytem là: 

- HDFS 

- Mapreduce framework 

- YARN

- Zookeeper


Câu 6: Cơ chế chịu lỗi của datanode trong HDFS

Sử dụng cơ chế heartbeat, định kì datanode sẽ gửi thông báo về trạng thái cho namenode. Khoảng thời gian mặc định mà datanode gửi heartbeat về cho namenode là 3s, sau 3s mà datanode không có gửi thông tin về cho namenode thì mặc định namenode coi là node đó đã chết và nhiệm vụ chưa hoàn thành của node đó sẽ được trao lại cho node mới.

Để cấu hình lại thời gian heartbeat thì bạn có thể thêm đoạn XML sau vào trong file hdfs-site.xml như sau: 

<property>

<name>dfs.heartbeat.interval</name>

<value>3</value>

</property>



<property>

<name>dfs.namenode.heartbeat.recheck-interval</name>

<value>300000</value>

</property>

Bạn có thể xem các cấu hình mặc định của hdfs-site.xml [TẠI ĐÂY]


Câu 7: Cơ chế tổ chức dữ liệu của datanode trong HDFS

Files trong HDFS được chia thành các khối có kích thước cố định được ( block-sized chunks) gọi là data block. Các block được lưu trữ như các đơn vị độc lập (kích thước của 1 block mặc định là 128MB). 

 Các chunk là các tập tin hệ thống trong tập tin cục bộ của máy chủ datanode


 Xem thêm[Vấn đề gì xảy ra nếu lưu trữ các file nhỏ trên HDFS?]

 

Câu 8: Cơ chế nhân bản dữ liệu trong HDFS

Các block của file được nhân bản để tăng khả năng chịu lỗi. Namenode là node đưa ra tất cả các quyết định đến việc nhân rộng các khối. 


Câu 9: HDFS giải quyêt bài toán single-point-of-failure cho namenode bằng cách nào 

Sử dụng Secondary Namenode theo cơ chế active-passive. Secondary Namenode chỉ hoạt động khi có vấn đề với Namenode

Các bạn có thể xem chi tiết về Secondary Namenode [TẠI ĐÂY]


Câu 10: 3 chế độ mà Hadoop có thể chạy? 

- Standalone mode: đây là chế độ mặc định, Hadoop sử dụng local FileSystem và 1 tiến trình Java duy nhất để chạy các dịch vụ Hadoop.

- Pseudo-distributed mode: triển khai Hadoop trên 1 node để thực thi tất cả các dịch vụ.

- Fully-distributed mode: triển khai Hadoop trên 1 cụm máy với namenode và datanode.


Câu 11: Giải thích Bigdata và tiêu chí 5V của Bigdata

Bigdata là thuật ngữ chỉ tập dữ liệu lớn và phức tạp và rất khó để xử lý bằng các công cụ dữ liệu quan hệ, các ứng dụng xử lý dữ liệu truyền thống. 

5V trong Bigdata là: 

- Volume: Volume thể hiện lượng dữ liệu đang tăng với tốc độ cấp số nhân, tức là bằng Petabyte và Exabyte.

- Velocity: Velocity đề cập đến tốc độ dữ liệu đang phát triển, rất nhanh. Hôm nay, dữ liệu của ngày hôm qua được coi là dữ liệu cũ. Ngày nay, mạng xã hội là một yếu tố đóng góp lớn vào tốc độ phát triển của dữ liệu.

- Variety: Variety đề cập đến sự không đồng nhất của các kiểu dữ liệu. Nói cách khác, dữ liệu được thu thập có nhiều định dạng như video, âm thanh, csv, v.v. Vì vậy, các định dạng khác nhau này đại diện cho nhiều loại dữ liệu.

- Veracity: Veracity đề cập đến dữ liệu bị nghi ngờ hoặc không chắc chắn của dữ liệu có sẵn do dữ liệu không nhất quán và không đầy đủ. Dữ liệu có sẵn đôi khi có thể lộn xộn và khó tin cậy. Với nhiều dạng dữ liệu lớn, chất lượng và độ chính xác rất khó kiểm soát. Khối lượng thường là lý do đằng sau sự thiếu chất lượng và độ chính xác của dữ liệu.

- Value: Tất cả đều tốt và tốt khi có quyền truy cập vào dữ liệu lớn nhưng trừ khi chúng ta có thể biến nó thành một giá trị.

Tham khảo các câu hỏi về Hadoop tại: https://data-flair.training/

Bài viết được tham khảo tại: https://demanejar.github.io/


10/05/2021

Công nghệ web và dịch vụ trực tuyến | Tài liệu, chuyên ngành


Công nghệ web và dịch vụ trực tuyến và một môn chuyên ngành, nằm trong module 4, module phát triển ứng dụng nghiệp vụ. Trong môn này các bạn sẽ được học tất cả những thứ có thể làm ra 1 trang web từ các ngôn ngữ phát triển phía máy khách như HTML, CSS, JS, các ngôn ngữ phát triển phía máy chủ PHP, Java, Nodejs, học về XML, DTD, học về các mô hình lập trình như MVC. Và dĩ nhiên rồi, vì kiến thức là rất nhiều mà khoảng thời gian học chỉ có 1 kì học nên có những thứ sẽ học kĩ, nhưng có những thứ chỉ mang tính chất giới thiệu là chính.

Ngôn ngữ backend chính được dạy trong môn học là PHP, vì thế nếu các bạn sử dụng các ngôn ngữ khác thì phải tự mày mò tìm hiểu là chủ yếu.

Nhìn chung thì mình thấy lý thuyết của môn này học cũng không cuốn hút, đa phần là lượng kiến thức mà các bạn đã biết chỉ có 1 số ít là các kiến thức mới thì lại học rất ít. Tuy nhiên thì bài tập lớn môn này rất là mở và sẽ thỏa mãn được đam mê của các bạn, thường và hầu hết các thầy/ cô dạy môn này sẽ cho mọi người xây dựng 1 trang web bất kì nào, nếu các bạn học Đào Thành Chung thì thầy sẽ không cho sử dụng framework trong bài tập lớn vì thế nếu bạn nào học thầy Chung thì xem xét nha, tuy nhiên thầy cho điểm rất thoải mái, nhóm có điểm bài tập lớn đứng đầu còn được miễn thi.

Ngoài ra môn này sẽ có bài tập hàng tuần về kiến thức đã học trong tuần đó, các thức kiểm tra bài tập tuần của mỗi thầy/cô là khác nhau nhưng nói chung là các bạn phải làm bài tập tuần nha. 

Tóm lại mình nhìn nhận về môn này là rất dễ kiếm điểm, các bạn có thể không cần học nhiều đâu, chỉ cần dựa vào kiến thức mà các bạn đã có về web từ trước tới giờ cộng với ôn tập 1 tí thôi là A+ rồi.

Tài liệu

  • Slide công nghệ web và dịch vụ trực tuyến mới từ viện: LINK 1 | LINK 2
    (Đường link 1 là slide mới hơn mà mình nhận được, nhưng link 2 lại có thêm 1 số slide về servlet và 1 số thứ khác mà các bạn có thể tham khảo thêm)

  • Slide công nghệ wb và dịch vụ trực tuyến - thầy Đào Thành Chung: TẢI VỀ SLIDE

Bài tập lớn

Bài tập lớn như mình đã nói bên trên là đề tài tự do và các bạn hoàn toàn có thể chọn làm bất cứ cái gì mà các bạn thích. Sau khi làm xong các bạn có thể đẩy web lên các host, việc đẩy web lên host và demo trực tiếp để mọi người cùng vào thử nghiệm sẽ được các thầy/cô đánh giá cao và ưu ái hơn trong việc cho điểm, dĩ nhiên là hơn hết các bạn phải tập chung vào sản phẩm của mình, còn thời gian hãy nghĩ tới việc này. Có nhiều thầy/cô không hẳn là thích giao diện đẹp đâu, vì các thầy/cô đều nghĩ đẹp hầu như là các bạn đi cop, vì thế hãy cố gắng tập chung vào logic và phần backend nha, giao diện có thể phèn phèn 1 tí nhưng website có nhiều chức năng sẽ là 1 điểm mạnh. Dĩ nhiên là phần giao diện cũng phải đáp ứng được các yêu cầu của thầy giáo đưa ra như responsive,...

Mình sẽ có 1 bài hướng dẫn đẩy 1 website viết bằng PHP lên host, các bạn theo dõi nha.

Cuối cùng là bạn có thể tham khảo 1 project của mình tại đây nha: https://github.com/trannguyenhan/selling-computer (mặc dù giao diện không đẹp bằng các nhóm khác tuy nhiên project may mắn có điểm cao nhất)

9/21/2021

Tính toán tiến hóa | Tài liệu, chuyên ngành


Trong CTDL hay thuật toán ứng dụng các bạn đã biết tới bài toán người du lịch (TSP) là 1 bài toán NP-Khó, tức là để có thể đưa ra lời giải của bài toán chúng ta chỉ có cách là duyệt toàn bộ. Tuy nhiên thì điều này chỉ thỏa mãn và hợp lí với những bài mà N nhỏ khi N lớn thì không gian tìm kiếm tăng nhanh và việc duyệt toàn bộ để tìm ra kết quả tối ưu là gần như không thể. Trong các môn CTDL hay thuật toán ứng dụng chúng ta cũng chỉ được làm quen bài toán TSP với những giá trị N nhỏ để thực hiện duyệt toàn bộ tìm ra lời giải tối ưu của bài toán.

Tuy nhiên khi N tăng thậm chí là N rất lớn chúng ta vẫn có thể tìm được lời giải tối ưu của bài toán này (chỉ là có thể thôi nha) bằng các giải thuật tiến hóa. Các giải thuật tiến hóa đang được phát triển và sử dụng rộng rãi trong việc giải quyết các bài toán tối ưu NP-Khó, NP-Đầy đủ.


Có thể các bạn hơi ngỡ ngàng nhưng tính toán tiến hóa là 1 nhánh của trí tuệ nhân tạo nghiên cứu các giải thuật tối ưu tìm kiếm dựa trên học thuyết tiến hóa Darwin.

Có nhiều bạn đọc từ đầu tới giờ cứ tưởng như là chúng ta đang làm quen với môn sinh học mất, nhưng chỉ là lấy ý tưởng từ sinh học thôi nha, giải thuật tiến hóa là các giải thuật mình thấy rất là hay và lab cô Bình là lab tối ưu làm rất nhiều về giải thuật tiến hóa, bạn nào quan tâm tới vấn đề tối ưu thì có thể xin vào lab cô Bình nha, mình sẽ có riêng 1 bài viết khác về lab cô Bình nên bài viết này mình không lan man nhiều về vấn đề này.

Môn học này theo mình biết thì hiện tại chỉ có cô Bình dạy thôi, cô dạy môn này thì nói chung là rất thoải mái cả về giờ giấc lẫn cách học, chủ yếu là các bạn sẽ được phân vào các nhóm nghiên cứu trên lab của cô để làm bài tập lớn thôi, giữa kì các bạn sẽ trình bày về 1 cái gì đó mà mình học được trong nhóm cùng các anh/chị như là trình bày lại 1 bài báo mà mình đọc được hay là trình bày cách giải quyết 1 đề tài được các anh/chị trong nhóm giao. Về cơ bản thì không nhất thiết phải sử dụng các giải thuật di truyền mà các bạn có thể sử dụng các giải thuật heuristic, trình bày về các giải thuật heuristic cô đều chấp nhận và đồng ý hết. 

Dưới đây mình chia sẻ tới các bạn 1 số bài giảng, tài liệu dành cho môn học này gồm có slide bài giảng, và 1 số bài báo đã được public về k-coverage, q-coverage: 

  • Slide môn học tính toán tiến hóa: PDF | PPTX | ZIP (các bạn lên mang slide đi in ra nha, nhớ khi in dùng bản powerpoint - pptx nha để có thể in được full các phần, bản pdf nhiều trang các hình ảnh sẽ bị đè nên chữ)

9/10/2021

Học sâu và ứng dụng | Tài liệu, chuyên ngành


Môn này là một môn nằm trong mô-đun "Phân tích dữ liệu thông minh" của bên khoa học máy tính tức là nó đã là một môn chuyên ngành rồi, không còn là môn cơ sở ngành nữa, môn này cũng là môn chuyên ngành đầu tiên mà mình viết và chia sẻ trên website.

Deep Learning thì là một trend hot trong những năm gần đây rồi, khi mà nhà nhà học Deep, người người học Deep và môn này mang lại cho bạn những gì cơ bản nhưng cũng không hề thiếu những phần nâng cao nha vì nó là một môn chuyên ngành rồi. Các bạn sẽ được học về: 

  • Tổng quan về mạng nơ ron
  • Mạng CNN 
  • Cách huấn luyện mạng nơ ron 
  • Bài toán Object detection 
  • RNN
  • NLP
  • Ngoài ra các bạn còn được giới thiệu các phần cứng cho học máy, các công cụ phần mềm hay sử dụng trong học máy


Tuy nhiên thì thực sự mình thấy là mỗi bài tuy đề cập tới những phần nâng cao nhưng lại nói 1 cách khá tổng quát và không được chi tiết, tất nhiên rồi cũng vì thời gian của các tiết học là có hạn và các bạn muốn hiển sâu hơn bắt buộc phải tự học rất nhiều nha, môn này cũng rất nhanh mất gốc nếu 1-2 tuần mà không động vào là tối cổ luôn rồi.

Có một câu hỏi về môn này là không biết gì thì có thể học được không? tất nhiên là nếu bạn đăng kí được môn tức là bạn đã đủ điều kiện để học môn này khi đã học hết các môn điều kiện, tuy nhiên lời khuyên thực sự chân thành của mình là hãy đăng kí môn này khi đã có cho mình một ít kiến thức về hoc sâu rồi, thế nào là có kiến thức? cái này thực sự là khó định nghĩa, tùy vào bạn tin tưởng vào năng lực của bạn thân thế nào thôi, mình có thể lôi ra 1 số tiêu chí để bạn có thể xem nha: 

  • Bạn phải hiểu được luồng đi của Deep Learning, chúng ta cần làm gì, phải làm gì trong từng bước

  • Có thể tự code 1 lại 1 mạng cơ bản, bạn có thể tham khảo TẠI ĐÂY nha

  • Biết qua về 1 số framework cơ bản, qua thôi nha có thể là mxnet, tensorfow hoặc pytorch

Về tiêu chí thứ 3 mình đưa ra ý là vì bài tập lớn chắc chắn các bạn phải dùng tới các framework này nhưng trong quá trình học các bạn không được dạy đâu, mà chỉ được các thầy cô giáo nhắc tới và sẽ được nhắc là về tự tìm hiểu mà lúc đấy mới tự tìm hiểu xong làm bài tập lớn thì thực sự là khó trừ khi có ai đó trong team gánh.

Ngoài ra, trong kì học bạn phải thực sự dành ra thời gian cho môn học, 1 ít thôi không cần nhiều đâu, chỉ là không bỏ bê là được. 


TOÀN BỘ TÀI LIỆU ĐỂ HỌC MÔN NÀY BẠN CÓ THỂ TẢI VỀ TẠI ĐÂY NHA

(sẽ bao gồm slide môn học, đề thi, các tài liệu, bài báo về học sâu, các ví dụ và 1 số bài lab để mọi người tham khảo)


BÀI TẬP LỚN

Môn này bạn sẽ phải làm một project về Deep Learning theo nhóm, ngoài ra bạn có thể chọn việc là review lại 1 paper nào đó ( cái này tùy thầy/ cô dạy nha). Các đề tài mà hay được chọn có thể như là: nhận diện biển số xe, thêm chú thích cho ảnh, dịch máy, ... Nếu như các bạn nghĩ đề tài mình đơn giản quá sợ không được điểm cao hay là quá phức tạp sợ không làm được có thể nhờ các thầy/ cô review qua về đề tài nha, các thầy/ cô luôn luôn sẵn lòng để trả lời các câu hỏi của các bạn đó.

9/02/2021

Nhập môn công nghệ phần mềm | Tài liệu, cơ sở ngành CNTT


Nhập môn công nghệ phân mềm, nghe tên chắc chắc các bạn sẽ liên tưởng tới việc học môn này sẽ được các thầy dạy về code 1 phần mềm như nào và rồi bài tập lớn sẽ được làm 1 project về tạo một phần mềm nào đó nghe cũng đã thấy thích rồi. Thực chất nếu ai suy nghĩ như trên thì chỉ đúng được 1 phần nhỏ thôi. Môn này chúng ta sẽ được học 1 quy trình đầy đủ để tạo ra 1 phần mềm gồm rất nhiều bước không chỉ riêng gì bước xây dựng phần mềm bằng các ngôn ngữ lập trình, chúng ta sẽ phải: 

  • Đặc tả yêu cầu, phân tích yêu cầu, thương lượng với khách hàng
  • Đặc tả chức năng, trạng thái,... bằng các biểu đồ như DFD, Use-case,...
  • Thiết kế UI
  • Xây dựng phần mềm
  • Kiểm thử

Nói chung thì rất là lý thuyết, nhàm chán nhưng cũng là những thứ mà mình nghĩ là nên biết chút ít để biết đường sau có thể còn tìm hiểu tài liệu trên Google, chứ nếu không biết gì thì sau còn không cả biết cách search như nào.

Ngoài ra khi làm bài tập lớn môn này các bạn phải làm quen với rất nhiều công nghệ như là git để quản lý mã nguồn hay là một số công cụ để mô hình hóa khác. Bài tập lớn môn này thì là các bạn sẽ phải làm một phần mềm nha, tùy vào thầy/ cô và tùy vào kì học thì yêu cầu sẽ khác nhau với từng kì nhưng sẽ giống nhau cho các lớp. Thường thì sẽ là các thầy sẽ cho trước đề tài và các bạn sẽ phải xây dưng phần mềm để đáp ứng yêu cầu đó, và nên nhớ là không chỉ code đâu nha, các bạn còn phải đặc tả, vẽ use-case, DFD,... các kiểu, xong rồi test,... Mình sẽ nói rõ hơn ở phần dưới nha.

Môn này bạn có thể học thầy Tuấn, thầy dạy thì đều đều giọng nên rất buồn ngủ, tuy nhiên thì thầy cho điểm khá thoáng, chấm bài tập lớn cũng khá thoáng nên điểm cũng rất cao. Còn thầy Nguyễn Nhất Hải các bạn cũng có thể cân nhắc, nhưng thầy Hải cho điểm khá chặt nên điểm không được cao cho lắm.

Môn này thì nói chung rất là phong phú, kiến thức để học phải nói là cực nhiều, ôn thi bạn nên ôn thi theo hướng dẫn của thầy/ cô giáo chứ để đọc lại slide mà nhớ hết để thi chắc khó, các bạn có thể tham khảo 1 số tài liệu của mình dưới đây nha: 

  • Slide bài giảng môn NM CNPM - thầy Nguyễn Mạnh Tuấn: TẢI VỀ SLIDE

BÀI TẬP LỚN

Mình muốn nói qua về phần bài tập lớn này thôi, các bạn có thể xem qua 1 báo cáo về bài tập lớn TẠI ĐÂY và các bạn cũng có thể thấy là chúng ta cần phải làm rất nhiều việc và mỗi việc không phải chỉ làm qua loa mà phải chi tiết để ghi lại trong báo cáo này. Mẫu báo cáo các bạn sẽ được cho sẵn nên yên tâm phần này.

Ví dụ về 1 bài tập lớn, các bạn sẽ được cho một ngữ cảnh về 1 khu dân phố nào đó và có 7 yêu cầu cần làm cho tổ dân phố đấ ví dụ như là: 

  • Quản lý thông tin sổ hộ khẩu
  • Quản lý thu phí, đóng góp
  • Quản lý sử dụng nhà văn hóa
  • Quản lý sinh hoạt, họp tổ dân phố 
  • Quản lý cấp phần thưởng
  • Quản lý thông tin phản ánh, kiến nghị 
  • Quản lý thông tin phòng tránh COVID-19

Với đề tài (1) - "Quản lý thông tin sổ hộ khẩu" thì các bạn đã được các thầy/ cô cung cấp đầy đủ từ 1 file báo cáo đầy đủ tới 1 sản phẩm được bằng App sử dụng Java Swing. Các bạn được quyền lựa chọn các đề tài từ (2) tới (7) và phát triển từ App mà các thầy/ cô đã cung cấp ( có thể là sửa đổi từ App của thầy/ cô giáo) hoặc các bạn có thể tự làm 1 App mới có thể trên nền tảng Web hoặc App bằng bất cứ ngôn ngữ gì bạn muốn nha. Tuy nhiên, như mình nói là không chỉ ra sản phẩm các bạn còn phải làm rất nhiều việc để có 1 quy trình tạo ra phần mềm hoàn chỉnh và bước xây dựng phân mềm chỉ là 1 bước nhỏ mà hầu hết các bạn sẽ tập chung vào nó dẫn tới chểnh mảng các phần khác.

Các bạn có thể xem danh sách các BÀI TẬP TUẦN ở đây nha, từng tuần các bạn sẽ có những task riêng để hoàn thành và nó chính là một phần trong bài tập lớn của các bạn, sau chỉ cần kết hợp lại thôi (Bài tập tuần 1 sẽ bao gồm cả đề tài để cả nhóm lựa chọn). 

Các bạn có thế lựa chọn công nghệ JavaFX cho sản phẩm của mình, nếu ai chưa biết có thể xem 1 bài chia sẻ của website về JavaFX TẠI ĐÂY nha.

8/11/2021

Quản trị dự án CNTT | Tài liệu, cơ sở ngành CNTT


Cũng giống như làm việc nhóm và kỹ năng giao tiếp thì môn này cũng có thể coi là một môn kỹ năng mềm. Môn học nói về các kỹ năng quản lý dự án, quản lý nhân sự, tiền bạc, thời gian... khi bạn làm một dự án CNTT. Kiểu như môn này là môn học làm leader ý, học cũng rất là vui, mình học thầy Tiến thì thầy thường chia sẻ về các dự án thầy làm như nào, cách tính tiền 1 dự án CNTT ra sao, rất là thú vị luôn ấy, có những cái mà mình chưa bao giờ được biết và chắc chắc là rất bổ ích vì hầu như ở các môn học khác trong trường bạn sẽ không thể nghe được những câu chuyện như vậy (còn thú vị như nào bạn có thể đăng kí học môn này thầy Nguyễn Đức Tiến nha).

Môn này hoc khá là nhẹ nhàng thôi, các thây/cô dạy cũng biết điều này và cũng không hề yêu cầu cao ở sinh viên. Bạn có thể học thầy Tiến hoặc thầy Lê Đức Trung cũng được, các thầy khá dễ tính và cho điểm khá thoải mái. Riêng học thầy Tiến có thể là sẽ đỡ buồn ngủ hơn thầy Trung đấy.

Thi môn này các câu hỏi cũng khá là mở, đa số là ý kiến đưa ra của chính bản thân mình là chính. Mình ví dụ nhá. Có một đề bài: "Một công ty A yêu cầu được giảm 30% số tiền của dự án do khó khăn của dịch COVID-19, nếu không thì họ sẽ hủy dự án và chấp nhận mất 20% phí cọc của dự án. Những chi phí của dự án ảnh hưởng trực tiếp tới công ty B là người nhận làm dự án này. Nếu bạn là ban lãnh đạo công ty B thì bạn sẽ làm gì?"

Câu hỏi đơn giản là một câu hỏi mở như vậy và bạn trả lời là đồng ý giảm, hoặc không đồng ý giảm hoặc là thương lượng giảm 20% thôi đều đúng và thầy giáo vẫn cho bạn điểm tối đa khi bạn đưa ra bất kì câu trả lời nào nha. Bạn cần tránh các câu trả lời không có định lượng như là "giảm 1 ít", 1 ít là bao nhiêu cái này trong quản lý cần phải tránh, mọi thứ đều phải được định lượng rõ ràng.

Mình chia sẻ slide môn học Quản trị dự án CNTT của thầy Nguyễn Đức Tiến, các bạn có thể tải về TẠI ĐÂY

Đề thi cuối kì 20202 các bạn có thể tải về TẠI ĐÂY


8/04/2021

Thiết kế mỹ thuật công nghiệp | Tài liệu, môn tự chọn


Như mình đã nói trong bài viết Quản trị học đại cương thì với sinh viên viện CNTT&TT phải học 3 học phần tự chọn (trừ môn technical là bắt buộc), thì combo Kỹ năng mềm + Tâm lý học ứng dụng là một combo dễ nhất, gần như các bạn học đều từ A tới A+ hết (dĩ nhiên là 2 trong 3 học phần tự chọn mình khuyên các bạn nên chọn 2 môn này) và 1 môn còn lại tùy theo sở thích của các bạn có thể chọn Văn hóa kinh doanh, Quản trị học đại cương hay Thiết kế mỹ thuật công nghiệp,...

Một bài viết rất hay review về môn thiết kế mỹ thuật công nghiệp được đăng tại group HỖ TRỢ HỌC TẬP ĐẠI CƯƠNG ĐH BKHN của tác giả Phạm Trung Hiếu có lẽ sẽ giúp các bạn hiểu hơn phần nào về môn học này.

REVIEW "THIẾT KẾ MỸ THUẬT CÔNG NGHIỆP" 

Có lẽ ai trong số chúng ta đều đã, đang và sẽ đứng giữa lựa chọn các môn học phần tự chọn. Mọi người thường nhắc đến các môn như Kỹ năng mềm, Tâm lý học ứng dụng, Văn hóa kinh doanh và tinh thần khởi nghiệp (VHKD&TTKN),... nhưng còn một môn khá mới mà mọi người có thể cân nhắc lựa chọn, đó là Thiết kế Mỹ thuật công nghiệp.

Kỳ 20201 vừa rồi, mình học cô Hoàng Thanh Thủy, nhưng chắc các Cô khác cũng tương tự.

1. Ấn tượng đầu tiên của mình là làm slide nhiều. Bạn nào có lợi thế về slide hay muốn trau dồi slide thì có thể lựa chọn môn này. Cứ 2, 3 tuần là lại cần nộp 1 bài slide tầm đâu đó 60 trang.

2. Có chia nhóm. Nhóm tối đa 6 người, nhưng nhóm mình chỉ cần 5 người thôi. Một bạn nữ chuyên phụ trách thuyết trình (vì có năng khiếu ăn nói nên ae vote luôn). Mấy ae còn lại thì tập trung kiếm tài liệu với làm slide. Vậy nên nếu bạn tự tin hoặc muốn nâng cao khả năng thuyết trình trước lớp thì cũng có thể học môn này và nhận vị trí thuyết trình như bạn nữ của nhóm mình, cả kỳ thuyết trình 2 lần là đủ (có những slide chỉ cần nộp, không cần thuyết trình).

3. Về cách tính điểm môn này. Điểm GK là chấm slide (+ điểm danh, thuyết trình). Điểm CK là điểm ở buổi thuyết trình cuối cùng. Lợi thế mà mình thấy là có được sự chủ động trong cả học kỳ, ví dụ ở các môn khác thì kết quả dựa phần nhiều vào bài thi giấy thì môn này dựa vào slide và bài thuyết trình của nhóm. Mình có thể chuẩn bị từ trước, thậm chí biết chắc A môn này vì khá tự tin về slide do nhóm mình chuẩn bị cũng như khả năng ăn nói của bạn nữ thuyết trình.

4. Về quá trình học. Cô cũng hay điểm danh ngẫu nhiên vài buổi nên tốt nhất là đi học đầy đủ. Trong lớp khá thoải mái, nhiều khi mình mở lap, lấy môn khác ra làm cũng được. Nhưng nhóm nên cử 1 bạn tập trung nghe cô giảng và note lại các lưu ý của Cô để về còn làm slide.

5. Phân công công việc nhóm. Như đã nói, nhóm mình 5ng. Bạn nữ duy nhất thì sẽ phụ trách thuyết trình trước lớp. 2ng phụ trách kiếm tài liệu về làm thành bản word, 2ng còn lại thì dựa vào bản word đó để làm slide.

6. Về các bài slide. Mỗi nhóm sẽ được lựa chọn một đề tài về sản phẩm nào đó như: Nồi cơm điện Cuckoo, đồng hồ Apple Watch 6, tai nghe Airpod 2, tủ lạnh,... Nhóm mình thì chọn SH 150i 2020. Tổng cả kỳ có 4 bài tập làm slide tương ứng với các yếu tố trong mỹ thuật công nghiệp như lịch sử, thương hiệu, màu sắc, đường nét, chất liệu,... Còn bài slide chốt (tính điểm CK) thì là gộp của 4 bài slide kia lại, chau chuốt tí.

7. So sánh với các môn khác. Nếu là bảo lời khuyên cho các em khóa sau thì mình vẫn khuyên ưu tiên học Kỹ năng mềm và Tâm lý học ƯD trước. Còn môn thứ ba thì cân nhắc giữa môn này và môn VHKD&TTKN. Mình đọc reiview về môn VHKD&TTKN thì thấy bảo GK là tiểu luận chép tay. CK là bài thi trên giấy (chép được tài liệu nhưng dài và mỏi tay). Lúc mình chọn cũng phân vân nhưng vì ngại viết và cũng muốn chốt điểm sớm nên chọn TK MTCN. (Đợt vừa rồi thì nhóm mình chuẩn bị xong slide từ trước nên cuối kỳ chỉ việc cầm slide đi thuyết trình, không cần lo ôn thi gì nhiều nữa mà tập trung ôn các môn khác. À trừ bạn nữ thuyết trình thì vẫn cần chuẩn bị tí). VHKD&TTKN mình lo cuối kỳ mà chép không kịp thì cũng chẳng điểm cao được.

Trên đây là những trải nghiệm của CÁ NHÂN mình và kể lại với mọi người. Có thể các bạn khác sẽ có trải nghiệm khác. Mục đích bài này là để reiview cho các bạn, nếu sắp tới nếu lựa chọn các môn thì có thể tham khảo. Chỗ nào sai thì mong các bạn góp ý để mình sửa.

Hy vọng với những gì mình ghi lại như này có thể giúp các bạn được phần nào.
Goodluck!

(c) Phạm Trung Hiếu | 25.02.2021

6/21/2021

Nguyên lý hệ điều hành | Tài liệu, cơ sở ngành CNTT


Rõ ràng hệ điều hành là một thứ không thể thiếu trong máy tính cá nhân hiện nay. Hệ điều hành điều khiển mọi hoạt động của máy tính từ những công việc đơn giản cho tới phức tạp. Hệ điều hành là môi trường để các phần mềm có thể hoạt động và chạy trên đó. Hệ điều hành sẽ tính toán để phân bổ tài nguyên cho các tiến trình cho hợp lí để cho mọi thứ có thể hoạt động một cách hoàn hảo nhất.

Chung quy lại thì hệ điều hành chỉ là một phần mềm hệ thống, nó tạo ra một môi trường mà các phần mềm có thể hoạt động trên nó. Hệ điều hành đóng vai trò chung gian giữa người sử dụng và máy tính, che giấu đi những phần phức tạp để việc sử dụng máy tính trở lên đơn giản và hiệu quả hơn.

Phải nói là học môn này bạn sẽ biết được là những lập trình viên hệ điều hành họ giỏi và tỉ mỉ như thế nào. Từng chi tiết nhỏ cũng sẽ ảnh hưởng phần nào tới năng suất làm việc của máy tính vì thế lập trình viên hệ điều hành phải tỉ mỉ từng tí để có thể có được một hệ điều hành hoạt động trơn chu. Học xong môn học các bạn cũng có thể biết về nguyên lý để thiết kế một hê điều hành và biêt đâu sau này một trong mọi người lại thiết kế ra một hệ điều hành có thể đánh bật Windows hay Linux.

Dĩ nhiên là chỉ một môn học không thể nào học hết được mọi thứ về hệ điều hành, nhưng môn học cung cấp cho bạn cái nhìn tổng quan nhất về : 

  • Khái niệm về hệ điều hành 
  • Quản lý tiến trình 
  • Quản lý bộ nhớ
  • Quản lý hệ thống file
  • Quản lý vào ra

Giới thiệu hoành tránh như vậy tuy nhiên môn học này tại HUST thì cũng khá khô khan vì nặng lý thuyết rất nhiều, học khá buồn ngủ, vẫn có bài tập nha và bài tập cũng thuộc loại đơn giản thôi, không phức tạp như đại số, giải tích hay toán tối ưu đâu.

Môn này cũng có bài tập lớn nha, các thầy khác thì mình không nắm rõ, mình học thầy Đỗ Quốc Huy thì mọi người sẽ được làm về một số đề tài ( link đề tài mình có chia sẻ bên dưới) như là làm App quản lý tài nguyên máy tính, làm App quản lý thư mục, ... kiểu như mô phỏng hay chính xác là nhái lại Task Manager hay Window explorer, tuy nhiên những cái này trên Google cũng có hết rồi, mọi người cũng không cân lo lắng quá nha.

Thi cuối kì thì cũng khó quá đâu, bạn mua tập đề ở sau thư viện nha, nếu có thi trắc nghiệm thì cũng chỉ có các câu hỏi ở trong đó thôi, mỗi năm thì sẽ có một cấu trúc ra đề khác nhau, có thể được mang tài liệu hoặc không tùy theo từng năm do bộ môn họp và quyết định, cái này không nói trước được.

Một số tài liệu về môn học mà mình sưu tầm được chia sẻ tới mọi người để học tập nha : 

  • SLIDE môn học nguyên lý hệ điều hành & đề tài bài tập lớn : TẢI VỀ SLIDE

  • Tóm tắt môn học ngắn gọn từng chương bằng file text : TẢI VỀ TXT

5/28/2021

Technical Writing and Presentation | Tài liệu, cơ sở ngành CNTT


Cũng như tên gọi của nó, môn học này học về cách viết và cách thuyết trình. Nhưng cách viết ở đây không phải là viết bài trên lớp hay là cách ghi chép mà là cách viết một bài báo khoa học. Môn này những năm trước là môn tự chọn, tuy nhiên bây giờ nó đã trở thành môn bắt buộc và ai cũng phải học. Từ kì này trở đi thậm chí môn này sẽ được giảng dạy bằng tiếng anh, thi bằng tiếng anh và làm bài tập lớn trên lớp cũng bằng tiếng anh.

Môn này mỗi viện sẽ có một chương trình khác nhau và mã môn học khác nhau nên khi đăng kí môn các bạn nhớ để ý không sẽ đăng kí nhầm. Như là Technical Writing and Presentation ở viện CNTT sẽ khác với Technical Writing and Presentation ở viện Điện... Và môn Technical mình nói tới ở bài viết này là của viện CNTT nha.

Như tên gọi của nó, môn học sẽ có 2 phần rõ ràng là Writing và Presentation. Nên bài tập lớn môn này cũng chia làm 2 phần là thuyết trình và viết. Phần thuyết trình mình nghĩ là giống nhau giữa các thầy thôi, mọi người sẽ chọn tìm hiểu về 1 chủ đề và thuyết trình. Còn phần Writing có thể mọi người sẽ phải viết 1 bài mini paper về một chủ đề nào đó ( mini paper bằng tiếng anh nha). 

Môn này mình biết một số thầy dạy như là thầy Vũ Văn Thiệu, thầy Lê Đức Trung, thầy Nguyễn Khanh Văn ( hình như học thầy Trung là bằng tiếng Việt thì phải). Thi cuối kì là mỗi thầy cô sẽ có một đề riêng, chấm riêng ( tính tới thời điểm bây giờ là thế, còn về sau có thể sẽ khác để đảm bảo tính công bằng). Các bạn muốn điểm cao hãy học thầy Trung nha, thầy như là trùm của mấy môn như Làm việc nhóm, Technical hay Quản trị dự án CNTT rồi, học thầy hơi chán chán một tí nhưng điểm khá cao. Các bạn có thể học thầy Thiệu, thầy dạy cũng khá thú vị, điểm thì chấm khá đúng, thầy chấm cũng lỏng tay thôi. Còn thầy Văn thì hơi khắt khe một chút.

Mình có một số tài liệu ôn thi ( mặc dù thi riêng nhưng hình như là đề phần trắc nghiệm thì cũng giống nhau thôi thì phải, mình có gửi cho bạn mình để ôn tập một số đề mà mình ôn khi học thầy Thiệu mà nó học thầy Trung thi cũng giống khá nhiều nên các bạn có thể tham khảo nha) : 

4/06/2021

Tài liệu luyện thi TOEIC nội bộ đại học Bách Khoa | Tài liệu, tiếng anh, TOEIC


Tài liệu được chia sẻ gốc Tài liệu Bách Khoatailieubkhn.com tổng hợp lại để mọi người có thể dễ dàng tìm kiếm hơn vì bài viết mình thấy là hữu ích và bài viết trên Facebook sẽ dễ trôi đi.

Trang web chính thức của trung tâm ngoại ngữ Bách Khoa : https://cfl.edu.vn/
Fanpage chính thức của trung tâm ngoại ngữ Bách Khoa : https://www.facebook.com/clc.hust.edu.vn

Cách tính điểm thi TOEIC nội bộ tại Bách Khoa : 


Các khóa khác thì mình không nắm được rõ cho nắm nhưng với sinh viên năm 2 thì các bạn phải trả đủ 350 điểm TOEIC, năm 3 là 450 và ra trường là 500 ( hình như mấy khóa mới cao hơn thì phải). Thi TOEIC nội bộ Bách Khoa là 2 kĩ năng và đề thi là dễ hơn so với thi TOEIC quốc tế, phí thi là 200K/ lần thi ( rẻ hơn rất nhiêu so với thi quốc tế) và thời gian thi giữa 2 lần phải là 50 ngày, vì thế các bạn phải căn chỉnh thời gian thi cho tốt để nhỡ đâu không đạt yêu cầu thì còn có thời gian để thi lại lần nữa trước khi giới hạn tin chỉ ( nếu không chỉ có con đường thi quốc tế mà thi quốc tế thì rất mắc, mình nghĩ nếu như không thực sự cần thiết thì hãy cứ thi nội bộ sau khi ra trường làm một cái bằng quốc tế là ổn rồi, dĩ nhiên là những ai không cần thiết thôi còn những người thực sự cần những bằng quốc tế để xin việc, đi du hoc thì vẫn phải thi rồi).

3/27/2021

Nhập môn phương pháp tối ưu | Tài liệu, đại cương


Môn này phải nói là cực kì trìu tượng luôn, cũng học lâu lắm rồi nên mình cũng không nhớ rõ lắm. Môn này là nhập môn nhưng kiến thức sẽ được dạy trong cuốn giáo trình tối ưu của cô Bạch Kim, dĩ nhiên là mình chỉ học một số chương trong cuốn này thôi vì nhập môn mà. Mình học thầy Tạ Anh Sơn thầy dạy trực tiếp trong cuốn giáo trình này luôn, bài tập và ví dụ cũng lấy từ đây ra. Môn này trước chỉ là môn tự chọn, sinh viên có thể học hoặc không nhưng từ K62 hay K63 trở đi gì gì đó đã là môn bắt buộc cho sinh viên Khoa học máy tính, còn kĩ thuật máy tính thì không học môn này nha và thay vào đó là môn Phương pháp tính. Vì môn học trìu tượng nên các bạn cố gắng để ý và học từ đầu nha không là mất gốc thì khó lấy lại gốc lắm.


Tuy nhiên mình thấy những lý thuyết tối ưu được học ở trong môn này sau này sẽ được nhắc lại và sử dụng khá nhiều ( hình như ở trong các lĩnh vực như là học sâu, tối ưu,...).

Mình có một số tài liệu và đề thi môn này chia sẻ tới mọi người do mình sưu tầm lại trong quá trình học

GIÁO TRÌNH TỐI ƯU - CÔ BẠCH KIM (về khoản giáo trình thì mình khuyên mọi người nên mua một cuốn để học cho dễ, các bạn có thể mua giáo trình phô-tô ở đằng sau thư viện giá cả khá là hợp lí) : PHẦN 1   PHẦN 2

ĐỀ CƯƠNG MÔN HỌC TẢI VỀ ĐỀ CƯƠNG

ĐỀ THI THAM KHẢO ĐỀ THI GIỮA KÌ 20183 | ĐỀ THI CUỐI KÌ 20181

3/19/2021

Nhập môn an toàn thông tin | Tài liệu, cơ sở ngành CNTT


Môn này cũng khá là thú vị, các bạn được học về bảo mật, các cơ chế bảo mật, các cơ chế tấn công ( nhưng cũng chỉ qua qua thôi). Các cách mã hóa dữ liệu, bảo vệ dữ liệu, tránh khỏi bị tấn công. Nói chung là rất hay mà mình nghĩ ai học CNTT cũng nên biết. Mình có thể học theo chuyên ngành không liên quan về bảo mật nhưng nhìn chung với sinh viên CNTT thì mỗi lĩnh vực ít nhất ta nên hiểu biết về nó chút ít chứ không thể mù tịt không biết gì được.

Môn này tại Bách Khoa thì có thầy Linh Giang là có bài tập lớn làm theo nhóm còn đa số các thầy khác đều không có bài tập lớn mà thay và đó là bài tập về nhà. Học thầy Giang thì khá là nhàm chán, mình cũng nghe nói là điểm thì thầy cho cũng cao (tuy nhiên cũng phải xem xét lại mấy cái nghe nói này chứ mình học thầy thầy thầy cho điểm cũng không được cao lắm, tuy nhiên chắc chắn không trượt, trừ khi bạn không muốn qua môn thôi), mọi người thì thường né thầy Tùng môn này vì tỉ lệ trượt môn này của sinh viên học thầy Tùng khá cao, nhưng mình thấy thầy Tùng dạy khá kĩ. Các bạn cũng có thể học thầy Trần Vĩnh Đức, mình từng học thầy toán rời rạc, thầy dạy rất hay và vui tính, mình nghe bạn mình review thì thầy dạy nhập môn an toàn thông tin cũng rất là hay. À môn này còn có thầy Nguyễn Khanh Văn dạy nữa, thầy là tác giả của quyển giáo trình cơ sở an toàn thông tin mà mình chia sẻ dưới đây.

Cuối cùng, như mọi bài viết khác mình có một ít tài liệu về môn học muốn chia sẻ với mọi người :

SLIDE BÀI GIẢNG : 

ĐỀ THI : 

  • Đề thi tự luận cuối kì 20201 lớp thầy Nguyễn Linh Giang ( đề thi do mình nhớ và ghi lại) : TẢI VỀ ĐỀ THI

  • 2 đề thi trắc nghiệm tham khảo của một số năm về trước ( hình như là 2018, 2019 gì đó mình không nhớ rõ) : TEST1   TEST2

SÁCH & TÀI LIỆU THAM KHẢO THÊM : 

2/26/2021

Thuật toán ứng dụng | Tài liệu, cơ sở ngành CNTT


Môn này hay thường được gọi là môn cấu trúc dữ liệu và thuật toán 2. Ở cấu trúc dữ liệu thì đã học full lý thuyết, thi code cũng bằng giấy và các bạn đòi code máy thì môn này là môn thỏa mãn đam mê đó đây, phải gọi là môn này "code cho tới không còn hơi thở nào thì thôi". Thi giữa thì thi trên máy, thi cuối kì thi trên máy. Kì thi được tổ chức chuyên nghiệp như thi Olympic, nếu có thầy, cô nào cộng điểm giữa kì cho sinh viên cũng là thi trên máy hết.

Xem thêm : Cấu trúc dữ liệu và thuật toán | Tài liệu, cơ sở ngành CNTT



Hầu như các kiến thức ở môn này chỉ là nhắc lại. Các thuật toán như sử dụng CTDL cơ bản, quy hoạch động, đệ quy quay lui, các thuật toán trên đồ thị, tham lam, chia để trị,.... sẽ được dạy theo từng chủ đề riêng ( thường thì mỗi tuần dạy một chủ đề và làm bài tập về chủ đề đó và thực hành về chủ đề này trên codeforces). Thực hành môn này thì không có điểm, đi học chỉ để các thầy cô và các anh trợ giảng hướng dẫn để giải các bài tập thôi, đối với các bạn không biết thế nào chứ đối với mình mấy tuần đầu các chủ đề, thuật toán dễ còn làm được chứ sang mấy chủ đề về quy hoạch động hay chia để trị thì thực sự khó, nhiều lúc còn không nghĩ ra ý tưởng để giải quyết bài toán cơ.

Có một lời khuyên về môn này nữa là các bạn hãy làm thật nhiều rồi nhớ lưu lại code của mình với những cái tên thật dễ nhớ. Những thuật toán hay dùng mà dễ kiểu quên quên như DFS, BFS, CTDL Disjoint set thì cài đặt trước luôn đi. Vì môn này đi thi các bạn sẽ được dùng máy tính cá nhân và sử dụng lại source code mà các bạn đã làm.

Mình có slide bài giảng của thầy Phạm Quang Dũng muốn chia sẻ tới các bạn, mình thấy slide này rất hay, chi tiết và nên đọc cho các bạn muốn tìm hiểu cũng như đang học môn Thuật toán ứng dụng : TẢI VỀ SLIDE

Đề thi giữa kì 20201 - thuật toán ứng dụng (đề thi + test cases + sourcecode): TẢI VỀ ĐỀ THI

Đề thi cuối kì 20201 - thuật toán ứng dụng (đề thi + test cases + sourcecode): TẢI VỀ ĐỀ THI
(các file .pdf là các file đề bài, các file .cpp là các file sourcecode, các file .zip là các file testcases, nếu có git thì bạn có thể clone repo về bằng lệnh git clone)

Còn đây là một số bài trên codeforces mà mình có lưu lại : TẢI VỀ
(đề bài trong thư mục problems, các file .cpp bắt đầu bằng số là problem của tuần đó và kèm theo là tên bài, ví dụ file 04PIE.cpp là source code của bài PIE trong problem 4, một lưu ý to nữa là đây là các bài do mình tự làm lên đôi khi một số bài code cũng không được đúng quy tắc, gọn gàng và còn nhiều thiếu sót, và nếu bạn nào có tài khoản github thì cho mình 1 sao trên repo nha)

Ngoài ra, nếu muốn luyện tập thêm thì bạn có thể giải bài trên các trang sau :