Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupport News AboutSign UpSign In
| Download

This repository contains the course materials from Math 157: Intro to Mathematical Software.

Creative Commons BY-SA 4.0 license.

Views: 3033
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.