AMS 325, Computing and Programming Fundamentals in AMS
Description:
Introduction to programming in MATLAB and Python, including scripting, basic data
structures, algorithms, scientific computing, and software engineering. No previous
programming experience is required. Homework projects will focus on using computation
to solve linear algebra, data analysis, and other mathematical problems. This is
a project-based, 3-credit course. The content is divided into three parts.
Prerequisite: AMS 210 or MAT 211; AMS major
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.