Bảng Điều Khiển Ôn Tập Android

Kotlin • MVVM • Flow • REST API • Compose • Testing

Về Lộ trình 2 tháng
Tuần 1Giai đoạn 0-1 — Làm quen thế giới lập trình & tư duy

Tuần 1Hiểu thế giới lập trình

Giải thích được bằng lời cách một ứng dụng hoạt động; chưa cần code.

1Ngày 1 — Máy tính & phần mềm hoạt động thế nào

Ghi nhớ

Mục tiêu hôm nay: hiểu phần cứng, phần mềm, hệ điều hành và ứng dụng Android là gì — chưa cần viết dòng code nào.

Một chiếc điện thoại gồm hai phần. Phần cứng (hardware) là những thứ bạn cầm nắm được: màn hình, chip, pin, camera. Phần mềm (software) là những chỉ dẫn vô hình chạy trên phần cứng đó, ví dụ ứng dụng nhắn tin hay trò chơi.

Hệ điều hành (operating system) là phần mềm lớn nhất, làm cầu nối giữa bạn và phần cứng. Trên điện thoại Android, hệ điều hành đó tên là Android. Nó quản lý màn hình, bộ nhớ, mạng và cho phép các ứng dụng chạy.

Ứng dụng Android (Android app) là một phần mềm được cài vào điện thoại Android để làm một việc cụ thể: xem bản đồ, đặt đồ ăn, ghi chú. Mỗi app là một chương trình riêng.

Mẹo

Ví dụ so sánh: phần cứng giống như cơ thể, hệ điều hành giống như bộ não điều phối, còn các ứng dụng giống như những kỹ năng cụ thể (nấu ăn, lái xe) mà cơ thể đó thực hiện.

Khi bạn bấm một nút trong app, bên trong xảy ra chuỗi việc: màn hình nhận cú chạm → hệ điều hành báo cho app biết bạn vừa bấm → app chạy đoạn chỉ dẫn tương ứng → kết quả được vẽ lại lên màn hình. Tất cả diễn ra trong tích tắc.

  • Bài tập 1: Liệt kê 5 phần mềm bạn dùng hằng ngày trên điện thoại.
  • Bài tập 2: Với mỗi phần mềm đó, ghi rõ nó giúp bạn làm việc gì.
  • Bài tập 3: Kể tên 3 bộ phận phần cứng của điện thoại bạn.

Lưu ý

Lỗi thường gặp: nghĩ 'ứng dụng' và 'điện thoại' là một. Điện thoại là phần cứng + hệ điều hành; ứng dụng chỉ là một phần mềm nhỏ chạy bên trên.

  • Tự kiểm tra: Phần cứng khác phần mềm ở điểm nào?
  • Tự kiểm tra: Hệ điều hành làm nhiệm vụ gì?
  • Tự kiểm tra: Khi bấm một nút, điều gì xảy ra bên trong?

2Ngày 2 — Lập trình là gì

Ghi nhớ

Mục tiêu: hiểu lập trình, code, ngôn ngữ lập trình, bug và debug bằng ngôn ngữ đời thường.

Lập trình (programming) là việc viết ra các chỉ dẫn để máy tính làm theo. Tập hợp các chỉ dẫn đó gọi là code. Máy tính không tự suy nghĩ; nó làm chính xác từng bước bạn ghi ra, không hơn không kém.

Mẹo

Ví dụ so sánh: code giống như công thức nấu ăn. Bạn ghi từng bước rõ ràng; người nấu (máy tính) làm theo đúng thứ tự. Nếu bạn quên một bước, món ăn sẽ sai.

Ngôn ngữ lập trình (programming language) là ngôn ngữ ta dùng để viết code. Có nhiều ngôn ngữ vì mỗi loại phù hợp việc khác nhau: Kotlin cho app Android, JavaScript cho web, Python cho phân tích dữ liệu. Máy tính chỉ hiểu số 0 và 1, nên code của ta cần được dịch lại.

Có hai cách dịch: compiler dịch toàn bộ code thành thứ máy hiểu trước khi chạy; interpreter dịch và chạy từng dòng một. Bạn chưa cần nhớ kỹ, chỉ cần biết code luôn phải được dịch trước khi máy chạy.

Source code là những dòng code gốc do người viết. Bug là lỗi trong code khiến chương trình chạy sai. Debug là quá trình tìm và sửa lỗi đó. Thuật toán (algorithm) là cách giải một bài toán theo các bước, còn logic lập trình là cách sắp xếp các bước sao cho đúng.

  • Bài tập 1: Viết 'công thức' pha một gói mì thành các bước rõ ràng, đánh số thứ tự.
  • Bài tập 2: Cố ý bỏ một bước trong công thức và chỉ ra hậu quả (đây chính là một bug).
  • Bài tập 3: Viết các bước để đánh răng, càng chi tiết càng tốt.

Lưu ý

Lỗi thường gặp: cho rằng máy tính 'hiểu ý' mình. Máy chỉ làm đúng những gì được ghi. Chỉ dẫn mơ hồ sẽ cho kết quả sai.

  • Tự kiểm tra: Code là gì? Lập trình là gì?
  • Tự kiểm tra: Vì sao có nhiều ngôn ngữ lập trình?
  • Tự kiểm tra: Bug và debug khác nhau thế nào?

3Ngày 3 — Phân biệt các loại sản phẩm phần mềm

Ghi nhớ

Mục tiêu: phân biệt website, web app, app Android, app iOS, desktop, game và backend; biết mỗi loại chạy ở đâu.

Không phải phần mềm nào cũng giống nhau. Điểm khác lớn nhất là chúng chạy ở đâu và bạn tiếp cận chúng bằng cách nào.

So sánh nhanh các loại sản phẩm phần mềm

LoạiChạy ở đâuCách dùng
WebsiteTrên server, xem qua trình duyệtGõ địa chỉ web, không cần cài
Web appTrên server + trình duyệtNhư website nhưng tương tác nhiều (Gmail)
App AndroidCài trên điện thoại AndroidTải từ Google Play rồi mở
App iOSCài trên iPhone/iPadTải từ App Store rồi mở
App desktopCài trên máy tínhCài file rồi mở (Word, Photoshop)
GameĐiện thoại/máy tính/máy chơi gameCài rồi chơi
Backend serviceTrên server, người dùng không thấyPhục vụ các app khác qua mạng

Website chạy trên máy chủ (server) ở xa; bạn chỉ cần trình duyệt và địa chỉ web, không cần cài gì. App Android thì phải được cài vào điện thoại vì nó cần chạy trực tiếp trên máy để dùng camera, thông báo, lưu dữ liệu offline.

Mẹo

Vì sao app phải cài mà web thì không? Web mở ra là tải về tạm rồi chạy trong trình duyệt. App cần nằm sẵn trên máy để chạy nhanh và dùng được phần cứng của điện thoại.

Vì vậy Android Developer (người làm app Android) và Web Developer (người làm web) dùng công cụ và ngôn ngữ khác nhau. Android Developer thường dùng Kotlin; Web Developer dùng HTML, CSS, JavaScript. HTML mô tả nội dung trang, CSS lo phần đẹp, JavaScript lo phần tương tác — khác với Kotlin là ngôn ngữ đa năng để dựng cả logic app.

  • Bài tập 1: Chọn 10 sản phẩm phần mềm bạn biết và xếp mỗi cái vào đúng loại trong bảng trên.
  • Bài tập 2: Với 3 sản phẩm bất kỳ, giải thích vì sao chúng thuộc loại đó.

Lưu ý

Lỗi thường gặp: nghĩ mọi thứ mở được trên điện thoại đều là 'app'. Mở Facebook trong trình duyệt là web app; mở Facebook từ biểu tượng đã cài mới là app Android.

  • Tự kiểm tra: Website chạy ở đâu? App Android chạy ở đâu?
  • Tự kiểm tra: Vì sao app cần cài còn website thì không?
  • Tự kiểm tra: Android Developer khác Web Developer ở điểm gì?

4Ngày 4 — Thành phần của một ứng dụng hiện đại

Ghi nhớ

Mục tiêu: hiểu giao diện, frontend, backend, server, database, API, request/response và JSON qua ví dụ app đặt đồ ăn.

Hãy tưởng tượng một app đặt đồ ăn. Phần bạn nhìn thấy và bấm vào — danh sách món, nút đặt hàng — gọi là giao diện người dùng (user interface). Phần code lo hiển thị và tương tác này gọi là frontend.

Nhưng danh sách món ăn, giá tiền, đơn hàng không nằm trong điện thoại bạn. Chúng nằm ở backend — phần chạy trên server (máy chủ) đặt ở trung tâm dữ liệu. Server là một máy tính mạnh luôn bật để phục vụ nhiều người dùng cùng lúc.

Dữ liệu như danh sách món, tài khoản, đơn hàng được lưu trong database (cơ sở dữ liệu) — giống một kho chứa có tổ chức để tìm lại nhanh.

Frontend và backend nói chuyện với nhau qua API (giao diện lập trình ứng dụng). API giống như người phục vụ trong nhà hàng: bạn (frontend) gọi món, người phục vụ (API) chuyển yêu cầu vào bếp (backend) rồi mang kết quả ra.

Một lần trao đổi gồm request (yêu cầu app gửi đi, ví dụ 'cho tôi danh sách món') và response (kết quả server trả về). Dữ liệu trả về thường ở dạng JSON — một cách viết dữ liệu có cấu trúc, dễ đọc cho cả người và máy.

Ví dụ dữ liệu JSON của một món ăn

{
  "ten": "Phở bò",
  "gia": 45000,
  "conHang": true
}

Đăng nhập cũng theo cách này: app gửi tên và mật khẩu trong một request, server kiểm tra với database, nếu đúng thì trả về một 'vé' xác nhận để những lần sau app không phải nhập lại.

  • Bài tập 1: Chọn một app bạn hay dùng, chỉ ra đâu là giao diện (frontend).
  • Bài tập 2: Đoán xem dữ liệu nào của app đó phải lưu ở database trên server.
  • Bài tập 3: Viết một đoạn JSON mô tả thông tin của chính bạn (tên, tuổi, thành phố).

Lưu ý

Lỗi thường gặp: nghĩ toàn bộ dữ liệu nằm trong điện thoại. Phần lớn dữ liệu quan trọng nằm ở server và được lấy về qua API khi cần.

  • Tự kiểm tra: Frontend và backend khác nhau thế nào?
  • Tự kiểm tra: API làm nhiệm vụ gì?
  • Tự kiểm tra: Request và response là gì?

5Ngày 5 — Luồng dữ liệu từ điện thoại đến server

Ghi nhớ

Mục tiêu: mô tả được toàn bộ luồng từ lúc bấm nút đến lúc thấy kết quả, và biết khi nào app chạy offline.

Ghép các khái niệm hôm qua lại, ta có một luồng hoàn chỉnh. Khi bạn tìm một món ăn trong app:

  • 1. Bạn bấm nút tìm kiếm (tương tác với giao diện).
  • 2. Frontend xử lý cú bấm và tạo một request.
  • 3. Request được gửi qua Internet tới server.
  • 4. Server nhận request và truy vấn database để tìm món phù hợp.
  • 5. Database trả kết quả về cho server.
  • 6. Server đóng gói kết quả thành response (thường là JSON) và gửi lại.
  • 7. App nhận response, chuyển JSON thành thứ hiển thị được và vẽ lên màn hình.

Mẹo

Cả bảy bước trên thường xảy ra trong dưới một giây. Khi mạng chậm, bạn thấy vòng xoay 'đang tải' chính là lúc app đang chờ bước 3 đến 6.

Không phải app nào cũng cần server. Một app ghi chú đơn giản hoặc app máy tính bỏ túi có thể chạy hoàn toàn offline, vì mọi việc xử lý và dữ liệu đều nằm ngay trong điện thoại. App chỉ cần Internet khi phải lấy hoặc gửi dữ liệu ở nơi khác.

  • Bài tập 1: Vẽ (bằng tay hoặc gõ) lại 7 bước trên cho thao tác 'đăng nhập'.
  • Bài tập 2: Kể tên 2 app có thể chạy offline và 2 app bắt buộc cần mạng.

Lưu ý

Lỗi thường gặp: quên rằng dữ liệu phải đi và về qua mạng nên cần thời gian. Đây là lý do app luôn cần trạng thái 'đang tải' và trạng thái 'lỗi mạng'.

  • Tự kiểm tra: Mô tả luồng từ lúc bấm nút đến khi thấy kết quả.
  • Tự kiểm tra: Khi nào một app có thể chạy hoàn toàn offline?

6Ngày 6 — Quy trình tạo app & công cụ của lập trình viên

Ghi nhớ

Mục tiêu: hiểu các bước tạo ra một app và biết công dụng các công cụ chính của lập trình viên.

Một app không tự nhiên mà có. Nó đi qua một quy trình từ ý tưởng đến tay người dùng:

  • 1. Xác định vấn đề cần giải quyết.
  • 2. Liệt kê tính năng.
  • 3. Thiết kế giao diện.
  • 4. Chọn công nghệ.
  • 5. Viết code.
  • 6. Chạy thử.
  • 7. Tìm và sửa lỗi.
  • 8. Kiểm thử.
  • 9. Đóng gói ứng dụng.
  • 10. Phát hành cho người dùng.
  • 11. Thu thập phản hồi và cập nhật phiên bản mới.

Để làm những bước đó, lập trình viên dùng một số công cụ quen thuộc:

Công cụ chính và công dụng

Công cụDùng để làm gì
IDEPhần mềm để viết code, có gợi ý và bắt lỗi giúp
Android StudioIDE chính thức để làm app Android
TerminalCửa sổ gõ lệnh để ra lệnh cho máy tính
GitCông cụ lưu lại lịch sử thay đổi của code
GitHubNơi lưu code trên mạng và làm việc nhóm
EmulatorĐiện thoại Android ảo chạy trên máy tính để thử app
APK / AABFile đóng gói app để cài hoặc đưa lên Google Play
Google Play ConsoleTrang quản lý để phát hành app lên Google Play

Mẹo

Bạn chưa cần cài hay dùng thành thạo các công cụ này ngay. Mục tiêu hôm nay chỉ là nghe tên và hiểu mỗi thứ để làm gì; chúng ta sẽ dùng dần ở các tuần sau.

  • Bài tập 1: Nghĩ một ý tưởng app đơn giản và viết ra vấn đề nó giải quyết.
  • Bài tập 2: Liệt kê 3 tính năng bắt buộc của app đó.
  • Bài tập 3: Ghép mỗi công cụ ở bảng trên với bước tương ứng trong quy trình 11 bước.

Lưu ý

Lỗi thường gặp: muốn nhảy thẳng vào viết code mà bỏ qua bước xác định vấn đề và liệt kê tính năng. Bỏ qua các bước đầu khiến app dễ làm sai hướng.

  • Tự kiểm tra: Kể lại các bước chính để tạo một app.
  • Tự kiểm tra: IDE và Android Studio dùng để làm gì?
  • Tự kiểm tra: Emulator là gì?

7Ngày 7 — Tư duy lập trình & ôn tập tuần

Ghi nhớ

Mục tiêu: nắm tư duy Input → Process → Output, biết chia nhỏ vấn đề và viết pseudocode; ôn lại cả tuần.

Trước khi viết code thật, lập trình viên tập một thói quen tư duy: chia một việc lớn thành các bước nhỏ rõ ràng. Mỗi bước phải đơn giản đến mức máy tính làm theo được mà không cần đoán.

Một khung tư duy rất hữu ích là Input → Process → Output (Đầu vào → Xử lý → Đầu ra). Bất kỳ bài toán nào cũng có: dữ liệu đưa vào, cách xử lý, và kết quả trả ra.

Mẹo

Ví dụ tính tổng tiền mua hàng: Input là giá từng món; Process là cộng tất cả lại; Output là tổng tiền. Kiểm tra đủ tuổi: Input là năm sinh; Process là lấy năm nay trừ đi; Output là 'đủ tuổi' hay 'chưa'.

Pseudocode là cách viết các bước bằng ngôn ngữ gần với tiếng người, không theo cú pháp ngôn ngữ nào. Nó giúp bạn nghĩ cho rõ trước khi viết code thật. Flowchart là sơ đồ vẽ các bước và nhánh rẽ (nếu... thì...) để nhìn luồng cho trực quan.

Pseudocode kiểm tra người dùng đủ 18 tuổi

NHẬP nam_sinh
TINH tuoi = nam_nay - nam_sinh
NEU tuoi >= 18 THI
    IN "Đủ tuổi"
NGUOC LAI
    IN "Chưa đủ tuổi"

Đọc code luôn theo hướng từ trên xuống dưới, từng dòng một, đúng thứ tự máy chạy. Khi kết quả sai, hãy lần lại từng bước để tìm chỗ chỉ dẫn chưa đúng — đó chính là debug bạn đã học ở Ngày 2.

  • Bài tập 1: Viết pseudocode tính điểm trung bình của 3 môn.
  • Bài tập 2: Viết pseudocode xếp loại học lực dựa trên điểm trung bình (Giỏi/Khá/Trung bình).
  • Bài tập 3 (sản phẩm cuối tuần): Chọn một app đơn giản, mô tả bằng lời cách nó hoạt động và viết pseudocode cho một thao tác chính của nó.

Lưu ý

Lỗi thường gặp: viết bước quá chung chung ('xử lý dữ liệu') thay vì cụ thể ('cộng ba điểm rồi chia cho ba'). Bước càng mơ hồ càng khó chuyển thành code.

  • Ôn tập tuần: Giải thích bằng lời một app hoạt động thế nào (từ giao diện đến server).
  • Ôn tập tuần: Phân biệt app, website, web app, desktop.
  • Ôn tập tuần: Frontend, backend, API, database là gì?
  • Ôn tập tuần: Áp dụng Input → Process → Output cho một bài toán tự chọn.

Checklist theo dõi

Tick những gì học viên đã đạt

0/4