教學大綱 Syllabus

科目名稱:進階資訊系統研發

Course Name: Advanced Information System Development

修別:選

Type of Credit: Elective

3.0

學分數

Credit(s)

25

預收人數

Number of Students

課程資料Course Details

課程簡介Course Description

As software systems become increasingly critical to infrastructure, finance, and security, the ability to write code that is not just "functional" but provably correct is a defining skill for advanced computer scientists.

This course moves beyond standard software engineering practices to explore the mathematical and logical foundations of programming. We bridge the gap between implementation (writing code that runs) and specification (describing what code should do). The curriculum is divided into three interconnected pillars:

  1. Functional Programming (TypeScript): We begin by disciplining state and side effects using strong static typing, algebraic data types, and monads.

  2. Constraint Programming (Z3/SMT): We treat logic as a computational tool, using SAT/SMT solvers to model complex problems and synthesize solutions automatically.

  3. Program Verification (Dafny): We culminate by combining programming and logic to write mathematically verified software, where the compiler guarantees correctness against a formal specification.

Course Objectives

By the end of this semester, students will be able to:

  • Reason about correctness: Move beyond "testing cases" to proving properties for all possible inputs.

  • Leverage type systems: Use advanced type theory (generics, ADTs) to make invalid states unrepresentable.

  • Model problems logically: Translate real-world resource and scheduling constraints into First-Order Logic for automated solving.

  • Verify algorithms: Use Hoare Logic and pre/post-conditions to mathematically prove the correctness of imperative algorithms.

Prerequisites

  • Discrete Mathematics: Comfort with Boolean logic, set theory, and basic proof techniques (induction).

  • Data Structures: Familiarity with trees, graphs, and standard algorithms (sorting/searching).

  • Programming Maturity: Ability to write non-trivial programs.

  • We will have lab sessions every week. Students will need a laptop to do these exercises.
 
 
 
 
 

核心能力分析圖 Core Competence Analysis Chart

能力項目說明


    課程目標與學習成效Course Objectives & Learning Outcomes

    Upon successful completion of this course, students will be able to:

    1. Formalize Software Behavior: Translate informal English requirements into rigorous mathematical specifications using First-Order Logic and Type Theory.

    2. Construct Robust Architectures: Apply advanced functional programming patterns, including Algebraic Data Types and Monads, to design software where invalid states are unrepresentable by the type system.

    3. Solve Constraints Automatically: Model complex decision and optimization problems (e.g., scheduling, layout) as satisfiability formulas and utilize SMT solvers (Z3) to find solutions or prove unsatisfiability.

    4. Verify Imperative Algorithms: Use Hoare Logic to annotate programs with preconditions, postconditions, and loop invariants, and successfully verify their total correctness using the Dafny verifier.

    5. Reason About Program State: Distinguish between distinct notions of correctness (e.g., structural (types), logical (constraints), and behavioral (formal verification)) and select the appropriate formal method for a given software assurance challenge.

    每周課程進度與作業要求 Course Schedule & Requirements

    Week

    Module

    Topic

    Key Concepts & Activities

    1

    Part 1: Functional Programming

    Foundations

    Theory: Lambda calculus

    Practice: Combinators

    2

    Algebraic Data Types

    Theory: Recursion, induction, and co-induction

    Practice: Data structures

    3

    Higher-Order Abstractions

    Theory: Parametricity and free theorems

    Practice: Code refactoring

    4

    The Algebra of Programming

    Theory: Category theory

    Practice: Handling side effects via Monads

    5

    Part 2: Constraint Programming

    Propositional Logic & SAT

    Theory: Propositional logic

    Tool: SMTLIB / Z3 Python

    Practice: Solving logic puzzles

    6

    SMT (Satisfiability Modulo Theories)

    Theory: First-order logic and theories

    Practice: Modeling resource allocation/scheduling

    7

    Holiday

       

    8

    Part 2: Constraint Programming

    Symbolic Execution

    Theory: Modeling program paths as logic formulas

    Practice: Generating test inputs, proving function equivalence

    9

    Advanced Constraints & Synthesis

    Theory: Syntax-guided synthesis (SyGuS)

    Practice: Synthesizing coefficients/guard conditions

    10

    Midterm Exam

    A poll will decide the date.

    Format: Hands-on exam

    Coverage: Problem-solving using FP and CP

    11

    Part 3: Program Verification

    Hoare Logic & Contracts

    Theory: Hoare triples, weakest preconditions

    Tool: Dafny

    Practice: Programming with Contracts

    12

    Deductive Verification

    Theory: Compositional verification, framing

    Practice: Verifying math functions

    13

    Deductive Verification

    Theory: Loop invariants and variants

    Practice: Verifying combinatorial algorithms

    14

    Deductive Verification

    Theory: Predicate transformers, data consistency

    Practice: Verifying common data structures

    15

    Final Exam

     

    Format: Hands-on exam

    Coverage: Symbolic execution, program verification

    16

    Presentations

     

    Present articles in the reading list

     

    授課方式Teaching Approach

    60%

    講述 Lecture

    30%

    討論 Discussion

    10%

    小組活動 Group activity

    0%

    數位學習 E-learning

    0%

    其他: Others:

    評量工具與策略、評分標準成效Evaluation Criteria

    Component Weight Description
    Class Participation 10% Engagement in workshops, in-class coding exercises, and discussions.
    Midterm Exam 30% Hands-on exam covering Functional Programming and Logic (Weeks 1–8).
    Final Exam 30% Hands-on exam with emphasis on Program Verification (Weeks 1–16).
    Presentation 30% Presentation based on articles in the reading list

    指定/參考書目Textbook & References

    Reference Books

    Structure and Interpretation of Computer Programs by Abelson, Harold, Sussman, Gerald Jay, Henz, Martin (Summit Valley Press 2022)

    Program Proofs by K. Rustan M. Leino (MIT Press, 2023):

    Reading List

    JavaScript: the First 20 Years

    • Authors: Allen Wirfs-Brock, Brendan Eich
    • Date: 2020
    • Venue: Proceedings of the ACM on Programming Languages

    Myths and Mythconceptions: What Does it Mean to be a Programming Language?

    • Authors: Mary Shaw
    • Date: 2020
    • Venue: Proceedings of the ACM on Programming Languages

    To Type or Not to Type? A systematic comparison of the software quality of JavaScript and TypeScript applications on GitHub

    • Authors: Justus Bogner, Manuel Merkel
    • Date: 2022
    • Venue: The 19th International Conference on Mining Software Repositories

    Why C++ is Not Just an Object-Oriented Programming Language

    • Authors: Bjarne Stroustrup
    • Date: 1995
    • Venue: Proceedings of the ACM on Programming Languages

    Who is Using AI to Code? Global Diffusion and Impact of Generative AI

    • Authors: Simone Daniotti, Johannes Wachs, Xiangnan Feng, Frank Neffke
    • Date: 2025
    • Venue: Science

    How AI Impacts Skill Formation

    • Authors: Judy Hanwen Shen, Alex Tamkin
    • Date: 2026
    • Venue: arXiv

    Artificial Intelligence and Machine Learning Certificates in AI: Learn but Verify

    • Authors: Clark W. Barrett, Thomas A. Henzinger, Sanjit A. Seshia
    • Date: 2026
    • Venue: Communications of the ACM

    Will Code Remain a Relevant User Interface for End-User Programming with Generative AI Models?

    • Authors: Advait Sarkar
    • Date: 2023
    • Venue: PLATEAU Workshop (ACM)

    Toward Programming Languages for Reasoning: Humans, Symbolic Systems, and AI Agents

    • Authors: Mark Marron
    • Date: 2024
    • Venue: arXiv (cs.PL)

    Vibe Coding vs. Agentic Coding: Fundamentals and Practical Implications of Agentic AI

    • Authors: Ranjan Sapkota, Konstantinos I. Roumeliotis, Manoj Karkee
    • Date: 2025
    • Venue: arXiv (cs.SE)

    Agentic Software Engineering: Foundational Pillars and a Research Roadmap

    • Authors: Ahmed E. Hassan, Hao Li, Dayi Lin, Bram Adams, Tse-Hsun Chen, Yutaro Kashiwa, Dong Qiu
    • Date: 2025
    • Venue: arXiv (cs.SE)

    A Review of Trust, Risk, and Security Management in LLM-based Agentic Multi-Agent Systems

    • Authors: Shaina Raza, Ranjan Sapkota, Manoj Karkee, Christos Emmanouilidis
    • Date: 2026
    • Venue: AI Open (Elsvier)

    已申請之圖書館指定參考書目 圖書館指定參考書查詢 |相關處理要點

    書名 Book Title 作者 Author 出版年 Publish Year 出版者 Publisher ISBN 館藏來源* 備註 Note

    維護智慧財產權,務必使用正版書籍。 Respect Copyright.

    本課程可否使用生成式AI工具Course Policies on the Use of Generative AI Tools

    完全開放使用 Completely Permitted to Use

    課程相關連結Course Related Links

    
                

    課程附件Course Attachments

    課程進行中,使用智慧型手機、平板等隨身設備 To Use Smart Devices During the Class

    需經教師同意始得使用 Approval

    列印