High Performance Scientific Computing

开始时间: 02/20/2015 持续时间: 10 weeks

所在平台: Coursera

课程类别: 信息,技术与设计

大学或机构: University of Washington(华盛顿大学)

授课老师: Randall J. LeVeque


课程主页: https://www.coursera.org/course/scicomp

课程评论: 1 个评论

评论课程        关注课程


Computation and simulation are increasingly important in all aspects of science and engineering. At the same time writing efficient computer programs to take full advantage of current computers is becoming increasingly difficult. Even laptops now have 4 or more processors, but using them all to solve a single problem faster often requires rethinking the algorithm to introduce parallelism, and then programming in a language that can express this parallelism.  Writing efficient programs also requires some knowledge of machine arithmetic, computer architecture, and memory hierarchies.

Although parallel computing will be covered, this is not a class on the most advanced techniques for using supercomputers, which these days have tens of thousands of processors and cost millions of dollars. Instead, the goal is to teach tools that you can use immediately on your own laptop, desktop, or a small cluster. Cloud computing will also be discussed, and students who don't have a multiprocessor computer of their own will still be able to do projects using Amazon Web Services at very low cost.

Along the way there will also be discussion of software engineering tools such as debuggers, unit testing, Makefiles, and the use of version control systems. After all, your time is more valuable than computer time, and a program that runs fast is totally useless if it produces the wrong results.

High performance programming is also an important aspect of high performance scientific computing, and so another main theme of the course is the use of basic tools and techniques to improve your efficiency as a computational scientist.


The use of a variety of languages and techniques will be integrated throughout the course as much as possible, rather than taught linearly. The topics below will be covered at an introductory level, with the goal of learning enough to feel comfortable starting to use them in your everyday work. Once you've reached that level, abundant resources are available on the web to learn the more advanced features that are most relevant for you.

  • Working at the command line in Unix-like shells (e.g. Linux or a Mac OSX terminal).
  • Version control systems, particularly git, and the use of Github and Bitbucket repositories.
  • Work habits for documentation of your code and reproducibility of your results.
  • Interactive Python using IPython, and the IPython Notebook.
  • Python scripting and its uses in scientific computing.
  • Subtleties of computer arithmetic that can affect program correctness.
  • How numbers are stored: binary vs. ASCII representations, efficient I/O.
  • Fortran 90, a compiled language that is widely used in scientific computing.
  • Makefiles for building software and checking dependencies.
  • The high cost of data communication.  Registers, cache, main memory, and how this memory hierarchy affects code performance. 
  • OpenMP on top of Fortran for parallel programming of shared memory computers, such as a multicore laptop.
  •  MPI on top of Fortran for distributed memory parallel programming, such as on a cluster.
  • Parallel computing in IPython.
  • Debuggers, unit tests, regression tests, verification and validation of computer codes.
  • Graphics and visualization of computational results using Python.



钛合金蛙眼 2013-07-09 11:10 1 票支持; 0 票反对

很实用,内容包括版本控制(git),语言(fortran, python),编译调试(makefile),并行计算(openmp, mpi),还有一部分科学计算(蒙特卡罗)。十分适合用来学习了解诸多知识点。Coursera上没有编程作业,但是他提供的课程网站有homework(课程是在C站和学校同步开授的),时间原因没全跟下来,比较花时间。uw开的另一门课程 introduction to data science,也是一门实用的杂烩式课程


Programming-oriented course on effectively using modern computers to solve scientific computing problems arising in the physical/engineering sciences and other fields. Provides an introduction to efficient serial and parallel computing using Fortran 90, OpenMP, MPI, and Python, and software development tools such as version control, Makefiles, and debugging.


科学计算 高性能科学计算 高性能编程 数据分析 MPI OpenMP Python IPython Fortran 高性能计算 华盛顿大学 UW



C++ For C Programmers 关注

Compilers 关注

Introduction to Systematic Program Design - Part 1 关注

An Introduction to Interactive Programming in Python 关注

Programming Languages 关注

Computer Architecture 关注

Creative, Serious and Playful Science of Android Apps 关注


Computer Networks 关注