This repository contains the course materials from Math 157: Intro to Mathematical Software.
Creative Commons BY-SA 4.0 license.
License: OTHER
Possible changes for next time:
At the moment, most students come having seen C and/or Java in one of the basic CSE courses.
So maybe we can just formalize this; make them required and build the course around that.
Or, make the new DSC10 a formal prerequisite, and shorten the Python unit.
Hybrid: require one of CSE5A (C), CSE7 (Matlab), CSE8A (Java), or DSC10 (Python). Corequisite should be fine too.
More structured version of the week 1 survey. (Use Google Docs to get a spreadsheet.)
For programming languages (C/C++, Java, Matlab, Python): ask to choose between
never used before
seen it used in a class that was primarily about something else (e.g., Matlab in Math 18)
had a class primarily based on this
familiar with it beyond the level of a class.
Consider dropping the 20D prerequisite. It was mostly there as a holdover from 152, and also to keep the enrollment under control; but I waived it several times anyway.
Alternative: make use of it by adapting the 20D MATLAB material.
Deploy an instrument to assess learning gains (e.g., SALG). This will require defining more clearly the educational goals of the course.
Expose students to some of the conceptual difficulties in translating abstract mathematics into concrete computation.
Teach students not just about individual software systems, but also the meta-skill of mastering a new software system from scratch.
Provide a pedagogical laboratory for the math department, in which technological innovations can be tested on a small scale before being considered for wider deployment.
Make a formal list of conceptual topics to be treated.
Recursive versus nonrecursive functions
Numerical (in)stability in linear algebra
Modular exponentiation using repeated squaring
Intermediate complexity implosion in linear algebra over Q
Formalize the meta structure of a typical problem set.
First 2 problems are simply testing recall of lecture.
Next 2 problems are further exploration of the software.
Last 2 problems are exploration of conceptual issues.
For later in the course, when the problems get harder, maybe give only 5 problems instead of 6.
See about getting CoCalc to provide some tools for interactivity in lecture (a la iClicker).
Introduce pandas in the Python unit, since it is pretty easy and can then be used later for examples and exercises. (Possible downside: its syntax is not consistent with the rest of Python.)
Fill in more details in the graph theory unit, perhaps expanding it to 3 lectures.
Find a way for the course grader not to appear as a collaborator on student projects (reported to CoCalc).
Additional technologies to look into (may not yet be supported by CoCalc):
RISE
nbgrader
tutormagic
Restructure homework assigments:
Given the nature of programming assignments, one per week may be too many. Maybe shift to biweekly assignments due in weeks 2, 4, 6, 8, 10.
In the off weeks, do some sort of in-class assessment, like a "concept quiz".
Define the course focus more narrowly.
Rename the course to "Python for Mathematics".
Edit the course syllabus to focus more specifically on mathematical computation.
Specifically exclude data science, statistics, and machine learning, as these are covered in Math 189.
Consider using Piazza in addition to, or in conjunction with, the chat room.