Định hướng việc học cho người mới học công nghệ thông tin | Deep Learning cơ bản
 

Định hướng việc học cho người mới học công nghệ thông tin

| Posted in Programming

Bạn mới vào học công nghệ thông tin, bạn trái ngành nhưng giờ thấy đam mê công nghệ và học, những câu hỏi bạn băn khoăn : Ban đầu mình nên chọn ngôn ngữ nào để học C/C++ hay qua thẳng Java/C# luôn ? Lộ trình học cho mình như thế nào mình nên học gì như thế nào ? … Như ở tiêu đề bài này mình sẽ hướng dẫn cho các bạn mới học một lộ trình thích hợp.

1.Làm quen cấu trúc cơ bản : Đây là bước đầu tiên và cũng là nền tảng cơ bản để đi những bước tiếp. Mục tiêu là làm quen với biến, với câu lệnh điều kiện và vòng lặp. Câu hỏi đặt ra là ngôn ngữ nào để bắt đầu cho việc lập trình ? Nói chuẩn ra là ngôn ngữ nào cũng được nó không ảnh hưởng quá nhưng mình khuyên là nên học C. Mình khuyên học C vì thứ nhất C là hướng cấu trúc mà không phải hướng đối tương (hướng đối tượng ở giai đoạn sau ).

À thế hướng cấu trúc là gì nhỉ ? hiểu đơn giản là bạn chia nhỏ các công việc (các hàm) ra đủ nhỏ để giải quyết, ví dụ như hình bên. Thứ hai là học C bạn học được cách quản lý bộ nhớ cái này thì như ông Java có thằng JVM làm hộ. Bạn có để ý là luôn có một môn dạy bạn lập trình C hoặc Pascal không :), mục đích là để dạy cho bạn bước này. Thế nên tốt nhất là bạn nên học môn này nghiêm túc.Nếu bạn học không ổn môn này hoặc bước này không chắc thì rất khó học tiếp vì nó là bước đệm để đi tiếp. Cách học là bên cạnh học trên lớp thì về nhà cày nhiều bài tập về phần đấy. Tài liệu cho ai muốn học thêm hoặc tự học : cuấn lập trình C cơ bản và nâng cao (Phạm Văn Ất), hoặc cuấn nhập môn lập trình ngôn ngữ C (Nguyễn Thanh Thủy). Hết bước này bạn nên làm gì đấy để luyện tập những gì đã học coi như bài tập lớn của bước này. Hết bước này bạn có thể làm game tic-tac-toe hoặc quản lý sinh viên,…làm để bạn thấy thích thú hơn với việc lập trình 🙂

2. Bước tiếp là cấu trúc dữ liệu và giải thuật : 

Mọi người hay ví bước này như luyện nội công với người tập võ vậy. Nói vậy để bạn thấy được tầm quan trọng và sự cần thiết của nó. Sau khi nắm được các cấu trúc cơ bản ở bước một xong bạn bắt đầu quan tâm đến một số thứ : thời gian chạy chương trình đã tối ưu chưa, có rút ngắn được không nhỉ ?, tài nguyên dùng thế có bị phí phạm không ?,..Ở bước này bạn sẽ được học các cấu trúc dữ liệu và các giải thuật phổ biến. Quan trọng hơn là khi nào thì dùng cái nào cho hiệu quả. Một số cấu trúc dữ liệu thường gặp như single linked list, double linked list, queue, stack, tree, graph,.. cùng với một số giải thuật như sắp xếp, tìm kiếm, duyệt cây,…Nhiều người đi làm rồi vẫn thấy là không cần cấu trúc dữ liệu và giải thuật vẫn làm được việc bình thường , và phủ nhận đi tầm quan trọng của nó. Nhưng thực ra họ chỉ làm chạy được chứ chưa ngon, à để mình lấy thử ví dụ để bạn thấy sự cần thiết nhé : 

Giả sử bạn phải tìm kiếm một người trong 1000 bản ghi dữ liệu có sẵn, nếu bạn dùng mảng thông thường bạn phải duyệt 1000 bước, nhưng bạn dùng cây nhị phân lưu trữ thì việc duyệt để tìm kiếm chỉ tốn khoảng 10 bước  (Ảnh bên ví dụ cây tìm kiếm). Hoặc khi bạn cần sắp xếp 1 dãy sắp xếp thông thường mất O(n^2) trong khi giải thuật nâng cao chỉ mất O(nLog(n)). bạn chưa biết O là gì đúng không ? không sao bạn đã học đâu ít học sẽ biết :p, nhưng mình muốn nói là nhanh hơn. Và khi dữ liệu càng hơn thì cái NHANH HƠN ấy càng rõ ràng. Môn này còn rèn cho các bạn khả năng tư duy và kĩ năng lập trình, thế nên mọi người nhớ để ý học CẨN THẬN MÔN CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT ở trường. Nếu không chắc thì tự ý thức được việc quan trọng của nó mà học lại cẩn thận. Cách học : học xong về cấu trúc dữ liệu hay giải thuật nào thì tìm bài tập về phần đấy làm, bên cạnh đó tập lên các diễn đàn code như : topcoder, hackerrank làm để trau dồi những gì mình đã học và áp dụng. Tài liệu thì có cuấn kinh điển là CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT (Đỗ Minh Hoàng), hoặc bạn có thể tìm về tài liệu giáo khoa chuyên tin học theo. Bên cạnh đó tài liệu tiếng anh cực kì nhiều ví dụ cuấn Introduction for algorithm khá hay. Phần này ngôn ngữ cũng không quan trọng lắm nhưng mình vẫn khuyên là code bằng C.

3. Hướng đối tượng (Object-oriented programming) :

Lập trình hướng đối tượng hiểu đơn giản là bạn nhìn nhận và giải quyết bài toán như thế giới thực các đối tượng tương tác với nhau, khó hiểu thế nhỉ :)), ví dụ : bạn làm game bắn tăng : bạn phân tích thành các đối tượng quản lý như xe tăng, đạn, map, rồi xe tăng đạn có thể di chuyển. đạn đâm vào tăng chết,… Lập trình hướng đối tượng có hai mục đích chính là tái sử dụng code tối đa và phải sửa ít nhất có thể khi thay đổi yêu cầu. Lập trình hướng đối tượng có bốn đặc tính chính : đóng gói, kế thừa, đa hình và trừu tượng. Khi học bạn cần hiểu từng đặc tính và nhớ để áp dụng khi thiết kế sản phẩm theo hướng đối tượng. Dĩ nhiên giờ bạn chưa học thì chưa biết nó là gì rồi :). Lập trình hướng đối tượng là phương pháp được sử dụng phổ biến hiện nay nhờ vào ưu việt của nó, thế nên bạn cần chú ý để học. Phương pháp học : hiểu từng đặc điểm hướng đối tượng, làm một số bài tập trong sách vở bạn được giao. Rồi gặp gì cũng liên tưởng đến viễn cảnh hướng đối tượng và cách chúng giao tiếp với nhau, ví dụ hai xe đâm nhau à đây là 2 object kiểu xe có phương thức đâm :)). Bên cạnh đó bạn nên tập thiết kế chia module nhỏ ví dụ như game bắn tăng kia 🙂 và nhớ áp dụng các nguyên tắc của lập trình hướng đối tượng. Tài liệu tiếng việt có cuấn lập trình hướng đối tượng (Phạm Văn Ất), lập trình hướng đổi tượng với C++ (Nguyễn Thanh Thủy), còn tài liệu tiếng anh thì bạn tìm nhiều lắm 🙂

=> Đến đây là bạn có trong tay công cụ cơ bản để tự học làm web, game,.. Chúc các bạn thành công !


Deep Learning cơ bản ©2024. All Rights Reserved.
Powered by WordPress. Theme by Phoenix Web Solutions