Cần xin lời khuyên về học lập trình

Em chào mọi người,

Em lập topic này để xin một ít lời khuyên cũng như hướng đi của việc học lập trình ạ.

Nói sơ qua, em đang làm một công việc liên quan tới kế toán tài chính, thời gian của em khá rảnh nên em muốn học thêm về lập trình. Em cũng xin nói rõ là vì em muốn học thêm thôi, chứ ko có ước mơ gì to tát đâu nên mong anh chị giúp đỡ em ạ.

Hiện tại em đã tự học Python được gần 8 tháng, em có làm kha khá bài trên HackerRank, Snakify… Một số khái niệm căn bản về lập trình như Input/Output statement, vòng lặp, chuỗi, hàm… em cũng đã nắm được cơ bản. Em có tự học về đệ quy và cũng hiểu được một số bài toán căn bản như Tháp Hà Nội, tính giai thừa, dãy Fibonacci, sàng nguyên tố… (em tự học là chủ yếu nếu nói có gì sai mong anh chị bỏ qua).

Tuy nhiên khi tự học về một số vấn đề khác như Class, Dynamic Programming, Linked List, Hash Table, Trees, Graph thì em lại thấy rất khó hiểu mặc dù đã đọc nhiều nguồn khác nhau (em học theo cuốn này là chủ yếu: https://runestone.academy/runestone/books/published/pythonds/index.html ).

Nên em viết topic này rất mong nhận được lời khuyên từ các anh chị cho việc học lập trình, cũng như các anh chị có thể recommend cho em một số khóa học online hay offline dạy về tư duy lập trình được không ạ?

Em cảm ơn anh chị nhiều!

Thấy bác đang thấy bí ở môn Cấu trúc dữ liệu và Giải Thuật.
Em nghĩ bác nên đổi gió học ở tài liệu khác xem. Có thể do tài liệu kia của bác viết khó hiểu.

6 Likes

HIện tại mình thấy bạn đang học theo hướng giải thuật, Nhưng mình đọc thì thấy bạn muốn theo hướng phát triển phần mềm nhiều hơn đúng không?? Như vậy thì nên tập chung học về cách tạo 1 ứng dụng hơn là học về giải thuật.

Phần giải thuật chỉ nên nắm vững một số kiến thức sau là ổn rồi:

  • Search, Sort
  • Các cấu trúc dữ liệu căn bản: Stack, Queue, LinkedList, Hash, …

Còn mấy thứ như DP, DFS, BFS, … thì mình thấy có vẻ không dùng nhiều (hoặc là trình mình cùi nên chưa được dùng)

5 Likes

Cảm ơn bạn nhiều,

Thật ra thì mình không theo hướng nào cả, đơn giản vì mình muốn học thêm về lập trình thôi ạ. Mình tự google thì thấy một trong những môn học đầu tiên của các bạn sinh viên CNTT là Cấu trúc dữ liệu và giải thuật, nên mình tìm một số sách dạy về cấu trúc dữ liệu để học (cuốn mình dẫn link trên) để tự học, và khi tự học thì mình gặp những khó khăn như trên.

Mình nghĩ chủ topic nên học theo hướng thực dụng hơn là hướng của sinh viên đại học chuyên ngành khoa học máy tính. Lý do là vì nếu không yêu thích toán, học mấy cái giải thuật phức tạp kia rất là nhức đầu, để cài đặt được cho chạy không phải dễ. Mà làm những việc đó chẳng để làm gì nếu không có ý định sau này vào một phòng thí nghiệm nào đó để làm (các phòng thí nghiệm dạng như vậy hầu như không tồn tại ở VN).

Do đó, phải xác định giờ học lập trình để làm việc gì cụ thể, giải quyết vấn đề gì trong cuộc sống/ trong công việc. Ví dụ học lập trình để áp dụng vào kế toán tài chính, giải những bài toán cụ thể như là làm một ứng dụng nhỏ quản lý tài chính cá nhân, chi tiêu hay gì gì đó, hoặc để hỗ trợ công việc mà Excel hoặc phần mềm đang có chưa làm được. Lúc đó, quá trình học sẽ thú vị hơn, mỗi ngày học một ít, học hướng mục đích cụ thể để viết vài đoạn code, lắp ghép lại thành cái phần mềm kia.

Còn học lập trình theo kiểu học một môn nghệ thuật, biểu diễn chơi với những lập trình viên khi tụ tập thì không nên, học cái đó mất cả đời.

6 Likes

Bạn vừa nhảy vào học phát mà lao luôn vào python thế kia thì ko hiểu class với object các thứ là phải rồi, theo mình thì python ko phải là thứ để bắt đầu. mặc dù cú pháp rất dễ học và dễ nhớ cho nên nó cũng sinh ra mặt trái là code khó hiểu vì nó ngắn quá, ko rõ ràng. biết dùng thật đấy nhưng chả hiểu tại sao nó lại thế.
Còn mấy cái bạn thấy khó hiểu đó là hướng đối tượng, mà thằng python lại ko phải là thuần hướng đối tượng.
Mình khuyên bạn nên chuyển sang nghiên cứu Java hoặc C# trước, vì hai ngôn ngữ này là điển hình cho lập trình hướng đối tượng.
trong collection của Java cũng có đầy đủ Linked List, Hash Table, Trees,… cho bạn nghiên cứu =)).
Chúc bạn thành công.

6 Likes

Mình cảm ơn bạn nhiều nhé, vì trước giờ mình tìm hiểu thấy nhiều người khuyên là nên bắt đầu với Python, đúng là cú pháp của Python rất dễ học và dễ nhớ!

Thử đọc headfirst data struct xem

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