Skip to content
This repository has been archived by the owner on May 28, 2023. It is now read-only.

Latest commit

 

History

History
90 lines (80 loc) · 4.77 KB

discussion讨论内容.md

File metadata and controls

90 lines (80 loc) · 4.77 KB

在第二门统计计算课程里面,同学们都想学点什么呢?

先要能运行,然后结果对,最后要加快。

背景介绍

  • 这个是最初的课程页面 STA 633: 2015年春季的计算机统计与计算课程(Statistical computing and computation)
  • 每周的课程安排是 两次常规课程(每次 75 分钟),一次实验课程(也是75分钟)
  • 本门课程是统计计算方向的第二门课程,之前的课程是 Colin Rundel 讲授的
    • STA 523(一门以 R 为主的统计学课程)
    • 快速简介的参考书包括
      • Advanced R - Wickham
      • R Packages - Wickham
    • 内容涉及Unix shell, make, git, markdown 以及用 R 语言编程
    • 如果选本门课程的同学没有学过 STA523,就需要参加一个课前考试来看一下能否达到本课程的要求

目前的学习目标

  • 讲授一些基本计算内容,这些内容也是我们对团队内博士生或者博士后所要求的
    • 要能适应高级编程语言(Python/Julia?/R) 和一些相比低级的编程语言 (C/C++)
    • 理解数据管理,并且能够使用关系型数据库
      • 能处理不好的数据
        • 举些例子?
      • 从一个表格来构建一个规范的数据库,并且通过 SQL 来查询
    • 能够构建可重现数据分析管道(测试testing + 构建make + 文学编程literate programming)
    • 能把(论文或者教科书中的) 统计模型转换成数值算法
      • 理解一些基本算法,比如优化、模拟、光滑(optimization, simulation and smoothing) * 为统计学算法的各种大规模的类来创建模块 * 学生们都应该了解哪些算法?
      • 在实践中使用已经成型的数值范式 * 推荐使用 C/C++ 相关的库
    • 能写出正确的代码
      • 需要多少测试,以及那种测试更合适?
      • 如何使用随机元素来测试代码?
    • 能写出运行速度快的代码
      • 在运算速度和开发速度之间找到平衡(避免过早优化)
      • 对算法和数据结构的复杂平衡有一定了解
      • 评分和分析
      • JIT (Just in Time)即时编译
      • 编写原生代码
      • 利用多核心运行 (线程threading, 多任务处理multiprocessing, OpenMP)
      • 利用多台机器运行 (MPI)
      • 利用 GPU 运算(CUDA 或者 OpenCL)
      • 处理超大规模的真正大数据(MapReduce)

单元划分

Unit 1: 可重现的数据分析,以及简介用 Python 作胶水语言(10%) Unit 2: 处理数据以及关系型数据库 (10%) Unit 3: 数据分析和可视化 (10%) Unit 4: 核心的统计算法和库 (40%) Unit 5: C 训练,代码分析以及编写原生代码 (15%) Unit 6: 并行计算和大数据处理 (15%)

讨论部分

  • 课程的整体目标?
  • 课程的主要内容?
    • 有没有什么重要的类和话题被跳过了?
    • 每一章的主题中,学生们都应该学到哪些内容?
      • Unit 1: 可重现的数据分析,以及简介用 Python 作胶水语言 (10%)
      • Unit 2: 处理数据以及关系型数据库 (10%)
      • Unit 3: 数据分析和可视化 (10%)
      • Unit 4: 核心的统计算法和库 (40%)
      • Unit 5: C 训练,代码分析以及编写原生代码 (15%)
      • Unit 6: 并行计算和大数据处理 (15%)
  • 怎么来更有效率地教编程?
    • 我所知道的所有的优秀开发者都是自学的 ...
    • MCQs (选择题?),用于对每周内容不同理解程度的快速检查
    • 少说多做- 每一单元后面都有一个小的项目
    • 单打独斗还是团队合作?
  • 统计算法的学生应该了解哪些内容?
    • 掌握基础理论,并且知道如何合理应用到实例中
      • 通过玩具样例来以教促学
      • 使用各种已有的库来解决更具体的问题
    • 样例
      • 线性代数,例如投影和正规方程(projection, normal equations)
      • 优化, 例如牛顿法,IRLS 法, 多元梯度下降法, EM法等
      • 模拟,Simulation - 重采样方法,蒙特卡罗方法,MCMC算法(马尔可夫链蒙特卡罗(Markov Chain Monte Carlo))
      • 其他内容?光滑,插值等等
  • 什么事好的数据结构,那些问题适合用来教学?
    • 不良数据
    • 大规模数据
    • 运算速度慢和快的不同版本程序