MAT 331: Computer-Assisted Mathematical Problem Solving, Fall 20

Lecture Instructor

Prof. Nguyen-Bac Dang
email : Nguyen-Bac.Dang(at)
My homepage
Schedule : TuTh 11:30am-12:50pm
Office Hours: M 3:00pm-4:00pm;M 4:00pm-5:00pm;by appointment
MLC Hours: W 9:00am-10:00am

Course summary

Exploration of the use of the computer as a tool to gain insight into complex mathematical problems through a project-oriented approach. Students learn both the relevant mathematical concepts and ways that the computer can be used (and sometimes misused) to understand them. The particular problems may vary by semester; past topics have included cryptography, fractals and recursion, modeling the flight of a glider, curve fitting, the Brachistochrone, and computer graphics. No previous experience with computers is required. First we will go over the basics of programming. This requires a new way of thinking, so it is not easy, but it can be quite fun and rewarding! Of course, it is also very useful. Then we will focus on three different areas of math where computers are useful:

  • Cryptography: this include substitution cyphers, one-time pads, the enigma encryption machine, prime numbers and public key encryption system (RSA)
  • Probability: Modeling the law of large numbers, the Central limit theorem, Poisson distributions
  • Analysis: Root finding, Approximation of real numbers, differential equations
  • Fractals: Visualizing Julia sets, Mandelbrot sets


Technical requirements

Since all lectures are presented via Zoom, all students will need a device with this software installed. Links to the Zoom lectures are provided in Blackboard.
We will use Blackboard for homework, so you will need a device with a web browser that can connect to the Stony Brook Blackboard site to access homework. You will also need to access your Stony Brook Google email to receive occasional emailed announcements (these will also appear in the Blackboard announcements for the course).
Our programming tools will be essentially Python for the first part of the lecture, and at the end we will use briefly Sagemath. The link to download python is here.
I will use the following editor gedit for Windows (download and install the file), gedit for Mac or Linux
For Macusers: Install brew following the instructions here:

  • Open a terminal cmd+space
  • Run :
    xcode-select --install
  • Then :
    ruby -e "$(curl -fsSL"
  • Then : brew install gedit


Grades will be based on 2 types of evaluation:
        Homeworks (25%): These will consist of weekly questions, separated into two parts. Half the questions are for training purposes, and the other part are codes that the students will reuse for the current Project. We will drop the two lowest homework grades. In principle, no late homework will be accepted once the correction is posted. However, if you encounter a technical issue, then email me so that I can delay posting the correction.
The due dates of these will be usually on Sunday of the week following the week when the relevant material is presented in lecture (but you are encouraged to do it earlier, and even try to do them as soon as we covered the material in class).
The format for returning homework is as follows.

  • The name of the file you turn in is hw_#number_#name, where #number is the homework number and #name is your last name, without space and all in lower caps.
    For example, for me homework 1 would look like "".
  • Each function should be commented, what it does, what it returns, and how you proceed.
  • You can collaborate but the code and explanation must be written by you
  • Each function must be as simple as possible, with a name that must help the reader
  • Unecessary code must be deleted
  • The file should be formated as follows:

    ###################### Exercice 1 #######################
    print("Exercice 1: \n \n\n")
    code for exercice 1.
    ######################Exercice 2 ##########################
    print("Exercice 2: \n \n\n")
    code for exercice 2.
        3 Projects (each 25%): These are large projects that use some of the homework questions whose aim is to solve a big problem. I will do 4 projects, but will drop the lowest grade.
There are no homework during the weeks the projects are due. Each project consist into two parts: coding and an expository part where some Mathematical content related to the project are treated. If you are enrolled in MAT 459, then two of these expository part can be used to satisfy the university WRDT requirement.


        Blackboard is the Stony Brook University class management system. Your homework, quiz and exam grades will be posted here. Letter grades for the course are posted in the Solar System. I will occasionally post announcements in Blackboard; you should receive email notifications whenever this occurs. Homework assignments and the online final can be accessed through your Blackboard account. Also links to the lectures via Zoom.

Solar System

        Solar System is the Stony Brook University administrative management system (registration, bills,...). It is not used for classes, except to post letter grades at the end of the semester..

Stony Brook Gmail

        Check your email here.

Stony Brook Virtual SINC Site

        Late in the course I expect to demonstrate software from the Virtual Sinc Site. This gives you access to various software packages on a university license, such as Mathematica and Matlab. These systems, among others, are can be used to compute some difficult integrals symbolically (Section 3.5 of the text) and most numerically (Section 3.6). I plan to demonstrate how they are used in lecture, but I won't require their use on assessments. Using the virtual Sinc Site requires downloading the Citrix receiver software (you will be prompted). Even though we won't need to use the Virtual Sinc Site much in this class, it is good idea to make sure you can access it for future classes.

Math Learning Center (MLC)

MLC webpage.

Normally, this is a room in the basement (SL level) of the Math Tower where you can go for face-to-face help with teaching assistants and faculty (not necessarily your own instructors). However, for Fall 2020 the MLC will be entirely online. To use the MLC click this link for MLC webpage. When there are tutors online, there is a zoom link to the session for that tutor. The zoom sessions are set up so that the student needs to be authenticated, usually with SBU netid, and the tutor is supposed to use the waiting room so that they get admitted "on demand" -- typically one student at a time.


        You can download Zoom here, if you do not already have it installed on your computer. Access to Zoom lectures and recitations will be provided through your Blackboard account.

Important University Dates

    Link to university academic calendars, including final exam calendars.

    First day of classes: Monday August 24, 2020.
    Last day to move-up/drop-down: Friday October 2, 2020.
    Fall break: Canceled. Instead of a short break on Oct 12 and 13, we will get all of Thanksgiving week off instead.
    Last day to withdraw or choose Grade/Pass/NoCredit: Friday October 23, 2020
    Last day for in-person classes: Friday, November 20. All classes meet online after Thanksgiving break.
    Thanksgiving break: Saturday November 21 to Sunday November 29, 2020.
    Last day of classes: Monday December 7, 2020.
    Reading day: Tuesday December 8, 2020.
    Finals: Wednesday December 9 to Thursday December 17, 2020.
    MAT 126 Common Final Exam: 2:15pm-5:00pm, Thursday December 10, 2020.
    Commencement: Friday December 18, 2020

Lecture Schedule

For each week I list sections of the text we plan to cover that week. Online homework on each week's sections will be assigned on Blackboard and due for everyone at the end of the following week. However, it is very highly recommended that you to complete the assignment by a few days before the assignment is due to avoid any technical issue.

Week 1, Aug 24 - Aug 28, (HW 1 due Sunday of Week 2)
        Topics covered:
        Course administration, class webpage, Blackboard and Homeworks
        About Python.
        Setup Python : how to install python
        Tutorial Python : This is a tutorial on python, it is a good idea to keep the link for later use.
        Library reference
        Language reference        

Week 2, Aug 31 - Sept 4 (HW 2 due Sunday of Week 3)
        Topics covered:
        Functions, variables, types and recursivity
  • Functions, Recursive functions
  • Fibonacci sequence
  • Recursive formulas
  • Memory management
  • Types, conditions
  • Basic print

Week 3, Sept 7 - Sept 11 (HW 3 due Sunday of Week 4)
        Topics covered:
  • Loops, for, while
  • Riemann sums, Newton method
  • Imperative vs Recursive: A memory management problem

Week 4, Sept 14 - Sept 18: (HW 4 due Sunday of Week 5)
        Topics covered:        
  • String,Lists manipulation
  • Permutations and lists
  • Substitution cryptography

Week 5, Sept 21- Sept 25: (Project 1 due 15th October 11:59pm)
        Topics covered:        
  • Recursion and induction
  • Hanoi towers game
  • Euler method, Runge-Kutta's method for solving ODE

Week 6, Sept 28 - Oct 2 :(HW 5 due Sunday of Week 7)
        Topics covered:        
  • Caesar cryptography, Vigenere cypher
  • RSA cypher
  • Fast expansion, Factorization

Week 7, Oct 5 - Oct 9: (HW 6 due Sunday of Week 8)
        Topics covered:        
  • Random numbers
  • Probability: law large numbers.
  • Graphs, plots
  • Central limit theorem

Week 8, Oct 12 - Oct 16: (HW 7 due Sunday of Week 9)
        Topics covered:        
  • Visualizing ODEs
  • Drawing the Sierpinski and the von Koch snowflake

Week 9, Oct 19 - Oct 23: (HW 8 due Sunday of Week 10)
        Topics covered:        
  • Fatou sets, Julia sets
  • Mandelbrot set
  • Working with complex numbers

Week 10, Oct 26 - Oct 30: (Project 2 due Sunday of Week 11)
        Topics covered:
  • File management.
  • Importing libraries
  • Perron Frobenius Theorem
  • Matrices, Diagonalization


Week 11, Nov 2 - Nov 6 : (HW 9 due Sunday of Week 12),
        Topics covered:
  • Graphs
  • Euler characteristic, connectedness
  • Random Walk on graphs
  • Laplacian, Ihara zeta functions


Week 12, Nov 9 - Now 13: (HW 10 due Sunday of Week 13)
        Topics covered:
  • Using high-level software: Sage/Singular
  • Formal calculus
  • Polynomials, polynomial systems of equation

Week 13, Nov 16 - Nov 20: (HW 11 due Sunday of Week 15)
        Topics covered:
  • Geometry in the plane
  • Conics, cubics,elliptic curves


Week 14, Nov 23 - Nov 27
        Thanksgiving break, no classes Mon-Fri.

Week 15, Nov 30 - Dec 4
        Topics covered:
  • Convex bodies
  • Ehrart polynomials, mixed volumes
  • Polynomial interpolation

Week 16, Dec 7
        Final Project deadline Wednesday December 16.

Helpful websites

Links to external websites if you need some additional review of any concepts.
        Python documentation

Topics Related to computer science and Mathematics

Enigma machine : This is litterally the birth of computers and is the first time computer had impact in history. Turing invented the first computer to crack the German Enigma codes during the Second World War.

Mandelbrot Ted talk : Another revolution in math was brought by Mandelbrot, who used IBM supercomputers (in the 1980s) to infer many properties of fractals.

The Kepler problem or the sphere packing problem : This problem is one important problem whose proof by Hales used heavily computer programs. Nowadays people do use computer based proof assistants in Mathematics.

Office Hours

I will hold office hours via Zoom. Once the semester begins links will be provided in Blackboard. You may also use email to make appointments for other times.

Technology Support:

Student Technology Services. TLT provides academic technology support to all students. If you require assistance with Blackboard or other academic technologies, please contact TLT at:; Phone: 631.632.9602; Chat; or visit a SINC Site.

Students who need assistance with their personal devices can contact DoIT's service desk at: 631.632.9800, submit an online request, or visit the Walk In Center on the 5th floor of the Melville Library (West Campus), Room S-5410. For more information, visit:

Required Syllabus Statements

The University Senate Undergraduate and Graduate Councils have authorized that the following required statements appear in all teaching syllabi (graduate and undergraduate courses) on the Stony Brook Campus.

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, 128 ECC Building, (631) 632-6748, or at They will determine with you what accommodations are necessary and appropriate. All information and documentation is confidential.

Students who require assistance during emergency evacuation are encouraged to discuss their needs with their professors and the Student Accessibility Support Center. For procedures and information go to the following website: and search Fire Safety and Evacuation and Disabilities.

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 University 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.