Những mảng nào sử dụng nhiều thuật toán trong Computer Science?

Chào mọi người! Em / mình là newbie, có một số thắc mắc mong nhận được câu trả lời từ những người đi trước.
#1: Mình đậu kt2 bách khoa Hà Nội năm 2014 nhưng sau khi học hết năm nhất thì mình bị phân ngành vào điện tử viễn thông do không đủ điểm phân ngành vào CNTT. Bản thân mình muốn học CNTT nên sau khi học vài năm đã rút hồ sơ và du học Hàn Quốc. Hiện tại mình đang là sinh viên năm nhất Computer Science, năm tốt nghiệp ước tính là 2023 (mình đã 27 tuổi). Vậy ở độ tuổi 27 mới ra trường thì có gặp quá nhiều khó khăn khi đi xin việc không ạ?
#2: Mình rất yêu thích thuật toán, mình có thi ACM-ICPC các thứ, cũng hay lên Codeforces làm contest, vì vậy mình rất muốn chọn những mảng nào sử dụng nhiều thuật toán. Mình có search trên internet, đa số các nguồn đều cho ra câu trả lời là ML. Mình có thử học qua mấy tháng về ML và thực sự nó hơi vượt tầm của mình, cụ thể là nó quá nặng về toán. Vậy ngoài ML ra thì trong Computer Science còn mảng nào sử dụng nhiều thuật toán nữa không ạ?

Cảm ơn mọi người đã đọc 1 bài rất dài này!

Nếu bạn đi theo hướng nghiên cứu:

https://en.wikipedia.org/wiki/Outline_of_computer_science nói về nhiều toán thì ngành này là toán ứng dụng luôn rồi :slight_smile:

Còn thuật toán thì ý bạn là tìm ra thuật toán mới, hay là muốn sử dụng thuật toán?

3 Likes

#1:Khi bạn đi phỏng vấn thì phải trả lời nhà tuyển dụng tại sao 27 tuổi mới ra trường,nếu câu trả lời của bạn thuyết phục thì trả có vấn đề gì đâu :smiley:
#2:Khi bạn chọn Computer Sciene là bạn đã chọn toán rồi(KHOA HỌC máy tính mà :sweat_smile:) .Có thể bây giờ bạn thấy nó vượt tầm mình do những kiến thức toán như giải tích , đại số tuyến tính của bạn còn yếu.Nhưng sau khi học lại căn bản thì nó không nặng như bạn nghĩ đâu.Mảng ML là mảng dùng nhiều thuật toán nhất rồi , ngoài ra còn có hệ thống thông tin cơ mà mình ko biết liệu trường bạn có dạy hay bản thân bạn có hứng thú với mảng này hay ko.

1 Like

Nói thật ra thì mình thích nghiên cứu, nhưng thực tế ra thì kiến thức toán của mình có lẽ là không đủ, nên mình muốn làm thay vì nghiên cứu. Và những mảng đấy sử dụng nhiều cấu trúc dữ liệu và thuật toán, những thứ là thế mạnh của mình :((

Thực ra các trường đại học ở nước ngoài thường không có khoa nào là Information Technology, họ thường chỉ có Computer Science, và CS đã bao gồm IT ở trong đó rồi. Mình thì chỉ nghĩ đơn giản là học tốt ngôn ngữ lập trình + cấu trúc dữ liệu và thuật toán là ổn, chứ mình k nghĩ sẽ phải dùng nhiều toán như thế này :((

Mình ko biết chương trình đào tạo bên Hàn thế nào chứ những trường tốt bên Mỹ,Anh,Can,Úc School of Computing của họ đều chia ra 2 ngành CS với IT(hoặc SE).Bạn học tốt lập trình và thuật toán là quá ổn rồi thừa sức về VN tìm công việc lương cao.Nhưng nếu bạn muốn làm cho những tập đoàn công nghệ hàng đầu thế giới như Google,Amazon,Microsoft hay Viettel R&D thì bạn buộc phải giỏi toán vì đây ko còn là cấp độ lập trình viên nữa mà là kĩ sư và nhà khoa học rồi ^^

2 Likes

Cảm ơn những chia sẻ của bạn! Có lẽ mình nên dành thêm thời gian cho toán. Hi vọng ra trường về VN có cái ăn :((

1 Like

Bất cứ ngành nào trong computer science đi sâu về nghiên cứu thì đều nặng về toán. Ở đây em đang nhầm lẫn 1 chút khái niệm, anh nghĩ cái em đang giỏi là thuật toán, còn cái em thiếu là nền tảng về toán, hay lý thuyết toán.
Thuật toán chỉ là ứng dụng của toán vào 1 chương trình máy tính, thông qua những dòng code. Còn nền tảng toán là những môn như toán rời rạc, đạo hàm, ma trận, tích phân, vi phân… Em chỉ muốn đi về thuật toán thì em ko thể nào làm nghiên cứu được vì khi em đọc những bài báo khoa học, người ta dùng rất nhiều ký hiệu và lý thuyết toán, bắt buộc em phải giỏi toán (chứ ko phải thuật toán) thì em mới đọc hiểu và phát triển thuật toán đó, và thêm thắt những thứ của em vào.

Chúc em thành công! :smile:

7 Likes

Cảm ơn anh! Đấy cũng là băn khoăn của em ạ! Có lẽ em nên dành nhiều thời gian cho toán ạ!

1 Like

Dynamic programing, Tree, Graph, Search, data struct những thứ này áp dụng rất nhiều
Có vẻ như bạn đang mông lung không biết những cái đó thì áp dụng vào đâu
Trả lời: nó áp dụng vào những thứ cốt lõi, ở tầng dưới của dev.
Ví dụ:

  1. ngôn ngữ js có Array.sort bạn nghĩ nó từ đâu ra, chạy nhanh chậm thế nào
  2. database bạn viết where điều kiện các kiểu, đánh index (tree, hash) để câu select chạy nhanh hơn thì bạn có đặt câu hỏi là implement nó như thế nào chưa
  3. bạn gõ lệnh ping google.com thì gói tin tự biết tìm (đường đi) đến server của google sao, bạn có hỏi ai nó tìm đường đi như nào chưa
  4. một cái ứng dụng để zip/unzip (compress data) thì có cần cấu trúc dữ liệu và giải thuật không?
  5. Hệ điều hành nó có thể làm nhiều việc cùng lúc (trông giống như vậy), bạn có hỏi người ta đã làm gì chưa, có cần giải thuật gì không

Nghe thì có vẻ như bạn mới học năm nhất, nên 5 ví dụ trên bạn chưa nghĩ tới, chưa đặt ra thắc mắc thì cũng quá bình thường, nên cũng không là vấn đề.

Vấn đề ở chỗ bạn chỉ mới năm 1, chưa đủ kiến thức để hỏi những câu như vậy, trong khi năm 2 3 còn rất nhiều thứ, mà có thể khi học năm 2 năm 3 sẽ tự trả lời câu hỏi của bạn. Có vẻ hơi vội vàng
Mà nếu bạn có tinh thần học hỏi như vậy, thì lẽ ra người bạn nên hỏi đầu tiên phải là người dạy bạn những cái bạn đang học và đang làm. Tại sao người ta học giải thuật để làm gì? câu hỏi này nên để cho người dạy bạn trả lời sẽ hay hơn. Hoặc bạn nên học thêm 2 năm nữa, khi hết năm 3, có lẽ bạn sẽ tự hiểu

4 Likes

Thực ra vì xuất phát điểm của em muộn (học 3 năm bk xong bỏ) nên em muốn định hướng trước để học tốt nó, bù lại yếu điểm của mình. Còn về giải thuật thì thực tế là em chưa được học gì từ trường đại học hay thầy cô, hồi xưa lúc rảnh rỗi em vô codefight, codeforces này nọ giải các bài cơ bản đến khó hơn, data structure thì chủ yếu học từ geeksforgeeks, đọc code người khác. Nên k có người định hướng, em hỏi câu hỏi này là để tự học trước, giống như những gì em đã làm với competitive programming, vì em học bằng tiếng Hàn và tiếng Anh nên nếu k tự học thì khó có thể tiếp thu được kiến thức giáo sư dạy như các bạn học bằng tiếng mẹ đẻ.

2 Likes

Nếu ở việt nam thì 27 tuổi mới ra trường chắc là cũng có thể có khó khăn đấy, vì cao không tới-thấp không thông. Nếu xin ở mức fresher thì kém ưu thế so với fresher 22-23 tuổi , còn ở mức cao hơn thì chưa chắc đã cạnh tranh được với 27 tuổi tương đương về kinh nghiệm thực tế.

@Thuy_Pham anh muốn biết lý do gì em lại bỏ ngang 3 năm BK, em học ngành gì ở BK?

1 Like

Đây anh ơi.

4 Likes

@noname00 anh muốn nghe thêm câu chuyện của bạn này nên mới hỏi vậy. Thấy bạn rất dũng cảm và có quyết tâm cao khi khởi đầu lại khá muộn, nhưng lại ngạc nhiên vì bạn này chưa tìm hiểu kỹ về ngành computer science đã vội đi du học. Thấy vừa dũng cảm vừa phiêu lưu sao ấy :slight_smile:

4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?