University of Illinois at Urbana-Champaign, Department of Mathematics

**Instructor:** Anil Hirani (email); TA: Siqi Jiao (email)

**Office Hours:** See Moodle

**CoCalc:** All in-class programming, Python and SageMath notebooks, homeworks and exams will be on CoCalc. The department has purchased a CoCalc group license for the class so you SHOULD NOT purchase anything at CoCalc. To use the department license, you must create an account on CoCalc using your Illinois e-mail address.

**Prerequisites:** Successful completion of CS 101 or 125 or prior programming experience in any one or more of: Python, C, C++ or Java; as well as successful completion of Math 347 (or CS 173).

This course may serve as an additional 400-level mathematics course for math major requirements or substitute for the requirement for Math 412/484 in Operations Research

**Description:** This course is designed for undergraduate Mathematics majors and has the following goals: (i) improve programming skill and algorithmic thinking; (ii) prepare for industrial computational math work; (iii) prepare for future math courses by using computation to play with well-chosen examples; and (iv) prepare for research in mathematics using a computer as a tool. This is a project-based hands-on course aimed at guiding students through a computational way of approaching problems while capitalizing on their mathematics knowledge and training. The content of the course has very little overlap with existing courses on campus and is not intended as a first introduction to programming. Topics covered include graph algorithms and computations on graphs, image analysis, computational topology, topological data analysis, computer algebra, cryptography algorithms, analysis of tabular data, neural networks and introduction to quantum computing. Programming will be done in Python and its extension that the SageMath environment provides. The format of the course will be short lectures and short programming exercises twice a week with longer project once a week that will be started in class on Fridays. There are three evening open-everything programming exams. In addition, students select a longer final semester project done in groups of 2 or 3 and do an in-class presentation. After the short lecture on Mondays and Wednesdays, during each class the TAs and instructor will help the students as they work on the programming exercises for the day. 1 hour lab per week and 2 hours lecture-discussion. **Students are required to bring their laptops to class**.

**Textbook:** There is no required textbook. However for SageMath, the free book *Computational Mathematics with SageMath * is recommended.

**Grading:** Homeworks 20%. Three exams: your lowest score worth 4% other two worth 15% each, Final Project 30%, Attendance 16% (more details below). Your lowest homework score will be dropped.

Late homeworks will not be accepted. You are encouraged and welcome to collaborate with other students on homeworks. That means you can talk to other students and course staff and discuss the homework problems. But you must code up the solutions on your own.

**Attendance:** You can miss 2 lectures without penalty and without giving reason. After that, with each missed lecture your lost points will go up exponentially. Points lost = 2^(number of missed lectures - 1) upto a maximum of 16 points. So you lose 1, 2, 4, 8, 16 percentage points from your semester final score if you miss 1, 2, 3, 4, 5 lectures respectively. We will start taking attendance in week 2.

**Final Project:** Final project will require you to apply some of the skills and techniques learnt in class to one problem from a list of possible project ideas. You will be required to work in groups for the final project and present your project to the class.

Page maintained by Anil N. Hirani

Last modified: Fri Jan 20 13:17:51 CST 2023