AMS 595: Fundamentals of Computing

This course provides an introduction to several modern approaches for developing computer programs and their use to solve mathematical problems. It will cover the fundamentals of programming in MATLAB, Python, and C/C++, including scripting, basic data structures, algorithms, scientific computing, performance optimization, software engineering and program development tools.

Supplementary Textbooks:

  1. MATLAB: A Practical Introduction to Programming and Problem Solving by Stormy Attaway, 5th edition, 2018, Butterworth-Heinemann
  2. Learning Python by Mark Lutz, 5th edition, 2013, O’Reilly
  3. Effective Python: 90 Specific Ways to Write Better Python by Brett Slatkin, 2nd edition, 2019, Addison-Wesley Professional
  4. Problem Solving with C++ by Walter Savitch, 10th edition, 2017, Pearson
  5. Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14 by Scott Meyers, 2014, O’Reilly


Learning Outcomes

Knowledge of the basic elements of computer programming languages. An understanding of the use of several different programming interfaces. Practical programming skills including:

  1. Proficiency in MATLAB programming: including scripting, procedural programming, GUI, debugging, plotting, and profiling.
  2. Proficiency with Python programming, including scripting, object-oriented programming, and commonly used Python libraries.
  3. Fundamentals of programming in C/C++, including compilers, performance optimization, STL.
  4. Familiarity with selected program development tools.
  5. Best practices in scientific software engineering, including code modularization, debugging and testing, version control, and documentation, etc.