4
$\begingroup$

I took a programming course from an open university in Finland. One task was something like the following:

Find largest connected sequence of numbers from given set. For example, if input is

1,2,3,5, the output should be 1,2,3. If the input is 2,4,5,7,9, the output is 4,5. etc.

Are there opinion what should a student do when he or she sees such a problem?

I mean there are problems. For example, a mathematician might say that connectedness is a term from topology and some spaces are connected, not sequences. A punctual student might say that one has to define terms rigorously. No matter how many examples you give, there might be a new sequence that might or might not be connected. Therefore, one should always define terms rigorously instead of give just examples.

So what should a student do when he sees a problem where something is not given rigorously? And is it possible to study computer science such a way mathematics students do as they define everything rigorously and they do sound reasoning for everything? I hope to see some analogy as mathematics can be studied by studying ZFC and reduce many things to the set theory.

$\endgroup$
  • 2
    $\begingroup$ For something like this, I would re-write the question in my own more rigorous words. Stating that this is my interpretation, and here is my answer. $\endgroup$ – ctrl-alt-delor May 2 at 22:06
  • $\begingroup$ It may be a little mean, but I have to ask: Can you define "rigorous" rigorously? As is, you defined it using an analogy. You may be surprised to find out that what we typically think of "rigorous" in one domain falls short in another. For example, philosophy is full of wonderful cases where assumptions you made in interpretations play a huge part in the discussion (just look at intuitionst logic for an archetypal example) $\endgroup$ – Cort Ammon May 2 at 23:02
  • $\begingroup$ All poking aside, you may very much appreciate an old speech by Guy Steele, How to Grow a Language. You may also find the transcript more useful because it's a long speech and the transcript gets to use well accepted formal notations for defining words. $\endgroup$ – Cort Ammon May 2 at 23:04
  • $\begingroup$ This doesn't even approach an issue of rigour--it is unclear. Even correct use of the expected technical term "contiguous" here would be unclear if it hadn't been previously defined for this sort of context, ie as a technical term. $\endgroup$ – philipxy May 8 at 22:20
  • $\begingroup$ This sounds like a real world application of the "if they have eggs, buy a dozen" joke (link). $\endgroup$ – Flater May 23 at 13:27
2
$\begingroup$

You have two complementary questions here. What should the student do, and what should the professor do. I'll handle them separately.

Whenever you can't understand what is being asked of you, ask for a better or more complete explanation. You can't fairly answer a question that you don't understand. Of course, you should be aware of standard terminology and should be able to depend on that being a shared knowledge. But even if that is not the case, you should ask, or consult other sources, so that you don't have gaps in your education.

The question of what the professor should do, however, is a bit more flexible. Mathematicians and other technical people are rigorous about some things because they are more important and generally useful than other things. For example, we are rigorous about the definition of the derivative in calculus and about what it means to sort numerically. But some things don't need the same care. If a professor needs to put a name to something for a single conversation and it isn't a generally useful or well known concept then there may be no need for complete rigor. A shared, but informal, understanding may be enough for the current purpose.

So, for example, if the professor wants to define something rigorously, I suspect that s/he will want to remember that definition for the long term. If it comes up in an exercise but you will be expected to have learned it well for a later exam, then some rigour is called for. But for the actual example you give, connected sequence is probably enough, with a few examples to get you on the right track.

However, If you are in doubt about the importance of a term, then ask about that also. "Do we need a rigorous definition here? Will we return to this concept?"

Sometimes a teaching analogy or metaphor is enough. If everything were made strictly rigorous your education would become much more difficult (more to remember) and for most learners, much more boring. People are good about learning from metaphor. But professors need to be careful not to load too much onto any given metaphor.

I'll note that rigor in mathematics is mostly a feature of the previous century. People formalized what was, up to then, considered well known without formalisms. Even today, people discovering new mathematics may struggle for a while about what are the correct formalisms for a new concept. It may take a while for it to "shake out". The important things then get properly defined and names that evoke the correct mind set are applied - or we hope so, in any case.

$\endgroup$
2
$\begingroup$

It seems to me that you are perhaps overstating the rigor of a math classroom. I have yet to encounter a math class without a tremendous amount of hand-waving to skip past the difficult bits.

Computer Science is really two different fields under one term. One is a branch of mathematics, and when you study those aspects, you will find the formalisms you crave. Information Theory, Lambda Calculus, Algorithmic Analysis... you will enjoy all of these things.

However, computer science also encompasses software engineering, which, like any form of engineering, would be utterly bogged down by engaging in too many of these sorts of formalisms (and which are sometimes nearly impossible to define in any case.)

When studying the engineering aspects, such as in the example you gave, the right thing to do is to ask clarifying questions if needed, but otherwise remember that these are human forms of communication, and the goal is to teach you certain key engineering elements using toy programs. Get the gist of what the professor is asking for and move on with it. You have important things to learn, after all.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.