1. TÊN HỌC PHẦN:
Tiếng Việt: Nguyên lý ngôn ngữ lập trình.
Tiếng Anh:Principles of Progamming Language.
Mã học phần: CNTT1115 Tổng số tín chỉ: 03
2. BỘ MÔN PHỤ TRÁCH GIẢNG DẠY:
Bộ môn Công nghệ thông tin.
3. ĐIỀU KIỆN HỌC TRƯỚC:
Sinh viên cần học trước các môn sau đây để tiếp thu môn học được tốt hơn.
- Nhập môn Công nghệ thông tin
- Cơ sở lập trình.
4. MÔ TẢ HỌC PHẦN:
- Nguyên lý ngôn ngữ lập trình là môn học bắt buộc thuộc khối kiến thức giáo dục chuyên nghiệp của ngành Khoa học máy tính. Môn học trang bị cho sinh viên những kiến thức cơ bản và chuyên sâu về nguyên lý của các ngôn ngữ lập trình, đồng thời trang bị cho sinh viên cách tiếp cận để có thể giải quyết được các bài toán trong thực tế bằng máy tính.
- Nội dung môn học bao gồm:
üTổng quan về Ngôn ngữ lập trình: Giới thiệu ngôn ngữ lập trình, lập trình cấu trúc, lập trình hướng đối tượng.
üLập trình hàm: Các khái niệm, các kiểu dữ liệu, các pattern, hàm, ngữ nghĩa kiểu và suy diễn kiểu, lập trình hàm.
üNgôn ngữ dịch: Một số khái niệm và định nghĩa, nhận biết ngôn ngữ, phân tích cú pháp.
üPhương pháp phân tích: Mô phỏng dịch đẩy xuống, thuật toán phân tích top-down, thuật toán phân tích bottom-up, thuật toán phân tích bảng.
üPhân tích tất định: Văn phạm LL(k), phân tích LL(k), văn phạm trước.
5. MỤC TIÊU HỌC PHẦN:
- Về lý thuyết: Sau khi học xong môn học, sinh viên có thể nắm được những kiến thức cơ bản và chuyên sâu về nguyên lý của các ngôn ngữ lập trình như: Các khái niệm cơ bản của ngôn ngữ hình thức, phân tích từ vựng, các phương pháp phân tích cú pháp quay lui, phân tích tất định, sinh mã. Từ đó, sinh viên có thể xây dựng được trình biên dịch của một ngôn ngữ lập trình cụ thể để giải quyết các bài toán liên quan trong thực tế..
- Về kỹ năng: Trang bị cho sinh viên có khả năng nghiên cứu, phân tích, tổng hợp, giải quyết và đánh giá các bài toán thực tế. Ngoài ra, còn trang bị kỹ năng làm việc độc lập hoặc làm việc theo nhóm, kỹ năng thuyết trình trước đám đông, góp phần phát triển kỹ năng mềm của sinh viên.
6. NỘI DUNG HỌC PHẦN:
PHÂN BỐ THỜI GIAN
STT
|
Nội dung
|
Tổng số
tiết
|
Trong đó
|
Ghi chú
|
Lý thuyết
|
Bài tập, thảo luận, kiểm tra
|
1
|
Chương 1
|
3
|
2
|
1
|
Phòng máy
|
2
|
Chương 2
|
6
|
4
|
2
|
3
|
Chương 3
|
14
|
10
|
4
|
4
|
Chương 4
|
10
|
6
|
4
|
5
|
Chương 5
|
12
|
8
|
4
|
|
Tổng cộng
|
45
|
30
|
15
|
|
CHƯƠNG 1: TỔNG QUAN VỀ NGÔN NGỮ LẬP TRÌNH
Chương này giới thiệu tổng quan về ngôn ngữ lập trình: Khái niệm ngôn ngữ lập trình, các loại ngôn ngữ lập trình thông dụng, trình thông dịch và biên dịch, các khái niệm và đặc trưng của phương pháp lập trình cấu trúc và lập trình hướng đối tượng.
CHƯƠNG 2: LẬP TRÌNH HÀM
Chương này giới thiệu về phương pháp lập trình hàm: Khái niệm ngôn ngữ lập trình hàm, lập trình hàm, biểu thức và giá trị, các kiểu dữ liệu, các hàm và các định nghĩa, các đặc tả và thực thi,các kiểu dữ liệu, các pattern, hàm, ngữ nghĩa kiểu và suy diễn kiểu và kỹ thuật lập trình hàm.
CHƯƠNG 3: NGÔN NGỮ DỊCH
Chương này trình bày về ngôn ngữ dịch: Các khái niệm và định nghĩa, bảng chữ (alphabet), xâu ký tự (string), chiều dài của một xâu ký tự, ghép xâu, một vài phép tính trên tập các xâu ký tự, mô hình và nhận biết ngôn ngữ, giới thiệu các phương pháp phân tích cú pháp: Phân tích top-down, phân tích bottom-up.
CHƯƠNG 5: PHÂN TÍCH TẤT ĐỊNH
Chương này trình bày các phương pháp phân tích tất định và các vấn đề liên quan: Định nghĩa, tính chất của văn phạm LL(k), điều kiện để một văn phạm là văn phạm LL(k), thuật toán phân tích xem trước LL(1), phân tích LL(k), phân tích đệ quy trên dưới (recusive - descent), kiểm tra điều kiện LL(k), mô tả hoạt động của thuật toán phân tích gạt thu gọn, văn phạm trước đơn giản, văn phạm trước mở rộng.
7. GIÁO TRÌNH:
“Vũ Lục (1996), Phân tích cú pháp, Trường Đại học Bách khoa Hà nội (Tài liệu Lưu hành nội bộ)”
8. TÀI LIỆU THAM KHẢO:
[1] “ThS. Lưu Minh Tuấn (2006), Bài giảng môn Nguyên lý ngôn ngữ lập trình (Tài liệu Lưu hành nội bộ), Bộ môn CNTT – ĐHKTQD”.
[2] “Nguyễn Văn Ba (1995), Giáo trình Ngôn ngữ hình thức, Nhà xuất bản khoa học và kỹ thuật”.
[3] “PGS. TS. Bùi Minh Trí (2003), Bài giảng Ôtômat và ngôn ngữ hình thức, Khoa Toán ứng dụng – Trường ĐHBKHN”.
[4] “Quách Tuấn Ngọc (1990), Lập trình cấu trúc với Turbo Pascal, Nhà xuất bản Bộ giáo dục và đào tạo”.
[5] “Nguyễn Văn Ất (1999), Lập trình hướng đối tượng với C++, Nhà xuất bản Đại học giao thông vận tải”.
[6] “Richard Bird Philip Wadler (1998), Introduction to Functional Programming, Prentice Hall International (UK) Ltd”.
[7] “Alfred V.Aho, Ravi Setthi, Jeffrey D.Ullman (Biên dịch Trần Đức Quang) (2000), Trình biên dịch (Nguyên lý kỹ thuật & công cụ) – Tập 1, Nhà xuất bản thống kê”.
9. PHƯƠNG PHÁP ĐÁNH GIÁ HỌC PHẦN:
- Thảo luận, dự lớp và làm bài tập thực hành trên lớp: Đánh giá Điểm 10% số điểm (hệ số 0.1).
- 01 Bài tập lớn/Tiểu luận có thuyết trình báo cáo và 01 bài kiểm tra: Đánh giá Điểm 20% số điểm (hệ số 0.2).
- Thi cuối kỳ: Thi tự luận 90 phút: Đánh giá Điểm 70% số điểm (hệ số 0.7)
- Công thức tính điểm học phần: Thang điểm: 10. Chi tiết như sau:
Điểm học phần = Điểm 10% x 0.1+ Điểm 20% x 0.2 + Điểm 70% x 0.7