How can programming-based learning enhance mathematical understanding and rigor?

  • Context: Graduate 
  • Thread starter Thread starter 0rthodontist
  • Start date Start date
Click For Summary
SUMMARY

This discussion emphasizes the significant benefits of programming-based learning in enhancing mathematical understanding and rigor. The speaker highlights their experience with a Java server program, noting that the rigorous nature of programming fosters a deep comprehension of concepts. They advocate for a curriculum that integrates programming with mathematics, suggesting that such an approach could lead to permanent knowledge and a higher degree of rigor than traditional methods. The discussion also references a successful teaching method where students wrote a Pascal interpreter, demonstrating the effectiveness of hands-on programming projects in building confidence and understanding.

PREREQUISITES
  • Proficiency in Java programming
  • Understanding of basic mathematical concepts
  • Familiarity with data structures
  • Knowledge of programming paradigms and software development
NEXT STEPS
  • Research the integration of programming with mathematics in educational curricula
  • Explore advanced data structures and algorithms in Java
  • Learn about software development methodologies that emphasize rigorous testing
  • Investigate the use of programming languages like Matlab or Mathematica in mathematical courses
USEFUL FOR

Students, educators, and curriculum developers interested in enhancing mathematical education through programming, as well as software developers seeking to deepen their understanding of mathematical concepts through practical application.

0rthodontist
Science Advisor
Messages
1,229
Reaction score
0
I just gave a presentation today on my team's server which we are writing in Java as part of a plugin to an existing application, the other parts being done by other teams. In the course of this presentation I realized just how well I know the code: I know useful information on virtually everything written in the whole server program, which is about 3000 SLOC (source lines of code, defined as non-comment, non-blank lines of code) or about 5000 lines total including comments and blank lines, covering 30 different classes and six different packages. Objectively speaking this is a small program (though the largest I've ever been involved in writing). Not only do I know my way around almost all the code, I know it with just about absolute rigor; you can't write a working program without being almost absolutely rigorous.

Now what if the program had been some kind of mathematical construct instead? Then instead of knowing my way around some program I'll probably never use again after this semester (not that the experience isn't good), I'd know a good amount of math, i.e. permanent knowledge. And I'd know it to a higher degree of rigor than is demanded in any of my other classes. And any moderately skilled novice programmer must have the same learning ability, or else they would not be able to make working programs either.

At the moment I tend to perceive a math problem that takes a few pages to solve as "long." Our program printout would be about a hundred pages, and any professional programmer would call it small.

Is there a teaching theory that makes use of this--a math curriculum from a very basic level onwards, centered around implementing as much knowledge as possible as working programs? I am aware there are math courses that deal with Matlab or Mathematica (for some reason I have not taken one yet) but at the undergraduate level I'd imagine the amount of code written is usually very small and only supplemental to the course material.

Somehow, with training, people have the ability to be astoundingly good at writing programs, producing very large volumes of very rigorous work. Education should capitalize on this.
 
Mathematics news on Phys.org
This is not absolutely math related, but anyway, it's on the same subject as the OP. Yesterday I was talking to my professor for theory of computation, and he said that he once taught a class in data structures at Duke. He had never taken a course in data structures (he had been a math major, though having done programming for years he was familiar with the subject) so he looked around to see what books there were. He discovered that the prevailing teaching method was extremely stupid, on the order of "This is a stack... now write a ten line program using a stack. This is a queue... now write a ten line program using a queue." Instead of doing that, he created his own course where the students wrote an interpreter for Pascal excepting the branching or loop structures, and each part of the course was to write a program (incidentally using a newly-introduced data structure at each stage) to implement another part of the Pascal language. Each new module the students wrote had to integrate with all the earlier (working) modules.

He said he had 24 students in the class. 8 of them dropped by mid-semester, 8 of them failed, and 8 got A's. Of those that got A's he said that several came back years later expressly to thank him for teaching that course--it gave them a lot of confidence in their abilities, even if they never continued in computer science.

What that shows, I think, is that if a student is dedicated enough to succeed, a serious programming project really feels like making something real. You do not depend on the whim of graders, and the standard is the very solid one of "works" or "does not work." If you don't absolutely know what you're doing, you can't write the program--as simple as that.
 
Last edited:
Yes

I can personally testify to this. As a student last year, I created a math application that could do anything we were learning, which was eventually built up into data modeleing/pattern finding/equation solving semi-full featured piece of software. A side affect was a very firm understanding of the underlying concepts, because, inorder to code for something, you need to fully understand it.
 

Similar threads

  • · Replies 20 ·
Replies
20
Views
4K
  • · Replies 16 ·
Replies
16
Views
3K
  • · Replies 5 ·
Replies
5
Views
2K
  • · Replies 10 ·
Replies
10
Views
1K
  • · Replies 30 ·
2
Replies
30
Views
11K
  • · Replies 12 ·
Replies
12
Views
2K
Replies
5
Views
3K
  • · Replies 71 ·
3
Replies
71
Views
4K
  • · Replies 21 ·
Replies
21
Views
3K
  • · Replies 17 ·
Replies
17
Views
3K