Tuesday, September 19, 2017

Một số đề tài thuyết trình THDC 20171 sáng thứ 3

Bài 1. Máy tính lượng tử
  • Khác gì so với máy tính nhị phân
  • công nghệ nghiên cứu tới hiện tại
  • phạm vi áp dụng
  • hướng phát triển

Bài 2. Công nghệ in 3D
  • Khái niệm
  • Các công nghệ in hiện có
  • áp dụng 
  • những vẫn đề giới hạn về công nghệ
  • hướng phát triển

Bài 3. Ô tô tự lái
  • Công nghệ hiện tại, các hãng nào đang áp dụng
  • Phạm vi áp dụng
  • Các hạn chế 
  • Tương lai phát triển

Bài 4. Hệ thống ngôi nhà thông minh
  • Công nghệ hiện tại
  • Mô hình áp dụng
  • Hướng phát triển

Tuesday, March 14, 2017

Bài tập CTDLGT cho SIE 20162

Bài tập cho SIE CTDLGT 20162

Đầu vào:
1 tập văn bản tiếng việt (có thể lấy từ các đoạn chat hoặc nhắn tin cá nhân)
1 từ điển tiếng việt ngắn

Yêu cầu
Lọc và thống kê các 1-gram, 2-gram từ tập văn bản tiếng Việt
(1 gram là 1 âm tiết, 2 gram là 2 âm tiết)

VD câu "BK Hà Nội"
thì 1-gram là BK, Hà, Nội
2-gram là BK Hà, Hà Nội

  • Loại các gram có tần số xuất hiện <=3 mà không chứa toàn chữ cái viết hoa
  • Thống kê các gram đó và sắp xếp theo thứ tự giảm đần về tần số
Xây dựng gợi ý theo cấp độ từ
  •  Khi người dùng gõ vào xong 1 từ (nhập từ + dấu cách trống) thì sẽ duyệt các 1 giảm và 2 Gram có, và cả các từ trong từ điển. Trường hợp mà từ đó chưa có trong từ điển hoặc danh sách thì gợi ý các từ có thể tạo ra được hoặc từ chính xác (vì có thể người đó gõ sai).
VD. Người dùng gõ vào Bn thì đưa ra gợi ý là: BK, BK Hà

Xây dựng gợi ý theo cấp độ chữ cái
  • Khi người dùng nhập vào >=2 chữ cái thì gợi ý tiếp các chữ cái và từ còn lại.
VD. Người dùng nhập vào Hà thì gợi ý là Hà Nội

Thursday, March 9, 2017

Bài tập CTDLGT Giữa kỳ cho DH 20162 (học chiều thứ 5)

Bài 1. Cho 1 dãy gồm n số dương, hay xây dựng hàm chia day số này thành 2 nửa sao cho chênh lệch tổng giá trị các phần tử của 2 nửa là nhỏ nhất trong 2 trường hợp
a. Không được thay đổi vị trí các phần tử
b. Được thay đổi vị trí các phần tử

Bài 2. Cho 1 mảng có các phần tử bị trùng. Hãy xây dựng thuật toán sắp xếp mảng sao cho các phần tử bị trùng được đẩy về cuối dãy.

VD. 1,3,2,4,3,2,1,6 ==> 1,2,3,4,6,1,3,2

Bài 3. Cho 1 mảng gồm n số nguyên. Hãy tìm và in ra các bộ 3 có tổng bằng 0, hoặc thông báo không tồn tại bộ nào như vậy.

VD. 1,3,-2,4,-6,5,-4,2,-1
{1,3,-4}, {5,-4,1}

Thời gian thực hiện cần < O(n^3)

Bài 4. Viết hàm xóa các phần tử bị lặp trong DSLK đơn (không có thứ tự) với thời gian thực hiện O(n) mà không cần dùng thêm bộ nhớ phụ.
Không được sắp xếp danh sách !

Được khai báo thêm con trỏ và biến tạm

Bài 5. Cho danh sách liên kết đơn nối vòng, hay viết hàm trả về phần tử giữa danh sách chỉ với 1 lần duyệt

Bài 6. Viết hàm xóa phần tử hiện tại của DSLK đơn khi mà có biết 1 con trỏ tới phần tử cần xóa (không được duyệt để tìm phần tử ngay trước nó)

Bài 7. Đọc vào 1 file XML/HTML. Viết chương trình kiểm tra các thẻ Tag có hợp lệ hay không. Nếu không thì in ra vị trí thẻ bị lỗi đầu tiên.
Tag mở cần có 1 tag đóng tương ứng (bỏ qua tag <p> hoặc <br> nếu cần)

Bài 8. Xây dựng tiện ích Undo và reDo cho text editor với tính năng quay lui lại sửa đổi gần nhất dùng Stack. Nếu dùng trên console thì có thể chọn hot key Ctr-U và Ctrl-I và dùng hàm để bắt các hotkey này để xử lý.

Bài 9. Cho tập gồm n điểm trong không gian 2 chiều. Hãy xây dựng chương trình dựa trên chia để trị để tìm và trả về 2 cập điểm gần nhau nhất với thời gian <O(n^2)

Bài 10. Cho bảng gồm các ký tự và dấu cách trống được mã hóa
a : 1
b : 2
..
z : 26
' ' : 27

abc --> 123

Và 1 từ điển

Hãy xây dựng chương trình mã hóa và giải mã các từ trong 1 đoạn văn (các từ này phải có trong từ điển)

123 >> abc, aw, lc

Bài 11. Cho 1 tập các khoảng thời gian còn trống của máy
[-1,9],[1,10],[0,3],[9,10],[3,14],[2,9],[10,16]

và 1 khoảng thời gian cần sản xuất VD [2,15]

Hãy xây dựng chương trình tìm  cách bố trí số lượng máy ít nhất để có thể sản xuất, hoặc thông báo là không thể bố trí được máy

[2,15] = [-1,9], [9,10],[10,16] hoặc [1,10],[10,16]

Ở đây cách 2 dùng 2 máy sẽ được chọn

Bài 12. Cho ma trận nxn với m chướng ngại vật

0 0 0 0 0 0
0 1 0 0 1 0
0 1 1 0 0 0
1 0 0 0 0 0
0 0 1 0 0 0

Chướng ngại vật biểu diễn bằng số 1
1 robot do đường có thể đi theo các hướng
1: lên trên
2: sang phải
3: xuống dưới
4: sang trái
Nếu vào chướng ngại vật thì robot sẽ không di chuyển được

Robot bắt đầu từ ô đầu tiên bên trái (màu đỏ) và gửi về hành trình của mình là chuỗi di chuyển 2 2 2 3 2 3 2
Hãy tìm và trả về vị trí cuối cùng của robot
Như trong vd thì robot sẽ ở ô  bôi vàng


Monday, November 7, 2016

Một số câu hỏi tìm hiểu môn THDC cho các lớp SIE kỳ 20161

Yêu cầu:
  • Mỗi câu trả lời khoảng 3-5 trang
  • Yêu cầu trình bày lại ý hiểu, không copy và paste
  • Phải bảo vệ mới được công nhận
  • Mỗi câu chỉ được 1 điểm
  • Không làm nhóm
Chú ý:
  • Nếu làm slide trình bày trên lớp sẽ được cộng 5 điểm
  • Mỗi câu chỉ được tối đa 2 người trình bày, vì vậy hay đăng ký sớm nhất có thể!
  1. IoT là gì ? hãy nêu một số mô hình về IoT trên thực tế?
  2. In 3D là gì? Hiện tại đang có những công nghệ in 3D nào, nêu một số thành tựu của in 3D đã có trong 
    1. Sinh học
    2. Công nghệ
    3. Y học
    4. Vật liệu mới
  3. Xe ô tô tự lái dùng những loại cảm biến nào? Tác dụng của những cảm biến ấy làm gì?
    Hiện có những hãng nào đang làm ô tô tự lái, và đã có ứng dụng nào trong thực tế chưa?
  4. Hiện tại công nghệ chế tạo bán dẫn đạt tới kích thước nhỏ nhất là bao nhiêu nm.
    Đã có những công nghệ của hãng nào được ứng dụng vào sản xuất các chip trong thực tế?
  5. Công nghệ chip Kabi Lake của intel đang đạt tới kích thước bao nhiêu nm?
    so với thế hệ chip sky lake, thì công nghệ này có những ưu việt gì?
  6. Big Data là công nghệ về lưu trữ và xử lý dữ liệu lớn.
    Vậy dữ liệu lớn là gì?
    Hiện tại Google, Facebook, Microsoft đang sử dụng những công nghệ gì để lưu trữ và xử lý dữ liệu lớn?
    Ứng dụng trong thực tế của nó là sản phẩm nào?
  7. Hiện tại đang có những công nghệ nào trong chế tạo card màn hình. Card màn hình được sử dụng trong nhận diện và học máy có cấu hình như thế nào, và có thể xử lý được bao nhiêu hình ảnh trong 1 s? Đang được áp dụng trong sản phẩm nào?
  8. Công nghệ lưu trữ dùng ổ cứng đặc SSD mới của Samsung có gì đặc biệt, tốc độ tối đa và dung lượng tối đa mà một ổ cứng mới nhất của Samsung có thể lưu trữ là bao nhiêu? Chip nhớ này có ưu điểm gì?
  9. Công nghệ chế tạo HDD (ổ cứng dùng đĩa từ) truyền thống hiện tại đang đạt tới tốc độ và dung lượng bao nhiêu? Hãng nào đang nắm công nghệ chủ đạo trong chế tạo ổ cứng HDD?
  10. Chuẩn bluetooth 5.0 sắp tới có những ưu điểm gì hơn so với chuẩn 4.0 hiện tại? Chuẩn này hiện đang được hỗ trợ bởi những hãng công nghệ nào và trong các thiết bị mới nào? 
  11. Công nghệ mạng không dây mới Li-fi khác gì so với Wi-fi? Ưu nhược điểm và tốc độ của Li-fi như thế nào?
  12. Chuẩn kết nối mới USB Type-C có những đặc điểm gì khác so với chuẩn USB 3.0 truyền thống? Tốc độ truyền dữ liệu ra sao? Hiện đã có những sản phẩm và những hãng công nghệ nào hỗ trợ chuẩn Type C này ?
  13. Điện năng lượng mặt trời hiện đang có những công nghệ nào mới nhất? Công suất lớn nhất mà 1 cell tế bào quang điện có thể cung cấp là bao nhiêu? Để cung cấp năng lượng khoảng 5Kwh thì cần bao nhiêu cell pin năng lượng mặt trời?

Thursday, September 22, 2016

Bài tập CTDLGT giữa kỳ 20161

Cài đặt dùng Java hoặc C# hoặc C/C++


Bài 1. Cài đặt các hàm đầy đủ để mô tả cấu trúc dữ liệu mảng kích thước biến đổi

Các thao tác cần có gồm
  • Add (int value): Thêm phần tử vào cuối mảng,
  • RemoveAt(int index): xóa phần tử ở vị trí index 
  • Size(): trả về số lượng phần tử hiện có của mảng
  • Maxsize(): trả về kích thước/ số lượng phần tử tối đa mà cấu trúc có thể lưu
  • Find(int value): trả về vị trí phần tử có gía trị bằng value trong mảng nếu có, ngược lại thì trả về giá trị -1
  • Get(int index) trả về giá trị phần tử tại ví trí index trong mảng nếu có

Xây dựng thành class là tốt nhất, nếu không tổ chức thành các hàm trong C/C++ với tham số truyền vào như yêu cầu trên.

Bài 2. Cài đặt đầy đủ các hàm/ phương thức của cấu trúc danh sách liên kết đơn nối thẳng có kiểu class T

  • Thêm (đâù, giữa/cuối)
  • Xóa (đâù, giữa/cuối)
  • Tìm kiếm

Các lớp cài đặt này nên dùng Template class

Bài 3. Cài đặt các hàm mô tả cấu trúc danh sách liên kết đơn nối vòng

Bài 4. Cài đặt các hàm mô tả danh sách liên kết đôi

Bài 5. Cài đặt cấu trúc Ngăn xếp/Hàng đợi dùng mảng kích thước biến đổi

Bài 6. Cài đặt lớp biểu diễn cây nhị phân với các tính năng sau
  • Thêm nút trái
  • Thêm nút phải
  • Lấy giá trị nút trái/phải
  • Đếm số nút trên cây
  • Tìm nút lá sâu nhất/nông nhất (thời gian O(n))
  • Tìm chiều cao của cây
  • Tìm tổ tiên chung gần nhất của 2 nút bất kỳ trên cây
  • Duyệt cây theo thứ tự trước/giữa/sau
Bài 7. Cài đặt cây nhị phân để biểu diễn cây biểu thức
  • Tạo cây biểu thức từ biểu thức trung tố (biểu thức chỉ bao gồm các toán hang 1 chữ cái/chữ số và các toán tử đơn giản +,-,*,/,%,^,!,... và dấu ngoặc đơn)
  • In ra biểu thức tiền tố, trung tố, hậu tố
  • Kiểm tra biểu thức trung tố ban đầu có phải hợp lệ (dấu ngoặc hợp lệ và toán tử hợp lệ, chỉ cần check với một vài toán tử thông dụng)
Bài 8. Xây dựng thuật toán sinh ra màn chơi sodoku bằng cách thêm ngẫu nhiên n số (từ 1-9 vào một màn chơi ban đầu trắng). Thuật toán này cần cài đặt dùng Backtracking và đảm bảo là màn chơi này hợp lệ.

Bài 9. Cài đặt lớp biểu diễn cây nhị phân tìm kiếm tổng quát (có thể kế thừa từ lớp trong bài 6) hỗ trợ các thao tác
  • Kiểm tra cây nhị phân có phải là cây nhị phân tìm kiếm
  • Kiểm tra cây nhị phân tìm kiếm có phải cây cân bằng
  • Thực hiện hàm tìm kiếm và trả về nút chứa khóa (nếu tìm thấy) trên cây
  • Thực hiện hàm thêm nút/xóa nút trên cây