AMS 325: Computing and Programming Fundamentals in AMS
Fall 2022
Time: Monday & Wednesday 2:40--4:00 pm ET
Location: Frey 211

Lecture Schedule

Instructor: Prof. Xiangmin (Jim) Jiao
Phone: 631-632-4408
Office hours: Mon. 1:15pm--2:15pm ET &
                      Wed. 10:15am--12:15pm ET
Office: 1-117 Math Tower or Join via Zoom

TA: Mr. Hongji Gao
Office hours: Tue. 4:00pm--5:00pm ET &
                      Thur. 11:00am--12:00pm ET
Office: 347A Harriman Hall or Join via Zoom

[ Description | Outline | Delivery Mode | Tech Requirements | Assignments and Grading | University Policy ]

Course Description (back to top)

    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.

    Required Textbook

    • None. Recommended reading materials will be provided.


    • AMS 210 or MAT 211; AMS major

    Learning Objectives

    The objective of this course is to introduce the programming skills, including scripting in MATLAB and Python, as well as object-oriented programming using Python, and to introduce some basic data structures, data analysis tools, and best practices in software engineering for scientific computing, including documentation, debugging and testing, version control, etc.

    The key learning outcomes include the following:
    • 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.

Course Outline (back to top)

The content is divided into three parts:

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, conditionals, loops
  • Introduction to software engineering including the use of git/github, commenting, and documentation
  • Debugging, testing, and profiling
Part II: Scripting and Object-Oriented Programming in Python (Eight weeks)
  • Compare/contrast between MATLAB and Python
  • Jupyter notebook; GUI interfaces
  • 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

Lecture Schedule

Course Delivery Mode and Structure (back to top)

This course will be in person. We will use Brightspace ( for posting and submission of assignments, posting grades, and discussion forums. For personal/private issues, my preferred method of contact is email, as listed at the top of this syllabus. I strive to respond to your emails as soon as possible, but please allow between 24-48 hours for a reply. All email communication will be sent to your Stony Brook University email account. You must have an active Stony Brook University email account and access to the Internet. Please plan on checking Brightspace regularly and your SBU email account for course-related messages or set up your SBU email account to forward to your email account. To log in to Stony Brook Google Mail, go to and sign in with your NetID and password.

Important announcements will be sent on Brightspace. These will be posted in the class and may or may not be sent by email. I will participate and post regularly on the discussion board in Brightspace and provide feedback on assignments within a week. Regular communication is essential in online classes. When participating in class discussions, the expectation is that you will regularly respond to your peers and questions posed to your responses. Logging in regularly, checking the discussion board, and participating with your colleagues ensure that you can remain an active member of the class.

Technical Requirements (back to top)

You are responsible for having a computer and a reliable Internet connection throughout the term. The following lists detail a minimum recommended computer set-up and the software packages you will need to access and use:
All the software with a link above is supported by the University and is available to Stony Brook students at no additional charge. Please make sure that you must sign up for the software using your Stony Brook account, instead of your personal account.
If you need any technical assistance for the University-licensed and support software,
For other questions on computer hardware, software, or Internet connection, post them on Brightspace to get help from the instructor, the TA, or your peer students.

Assignments and Grading (back to top)

Assignment Policy

The course involves both individual and group projects. All the assignments will be posted on Brightspace and should be submitted through Brightspace. There will be no other written homework assignments or exams. You are allowed to discuss course materials and assignments in small groups but limited to discussion of general ideas only. Under no circumstances may you copy solutions from any source, including but not limited to other studentís solutions, official solutions distributed in past terms, and solutions from courses taught at other universities. Violation of these rules may result in disciplinary actions.


All students are expected to attend all the lectures (either synchronously or asynchronously). The lectures and presentations regarding team projects must be attended in person.


The grades are assigned based on the quality of the codes and the reports.

  • Homework assignments and individual projects: 70%
  • Team projects: 30%

University Policies and Academic Integrity (back to top)

Student Accessibility Support Center Statement

If you have a physical, psychological, medical, or learning disability that may impact your course work, please contact the Student Accessibility Support Center, Stony Brook Union Suite 107, (631) 632-6748, or at They will determine with you what accommodations are necessary and appropriate. All information and documentation is confidential.

Academic Integrity Statement

Each student must pursue his or her academic goals honestly and be personally accountable for all submitted work. Representing another person's work as your own is always wrong. Faculty is required to report any suspected instances of academic dishonesty to the Academic Judiciary. Faculty in the Health Sciences Center (School of Health Technology & Management, Nursing, Social Welfare, Dental Medicine) and School of Medicine are required to follow their school-specific procedures. For more comprehensive information on academic integrity, including categories of academic dishonesty please refer to the academic judiciary website at

Critical Incident Management

Stony Brook University expects students to respect the rights, privileges, and property of other people. Faculty are required to report to the Office of Student Conduct and Community Standards any disruptive behavior that interrupts their ability to teach, compromises the safety of the learning environment, or inhibits students' ability to learn. Faculty in the HSC Schools and the School of Medicine are required to follow their school-specific procedures. Further information about most academic matters can be found in the Undergraduate Bulletin, the Undergraduate Class Schedule, and the Faculty-Employee Handbook.