7/04/2021

Tổng quan cơ sở ngành khoa học máy tính - Viện CNTT&TT (Phần 1)


Tiếp theo chủ đề review tổng quan về ngành khoa học máy tính đại học bách khoa, trong bài viết này, mình sẽ đi sâu hơn về một khía cạnh là cơ sở cốt lõi ngành. Trong chủ đề này, mình sẽ dùng hướng tiếp cận top down, đi từ tổng quát nhất tới cụ thể từng môn học, giúp các bạn có định hướng, bức tranh tổng quan  về những phần kiến thức mình đã, đang và sẽ được học. 


Như đã viết trong phần trước, cơ sở cốt lõi ngành bao gồm 20 môn với khoảng 50 tín chỉ, chiếm từ ½ tới ⅓ toàn bộ khối lượng học tập, sau đây là sơ đồ biểu diễn một số liên quan tới các môn học. đây được lây từ chương trình học của mình, sẽ có thể thay đổi qua các khóa. bạn có thể lấy đây làm cơ sở đề điều chỉnh chương trình học cho cân đối (một số lời khuyên mình đã có đề cập trong bài đầu tiên ), theo ý bạn muốn( sinh viên vào  năm 2 trường đã cho đăng kí học phần và đăng kí môn học).




Khối giao tiếp cơ bản



Bao gồm các môn như Làm việc nhóm và kỹ năng giao tiếp, Technical Writing and Presentation,Quản trị dự án CNTT. Giống như tên của nó, các môn này  chủ yếu đề cập tới các vấn đề liên quan làm việc nhóm, viết báo cáo, lập kế hoạch, quản trị 


Khối liên quan tới lập trình, tư duy lập trình, tư duy logic



Các môn học ở đây là cơ sở đề các bạn biết code và rèn luyện kỹ năng tư duy giải quyết vấn đề bằng lập trình. Ở cảm nhận cá nhân, những môn này khá khó và cần luyện tập rất nhiều để có thể thành thạo. ở bài viết này mình sẽ liệt kê các keyword mà các môn học có liên quan tới nhau (cùng một hàng là các keyword liên quan tới nhau giữa các môn )


Toán Rời Rạc 

Cấu trúc dữ liệu và giải thuật 

Kỹ thuật lập trình 

Thuật toán ứng dụng 

Đồ thị, các khái niệm liên quan 

   

thuật toán liên quan đồ thị, biểu diễn đồ thị bằng danh sách kề, ma trận khoảng cách...

thuật toán duyệt đồ thị BFS,DFS

cấu trúc dữ liệu: ngăn xếp (stack), hàng đợi (queue )

 

lập trình các bài toán liên quan duyệt đồ thị

thuật toán tìm đường đi ngắn nhất trên đồ thị, tìm kiếm trên đồ thị 

   

dạng toán khá khó trong các bài test của môn học 

đồ thị 

cấu trúc dữ liệu : cây.các thuật toán liên quan duyệt cây. Cây bản chất dược định nghĩa đệ quy ( liên quan stack )

   

2 môn này có phần này chung nên bạn có thể nên chuẩn bị tâm lý là thầy cô sẽ bảo là “chắc là môn kia dạy rồi nhỉ :D ” và bỏ qua mặc dù có thể môn kia các bạn không được học hoặc học qua loa :v

   
 

Độ phức tạp thuật toán, định lý thợ 

đánh giá tối ưu thuật toán 

đánh giá tối ưu thuật toán, thường thì một bài có thể có nhiều cách giải, nhưng sẽ tính điểm dựa theo độ phức tạp

 

Giải thuật liến quan tìm kiếm, sắp sếp

Giải thuật liến quan tìm kiếm, sắp sếp

Giải thuật liến quan tìm kiếm, sắp sếp

   

những tiết thực hành ở môn này là bước đệm cho tư duy giải bài lập trình trong môn thuật toán ứng dụng để bạn đỡ bỡ ngỡ. 

 
 

cấu trúc dữ liệu: ngăn xếp (stack), giải thích đệ quy. 

giải thích của đệ quy, cách đệ quy hoạt động,

lập trình các thuật toán : duyệt toàn bộ, chia để trị, nhánh cận, quay lui 

   

Tối ưu code  (tối ưu vòng lặp , các kĩ thuật liên quan biến)

giảm độ phức tạp=> tăng điểm 

   

kỹ năng debug, phát hiện lỗi sai, gỡ lỗi, test  

debug chương trình

(thật sự đây là một phần stress nhất nếu bạn có í định học môn này một cách nghiêm túc ) 

Thuật toán tham lam 

   

thuật toán tham lam.. mặc dù có thể không cho bạn được full điểm nhưng có ít nhất thì không bị mất hết điểm câu đó. trong môn này chỉ cần hơn nhau 1 điểm/ 400 điểm  là thứ hạng của bạn có thể up lên vài chục trên tổng số vài trăm sinh viên.

 

cấp phát bộ nhớ , con trỏ 

con trỏ , con trỏ hàm 

tối ưu code (tránh bị tràn bộ nhớ )

 

HASH => sau này dùng cho môn An toàn thông tin 

   
 

Cấu trúc dữ liệu cây(Btree) => sau này nhắc đến trong môn hệ điều hành , database 

   


Trên là một số liệt kê của mình về các phần liên quan, những phần sau mình xin phép cắt đi vì nếu viết thì sẽ khá dài cho một bài blog. Mình sẽ viết từng khối  trong một bài riêng. Sau loạt bài tổng quan về từng khối này, mình sẽ viết loạt về cụ thể từng môn, ủng hộ mình nhá <3, like fanpage chẳng hạn, để lại cho mình bình luận góp ý, mình hứa sẽ tiếp thu và thay đổi. 


Khối liên quan tới hệ thống máy tính


bao gồm 2 môn nguyên lý hệ điều hành và kiến trúc máy tính. 



Khối liên quan lập trình phần mềm 



Cơ sở dữ liệu(thực chất thì cái này dùng rất nhiều trong  mảng khác chứ không phải mỗi công nghệ phần mềm ),Nhập môn công nghệ phần mềm,Phân tích và thiết kế hệ thống(có thể liên quan tới cả  môn quản trị dự án công nghệ thông tin), Lập trình hướng đối tượng(là một nguyên lí, quy tắc,... để bạn lập trình nhiều mảng khác )


Khối liên quan trí tuệ nhân tạo , phát triển ứng dụng thông minh



Đây có thể nói là trend hiện nay, phổ cập trí tuệ nhân tạo :D. rất khó, thằng bạn mình (dẫu biết là trong chúng ta ai cũng có thằng bạn, ông anh,... để mỗi lần khó lại lôi ra :D nhưng đây là bạn mình thật) đã nghiên cứu về nó trong thời gian rất lâu và mình cảm thấy bạn là một người cực kì giỏi về mảng này(đặc biệt là giỏi về toán cơ bản, linh vực này cần thật sự nhiều toán cơ bản ) nhưng cuối cùng vẫn không qua được phỏng vấn lab DSLab( lab uy tín nhất của trường về Machine Learning), khá đáng tiếc :(. vì vậy nếu xác định theo hướng này thì bạn cần nghiêm túc ngay từ năm nhất với các môn toán cơ bản, có thể liên hệ vào lab qua thầy chủ nhiệm khoattq@soict.hust.edu.vn nếu lab có tuyên thành viên. 


Khối liên quan bảo mật thông tin, logic mạng



Ngoài review ra thì mục đính cao hơn  của trang là cung cấp cho các bạn nguồn cảm hứng, tạo động lực học tập, định hướng cho các bạn con đường lập trình với sinh viên khoa học máy tính đại học bách khoa nói riêng và tổng quan ngành lập trình nói chung(đối với các bạn bên ngoài trường), trả lời cho các bạn câu hỏi : tôi cần gì để có thể trở thành một lập trình viên ?

Cuối cùng, với mỗi nội dung mình viết hiện tại đang chỉ là một số keyword cơ bản nhất, các bạn có thể tự tìm hiểu bằng cách tra google với từ khóa đó + viblo. đay là một trang blog mình thấy đọc khá dễ hiểu. 


Good Luck, 

longpt


Thuật toán có thực sự quan trọng? | Blogging


Thuật toán là gì? Theo wiki, trong toán học và khoa học máy tính, một thuật toán, còn gọi là giải thuật, là một tập hợp hữu hạn các hướng dẫn được xác định rõ ràng, có thể thực hiện được bằng máy tính, thường để giải quyết một lớp vấn đề hoặc để thực hiện một phép tính.

Vậy học thuật toán để làm gì? Và tại sao gần như mọi trường đại học và điển hình tại Bách Khoa Hà Nội thì thuật toán là môn học không thể thiếu? Cùng nghe về chia sẻ của mình nha, nếu bạn có những ý kiến khác thì hãy comment để mọi người cùng biết nha.

Tại sao cần dùng thuật toán?

Bạn chỉ cần search trên Google là 'Tại sao cần dùng thuật toán' thì sẽ ra cả tá bài viết viết về vấn đề này, hoặc tiêu biểu bạn có thể xem bài viết Đôi chút về cấu trúc dữ liệu và thuật toán, bài viết này mình sẽ tóm gọn lại nhanh vấn đề nha.

Thuật toán không giúp code của bạn ngắn hơn mà thậm chí nó phải dài hơn. Nhưng hiệu quả là vấn đề không phải bàn cãi, thuật toán giúp chương trình của bạn chạy nhanh hơn, với những thuật toán tối ưu chương trình của bạn còn có thể chạy nhanh hơn rất nhiều nữa. 

Học thuật toán sẽ giúp các bạn có một tư duy tốt hơn và có thể là tốt hơn rất nhiều để giải quyết vấn đề.

Am hiểu về thuật toán sẽ là một điểm cộng khi tham gia phỏng vấn. Với bạn nào mà muốn theo đuổi lập trình Game hay muốn làm việc tại 1 số tập đoàn lớn như VNG, Viettel, Samsung thì thuật toán là thứ không thể thiếu nay. Phỏng vấn đầu vào là thuật toán, tại Samsung nếu bạn muốn làm các chức vụ cao hơn thì bạn phải thi các cuộc thi về thuật toán nữa nha,... Vậy nếu các bạn có những định hướng về hướng đi giống như trên thì hãy học thuật toán ngay đi nha. 

...

Không học, không giỏi thuật toán có được không?

Mình không hề master thuật toán, và cũng không phải là fan cuồng thuật toán vậy nên nhận xét thật lòng thì không giỏi thuật toán chả sao, chúng ta vẫn có thể trở thành thành lập trình viên giỏi trên các lĩnh vực của mình.

Không cần thuât toán bạn vẫn sẽ đưa ra được cái giải pháp của mình, tuy nhiên nó có thể không tối ưu với vôn thuật toán hạn chế của lập trình viên nhưng nó chắc cũng sẽ là một giải pháp.

Nếu bạn là một lập trình viên viết những web thiên về nội dung. blog hay những app với những xử lý logic đơn giản có lẽ những djikstra, quick sort,... cũng không có nhiều đất dụng võ.

Bây giờ một số thuật toán kinh điển đều đã được cài đặt sẵn và xây dựng thành các thư viện và đã được tối ưu, kiểm thử lỗi,... nên lập trình viên muốn dùng chỉ cần gọi ra và sử dụng.

Có nhiều phần mềm, sự hiểu biết về thiết kế, tổ chức dữ liệu sẽ quan trọng hơn rất nhiều so với những thuật toán hay được sử dụng trong phần mềm.

Vậy thuật toán có thực sự quan trọng không?

Những người đọc bài viết này của mình chắc đa số đều là sinh viên Bách Khoa và chắc chắn dù muốn hay không thì các bạn đều phải học, thậm chí là cày ngày, đêm để còn qua môn cấu trúc dữ liệuthuật toán ứng dụng hay là để thi tuyển vào samsung,...

Một số bạn thì so sánh rằng, các trường như FPT họ không học thuật toán mà học thẳng trực tiếp các framework, thư viện, những thứ thực tế cần dùng hơn. Nhưng mình xin đính chính lại là FPT có học toán rời rạc, cấu trúc dữ liệu,... nha chỉ là họ học khá là nhẹ nhàng hơn so Bách Khoa mà thôi, nhưng cũng vì thế mà một người anh của mình tại FPT cũng từng nói với mình rằng là thật tiếc rằng ngày đó anh không được tiếp cận đồ thị sớm hơn khi còn học tại trường.

Không nhắc về các trường đại học nữa, vậy thì một số trung tâm, hệ thống đào tạo lập trình viên thì sao? Như APTECH. Nhưng cũng xin đính chính tiếp với các bạn, những lập trình viên mà APTECH đào tạo ra họ là những người thợ code, khi họ học thì họ thực hành là chủ yếu, code ngày code đêm và trình độ code của họ chắc chắn là hơn sinh viên đại học như chúng ta. Tuy nhiên, chúng ta không phải là những thợ code, chúng ta không thể chỉ biết code, chúng ta là những kỹ sư mà kỹ sư là phải giải quyết các vấn đề chứ không chỉ đơn giản là bạn được vứt cho một loạt mẫu có sẵn và code theo những mẫu này như những người thợ code thực thụ.

Vậy kết luận lại thì thuật toán cần không? Thuật toán cần, phải học, ít nhất là phải học để biết nhưng không phải là tất cả. Đó là những suy nghĩ của mình về vấn đề khá nan giải này. Còn bạn nghĩ gì thì hãy comment cho mọi người cùng biết nha.

6/28/2021

Tổng quan ngành khoa học máy tính - Đại học Bách Khoa Hà Nội


Chào các bạn,hôm nay dựa trên hiểu biết sơ bộ của một sinh viên cuối năm 3, mình xin phép viết một bài review qua về ngành khoa học máy tính nói chung và ngành khoa học máy tính ở trường đại học bách khoa hà nội nói riêng.

Bài viết mang tính chất giới thiệu là chính, sẽ không mang tính học thuật, phù hợp với những bạn đang có ý định thi tuyển vào ngành,hình dung xem mình sẽ được học gì, hoặc một số bạn năm nhất, năm hai của ngành có thêm định hướng cho tương lai sắp tới. Về phần chi tiết môn học, tài liệu đã có blog viết riêng, các bạn search trong trang nhé.

Tổng quan chương trình đào tạo 

Sau đây là hình minh họa cho các khối kiến thức lớn mà bạn phải học( bao gồm B1: cơ bản B2: sâu hơn vào ngành). Trong đó TC- tín chỉ là đơn vị tính gần như tương đương với thời gian(số tiết, số giờ tự học) để hoàn thiện môn học. 



Khối kiến thức cơ bản

Giống như tất cả các ngành học khác, bạn vẫn phải trải qua 1-2 năm để học các khối kiến kiến thức cơ bản, bao gồm khối toán và khoa học cơ bản: mình sẽ viết một số thứ mình còn đọng lại và đôi khi gặp lại tới bây giờ , đừng chê ít nhé :))

Tin học đại cương

dậy bạn biết viết “hello world” về lập trình C 

Toán rời rạc

thuật toán tìm đường đi ngắn nhất, đồ thị, tư duy logic.

Giải tích I,II,III

cung cấp kiến thức cơ bản về đạo hàm, tích phân, gradient,.. 

Đại số

cung cấp kiến thức về ma trận, sau này dùng nhiều trong tính toán deep learning.

Xác suất thống kê

phân phối gauss, xác suất có điều kiện.

Nhập môn các phương pháp tối ưu

tìm nghiệm tối ưu của một hệ các ràng buộc. trước kia bạn học bất phương trình 2 ẩn 2 phương trình thì giờ nó phức tạp hơn, mở rộng hơn  

Vật lý đại cương I.II

ý nghĩa của entropy, kiểu cách đo độ biến động của một hệ.


sau đó là một số môn khác cũng khá là bổ ích mà bạn sẽ quan tâm nếu cần học bổng :

Lý luận chính trị 

Giáo dục thể chất 

Giáo dục Quốc phòng - An ninh

Tiếng Anh (khi đầu vào tiếng anh gà mờ )

Pháp luật đại cương

Lý luận TDTT

Đường lối quân sự

Tiếng Anh 1

Tư tưởng HCM

Bơi lội

Công tác quốc phòng-An ninh

Tiếng Anh 2

Những NLCB của CNML I

3 môn tự chọn nào đó(bóng bàn, bóng rổ, chạy, nhảy , cầu lông, bóng đá...)

QS chung và KCT bắn súng AK

 

Những NLCB của CNML II

     

Đường lối CM của ĐCSVN

     


Đi vào cốt lõi ngành 

Cũng như phân trước, mình sẽ đưa ra một số nhận định của mình về những môn mình đã học:


Nhập môn CNTT và TT

bản nâng cấp của tin đại cương với một phần tìm hiểu về ngành công nghệ thông tin 

Technical Writing and Presentation

dạy bạn cách viết report, mail 

Cấu trúc dữ liệu và thuật toán

không phải ngẫu nhiên mà môn học này được dạy từ khá sớm. mình nhấn mạnh tầm quan trọng của nó. môn học cung cấp kiến thức về cấu trúc dữ liệu (hàng đợi, ngăn xếp, cây, danh sách liên kết  ), thuật toán đệ quy, duyệt cây, các thuật toán sắp xếp đi cùng với đó là độ phức tạp thuật toán . môn học cho bạn  nền tảng cơ bản về lập trình cho bạn .

Kiến trúc máy tính

dậy bạn thực sự cpu nó làm gì ? tại sao dùng cache lại nhanh ? và lí do tại sao bạn phải lắp 2 thanh ram giống nhau 

Kỹ thuật lập trình

kỹ thuật viết code sao cho không bị mắng, khi gặp lỗi thì tìm cách debug ra sao ?  test một chương trình thế nào để biết nó đúng 

Nguyên lý hệ điều hành

cách mà máy tính có thể hoạt động một cách trơn tru khi bạn bắt nó làm cả tá thứ sẽ được một phần trả lời trong câu hỏi này. bên cạnh đó cũng sẽ giúp bạn backup nghề cài win dạo.

Mạng máy tính

cách mà dữ liệu có thể truyền đi lại trong mạng, cơ chế làm sao mà nó có thể chịu lỗi khi mất dữ liệu, cách bảo mật tin khi truyền đi 

Cơ sở dữ liệu

dậy bạn truy vấn sql

Lập trình hướng đối tượng

mình cảm thấy môn này và cấu trúc dữ liệu là 2 môn khó và rất quan trọng. trả lời cho câu hỏi gần như chắc chắn bạn phải trả lời khi phỏng vấn job liên quan java: hãy trình bày 4 tính chất của lập trình hướng đối tượng. mà dù trong môn này không được học, nhưng mình đề xuất khi học môn này nên đọc thêm về design pattern, sẽ cực kì thực tế và cho bạn một nguồn cảm hứng học lập trình .

Phân tích và thiết kế hệ thống

để cho chuẩn thì công việc trước khi code của một coder thì phải viết tay sơ đồ luồng thực thi, đoạn code này xử lí gì, nó mang trách nhiệm gì, nso chuyển data tới những đâu,... tất cả sẽ được thiết kế trong một bản thiết kế riêng mà chưa cần thiết phải code. 

Nhập môn Trí tuệ nhân tạo

kiến thức nền tảng cho học máy và học sâu, nói qua về thuật toán “thông minh” hơn mấy thuật toán trong cấu trúc dữ liệu và giải thuật

Project I,II,III

hên xui 

Thuật toán ứng dụng

môn học của tư duy, còn đối với mình là một phần may mắn nữa.

Nhập môn công nghệ phần mềm

là sự kết hợp Lập trình hướng đối tượng, Phân tích và thiết kế hệ thống. nơi mà bạn hoàn thành cho mình được một project hoàn chỉnh đầu tiên.

Nhập môn Học máy và khai phá dữ liệu

Nhập môn Trí tuệ nhân tạo nhưng ở một lĩnh vực sâu hơn.

Nhập môn an toàn thông tin

cho bạn cái nhìn bao quát nhất về an toàn thông tin. trả lời cho câu hỏi : bạn là ai trong không gian mạng 

Quản trị dự án CNTT

môn học cho các quản trị dự án tương lai, dạy về cách đàm phán với khách hàng, hợp đồng, lập lịch cho nhân viên. có rủi ro thì phải làm thế nào .

Làm việc nhóm và kỹ năng giao tiếp

kỹ năng trong giao tiếp ứng xử trong nhóm 


Tự chọn theo modun 


bạn có thể đi theo các hướng như : xử lí dữ liệu lớn (kiểu đề xuất quảng cáo), học sâu(mấy cái nguy hiểm như xử lí ngôn ngữ tự nhiên ), hoặc code web. thôi bài đã dài. mình xin phép hẹn buổi sau :v


Tổng kết 

  • lời khuyên cho các bạn nếu muốn học ngành này mà không nản thì nên đăng ký học sớm các môn code nhiều như Cấu trúc dữ liệu và thuật toán,Lập trình hướng đối tượng, Kỹ thuật lập trình, Thuật toán ứng dụng.

  • sẽ có một số môn liên quan tới nhau, nếu thật sự tryhard thì nên học cùng một kì, áp lực sẽ giúp bạn phải học một cách thật chăm chỉ để đáp ứng yêu cầu môn học. nếu làm được điều này, bạn sẽ ít rơi vào tình trạng: “? học cái này để làm gì ”

  • trong quá trình học khối kiến thức cơ bản, thường là 1-2 năm đầu, mình có một vài lời khuyên cho các bạn về một số hướng bổ trợ để đỡ nản cũng như giải trí quá nhiều :v 

    • Một là, bạn có thể đăng ký trước môn học kỳ sau, những môn chính trị, thể chất gối vào những kì sau. ưu điểm là sẽ định hướng được mình hóc j, còn nhược điểm là thường các bạn sẽ coi thường những môn phụ.
    • Hai là, bạn xác định cho mình một hướng học trước mà không cần quá nhiều kiến thức chuyên ngành, mình nghĩ là học web, hoắc là học học máy( liên quan nhiều tới toán cơ bản, sẽ có hứng thú hơn khi biết kiến thức toán mà mình học được dùng cho việc gì )
    • Ba là, có thế học tiếng anh, nó rất cần thiết cho việc học sau này của bạn, không chỉ những có thể thăng tiến mà nó cũng giúp bạn tiếp xúc với nguồn tài liệu chất lượng bằng tiếng anh.

Good Luck,

longpt


6/25/2021

Đề thi đầu vào MDC | Share


Khi tham gia phỏng vấn thực tập, đa số công ty chọn việc phỏng vấn trực tiếp để họ có thể hiểu sâu được hơn năng lực của các ứng viên. Nhưng trong thời điểm này do dịch mà nhiều cuộc phỏng vấn phải thực hiện online thì việc hỏi trực tiếp mà qua các nền tảng như Google Meet hay Zoom nó mang tính khách quan thì một số công ty sẽ đưa ra một số bài kiểm tra để ứng viên làm.


Trong các công ty liên kết với viện CNTT&TT thì MDC chọn cách phỏng vấn ứng viên bằng một bài test nhỏ. Thường khi các công ty test ứng viên bằng bài test thì sẽ là thuật toán là chủ yếu nha, là những thứ như cấu trúc dữ liệu & thuật toánthuật toán ứng dụngnhững kiến thức về đồ thị,...

Mình có một đề test của công ty MDC cho các ứng viên, mọi người có thể tham khảo và cũng như là cơ hội để rèn luyện thuật toán trước những kì thi giữa kì hay cuối kì của môn toán rời rạccấu trúc dữ liệu & thuật toán hay thuât toán ứng dụng : TẢI VỀ ĐỀ THI ĐẦU VÀO MDC

Mình có giải qua bài toán 2 ( cây và rừng) bằng ngôn ngữ C++, mọi người có thể tham khảo qua : tree&forest

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

6/08/2021

Template Powerpoint HUST | Share


Việc thuyết trình trên đại học kiểu như là cơm bữa vậy và việc làm slide để thuyết trình cũng như vậy. Không giống như hồi học cấp 3 có thể cả kì mới có môn bắt thuyết trình, mọi người có thể bỏ thời gian ra trau chuốt cho nó, làm các hiệu ứng, chuyển trang tuyệt đẹp, chuẩn bị mấy tuần để có một buổi thuyết trình, nhưng trên đại học có thể sẽ rất khác nhất là tại Bách Khoa. Mình thấy mọi người làm slide đơn giản và đủ ý chứ không màu mè (tuy nhiên có 1 số thầy cô theo như mình biết là khá thích màu mè, làm slide rất thích animation, nhưng không nhiều hầu hết các thầy/cô chỉ yêu cầu slide đơn giản, đủ ý thuyết trình và chỉ là công cụ minh họa cho bài thuyết trình của mình). 

Khi học môn Technical Writing and Presentation mọi người sẽ được học thêm về 1 số cách trình bày slide, làm slide sao cho chuẩn chỉ, cách đặt tiêu đề, số chữ tối đa trong 1 trang slide,... mà nó như là quy định được đặt ra chung cho mọi người.

Trong những buổi bảo vệ bài tập lớn mọi người có thể thây một vài template được sử dụng khá nhiều và cũng được các thầy/ cô sử dụng trên lớp khá nhiều luôn thì đó là những template chung của trường hoặc viện, nếu không biết tải tại đâu thì các bạn có thể tải ở đây nha : TEMPLATE HUST POWERPOINT

Mọi người có thể tham khảo 1 bộ template khác ở đây nha : TEMPLATE KHÁC

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) : 

5/18/2021

Javafx | Share


JavaFX là bộ công cụ tạo và triển khai các ứng dụng Desktop cho máy tính chạy trên nhiều nền tảng khác nhau. Theo Oracle thì JavaFX sẽ thay thế Swing để trở thành thư viện UI chuẩn cho bộ công cụ Java. 

JavaFX là một thư viện Java bao gồm các lớp và các giao diện được viết bằng mã Java nguyên gốc.

JavaFX có một số cải tiến so với Java Swing, ngoài tạo giao diện bằng những dòng code, lập trình viên có thể sử dụng FXML để tạo giao diện và làm chúng bắt mắt hơn với CSS.

JavaFX rất thân thiện với MVC, nó giúp tách biệt hoàn toàn các phần ra khỏi nhau một cách rõ ràng hơn.

JavaFX còn có WebView dựa trên trình duyệt WebKit, vì vậy bạn có thể nhúng các trang web hoặc các ứng dụng web bên trong JavaFX.


Tại Bách Khoa thì có rất nhiều các bài tập lớn mà mọi người phải xây dựng những ứng dụng Desktop cho một yêu câu nào đó, JavaFX sẽ là một lựa chọn hoàn hảo thay thế cho Swing trong những bài tập lớn này vì những lợi ích mình đã nêu trên.

Để có thể tạo những file FXML đơn giản thì mọi người có thể sử dụng công cụ Scene Builder để có thể thực hiện các thao tác kéo thả dễ dàng hơn.

Nếu bạn mới bắt đầu với JavaFX thì có thể tham khảo tutorials của xemacscode hoặc tutorials Lập trình JavaFX căn bản của HowKteam.

5/07/2021

Mail edu của trường làm được gì ? | Share


Với mức học phí đắt đỏ của trường thì mỗi sinh viên chúng ta đều được cấp 1 email edu được cung cấp bới Microsoft. Và dĩ nhiên là thứ hữu ích nhất chính là kho lưu trữ One Drive 5TB cho mỗi tài khoản mà chắc có lẽ lưu hết cả 5 năm học tại Bách Khoa cũng không thể nào hết được. Ngoài ra chúng ta sẽ được dùng miễn phí bộ Office 365 bản có thể dùng offline và vô vàn sản phẩm khác nằm trong bộ công cụ Office 365 này, tiêu biểu nhất trong thời kì dịch bệnh này là Microsoft Teams.

Nhưng không chỉ có thế, những thứ sau đây mình nói tới mới thực sự là những thứ gì thú vị nhất khi sử dụng email edu được cung cấp bởi Microsoft.


Microsoft đã tạo ra một hệ sinh thái tuyệt vời cho sinh viên, dĩ nhiên là những người có sử dụng email edu. Mình không rõ là email edu được cung cấp bởi Google có sử dụng được những dịch vụ này hay không, tuy nhiên chúng ta cũng không cần biết vì Bách Khoa đã không còn sử dụng dịch vụ của Google nữa mà chuyển sang sử dụng dịch vụ Cloud của Microsoft đã mấy năm rồi và email chúng ta sử dụng hoàn toàn đủ điều kiện để nhận các lợi ích này tới từ Microsoft, mình đã thử và mọi thứ thật tuyệt vời.

Trước hết mình liệt kê một số lợi ích để tạo sự hấp dẫn trước nha : 

  • Đầu tiên, là Github Pro trong suốt thời gian là sinh viên ( mail trường cung cấp là có hạn nha, khi các bạn ra trường, email sẽ được thu hồi, trong thời gian là sinh viên là nói tới việc bạn còn được cung cấp và sử dụng email edu của trường)
  • Tên miền .me miễn phí và 1 số tên miền khác giá rẻ bất ngờ trong thời hạn 1 năm tại namecheap.com
  • Sử dụng các sản phẩm bản mất phí của JetBrains hoàn toàn miễn phí
  • Tên miền miễn phí và bảo mật tại name.com trong thời gian 1 năm
  • Một số khóa học ( tuy nhiên lại bằng tiếng anh) tại một số trang web nổi tiếng hoàn toàn miễn phí
  • Sử dụng một số dịch vụ như gửi email hàng loạt, ứng dụng tích hợp thanh toán, ... hoàn toàn free.
  • Nhận ngay 100$ trong tài khoản Microsoft Azure
  • Sử dụng sản phẩm của JetBrains miễn phí
  • và phải nói là nhiều nhiều lợi ích nữa mà mình không thể sài hết trong quãng thời gian sinh viên này được

Bây giờ mình sẽ hướng dẫn mọi người để có thể sử dụng các lợi ích này nha.

Trước hết là các bạn phải có tài khoản github, bạn nào chưa có thì có thể đăng kí tại github.com nha. Các bạn có thể đăng kí bằng bất cứ mail nào cũng được, không nhất thiết là cần đăng kí bằng mail edu. Tuy nhiên, các bạn phải add mail edu vào trong tài khoản. Để add mail edu vào tài khoản github của các bạn thì vào phần setting và chọn email rồi add email address


Sau khi đã có tài khoản github, mọi người vào đây để đăng kí nhận lợi ích dành cho sinh viên : https://education.github.com/benefits (sau khi vào trang web bấm vô Get student benefits nha)

Các bạn sẽ được chuyển hướng tới giao diện sau, chọn đúng thông tin và nhấn tiếp tục



Xong bước này các bạn sẽ nhận được một email, sau khi nhận được email thì về cơ bản mọi thứ đã xong, bây giờ để xem các benefit của mình các bạn truy cập vào https://education.github.com/pack/offers để xem nha. Giao diện của nó sẽ như sau : 


Các bạn có thể thấy ngay là có rất nhiều benefit dành cho các bạn, tiêu biểu ngay đầu ta có thể nhìn thấy như được $100 vào tài khoản cho thành viên mới tại DigitalOcean (những nền tảng này là gì thì bạn có thể Google là biết ngay nha hoặc xem mô tả đơn giản bên dưới kia ta có thể thấy ngay đây là nền tảng cung cấp Cloud Hosting), hoặc nhìn sang bên phải cùng kia chúng ta có thể thấy ngay được là sẽ được miễn phí 1 năm sử dụng tên miền .me và SSL tại namecheap.com (tuy nhiên với trường hợp này chúng ta không đăng nhập qua namecheap.com mà phải vào qua nc.me nha). Tất cả các tài khoản ở đây, các bạn tham gia và đăng nhập với tài khoản github mà bạn vừa đăng kí lấy benefit (yên tâm là tất cả các trang web đây đều có đăng nhập, đăng kí với Github).

Về cơ bản thì có rất nhiều benefit và mình cũng chưa có sử dụng hết nên mình sẽ hướng dẫn mọi người nhận 1 số benefit nha. 

Nhận tên miền .me free từ namecheap

Để nhận tên miền .me từ namecheap các bạn truy cập vào website sau : https://nc.me/, nếu bạn đăng nhập vào github rồi thì website sẽ tự động đăng nhập qua github, còn nếu chưa thì hãy chọn đăng nhập qua github nha. Chọn tên miền bạn muốn mua và bạn có thể thấy ngay, giá của nó là 0$ : 


Ngoài ra 1 số tên miền khác được giảm giá như bên dưới kia.

Nâng cấp lên tài khoản Github Pro

Thường thì sau khi add mail trường và đăng kí sử dụng benefit thì Github sẽ tự động cập nhật huy hiệu Github pro cho tài khoản của bạn, nó sẽ được hiên thị ở phần profile của bạn như này : 



Nhận ngay 100$ vào tài khoản Microsoft Azure để sử dụng các dịch vụ tại Azure

Azure là gì thì các bạn có thể Google để tìm hiểu về nó nha, nói chung nó tuyệt vời, ta có thể thuê máy ảo, sử dụng các dịch vụ Cloud, ... nói chung là vô vàn.
Sau khi đăng ki các bạn sẽ nhận được 100$ vào tài khoản để sử dụng như này : 


Sử dụng miễn phí sản phẩm của JetBrains

Hãy đăng kí một tài khoản JetBrains bất kì. Bạn sẽ có 1 giao diện như sau sau khi đăng kí: 


Chọn "Apply for a free student or teacher license", ban sẽ được chuyển tới giao diện: 

Chọn "Apply Now", giao diện sẽ chuyển tới: 

Các bạn không điền thông tin trường học nha, chuyển sang tab github sau đó liên kết với tài khoản github education của bạn, JetBrains sẽ tự nhận tài khoản github education. Sau khi liên kết điền nốt thông tin, vào mail xác nhận là các bạn đã có một tài khoản JetBrains với license student để dùng: 


Thành quả của chúng ta là bộ công cụ JetBrains mạnh mẽ sử dụng free cho sinh viên, phải nói là bộ công cụ của JetBrains dùng rất sướng, mỗi tội hơi nặng: 

Những thứ còn lại các bạn có thể tự tìm hiểu và sử dụng nha vì mọi thứ đều đã có hướng dẫn ở bên dưới hết rồi, và mọi việc khá đơn giản là chỉ cần đăng nhập bằng tài khản github mà bạn đã add mail edu là hệ thống của từng nền tảng sẽ nhận được bạn.

Có nhiều người nói là tại Việt Nam không nhận được các benefit trên nhưng mình xin đính chính là hoàn toàn nhận được nha, mình đã lấy và đang sử dụng. Như vừa mình nói ở đầu, có thể trường hoc của các bạn sử dụng dịch vụ của Google hay vì nhiều lý do gì đó, nhưng ít nhất với email edu của trường Bách Khoa Hà Nội là các bạn có thể đăng kí để nhận các lợi ích này từ Microsoft 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).