2/26/2021

Thuật toán ứng dụng | Tài liệu, cơ sở ngành CNTT


Môn này hay thường được gọi là môn cấu trúc dữ liệu và thuật toán 2. Ở cấu trúc dữ liệu thì đã học full lý thuyết, thi code cũng bằng giấy và các bạn đòi code máy thì môn này là môn thỏa mãn đam mê đó đây, phải gọi là môn này "code cho tới không còn hơi thở nào thì thôi". Thi giữa thì thi trên máy, thi cuối kì thi trên máy. Kì thi được tổ chức chuyên nghiệp như thi Olympic, nếu có thầy, cô nào cộng điểm giữa kì cho sinh viên cũng là thi trên máy hết.

Xem thêm : Cấu trúc dữ liệu và thuật toán | Tài liệu, cơ sở ngành CNTT


Hầu như các kiến thức ở môn này chỉ là nhắc lại. Các thuật toán như sử dụng CTDL cơ bản, quy hoạch động, đệ quy quay lui, các thuật toán trên đồ thị, tham lam, chia để trị,.... sẽ được dạy theo từng chủ đề riêng ( thường thì mỗi tuần dạy một chủ đề và làm bài tập về chủ đề đó và thực hành về chủ đề này trên codeforces). Thực hành môn này thì không có điểm, đi học chỉ để các thầy cô và các anh trợ giảng hướng dẫn để giải các bài tập thôi, đối với các bạn không biết thế nào chứ đối với mình mấy tuần đầu các chủ đề, thuật toán dễ còn làm được chứ sang mấy chủ đề về quy hoạch động hay chia để trị thì thực sự khó, nhiều lúc còn không nghĩ ra ý tưởng để giải quyết bài toán cơ.
Có một lời khuyên về môn này nữa là các bạn hãy làm thật nhiều rồi nhớ lưu lại code của mình với những cái tên thật dễ nhớ. Những thuật toán hay dùng mà dễ kiểu quên quên như DFS, BFS, CTDL Disjoint set thì cài đặt trước luôn đi. Vì môn này đi thi các bạn sẽ được dùng máy tính cá nhân và sử dụng lại source code mà các bạn đã làm.

Mình có slide bài giảng của thầy Phạm Quang Dũng muốn chia sẻ tới các bạn, mình thấy slide này rất hay, chi tiết và nên đọc cho các bạn muốn tìm hiểu cũng như đang học môn Thuật toán ứng dụng : TẢI VỀ SLIDE

Đề thi giữa kì 20201 - thuật toán ứng dụng (đề thi + test cases + sourcecode): TẢI VỀ ĐỀ THI
Đề thi cuối kì 20201 - thuật toán ứng dụng (đề thi + test cases + sourcecode): TẢI VỀ ĐỀ THI
(các file .pdf là các file đề bài, các file .cpp là các file sourcecode, các file .zip là các file testcases, nếu có git thì bạn có thể clone repo về bằng lệnh git clone)

Còn đây là một số bài trên codeforces mà mình có lưu lại : TẢI VỀ
(đề bài trong thư mục problems, các file .cpp bắt đầu bằng số là problem của tuần đó và kèm theo là tên bài, ví dụ file 04PIE.cpp là source code của bài PIE trong problem 4, một lưu ý to nữa là đây là các bài do mình tự làm lên đôi khi một số bài code cũng không được đúng quy tắc, gọn gàng và còn nhiều thiếu sót, và nếu bạn nào có tài khoản github thì cho mình 1 sao trên repo nha)

Ngoài ra, nếu muốn luyện tập thêm thì bạn có thể giải bài trên các trang sau : 

2/25/2021

Mạng máy tính | Tài liệu, cơ sở ngành CNTT


Chắc hẳn bạn xem bài viết này thì bạn phải đang vào mạng và có lẽ khái niệm mạng máy tính quá quen thuộc với bất kì ai tại thời điểm hiện tại rồi. Nhưng chắc chắn không phải ai cũng hiểu được tại sao dữ liệu lại truyền được qua mạng máy tính. Rồi thì HTTP là gì, TCP/UDP là gì, IP là gì,... Tất cả những thứ này bạn sẽ đều được dạy ở môn mạng máy tính.

Tại sao lại phải học mạng máy tính? Giả sử nếu bạn là một lập trình viên web ngay cả việc website hoạt động như thế nào mà cũng không biết nữa thì làm sao có thể làm được lập trình viên web. Hay nếu bạn muốn tạo một website chat real-time thì phải làm thế nào? HTTP là một giao thức hỏi gì trả lời đấy thì chắc chắn không thể làm được điều này ( HTTP là một giao thức ở tầng ứng dụng theo mô hình TCP/IP) mà muốn tạo web chat real-time bắt buộc ta phải sử dụng giao thức TCP để truyền và nhận dữ liệu theo mô hình bắt tay 3 bước để client và server có thể dữ liên lạc được với nhau. Tất cả những thứ này chỉ cần bạn học mạng máy tính bạn sẽ hiểu rõ.

Tại Bách Khoa, mình thấy các bạn nên học Mạng máy tính của thầy Tùng, thầy dạy rất hay và giảng rất chi tiết. Mình thì không học những thầy cô khác nhưng nghe các bạn mình học thì nói chung các thầy cô dạy không được chi tiết như thầy Tùng tuy nhiên có vẻ điểm cao ( mình cũng nhắc nhở là học thầy Tùng không phải là điểm thấp nha, chỉ có không học thì mới điểm thấp thôi, thầy chấm rất đúng và cho các bạn xem lại bài thi sau khi thầy chấm bài xong và không có thắc mắc gì thầy mới lên điểm)
Môn này là môn có thực hành và mình nói luôn là thực hành của môn này các bạn lên chú trọng. Theo mình thấy thì trong các môn có thực hành thì mạng máy tính là môn cần phải để ý. Trước mỗi buổi thực hành các bạn lên đọc trước các file hướng dẫn của buổi thực hành hôm đó đí, nhất là bài thực hành số 3 nếu có thời gian thì nên làm trước đi cũng được.

Để học tốt thì chắc chắn rồi là các bạn phải dành thời gian cho nó, nếu có nhiều thời gian thì xem lại những livestream của thầy Tùng về môn học, trong mỗi kì thầy thường chia sẻ lại các video livestream của thầy tại group Facebook  QA.TungBT, nếu ai học lớp thầy thì mọi thông tin về môn học, kì thi thầy đều đăng lên group này. 

Các tài liệu về môn học ( slide bài giảng, tài liệu thực hành,...) đều được cập nhật mới nhất tại website của thầy Tùng : https://users.soict.hust.edu.vn/tungbt/it3080/ (mỗi thầy cô đều có website riêng và có slide giảng dạy riêng, nhưng về cơ bản các slide bài giảng của các thầy cô đều la lá giống nhau nên học theo slide nào cũng được nha, thường thì các bạn học thầy/ cô nào thì dùng slide bài giảng của thầy cô đó sẽ tiện để theo dõi hơn trong quá trình nghe giảng)

Tránh trường hợp website của thầy bị sập chẳng hạn mình cũng chia sẻ lại một ít tài liệu mà mình sưu tầm được : 

2/23/2021

Học cải thiện? Có nên không? | Share


HỌC CẢI THIỆN? CÓ NÊN KHÔNG?

HỌC CẢI THIỆN SAO CHO HIỆU QUẢ NHẤT?

Bài viết được chia sẻ tại group Bách Khoa ĐCMP của tác giả Carnation Xuyến Chân Voi, bài viết dành cho sinh viên HUST năm 1, năm 2.



Vừa qua, các bạn sinh viên năm 2,3... đã biết điểm một số môn! Tuy nhiên có một số bạn không hài lòng với điểm số của mình vì lí do chủ quan và khách quan nào đó. Các bạn có hỏi mình nên cải thiện không? Mình có vài lời khuyên như sau:
"Đừng bao giờ làm việc gì đó mà cuối cùng phải hối tiếc, hãy làm hết sức"
Các bạn sinh viên K65 chắc sẽ có nhiều lợi thế hơn vì thời gian của các bạn ở HUST còn dài, các bạn có nhiều cơ hội hơn so với các anh chị.
Câu này ý mình muốn nói là dù các bạn làm việc gì đi nữa, học cái gì đi nữa cũng hãy hết mình đã, còn kết quả có như thế nào thì dù sao cũng không phải hối tiếc vì những gì mình đã làm.
Mình đã được một anh K58 hóa dầu kể về 1 TH mà CPA gần kỳ cuối ra trường xấp xỉ 3.2. Chỉ còn 1 chút nữa là lên bằng giỏi. Nhưng kỳ cuối chỉ được đăng ký 8TC (đồ án + các môn vừa đủ) nên không thể cải thiện được lên 3.2. Lúc đó các anh chị rất phân phân xem có nên ở lại trường 1 kỳ nữa để cải thiện một môn nào đó để ra trường bằng giỏi không? Nếu câu trả lời là có mình nghĩ là anh đó phải là người rất dũng cảm, nếu trả lời là không thì thật là tiếc nuối.
Vì vậy các bạn K65 hãy cố gắng từ những môn đầu tiên bước vào trường, để sau này không còn phải lo lắng về điểm số khi ra trường nữa nhé! GPA thì dễ kéo còn CPA thì chỉ cần lỡ dở một kỳ thôi, là đã rất khó kéo rồi.

⛔️ Còn với sinh viên năm 2:
Các bạn hãy suy nghĩ, vì hiện tại các bạn mới học các môn đại cương và cơ sở ngành thôi, kiến thức khá rộng nên điểm số cũng khá bê bét! Khi vào chuyên ngành thì điểm các bạn sẽ cao hơn, vì các lí do:
1, Các bạn được học cái các bạn thích.
2, Các bạn đã quen với cách học ở đại học, các bạn hiểu bản thân mình cần gì và làm gì.
3, Có các mảng kiến thức riêng biệt để các bạn ôn tập (Theo mình là hiểu sâu chứ không cần hiểu rộng)....
Tùy theo CPA hiện tại và mục tiêu ra trường của các bạn mà các bạn nên cân nhắc việc cải thiện ngay từ bây giờ.

⛔️Cách để biết mình có cần cải thiện không?
Theo mình là nên áng áng điểm của các kỳ coi sao. Nếu thấy số điểm mình áng mà để đạt được mục tiêu ra trường bằng ABC khó quá thì cải thiện. Mà áng thấy con số mình áng nó khả thi thì cố học để đạt được con số đó!

⛔️Cách để tránh việc phải học cải thiện?
Học hết mình! Cố gắng hết mình khi học môn đó!
Nên chọn các lớp có phong thủy một chút, thường thì việc đăng ký lớp sẽ diễn ra sau tuần đi học 1 tuần, nếu các bạn cảm thấy mình không hợp với lớp này (có thể là lí do thời gian v..v, thói quen...) thì hãy đăng ký lại ngay.
Dù gặp phải hoàn cảnh thế nào đi nữa! Hãy cố gắng vì sự lựa chọn của bản thân mình! Chứ cứ trách tại vì A, vì B nên em không muốn học! Điều đó chỉ làm các bạn tụt về phía sau thôi!
Hãy mỉm cười, mọi thứ các bạn đã gặp ngày hôm nay đều là cái duyên rồi. Các bạn có thể không may ở môn này nhưng nếu cố gắng tiếp, các bạn sẽ gặp rất nhiều may mắn ở các môn khác.

⛔️ Thời gian học cải thiện?
Thường là vào hè, hoặc nếu rảnh thì cứ đăng ký ở các kỳ phụ, vì các kỳ này đề thi thường dễ hơn!




2/22/2021

Cơ sở dữ liệu | Tài liệu, cơ sở ngành CNTT


Cơ sở dữ liệu phải nói là không thể thiếu trong bất kỳ một dự án CNTT nào, nó lưu trữ dữ liệu và phải nói cơ sở dữ liệu như là một trái tim vậy, mọi hoạt động của một dự án đều xoay quanh dữ liệu. Trong thời đại công nghệ số như hiện nay thì người ta ví dữ liệu như là vàng, công ty nào nắm dữ được nhiều dữ liệu, nắm dữ được lượng lớn dữ liệu thì công ty đó sẽ chiếm ưu thế. Thế nên là dù muốn hay không thì cơ sở dữ liệu bắt buộc bạn phải biết.

Học cơ sở dữ liệu không đơn giản như là học các ngôn ngữ truy vấn dữ liệu xong tương tác được với cơ sở dữ liệu là xong. Chúng ta còn phải học các thành phần trong cơ sở dữ liệu, nó có tác dụng gì, vì sao lại phải cần nó. Chúng ta còn phải học cách thiết kế cơ sở dữ liệu sao cho tối ưu nhất, tốn ít tài nguyên lưu trữ nhất mà tốc độ truy xuất phải nhanh,... Sau đó chúng ta mới học tới các ngôn ngữ truy vấn dữ liệu, các hàm, lệnh mà ngôn ngữ cung cấp.
Môn này còn là môn có thực hành nha, thực hành thì không khó, điểm thực hành là điểm kiểm tra buổi cuối cùng (không như các môn khác điểm thực hành lấy các buổi nên hơi run run tí), nhưng đề cô cho cũng không khó, không đánh đố lắm. Trong quá trình thực hành mà bạn không hiểu gì hãy hỏi anh trợ giảng, các anh trợ giảng cực kì nhiệt tình nha, mấy anh ấy kiểu không có việc gì làm chỉ muốn được hỏi thôi ấy nên không có gì phải ngại, các anh trợ giảng được trả lương mà, mà lương là từ học phí của mình chứ ở đâu, không hỏi thì quá phí.
Mình có một số tài liệu sưu tầm được trong kỳ học chia sẻ tới mọi người để tham khảo và đọc qua trước : 
Tham gia group Facebook lớp thầy Phương : Lớp thầy Phương các kì

Database CompanySupplyProduct để thực hành ( câu hỏi ở phía cuối) : 


CREATE DATABASE [CompanySupplyProduct];
CREATE TABLE [Company] (
  [CompanyID] int IDENTITY(1,1),
  [Name] varchar(40),
  [NumberofEmployee] int,
  [Address] varchar(50),
  [Telephone] char(15),
  [EstablishmentDay] date,
  PRIMARY KEY ([CompanyID])
);
CREATE TABLE [Product] (
  [ProductID] int IDENTITY(1,1),
  [Name] varchar(40),
  [Color] char(14),
  [Price] decimal(10,2),
  PRIMARY KEY ([ProductID])
);
CREATE TABLE [Supply] (
  [CompanyID] int,
  [ProductID] int,
  [Quantity] int,
  PRIMARY KEY([CompanyID],[ProductID]),
  FOREIGN KEY ([CompanyID]) REFERENCES [Company]([CompanyID]),
  FOREIGN KEY ([ProductID]) REFERENCES [Product]([ProductID])
);
===============================================================
Company
INSERT INTO [Company]([Name],[NumberofEmployee],[Address],[Telephone],[EstablishmentDay])
VALUES('Kia','33255','Seoul, Korea','123067483','1941-12-01'),
('Vinfast','3000','LongBien, Hanoi','0912354321','2017-06-20'),
('Chevrolet','20000','Michigan, US','0985647321','1911-11-03'),
('Audi','53347','Ingolstadt, Germany','8456732102','1909-04-25'),
('Ford','213000','Michigan, US','0543291852','1903-03-16'),
('Ferrari','17000','Maranello, Italy','0974635218','1929-05-18'),
('Mazda','36626','Hiroshima, Japan','0234967541','1920-01-01'),
('Lexus','12000','Aichi, Japan','02345678432','1989-01-20'),
('Honda','131600','Tokyo, Japan','02345678321','1948-09-24'),
('BMW','102007','Munchen, Germany','8456987342','1916-03-07'),
('Land Rover','9000','Coventry, UK','064532181','1948-04-09'),
('Jaguar','3000','London, UK','098453621','2008-02-06'),
('Rolls Royce','4000','London, UK','0985647321','1906-05-14'),
('Porsche','8000','Baden-Wurttemberg, Germany','09875643245','1931-08-26'),
('Mercedes Benz','12000','Baden-Wurttemberg, Germany','09877453621','1926-06-28'),
('Peugeot','11230','Paris, France','067598432','1882-08-03'),
('Toyota','299210','Tokyo, Japan','098453621','1937-08-02')
Product
INSERT INTO [Product]([Name],[Color],[Price])
VALUES('Standard MT 2019','brown','299'),
('Standard AT 2019','green','339'),
('Luxury 2019','yellow','393'),
('Deluxe 2019','yellow','355'),
('Fadil Standard','brown','395'),
('Fadil Plus','violet','429'),
('Lux A2.0 Standard','pink','990'),
('Lux A2.0 Premium','black','1228'),
('Lux SA2.0 Premium','black','1688'),
('Peugeot 3008 All ','red','1199'),
('Peugeot 5008 2019','white','1349'),
('Peugeot 208','red','850'),
('C200 Exclusive 2019','black','1709'),
('Mercedes C300 AMG','black','1897'),
('Mercedes E200 Sport 2019','white','2317'),
('Mercedes S450 L 2019','blue','4249'),
('Audi A3 1.4L Sportback','white','1520'),
('A4 2.0L','white','1670'),
('A6 1.8 TFSI','blue','2270'),
('Wigo 1.2G 2019','orange','405'),
('Vios 1.5E CVT','red','540'),
('Avanza 1.5G AT','grey','612'),
('Porsche 718 Boxster S','red','4540'),
('Porsche 718 Cayman S','green','4420'),
('Porsche 911 Carrera S Cabriolet','grey','7770'),
('Porsche 911 GT3 RS ','blue','11060'),
('hatchback Premium SE','red','604'),
('sedan Premium','red','564')
Supply
INSERT INTO [Supply]([CompanyID],[ProductID],[Quantity])
VALUES('1','1','2029'),
('1','2','6116'),
('1','4','3661'),
('1','6','4940'),
('1','7','6000'),
('2','1','2815'),
('2','2','5218'),
('2','7','2482'),
('3','9','755'),
('3','11','5352'),
('3','18','537'),
('3','28','1727'),
('3','22','5504'),
('4','1','1716'),
('4','2','689'),
('5','3','4973'),
('5','4','4897'),
('6','5','6512'),
('7','6','1912'),
('7','7','5461'),
('7','8','2318'),
('7','9','3872'),
('7','10','3763'),
('7','11','1622'),
('8','12','4367'),
('8','13','2894'),
('8','14','4017'),
('8','15','2957'),
('9','16','5926'),
('9','17','2170'),
('9','18','5815'),
('9','19','4722'),
('9','20','5832'),
('10','21','1642'),
('11','22','5019'),
('12','23','6031'),
('13','24','2758'),
('13','25','5927'),
('13','26','771'),
('14','27','1494'),
('14','28','4499'),
('15','1','773'),
('15','3','4402'),
('15','5','3802'),
('15','8','4027'),
('15','12','2136'),
('15','13','2345'),
('15','17','5278')

Câu hỏi : 
10/ Mã cty nào cung ứng tất cả các sản phẩm màu 'red'?
11/ Mã cty chỉ cung ứng sản phẩm màu 'red'
12/ Cty nào kỉ niệm 10 năm thành lập trong năm nay?
13/ Cty nào kỉ niệm 10 năm thành lập trong tháng này?
14/ Cty nào cung ứng cả hai loại sản phẩm 'red' và 'black'?
15/ Cty nào cung ứng tổng số lượng mặt hàng là lớn nhất?

2/16/2021

Tư tưởng Hồ Chí Minh | Tài liệu, đại cương


Cũng là một trong các môn lý luận, nói chung là như Triết, vẫn phải làm tiểu luận, vẫn là lên lớp nghe giảng nhưng chẳng hiểu gì, vẫn là đi thi ôn các câu trong đề cương. Với những môn này, mình vẫn khuyên các bạn nên mua quyển hướng dẫn ôn tập nhỏ nhỏ mà do các thầy cô trong bộ môn biên soạn được bán ở nhà nấm ( bản gốc) hoặc ai không có tiền thì ra quầy photo đằng sau thư viện chắc chắn có.

Mình có 1 số tài liệu từ https://bkkhongsotach.edu.vn/ chia sẻ tới mọi người, mọi người tải về để tham khảo nha 

2/15/2021

Văn hóa kinh doanh và tinh thần khởi nghiệp | Tài liệu, môn tự chọn


Môn này là một trong các môn tự chọn mà các bạn có thể chọn học, mình không học môn này nên cũng không biết chính xác là nó như nào, nhưng nghe kể lại thì môn này cũng là một môn dễ, phải thuyết trình nhiều, hình như phải thuyết trình tới 3 lần gì đó. Cuối kì đi thi được mang tài liệu.

Mình cũng có kiếm được 1 số tài liệu môn này, mọi người có thể tải về để xem và tham khảo nha

Thủ thuật "search đâu trúng đó" trên Google | Share


Không phải cứ biết gõ chữ thì được gọi là biết search Google, với người học IT thì search Google đôi khi là một nghệ thuật, search thế nào để có thể tìm ra được đúng vấn đề mà mình đang mắc. Bài viết này mình xin được chia sẻ lại từ bài viết của VTV2-Chất lượng cuộc sống : 17 thủ thuật "search đâu trúng đó" trên Google.

1. Dùng dấu ngoặc kép “ “ để tìm kiếm chính xác từ khóa nằm trong đó theo một trật tự chính xác. Ví dụ: “inbound marketing” 
2. Dùng dấu cộng “+” dùng kết hợp để tìm cụ thể một từ khóa nào đó và bắt buộc có trong kết quả tìm kiếm. Ví dụ: inbound marketing +advertising Lưu ý: Bạn phải đặt dấu “+” sát từ khóa, không có khoảng trống. 
3. Dùng dấu trừ “-” để loại bỏ một kết quả nào đó khỏi kết quả tìm kiếm của bạn. Lưu ý: Bạn phải đặt dấu “-” sát từ khóa, không có khoảng trống. Ví dụ: inbound marketing -advertising 
4. Dùng dấu ngã “~” để tìm một từ trong tìm kiếm và các kết quả có chứa các từ tương tự hoặc từ đồng nghĩa. Ví dụ: "inbound marketing" ~ professional 
5. Dùng “OR” hoặc dấu “I” để tìm kiếm 1 trong 2 từ khóa Ví dụ: inbound marketing OR advertising 
6. Toán tử “..” được dùng để tìm khoảng giữa các con số. 
7. Dấu sao “*” để tìm kiếm với cụm từ mình không biết rõ. Lưu ý: Dấu * có thể đứng trước, đứng giữa, đứng sau từ khóa cần tìm. 
8. Cú pháp “site:” khi bạn chỉ muốn tìm riêng một trong một trang web cụ thể nào. 
9. Cú pháp “related:” để tìm ra được những trang web có nội dung liên quan 
10. Cú pháp “allintext:” để tìm tất cả các từ có trong truy vấn và CHỈ ở trong nội dung của website (phần text). 
11. Cú pháp “cache:” dùng để xem lại bản cache đã được Google lưu lại. 
12. Cú pháp “filetype:” dùng để tìm chính xác loại file: doc, pdf, mp3, zip, xls,... 
13. Cú pháp “define:” dùng để tra định nghĩa của các từ, cụm từ. 
14. Cú pháp “inurl:”để tìm từ khóa trong đường dẫn. 
15. Cú pháp “allinurl:” nếu muốn tuyệt đối tất cả các từ khóa đều phải xuất hiện trong đường dẫn. 
16. Cú pháp “allintitle:” dùng để tìm tất cả các từ có trong truy vấn và CHỈ ở trong tiêu đề của website (title). 
17. Cú pháp “intitle:” có ý nghĩa tương tự allintitle và là con của allintitle. Thường được kết hợp với từ khóa trước hoặc sau nó.

 __________ 

(Sưu tầm) Via Kiến thức kinh tế


Nguồn : VTV2 - Chất lượng cuộc sống

2/08/2021

Chia sẻ một số project OOP của một số lớp kỳ trước | Share


Bài viết này mình chia sẻ tới mọi người một số bài tập lớn OOP của các kì trước, lưu ý rằng chỉ để tham khảo, nếu như bạn nào bị điểm thấp vì sao chép bài các năm trước thì sẽ tự chịu trác nhiệm trước hành động của mình.

Đề bài tập lớn của mỗi kỳ, mỗi lớp sẽ là khác nhau. Thường sẽ có 2 cách ra đề bài tập lớn mà mình thấy được : một là các bạn sẽ làm 1 app hoặc game tự chọn, dĩ nhiên là bài tập lớn dạng này hiếm nhóm nào có thể làm lại 1 game/ app hoàn chỉnh từ đầu tới cuối mà gần như là copy một app/ game nào đó trên mạng và sửa đổi, nâng cấp lên. Còn một cách ra đề nữa là kiểu mà thầy giáo đưa ra một đề riêng ( mà mình nghĩ chắc chắn chưa từng có trên mạng), đề kiểu này thường sẽ dễ hơn làm game/ app nhưng các bạn gần như phải tự làm từ đầu tới cuối. Mình thấy kiểu nào cũng được, cuối cùng cũng là rèn luyện kỹ năng.

Khi làm bài tập lớn OOP, một điều không thể thiếu là biểu đồ lớp ( một số thầy/ cô có thể yêu cầu thêm use-case), các bạn có thể sử dụng công cụ Astah có phiên bản miễn phí dành cho sinh viê, umlet,... để vẽ biểu đồ.

Biểu đồ lớp

Bây giờ mình chia sẻ tới mọi người một số project của các kì trước để mọi người tham khảo nha, đề bài có thể khác, các bạn có thể tham khảo cách làm báo cáo, cách xây dựng project từ project được chia sẻ dưới đây : 

ĐỀ BÀI 1 : 

Ý tưởng BTL: Sinh bài viết tự động về tin chứng khoán, dựa trên số liệu input thông tin về cổ phiếu đưa vào (định dạng file input là CSV, trong đó chứa thông tin gì thì tùy từng nhóm, phụ thuộc vào tin mà mỗi nhóm sẽ sinh ra như thế nào) 

Giải pháp: đơn giản nhất là dùng luật, tương tự như công cụ giới thiệu trong bài viết: https://emerj.com/ai-case-studies/

Tốt hơn là áp dụng xử lý thống kê, học máy trong xử lý ngôn ngữ tự nhiên. Thầy có thể giới thiệu thêm trên lớp nếu lớp có hứng thú. 

Gợi ý một số dạng câu đưa vào trong bài viết: mã cổ phiếu nào tăng nhanh nhất, đem lại lợi nhuận nhiều nhất, cổ phiếu của nhóm ngành ngân hàng/thủy sản/nói chung như thế nào, các mã cổ phiếu lớn/VN30 index như thế nào, ... SV cần phải tư duy sáng tạo, không máy móc theo ví dụ của thầy. Ở đây chỉ là một vài gợi ý cho các em hiểu vấn đề. 

Hướng dẫn cách làm/Nội dung cần làm:
    1. Tìm hiểu sơ qua các khái niệm trong chứng khoán, để biết ý nghĩa các thông tin, nên đưa thông tin nào vào trong bài viết. VD: https://dangtrongkhang.com/.../tim-hieu-ve-chung-khoan
    2. Chọn 1 báo online (mỗi nhóm chọn 1 báo nào đó), có mục tin về chứng khoán, viết công cụ scrape các bản tin này (bao gồm link-địa chỉ URL bài tin, title-tiêu đề bài viết, author-tác giả bài viết, time-ngày tháng năm, description-tóm tắt bài viết-còn gọi là sapo, content-nội dung bài viết, là một mảng các paragraph). Có thể tập trung hơn vào một mẫu bản tin chứng khoán nào đó, như với vnexpress là các bản tin "Chứng khoán ngày" (ví dụ: https://vnexpress.net/.../chung-khoan-ngay-13-2-da-tang...), nhưng không bỏ qua các bản tin khác
    3. Từ các bài viết thu thập về, lấy ra tất cả các câu. Viết thuật toán tìm các câu tương tự nhau (VD chứa các từ tương tự nhau, độ dài gần như nhau sau khi loại bỏ các stop word, ...). Để giảm độ phức tạp, có thể tập trung tìm các mẫu câu nhất định (VD câu về chỉ số VN-index, câu về cổ phiếu BlueChip, câu về mã chứng khoán ...). Kêt hợp xử lý tay và tự động (phải xem dữ liệu bằng tay trước rồi mới design được thuật toán)
    4. Qua việc tìm các câu tương tự nhau, tiếp tục xử lý thêm (bằng tay hoặc tự động) để xác định các mẫu câu hay dùng khi viết tin chứng khoán
    5. Xác định cấu trúc dữ liệu đầu vào, xây dựng thuật toán sinh các câu theo mẫu xác định ở phần 4. Kết quả tốt là có sự đa dạng, dù trong cùng một mẫu câu, nhưng không bị cứng nhắc, cùng input, nhưng mỗi lần sinh ra kết quả khác nhau.
    6. Ngôn ngữ lập trình: Do có nhiều thư viện xử lý ngôn ngữ tự nhiên trong python, nên SV có thể dùng python. Có 2 lựa chọn, nếu dùng toàn bộ python thì SV phải tự tìm hiểu cách lập trình hướng đối tượng với python, và phải có kết quả sinh các câu tốt. Lựa chọn 2 là dùng Java-ngôn ngữ lập trình sẽ dạy trên lớp. Khi cần thư viện nào đó trong python, có thể gọi từ Java. Yêu cầu code sáng sủa, dễ hiểu, dễ sửa đổi, cấu trúc tốt theo kiến thức được dạy trên lớp.

  • Một project nhỏ của mình về đề bài này, đây là bài làm về bài tập lớn của mình nhưng mình đã xử lại và thu nhỏ project đi rất nhiều, các bạn có thể xem và tham khảo nha : https://github.com/trannguyenhan/stock-news.git (cho mình 1 sao trong repo nha =)) )
Lưu ý : các link được chia sẻ dưới đây không phải là link của mình nên đường dẫn có thể die bất cứ lúc nào.
  • Tổng hợp project OOP kì 20192 - 115611 : PROJECT OOP
  • Tổng hơp project OOP kì 20192 - 115628 : PROJECT OOP

ĐỀ BÀI 2 : Đề tài BTL OOP 20181 

  • Tổng hợp project OOP kì 20181 các lớp : PROJECT OOP
Lưu ý nho nhỏ nữa là mọi thứ mình chia sẻ chỉ dùng để tham khảo, nếu đề tài có giống thì không nên copy.

Kiến trúc máy tính | Tài liệu, cơ sở ngành CNTT


Kiến trúc máy tính cũng là một trong các môn cơ sở ngành quan trọng, môn học đề cập tới cơ sở về kiến trúc tập lệnh và tổ chức của máy tính, các vấn đề cơ bản trong thiết kế máy tính. Ngoài ra các bạn còn được học cơ bản về ngôn ngữ lập trình gần gũi nhất với máy tính đó là Assembly ( cụ thể là MIPS).

Học môn này cũng có khá nhiều lý thuyết nhưng khi đi thi chủ yếu là thi bài tập nên nếu học để thi các bạn có thể chú trọng hơn vào các bài tập được các thầy cho ở trên lớp. Giữa kì mỗi thầy sẽ có cách thi riêng, lớp thầy Tiến sẽ thi trắc nghiệm, lớp thầy Trung thì thi tự luận,...

Mình chia sẻ tới mọi người một số tài liệu, đề thi để mọi người xem và ôn tập môn kiến trúc máy tính.

Tài liệu môn Kiến trúc máy tính :  


Ví dụ thuật toán Booth : 


nhân X với số Y là 2 số 8 bit có dấu
X = 1010 1100
Y = 1110 0111
 0000 0000 0000 0000
+0000 0101 0110 0000
-0001 0101 1000 0000
-0000 0000 1010 1100
                
  = -2^7 + 2^6 + 2^5 + 2^2 + 2^1 + 2^0
  = -2^5 + 2^3 - 2^0
             A         Q      Q-1
          --------- --------- ---
AQ(Q-1) = 0000 0000 1110 0111 0      10 --> trừ
        - 1010 1100
          0101 0100 1110 0111 0      Dich phai so hoc
          0010 1010 0111 0011 1         11 --> dich phai so hoc
          0001 0101 0011 1001 1      11 --> dich phai so hoc
          0000 1010 1001 1100 1      01 --> cong M
        + 1010 1100
      1011 0110 1001 1100 1      dich phai so hoc
          1101 1011 0100 1110 0      00 --> dich phai so hoc
          1110 1101 1010 0111 0      10 --> tru
        - 1010 1100
          0100 0001 1010 0111 0      dich phai so hoc
          0010 0000 1101 0011 1      11 --> dich phai
          0001 0000 0110 1001 1      11 --> dich phai
      0000 1000 0011 0100 1
      --> thuat toan dung vi dich phai du 8 lan
Ket qua:  0001 0000 0011 0100 = 2100
X = 1010 1100 = -84
Y = 1110 0111 = -25

Trong quá trình học tập có thể bạn sẽ được yêu cầu sử dụng các phần mềm như Logisim để thiết kế mạc mô phỏng hay MARS để mô phỏng hợp ngữ, nếu không tải được các bạn có thể làm theo hướng dẫn trong video sau : 


Các bạn có thể tải phần mềm mô phỏng hợp ngữ tại đây : TẢI MARS 4.4.7

Chắc chắn sẽ có người thắc mắc là sao bây giờ vẫn còn đi học những cái này đúng không? Mình giải thích luôn thể vậy, chúng ta là những người kỹ sư, chúng ta không thể chỉ biết code, chúng ta không phải là những thợ code. Nhiệm vụ của người kỹ sư là phải đưa ra được giải pháp để giải quyết vấn đề, vì thế mặc dù rất ít dùng nhưng chúng ta vẫn phải học, phải biết những thứ cơ bản thiết yếu nhất. Chúng ta phải hiểu là những dòng lệnh chúng ta code sẽ được máy thực thi thế nào thì mới có thể đưa ra các giải pháp tối ưu cho những vấn đề cần giải quyết được... Chúc các bạn dành được A+ môn học này.

2/05/2021

Các ứng dụng lưu trữ đám mây cho Ubuntu | Share


Các ứng dụng lưu trữ đám mây phổ biến như Google Drive, OneDrive,...  đều không có phần mềm đồng bộ chính thức cho hệ điều hành Ubuntu, vậy trên Ubuntu thì có thể sử dụng các ứng dụng lưu trữ đám mây nào? Bài này viết mình sẽ chia sẻ tới mọi người các ứng dụng lưu trữ đám mây được sử dụng trên Ubuntu.


1. Dropbox

Dropbox khá là phổ biến cho người dùng hệ điều hành Ubuntu. Tuy nhiên, dung lượng free khá ít ( bạn cũng có thể kiếm thêm dung lượng từ việc mời thêm bạn bè).

Tải Dropbox cho Ubuntu tại đây : https://www.dropbox.com/install-linux

2. Mega.nz

Mega.nz là một dịch vụ lưu trữ đám  mây đa nền tảng. Dịch vụ này khá là thoáng đãng khi cung cấp hẳn 50 GB free cho mỗi người dùng. Tuy nhiên, sau một thời gian sử dụng mega mình thấy không được ổn cho lắm và hiện tại mình đã gỡ cài đặt mega, mega đồng bộ rất là chậm, đôi lúc mình xóa một file đi mà một nát sau nó lại được đồng bộ lại từ cloud, điều này rất là khó chịu, nhiều lúc mình sửa lỗi trong code của mình mất cả 1 đêm chỉ vì nó. Lỗi này nó còn dở ở chỗ là nhiều lúc mình xóa đi xong nó lại đồng bộ lại xong khi phát hiện ra thì mình lại chả nhớ là vừa nãy mình xóa đi cái gì. Nhận xét của mình là như vậy, bạn cũng có thể thử cài đặt Mega cho Ubuntu để có cảm nhận cho riêng mình. Lưu ý : việc cài đặt Mega.nz là phức tạp hơn so với các dịch vụ khác.


Tải Mega.nz cho Ubuntu tại đây : https://mega.io/sync

3. Google Drive, Insync

Google không có ứng dụng chính thức của Google Drive cho Ubuntu, tuy nhiên bạn có thể sử dụng phần mềm của bên thứ 3 để sử dụng dịch vụ này của Google, tuy nhiên bạn cần lưu ý việc sử dụng phần mềm của bên thứ 3 có thể gây không an toàn cho tài khoản của bạn. ( Insync cũng hỗ trợ cả OneDrive).
Tải Insync cho Ubuntu tại đây : https://www.insynchq.com/ 
Sinh viên Bách Khoa thì được miễn phí sử dụng gói Onedrive miễn phí lên tới 5TB, vì vậy nếu đỡ phí phạm bạn có thể sử dụng phần mêm này nha.

4. Rclone

Rclone là một công cụ dòng lệnh để đồng bộ hóa tệp và thư mục với nhiều kho lưu trữ đám mây (từ máy của bạn hoặc từ bộ lưu trữ đám mây này sang bộ lưu trữ đám mây khác). Nó hỗ trợ Dropbox, Google Drive, Amazon S3, Amazon Drive, Microsoft One Drive, Yandex Disk, v.v.
Xem thêm về Rclone tại đây : https://rclone.org/

Ngoài ra còn rất nhiều dịch vụ lưu trữ đám mây ít phổ biến hơn bạn có thể dùng trên Ubuntu như pCloud, Yandex Disk, Cozy, Seafile, NextCloud,...

Tham khảo : https://askubuntu.com/

2/02/2021

Nhập môn trí tuệ nhân tạo | Tài liệu, cơ sở ngành CNTT


Nhập môn trí tuệ nhân tạo là môn học khá là hay, môn này chỉ được dạy ở bên khoa học máy tính, bên kỹ thuật máy tính không có học phần này. Nó đề câp tới những khái niệm cơ bản nhất về ngành học đang hot nhất quả đất này, những khái niệm sơ khai nhất, những thuật toán AI cơ bản nhất như các thuật toán tìm kiếm, các giải thuật học máy mà mình nghĩ nếu ai không theo định hướng AI cũng nên biết.



Môn này giữa kì sẽ là làm bài tập lớn theo nhóm về một project AI đơn giản nào đó, mình nhấn mạnh là đơn giản thôi nha, nhiều người làm quá cầu kì, chúng ta chỉ đang học nhập môn, không cần quá phức tạp. Các project đơn giản trong môn này rất phổ biến như là trò chơi cờ đối kháng, phân loại văn bản bằng học máy,... Các thầy/ cô dạy môn học này mình thấy đều khá dễ tính, chấm điểm cũng rất thoáng nên học ai cũng được.

Cuối kì thì các bạn hãy ôn theo hướng dẫn của các thầy/ cô, thường thì sẽ là thầy Linh ra đề, đề chủ yếu vào 4 phần sau : Tác tử, tìm kiếm (A*), logic định đề, học máy ( k-NN hoặc Naive Bayes).

Mình chia sẻ tới mọi người một số tài liệu, slide môn học để mọi người có thể tham khảo trong quá trình học tập hoặc có thể đọc trước : 

2/01/2021

Kỹ thuật lập trình | Tài liệu, cơ sở ngành CNTT


Kỹ thuật lập trình là môn cơ sở ngành không chỉ của các ngành công nghệ thông tin mà một số ngành khác như tự động hóa, toán - tin,... cũng phải học môn này. Về cơ bản kỹ thuật lập trình nhắc lại những cấu trúc dữ liệu cơ bản mà trong học phần cấu trúc dữ liệu đã học, học về các thuật toán cơ bản, các tối ưu mã nguồn, kỹ thuật viết mã nguồn,...


Môn này là môn học lý thuyết trên lớp kết hợp với thực hành. Thực hành kỹ thuật lập trình thì mình thấy là các cô/ thầy giáo đa số là khá dễ tính, không khắt khe đâu. Trước mỗi buổi thực hành các bạn có thể đọc trước yêu cầu của bài thực để hôm sau tới lớp làm trơn chu hơn ( có thể thôi chứ mình thấy lên lớp đọc và làm cũng được, mỗi buổi thực hành chúng ta có 3 tiết, làm không hết thì về nhà có thể làm tiếp và nộp trong vòng 2 ngày tới), bài tập về nhà thì nộp trong vòng 2 tuần. 
Điểm của phần thực hành chấm điểm theo bài tập về nhà + báo cáo + bài tập trên lớp trong đó bài tập về nhà sẽ chiếm đa số điểm thực hành (70%). Các bạn cũng đừng tưởng là bài tập về nhà thì có thể chép code của nhau được nha, hệ thống có phần mềm kiểm tra trùng lặp xây dựng bằng AI ( cái này nghe các thầy cô nói thế thôi chứ không biết phải AI thật không, nhưng một số bài copy nhau quá lộ liễu vẫn có thể phát hiện bình thường, nên nếu muốn chép bài nhau thì phải tinh thế một chút nha, mình sẽ chia sẻ source các bài thực hành của mình ở phía dưới nha, đều đã full điểm, các bạn có thể tham khảo, mình nhấn mạnh là tham khảo thôi nha).
Học lý thuyết trên lớp thì nói chung là khá nhàm chán, toàn những kiến thức đã học rồi, đa số các thầy/ cô dạy về C/ C++ lại dạy về con trỏ, cấp phát động,... rồi lại học các cấu trúc dữ liệu đã học ở phần cấu trúc dữ liệu. Mình thấy có một phần mới là kiểm thử và tinh chỉnh mã nguồn thì cũng không có gì đặc sắc ( chỉ có phần này đi thi thì các thầy cho mò lên mò xuống để tinh chỉnh đoạn code thì tìm tới mỏi mắt). Lý thuyết có thi giữa kì hoặc từng kì các thầy/ cô trong bộ môn thống nhất với nhau lấy điểm thực hành để làm điểm quá trình thì sẽ được thông báo lại sau nhưng đa số sẽ là thi giữa kì nha.
Mình chia sẻ một số tài liệu mà mình sưu tầm được và các đoạn source code để mọi người tham khảo nha 

    
PHẦN LÝ THUYẾT 
  • Slide giảng dạy môn kỹ thuật lập trình ( slide chính thức dùng chung của viện) : TẢI VỀ SLIDE   
  • Tổng hợp bài tập kỹ thuật lập trình qua các bài học ( nên xem để biết các dạng bài tập của môn này nha, tải về file PDF nha, file PPTX để mình lưu trữ thôi) : TẢI VỀ PDF   TẢI VỀ PPTX
  • Slide bài gỉảng kỹ thuật lập trình - thầy Vượng : TẢI VỀ SLIDE
  • Đề thi tham khảo kỹ thuật lập trình ( một số đề để tham khảo thôi, vì những năm gần đây viện mình đều thu đề khi thi xong nên hầu như sẽ không có đề tuồn ra ngoài được) : TẢI VỀ ĐỀ THI
  
PHẦN THỰC HÀNH