AMS 325, Computing and Programming Fundamentals in APPLIED mATHEMATICS & STATISTICS
Description:
Introduction to programming in MATLAB and Python, including scripting, basic data
structures, algorithms, scientific computing, and software engineering. Homework projects
will focus on using computation to solve linear algebra, data analysis, and other
mathematical problems.
Prerequisites: AMS 210 or MAT 211; AMS major
NOTE: Not for AMS2MAJ. Those students should contact the AMS Department.
3 credits
IMPORTANT: The GPNC option is unavailable for this course.
Offered every fall starting with 2021. May be offered in summer sessions.
Course Materials:
None. Recommended reading materials will be provided.
SYLLABUS
Part I: Numerical and Statistical Computing in MATLAB (2.5 weeks)
Overview of computing + data
Matrix and vector operations in MATLAB
File I/O and plotting
Controls, functions, conditioinals, loops
Introduction to software engineering including the use of git/github, commenting, and documentation
Part II: Scripting and Object-Oriented Programming in Python (Eight Weeks)
Basic data structures (e.g., trees, arrays, lists)
Symbolic computation using SymPy
SciPy and NumPy
Data analysis using pandas
Machine learning using sciket-learn
Object-oriented programming
Basic GUI programming
Part III: Performance Optimization (Four weeks)
Computer architecture, performance, interpreted versus compiled languages
Performance optimization of Python using numba
Multithreading and multiprocessing in Python
Team project
Learning Outcomes for AMS 325, Computing and Programming Fundamentals in Applied Mathematics and Statistics
- Proficiency in MATLAB programming: including scripting, procedural programming, GUI, debugging, plotting, profiling, and some commonly used toolboxes.
- Proficiency with Python programming, including scripting, object-oriented programming, and commonly used Python libraries.
- Best practices in scientific software engineering, including code modularization, debugging and testing, version control, documentation, performance optimization, etc.