**Instructor:** Anil Hirani (email), Altgeld Hall Room
375

**TA:** Vaibhav Karve (email).

**Office Hours:**

Anil Hirani: Wednesday 1:00 -- 2:00 PM and by appointment, Room 375 Altgeld Hall.

Vaibhav Karve : Thursday 5:00 -- 6:00 PM, Room 7 Illini Hall

**Course Diary:**

- 01/14: Data structures in Python 3 (list, set, dictionary, tuple).
- 01/16: NumPy array.
- 01/18: Homework01 on data structures.
- 01/23: Basics of SageMath.
- 01/25: Homework02 on dynamics of damped harmonic oscillator.
- 01/28: Modular arithmetic in SageMath.
- 02/01: Homework03 on discrete logarithms and primitive roots.
- 02/04: Computational domains in SageMath.
- 02/06: Polynomials rings and numerical precision in SageMath.
- 02/08: Homework04 on Caesar cipher, Vigenere cipher, Diffie-Hellman-Merkle key exchange.
- 02/11: Graph theory in SageMath.
- 02/13: Random graphs: Barabasi-Alberts, Newman-Watts-Strogatz and Erdos-Renyi.
- 02/15: Oderly generation of graphs based on specified criteria.
- 02/18: Mock exam: practice for Exam 1.
- 02/20: Exam 1.
- 02/22: Homework05 on modelling the spread of an infectious disease on small-worlds graph.
- 02/25: Unions, disjoint unions, joins, and spanning tress of graphs.
- 02/27: Minimum spanning trees, distances, and paths in graphs.
- 03/01: Homework06 on the travelling salesman problem as applied to locations in Champaign-Urbana.
- 03/04: Eulerian walks, Hamiltonian cycles, graph colorings, searching.
- 03/06: Work day -- catching up with past exercises and homeworks in class.
- 03/08: Homework07 on generating all m-by-n rectangular mazes in an efficient manner.
- 03/11: Matchings, directed graphs, tournaments, simple path and cycles, longest paths.
- 03/13: Directed graphs: neighborhood iterators, topological sorting, components, flows and cuts.
- 03/15: Homework08 in image-segmentation using graph min-cuts.

All course grades and announcements will be posted on Moodle. All worksheets from class will also be available there. Class worksheets and Homework assignments will be released on CoCalc.

**Exam 1:** February 20, 2019. Wednesday. In
class. Syllabus: Everything up to February 18.

**Exam 2:** March 27, 2019. Wednesday. In
class. Syllabus: Everything from February 20 to March 25.

**Exam 3:** April 19, 2019. Friday. 5:00 PM -- 6:30
PM. Syllabus: Everything from March 27 to April 17.

**Final Project:** April 22 to May 01, 2019. 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.

**Description:** A self-contained, project-based,
lab-style one semester course for mathematics students that will guide
them through a computational way of approaching problems. Twice a week
there will be a lecture demonstration with short lecture segments and
short programming exercise. One day each week will be for longer
programming project work supervised by instructor and TA. Topics
covered will include programming tools for topological and traditional
data analysis, implementations of cryptography, and modeling and
solving problems using graph algorithms. Programming will be done in
Python and SageMath.

**Goals:** There are 4 main goals: (1) Improve
programming skill and algorithmic thinking; (2) Prepare for industrial
computational math work; (3) Prepare for future math courses by
learning to use computation to play with examples; (4) Prepare
for research in mathematics using a computer as a tool.

**Prerequisites:** CS 101 or CS 125 or prior
programming experience in one or more of the following languages:
Python, C, C++, Java. In addition must have taken CS 173 or MATH
347. 3 credit hours, 2 hours lecture-demonstration, 1 hour lab.

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

**Grading:** Homeworks 20% (This will include
Friday assignments worth 15% and in-class lectures worth 5%), Three
exams 15% each, Final Project 35%. Your lowest homework score will be
dropped.

There will be approximately 8-9 homeworks due (on CoCalc) on every Friday. Homeworks will be posted on Friday mornings and will be due the next Friday. Late homeworks will not be accepted (however, your lowest homework score will be dropped). You are encouraged and welcome to collaborate with other students on homeworks. That means you can talk to others and discuss the homework problems. But you must write up the solutions on your own (and acknowledge the contributions of your colleagues by name, if applicable).

Lecture notebooks released during class will then be collected and graded for effort instead of accuracy. They will contribute to 5% of the final grade.

Page maintained by Anil N. Hirani

Last modified: Mon Apr 8 14:32:45 CDT 2019