# Should students be taught to be first and foremost: scientists or mathematicians?

It's undeniable that Computer Science is a mixture of disciplines including science (the scientific method, some physics needed to truly understand how computers work at all levels, testing methodologies etc etc.) and maths (theoretical computer science, programming is essentially logic puzzles that equate to mathematical proofs - at least complex ones, algorithm analysis etc. etc.) and to some extent it's created it's own discipline in programmatic thinking and the learning and analysis of programming languages. - What are the disciplines of computer science/how important is maths in computer science/is it really a science? - are not the questions to be answered here.

Assuming Mathematical and Scientific knowledge are both important in computer science (which they are) - which do we train students to become principally? Is it most important for computer science students to be first and foremost scientists or mathematicians? e.g. in the first year of a CS course is it more appropriate to teach The Scientific Method. Structure of a scientific investigation. Hypotheses. Occam's razor. Controls. Correlation vs causation. Falsification. Examples such as intention to treat etc etc. Or is it more appropriate to teach Mathematical topics - matrix operations, algorithm analysis, complexity, logical expressions, etc etc.

Or maybe a mixture of both? Maths is inherently important to science - but to what degree should budding computer scientists be taught mathematics.

Which skills and talents in the field of mathematics are beneficial to Computer Scientists?

• Welcome to Computer Science Educators! This is certainly an interesting question, and quite unlike any we've had here. – ItamarG3 Aug 4 '17 at 9:18
• Thanks, I meant to say if this is maybe too debatey or unclear just remove and I won't post questions like it again! I just think it's interesting/important – seanyt123 Aug 4 '17 at 9:18
• If you still feel it might be too, as you put it, debatey, then by all means Join me in our guidance Office (chatroom). I may have some ideas for improvement on the site – ItamarG3 Aug 4 '17 at 9:20
• I've voted to close this question as primarily opinion based. If you have questions, I'll be in the Guidance Office. Please remember that closure is not the end of the line, it's a way to shelter questions so they can be improved. – thesecretmaster Aug 4 '17 at 10:52
• Why no mention of engineering? – Peter Taylor Aug 8 '17 at 7:26

This answer addresses something very different from the other answer I posted on this question, which is why it merits its own answer:

Almost every field in computer science is built on some mathematical theory (this sentence is the only overlap between answers):

1. The most basic: the number of options that an $n$ long binary number is $2^n$, and that's where it all starts (until Quantum computers come along, but that's something else)
2. Algorithm correctness: proof by induction.
3. The entire field of boolean algebra. Need I say more?
4. The entire field of Machine Learning is nothing but computations of mathematical models (Neural networks are nothing more than the simplest of arithmetic calculations - weighted sums of weighted sums of...)

This list can go on and it strengthens the point that, regardless of learning mathematics before learning Computer Science (that is, learning math with the intent of learning basic Computer science), most applications of computer science are implementations of mathematical models.

This means that when learning a subfield of computer science, an introduction to the relevant mathematics is almost always necessary.

That being said, being a talented mathematician surely would not harm one's level of understanding of those subfields of Computer Science.

CS is neither Maths nor Science. Therefore teaching them as if one or the other is probably misplaced.

Maths are about understanding and advancing certain logical mental models. It uses abstraction a lot and so does computing. But those are useful mental tools in most fields. That doesn't make History a subfield of Maths.

The Sciences on the other hand are about understanding the world itself. It uses a particular method of formulating hypotheses and testing them through experiment, accumulating knowledge of what is "out there". Computing uses some of the conclusions of the Sciences, but isn't itself a science. Programmers, however, do use something like the scientific method when they need to document an old program, not really understanding how it works. You make a hypothesis about how it works and capture it in a test. Running the test is like an experiment. You learn something. Computer Forensics is similar. That isn't the main work of a computer scientist, however.

Some fields of computing are more mathematical than others. Information Theory, for example is fairly classified as a math. Theory of Computability is at the intersection of Philosophy and Mathematics. My daughter's first course in her doctoral program in Philosophy was indistinguishable from a computability course in a CS department. But those are subfields, meant to understand what is possible and what is impossible (or really very hard).

Computer Science is closer to engineering than to either Maths or Sciences. In CS we build things. We change the world. Neither the Maths (properly speaking) nor the Sciences have that goal. They are about understanding not building. Even the theoretical aspects of computing are there to help us know what we can build.

Also, Ethics and the Social Sciences equally inform computing. Ethics tells us what we should build. The social sciences tell us how to build systems compatible with the human who must interact with them (human factors analysis). Note that neither of these concerns has any relevance at all in Mathematics nor the (hard) Sciences. They are about understanding. Not building and affecting the world.

Any aspiring computer scientist does well to take a broad view and to study a lot of things. One of my best ever Master's level students studied Art History as an undergraduate. She wanted to use computation in her art and decided to delve deeper. Others have been Lawyers or studied other unrelated fields in earlier incarnations. They had a good idea about what to build from their earlier work.

The earliest teaching in CS should inform the student as to the fundamental nature of the field as much as can be done. They are about to make a life-influencing decision and should know the consequences. Early on, they should be taught primarily as computer scientists: builders of things who use tools from many domains to do so. My doctorate in Mathematics gave me no special insight into CS. I'd suspect a Physics PhD to say about the same. The tools they know are useful, but not for understanding CS itself.

• Debate is welcome, but only when the participants are calm and respectful of each others beliefs. Please keep the tone calm and respectful; this conversation has been moved to chat. Any further comments which are not directly suggesting improvements to the answer will be deleted. – thesecretmaster Aug 4 '17 at 10:56
• Well, from my experience as a Physics student, it does give some thinking skills which have proved relevant. – ItamarG3 Aug 4 '17 at 18:10

They should be taught first and foremost to be computer scientists.

This is a bit like asking

Should biologists be taught first and foremost to be physicists or chemists?

Neither. Biology has some physics and chemistry, but it also has some stuff all its own. Ditto for computer science - there's science and there's math. (Plus, if you're being really nitpicky, scientific theories are based on math, but, whatever.) There's also a dash of something different.

Yeah, teach mathematics, just like you teach a scientist mathematics, or a biologist physics, and also teach science, just like you teach a biologist chemistry, but also teach how it all comes together - computer science!

While the mathematics themselves might not be overly useful (they are, but not so much a requirement, more of a partial need for some subfields), the mindset and way of thinking that comes with learning mathematics is very useful in Computer Science. This mindset is one of those beneficial skills.

Logical thinking is essential when writing any program, as it allows deep understanding of the flow of the software. Mathematics, both practical and theoretical increase logical thinking due to the fact that mathematical techniques often comprise of a few successive steps. Following these steps is a form of logical operations.

This logical thinking is very useful in computer science, and for science in general. Mathematics, then, is an incredible way to boost one's ability to think in a logical way, providing a skill set which many would find useful in a Computer Science career.