9/27/2020

Lập trình hướng đối tượng | Tài liệu, cơ sở ngành CNTT


Lập trình hướng đối tượng là môn học mà ai theo công nghệ thông tin đều phải học, vì nó là nền tảng cho hầu hết các thiết kế hiện nay. Mọi thiết kế đều được mô phỏng bằng hướng đối tượng. Hướng đối tượng là câu hỏi mà gần như lúc nào bạn cũng sẽ bị hỏi khi đi phỏng vấn.

4 tính chất của lập trình hướng đối tượng mà bạn cần phải nhớ mọi lúc mọi nơi, cái này là cái không được quên đó là: 

  • Tính trìu tượng hóa: là cách mô tả các đối tượng ở thế giới thực vào các đối tượng trong lập trình bằng cách loại bỏ các thuộc tính, tính chất phức tạp và chỉ giữ lại những tính chất, thuộc tính cần thiết.

  • Tính đóng gói: mỗi đối tượng có những không gian dữ liệu riêng, việc cho phép môi trường bên ngoài tác động lên các dữ liệu nội tại của một đối tượng theo cách nào là hoàn toàn tùy thuộc vào người viết mã. Tính đóng gói được thể hiện thông qua phạm vi truy cập (access modifier). Đây là tính chất quan trọng nhất của OOP.

  • Tính kế thừa: cho phép xây dựng một lớp mới dựa trên các định nghĩa của lớp có sẵn, đây là tính chất quan trọng của OOP, nó giúp cho chúng ta viết code sạch hơn, dễ nhìn hơn.

  • Tính đa hình: là cách mà 1 tác vụ được thực hiện theo nhiều cách khác nhau, được thể hiện qua 2 tính chất nạp chồng (overloading) và ghi đè (overriding).


Tại Bách Khoa Hà Nội, các sinh viên sẽ được học lập trình hướng đối tượng (OOP) với minh họa bằng ngôn ngữ lập trình Java. Vì Java là ngôn ngữ 100% hướng đối tượng, có cấu trúc rõ ràng, dễ học và dễ tìm hiểu. Các bạn có thể học thầy Đạt hoặc thầy Tuấn, thầy Tuấn cho điểm khá dễ tuy nhiên học thầy đôi lúc hơi buồn ngủ đấy, còn thầy Đạt cho điểm gắt hơn 1 tí nhưng thầy dạy cũng khá hay, ví dụ rất chi tiết, dễ hiểu.

Mình chia sẻ tới mọi người một số tài liệu học OOP để mọi người tham khảo và có thể tự học : 

  • Slide bài giảng OOP - SoICT : 
    • LINK 1 | LINK 2 ( Link 2 là link bài giảng cũ tuy nhiên thiết kế với 1 slide 1 mặt dễ nhìn hơn so với Link 1) 

    • LINK 3 ( Link 3 là 1 slide của thầy Trịnh Thành Trung) 

    • LINK 4 ( Link 4 là slide của thầy Cao Tuấn Dũng)

  • Tài liệu học OOP bằng C++ - HUST : TẢI VỀ TÀI LIỆU (C++ là một ngôn ngữ nói chung là khó, tuy nhiên C++ là chính là khuôn mẫu cho các ngôn ngữ lập trình khác và nó cũng là core của rất nhiều ngôn ngữ như Python chính là được viết bằng C++, bây giờ rất ít các trường sử dụng C++ để giảng dạy OOP mà thay vào đó là các ngôn ngữ bậc cao hơn như Java, C#. Mình vẫn để slide ở đây để cho bạn nào muốn tìm hiểu về OOP bên C++ thì có thể tham khảo nha)

  • Tham khảo đề thi cuối kì OOP ( do đề thi không được mang về nên hầu như không có đề thi cập nhật mới nhất, đây là đề thi mà mình gõ lại từ đề mà thầy/cô giáo cho làm) : TẢI VỀ ĐỀ THI PDF | WORD ( Hoặc TẢI VỀ TÀI LIỆU)

Ngoài ra, tất cả các bài tập lớn OOP đều có thêm một yêu cầu nữa là bản mô hình hóa về bài của mình bằng ngôn ngữ mô hình hóa thống nhất UML. 

Có một công cụ hỗ trợ mô hình hóa mà mình thích nhất ở đây là Astah, là một công cụ rất tốt, dễ sử dụng, dễ tùy chỉnh, nhìn đẹp mắt. Astah là mất phí nhưng nó lại có bản miễn phí cho sinh viên, chỉ cần có email do trường cấp là có thể sử dụng Astah hoàn toàn miễn phí. Ai chưa biết tải thì làm theo video sau nha (cực kì dễ lấy, phải nói sinh viên có rất nhiều ưu ái trong việc tiếp cận sử dụng các công cụ trong việc học tập) : 


Tài liệu thêm cho bạn nào muốn tìm hiểu thêm về Java nha: 

9/22/2020

Toán rời rạc | Tài liệu, cơ sở ngành CNTT


Toán rời rạc là môn cơ sở ngành của hầu hết các môn có dính dáng tới máy tính, và nó là một môn cũng rất quan trọng cho các bạn nào theo ngành IT. Toán rời rạc cung cấp cho mọi người những kiến thức cơ bản về tổ hợp và lý thuyết đồ thị.

Phần tổ hợp thì khá là quen thuộc vì hầu hết mọi người đều được làm quen từ hồi học THPT. Các bài toán đề cập đến như là : bài toán đếm, bài toán liệt kê, bài toán tồn tại, nguyên lý Dirichlet, nguyên lý cực hạn. Sau đó còn có tổ hợp, chỉnh hợp, hoán vị, số Sterling, số Catalan,... Các lý thuyết tổ hợp là nền tảng cho lý thuyết tính toán, độ phức tạp, những bài toán kinh điển như P = NP, ...

Lý thuyết đồ thị là phần mới. Toán rời rạc sẽ đề cập tới khái niệm đồ thị, những loại đồ thị khác nhau, các thuật toán trên đồ thị ( DFS, BFS, Djikstra, ...) và những bài toán có thể giải trên đồ thị ( hay mô hình hóa chúng bằng đồ thị để giải quyết)...

 


Tại trường ĐH Bách Khoa Hà Nội, ngoài các sinh viên viện CNTT thì sinh viên viện Toán cũng phải học toán rời rạc, và theo mình biết thì toán rời rạc của sinh viên viện toán khó hơn một tí so với viện CNTT. Toán rời rạc của viện toán được dạy bởi các thầy/cô viện toán và toán rời rạc của viện CNTT được giảng dạy bởi các thầy/cô viện CNTT. Về phần tài liệu thì mỗi thầy/cô đều có slide khác nhau, nhưng đa số dựa trên giáo trình toán rời rạc của thầy Nguyễn Đức Nghĩa. Nhưng mình khuyên các bạn là không nên học theo giáo trình mà học theo các slide của thầy/cô, các slide của các thầy/cô đều đã được chắt lọc những kiến thức trọng tâm nhất. 

Mình chia sẻ một số tài liệu toán rời rạc để mọi người tham khảo : 

BÀI GIẢNG - GIÁO TRÌNH (TRƯỜNG KHÁC) 

  • Bài giảng toán rời rạc - Phạm Thị Thuận ( Đại học kinh doanh và công nghệ) : TẢI VỀ BÀI GIẢNG

SLIDE BÀI GIẢNG (HUST) 

  • Toán rời rạc thầy Trần Vĩnh Đức : 

Mình thì mình thích đọc bài giảng của thầy Trần Vĩnh Đức Hơn, thầy viết rất đơn giản nhưng đủ ý và dễ hiểu, tuy nhiên tài liệu của thầy về phần đồ thị nhiều hơn ( kể cả khi học thầy trên lớp thì đa số thầy cũng giảng về phần đồ thị nhiều hơn).