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. No previous programming experience is required.
Fall semester, 1-9 credits, ABCF grading
Prerequisite: Familiarity of linear algebra and discrete mathematics at undergraduate level are required. No previous programming experience is required.
Antirequisite: AMS 561
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.
