工学硕士

瑞士工程硕士学位


每个模块包含3个ECTS。您在以下模块类别中总共选择了10个模块/30个ECTS:

  • 技术科学模块(TSM)中的12-15 ECTS
    TSM模块教授特定的专业技能,并补充分散的专业模块。
  • 基本理论原理模块(FTP)中的9-12 ECTS
    FTP模块处理理论基础,如高等数学、物理、信息理论、化学等。它们将教授更详细、抽象的科学知识,并帮助您弥合抽象与应用之间的差距,这对创新非常重要。
  • 6-9上下文模块中的ECTS(CM)
    CM模块将传授技术管理、商业管理、通信、项目管理、专利法、合同法等领域的额外技能。

在模块描述(下载pdf)中,您可以找到每个模块的完整语言信息,这些信息分为以下类别:

  • 指令
  • 文档
  • 检查
高级编程范例(TSM_AdvPrPa)

尽管广泛存在,但当前主流的命令式面向对象编程范式(以测试为其主要质量保证方法)有其局限性。尽管它允许新手相对较快地编写程序,而且没有经过太多正式培训,但只要他们需要做一些非平凡的事情,这些程序就会变得复杂。这使得它们越来越难以编写和推理,使得提供比软件测试更好保证的保证方法变得难以处理。类似地,即使可以相对快速地编写软件测试,并且无需进行大量正式培训,但此类测试只能显示故障的存在,而不能显示故障的缺失。

 

很少有人意识到,除了命令式的、面向对象的编程和测试之外,还有许多其他选择。本课程将从对这些替代方案的广泛概述开始,然后重点关注其中之一,函数式编程,以及使用形式化方法来指定和证明函数式程序的正确性。

 

函数式编程是一种以简单、清晰和优雅为主要目标的编程方法。它是应用形式化数学和基于编程语言的技术来构建和验证计算机程序。尽管它有着悠久的历史,但最近受到了关注,因为它有潜力编写优雅、正确和高效的程序,一旦人们熟悉了它的基本概念,这些程序就更容易编写、编写和维护。它的简单性还允许使用高中数学中教授的技术来推理函数程序的正确性。这些技术不仅可以用于在纸上陈述和证明较小程序的功能正确性,还可以用于使用自动证明助手的大型系统。此类自动校对助手(例如Agda、Isabelle/HOL、Idris、Lean和Coq)本身就是函数编程的应用和进一步发展。

 

在本课程的最后一部分,我们将重点扩展到探索命令式、面向对象和函数式编程语言中的复杂类型系统。这些高级类型的系统可作为程序验证的有效工具,并已被证明可有效地识别和消除关键错误。


前提条件

所有参与者在参加了关于这些主题的入门级本科课程后,都应该能够以功能和面向对象的风格进行编程,达到预期的程度。

在开始课程之前,没有函数编程经验的参与者需要阅读Graham Hutton的《Haskell编程》(第二版)中的第1章至第8章。


学习目标

所有参与者都能够解释和应用基于语言的正式编程技术来构建和验证计算机程序。将特别强调在命令式面向对象编程风格中超越主流编程某些限制的技术,以及基于主流测试的软件保证方法的替代方法。

所有参与者都应该能够:

  • 列举并解释一些不同的编程范例。
  • 以函数风格构建程序。
  • 使用形式证明来验证函数程序的正确性。
  • 应用高级类型系统使命令式、面向对象和功能性程序更加安全。


模块内容

以下是课程内容的大致概述,可能会有所更改:

  • 概述(1周)
    • 不同编程范例的概述。
  • 功能编程(4周)
    • 快速修订函数编程先决条件和Haskell。
    • 正确性类型,纯语言的输入/输出。
    • 功能设计模式:Functor、Applicative和Monad,并将解析作为示例应用程序。
    • 应用程序:一种小型命令式和函数式编程语言的解释器。
  • 证明程序正确(5周)
    • 等式推理
    • 结构归纳法
    • 自动定理证明
    • 依赖类型
  • 高级类型系统(4周)
    • 泛型类型的子类型(协变和逆变)
    • 子类型格
    • 所有权类型
    • 效果系统

教学方法

交互式讲座,解释主要概念,穿插编程练习和阅读作业。


文学类

在本课程中,您需要拥有以下书籍的副本:

  • Graham Hutton,《Haskell编程》,第二版,剑桥,2016年。

课程中将根据需要提供更多材料。

 

下载完整模块描述

后退