TL;DR

Tài khoản Math Cafe (@Riazi_Cafe_en) vừa chia sẻ lại một kho tàng học thuật ít người biết: toàn bộ slide bài giảng môn Programming Languages (G22.2110-001) tại NYU Courant Institute do Prof. Jean-Claude Franchitti giảng dạy. Tất cả public, miễn phí, không cần đăng nhập.

Nếu bạn từng muốn hiểu tại sao Python dùng dynamic typing, tại sao Haskell không có side effects, hay tại sao Prolog "suy luận" thay vì "thực thi" - đây là khóa học bạn cần.

Khóa học này là gì

G22.2110 là môn học graduate bắt buộc trong chương trình CS Master tại NYU, thiết kế để trả lời một câu hỏi cốt lõi: ngôn ngữ lập trình được thiết kế như thế nào, và tại sao chúng khác nhau?

Khóa học không dạy bạn viết code bằng một ngôn ngữ cụ thể - nó dạy bạn tư duy về ngôn ngữ lập trình như một hệ thống có quy luật thiết kế riêng.

Textbook chính: Programming Language Pragmatics của Michael L. Scott (3rd Edition) - cuốn sách được dùng ở hàng trăm trường đại học kỹ thuật hàng đầu thế giới.

Những gì bạn học được

Curriculum cover 9+ chủ đề lớn:

  • Syntax & Semantics - cách ngôn ngữ được định nghĩa chính thức

  • Names, Scoping & Bindings - tại sao let trong JavaScript lại khác var

  • Type Systems - static vs dynamic, strong vs weak, inference

  • Control Structures - loops, conditionals, exceptions, continuations

  • Object-Oriented Programming - inheritance, polymorphism, encapsulation ở mức lý thuyết

  • Functional Programming - Lisp, ML, Haskell, Scheme

  • Logic Programming - Prolog, unification, backtracking

  • Concurrency - shared memory vs message passing

  • Garbage Collection & Memory Management

Ngôn ngữ được dùng làm ví dụ thực tế: C, Ada, C++, Java, Lisp, ML, Scheme, Haskell, Prolog, Python - đủ để thấy cùng một khái niệm được hiện thực hóa khác nhau như thế nào.

Về giảng viên

Dr. Jean-Claude Franchitti là Clinical Associate ProfessorAssociate Director of Graduate Studies tại NYU Courant. Ông giảng dạy tại NYU từ năm 1997, trước đó qua CU-Boulder, University of Denver, và Columbia.

Background: PhD Computer Science từ University of Colorado Boulder (1993), 40+ năm kinh nghiệm trong ngành, nghiên cứu được tài trợ bởi NSF và DARPA. Chuyên môn: AI, database systems, large-scale software architecture.

Tại sao nên học bây giờ

Trong bối cảnh AI code assistant phổ biến, hiểu sâu về language design lại quan trọng hơn bao giờ hết:

  • Bạn đọc code do AI sinh ra tốt hơn khi hiểu scoping và type inference thực sự hoạt động thế nào

  • Khi debug production issues liên quan tới concurrency hay memory, lý thuyết là thứ cứu bạn

  • Nếu bạn đang học Rust, Haskell, hoặc muốn hiểu tại sao Go chọn thiết kế như vậy - đây là foundation

Và quan trọng hơn: đây là tài nguyên từ một chương trình graduate top-tier, hoàn toàn miễn phí. Không có barrier nào để bắt đầu.

Cách học hiệu quả từ bộ slides này

Đây không phải loại tài liệu "đọc từ đầu đến cuối" - nó là một curriculum có cấu trúc. Một gợi ý tiếp cận:

  1. Bắt đầu với Session 1 - Introduction to Programming Languages & Syntax. Đây là bức tranh toàn cảnh.

  2. Session 2 - Names, Scoping & Bindings là session quan trọng nhất nếu bạn là developer đang làm việc hàng ngày. Giải thích tại sao closure hoạt động, tại sao lexical scope khác dynamic scope.

  3. Sessions về Type Systems là nền tảng để hiểu Rust, TypeScript strictness, hay tại sao Go không có generics truyền thống ban đầu.

  4. Functional Programming sessions nên đọc kèm với thực hành Haskell hoặc Elixir - lý thuyết sẽ "click" ngay khi bạn tự viết code.

  5. Logic Programming (Prolog): kỳ lạ nhất, nhưng hiểu Prolog giúp bạn grok AI constraint solving và Datalog-based systems (Datomic, souffle).

Bộ slides dùng PowerPoint format, mỗi session có thể download riêng lẻ. Không cần đọc hết - pick topic bạn đang cần hiểu sâu, đọc session đó.

So sánh với các khóa học online khác

Tại sao không chỉ xem Coursera hay YouTube? Vì scope của khóa này khác:

  • MIT 6.035 (Compiler Design): tập trung vào compiler construction, ít breadth hơn về language paradigms

  • SICP (MIT): thiên về Scheme và functional programming, không cover imperative hay logic đầy đủ

  • Khóa này: breadth-first, dùng 10 ngôn ngữ khác nhau để minh họa cùng một concept, phù hợp cho developer muốn mental model rộng

Điểm trừ thực tế: slides từ năm 2010-2011, một số ví dụ về cloud computing đã outdate. Nhưng phần lý thuyết core về language design thì timeless - scoping, type theory, hay garbage collection không thay đổi chỉ vì năm tháng.

Truy cập tài liệu

Toàn bộ slide được host công khai trên server NYU:

Không cần tài khoản, không cần VPN. Format PDF và PPT, download về máy dùng offline được.

Via: @Riazi_Cafe, NYU Courant - Jean-Claude Franchitti.