This is a very mathematically inspired introduction, as they say in the initial chapter. What I would like to see is a logical introduction to computer science, or at least theoretical computer science. Start with combinational logic [1], i.e. with Boolean circuits. They are both conceptually simple and relatively close to physical transistors, unlike any functional / mathematical approach. Then move on to sequential…
Side note to this: I noticed that a smart friend had trouble learning anything outside of trivial programming due to unfamiliarity with boolean algebra and boolean logic. She only seemed to begin to understand the concepts when relating them to patterns used in knitting. If those were more commonly taught in basic math, it might make programming generally more approachable.
A Functional Introduction To Computer Science
31–40 of 40 posts
Re: A Functional Introduction To Computer Science
#32This is a very mathematically inspired introduction, as they say in the initial chapter. What I would like to see is a logical introduction to computer science, or at least theoretical computer science. Start with combinational logic [1], i.e. with Boolean circuits. They are both conceptually simple and relatively close to physical transistors, unlike any functional / mathematical approach. Then move on to sequential…
I could never grok scala, all the examples and learning material used math idioms, metaphors and symbology. So I was always translating and it was very difficult to pick up.
And yes, I fully realize this was my own shortcoming. I should have put eight years into the foundational knowledge. But I wonder if these math metaphors translate to a more broadly shared experience. They should be in theory. Programming is supposed to be a tool to accomplish goals, it shouldn't force users into it's inner world as much as it does. It feels like I need a formula one crew just to drive a car from Seattle to Kansas.
Re: A Functional Introduction To Computer Science
#33This is a very mathematically inspired introduction, as they say in the initial chapter. What I would like to see is a logical introduction to computer science, or at least theoretical computer science. Start with combinational logic [1], i.e. with Boolean circuits. They are both conceptually simple and relatively close to physical transistors, unlike any functional / mathematical approach. Then move on to sequential…
I agree with you, which is why I’ve found nand2tetris to be a joy to read and work through.
Though I'm not sure whether they relate this approach to the traditional FSM/PDA/TM models of computing. There seems to be a disconnect between theoretical computer science (which uses the classical models) and more "practical" computer science which uses Boolean and sequential logic circuits as a model of computing .
Re: A Functional Introduction To Computer Science
#34This is a very mathematically inspired introduction, as they say in the initial chapter. What I would like to see is a logical introduction to computer science, or at least theoretical computer science. Start with combinational logic [1], i.e. with Boolean circuits. They are both conceptually simple and relatively close to physical transistors, unlike any functional / mathematical approach. Then move on to sequential…
I think it's the math notation and math problem domain that seems to leak into attempts to broaden the audience. Tersely named, far removed from anything I could reach out and touch. I could never grok scala, all the examples and learning material used math idioms, metaphors and symbology. So I was always translating and it was very difficult to pick up. And yes, I fully realize this was my own shortcoming. I should…
It's still very much WIP, but this chapter is complete and should be approachable if you know the basics of Scala: http://www.creativescala.org/creative-scala/cycles/
Re: A Functional Introduction To Computer Science
#35Earlier quoted context omitted.
Side note to this: I noticed that a smart friend had trouble learning anything outside of trivial programming due to unfamiliarity with boolean algebra and boolean logic. She only seemed to begin to understand the concepts when relating them to patterns used in knitting. If those were more commonly taught in basic math, it might make programming generally more approachable.
When I was a child, last century, our middle-school "computers" class started off with bitwise operations. Have booleans dropped out of the rudimentary curriculum since then?
Re: A Functional Introduction To Computer Science
#36Earlier quoted context omitted.
> It makes sense that it's a mathematical approach because Computer Science is ultimately a Mathematical discipline The fact that the abstraction "logical circuits" is much closer to actual computers than any "mathematical" or "functional" abstraction casts doubt on this claim.
"Computer Science" comes in two flavours, systems and theory . Each of you is talking about a different flavour. (most CS departments cater to a single flavour: yes, it would be easier for everyone involved if theoretical computer science was called "informatics", but that'd probably be funding-sub-optimal)
Re: A Functional Introduction To Computer Science
#37Earlier quoted context omitted.
It makes sense that it's a mathematical approach because Computer Science is ultimately a Mathematical discipline, the Church-Turing intuition aligns these machines to mathematics (and I would argue us too, but that's controversial). Lots of elite CS courses start there, Cambridge did even when I was applying thirty years ago, Oxford does these days (back then it didn't acknowledge CS as a "real" subject, you were ba…
> It makes sense that it's a mathematical approach because Computer Science is ultimately a Mathematical discipline The fact that the abstraction "logical circuits" is much closer to actual computers than any "mathematical" or "functional" abstraction casts doubt on this claim.
But 'logical circuits' are abstracted using symbolic logic and boolean algebra which are mathematical disciplines. It's still math.
Also, computer science doesn't necessarily mean computers as we know it today. A 'computer' in computer science is something that can process 'computable numbers'. For example, in Turing's paper, he imagine a person ( computer ) 'doing math' with a pen and paper.
Re: A Functional Introduction To Computer Science
#38Earlier quoted context omitted.
I agree with you, which is why I’ve found nand2tetris to be a joy to read and work through.
That sounds pretty cool! Link: https://www.nand2tetris.org/ Though I'm not sure whether they relate this approach to the traditional FSM/PDA/TM models of computing. There seems to be a disconnect between theoretical computer science (which uses the classical models) and more "practical" computer science which uses Boolean and sequential logic circuits as a model of computing .
Re: A Functional Introduction To Computer Science
#39Earlier quoted context omitted.
Side note to this: I noticed that a smart friend had trouble learning anything outside of trivial programming due to unfamiliarity with boolean algebra and boolean logic. She only seemed to begin to understand the concepts when relating them to patterns used in knitting. If those were more commonly taught in basic math, it might make programming generally more approachable.
When I was a child, last century, our middle-school "computers" class started off with bitwise operations. Have booleans dropped out of the rudimentary curriculum since then?
Re: A Functional Introduction To Computer Science
#40Earlier quoted context omitted.
> It makes sense that it's a mathematical approach because Computer Science is ultimately a Mathematical discipline The fact that the abstraction "logical circuits" is much closer to actual computers than any "mathematical" or "functional" abstraction casts doubt on this claim.
> The fact that the abstraction "logical circuits" is much closer to actual computers than any "mathematical" or "functional" abstraction casts doubt on this claim. But 'logical circuits' are abstracted using symbolic logic and boolean algebra which are mathematical disciplines. It's still math. Also, computer science doesn't necessarily mean computers as we know it today. A 'computer' in computer science is somethin…
Whether logic itself counts as math or something separate from it is contentious. If you do count logic as math, assume I was talking about the rest of mathematics excluding logic.
> Also, computer science doesn't necessarily mean computers as we know it today. A 'computer' in computer science is something that can process 'computable numbers'. For example, in Turing's paper, he imagine a person ( computer ) 'doing math' with a pen and paper.
Yeah, but persons are the opposite of simple and primitive.