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.
- For programming languages (C/C++, Java, Matlab, Python): ask to choose between
- 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.