CMSE 890 (004) - Foundations in Computational Science & Engineering (Fall 2018)

Description:  This course provides an overview of computer science topics that are critical to students in computational and data science, including a sample of topics including algorithms, data structures, and computer architectures. The course will also introduce students to software development tools and software engineering techniques that are commonly used in the computational and data science community. This course will use the C programming language (and minimal C++) as a basis, and will include substantial coding assignments. 

Time:  Monday/Wednesday 12:40-2:00 in A220 Wells Hall

Prerequisites:  Some programming experience in any language (Python, Matlab, C/C++, Fortran, etc.)

Textbook:  TBD

Instructors:  Profs. Alexei Bazavov and Tony Gao in CMSE.

Major topics covered:  

  1. Motivation: computational problems in science and engineering
  2. Computer architecture (required to understand program behavior and performance; particularly important for parallel programming)
  3. Fundamental data structures, including arrays, lists, trees, graphs, hash tables, heaps
  4. Algorithms and their analysis, including complexity analysis
  5. Software engineering methods (best practices for code design, debugging, testing, documentation, version control)
  6. Object-oriented design
  7. Unix command line and shell scripting