Live data from Hacker News

A Functional Introduction To Computer Science

cs.uwaterloo.ca

31–40 of 40 posts

Re: A Functional Introduction To Computer Science

#31
post #29
post #13

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.

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

#32
post #13

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…

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 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

#33
post #13

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…

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

#34
post #13

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…

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…

If you have time, I'd love your feedback on http://www.creativescala.org/creative-scala/

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

#35
post #29

Earlier 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?

Yes. I had to learn bitwise operations independently when debugging some code written in a vendor-specific scripting language derived from C++

Re: A Functional Introduction To Computer Science

#36
post #20

Earlier 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)

But the logical abstraction is no less theoretical than other abstractions, even if it closer to practice. I don't understand why theoretical computer scientists ignore it.

Re: A Functional Introduction To Computer Science

#37
post #20

Earlier 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.

> 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

#38
post #33

Earlier 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 .

From what I remember: it does not. It's about building a practical computer.

Re: A Functional Introduction To Computer Science

#39
post #29

Earlier 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?

Not entirely. My CS undergrad featured a discrete math course that was almost exclusively boolean logic and proofs. The prerequisites of the course plan put it very early in a given CS students' schooling. I took it alongside our second CS intro course, where we taught C++ (with Python being in the first intro course).

Re: A Functional Introduction To Computer Science

#40
post #20

Earlier 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…

> But 'logical circuits' are abstracted using symbolic logic and boolean algebra which are mathematical disciplines. It's still math.

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.

Post reply on HN