4 ms·
There are so many topics that one might consider "foundational" in computer science. While this (what I would call the Data structures and algos) is one approac
by omarhaneef 5y ago
There are so many topics that one might consider "foundational" in computer science. While this (what I would call the Data structures and algos) is one approach, you could also:
-- start with binary and work your way through hardware and logic gates
-- start off with theory like turing machines, first order predicate logic and work your way up
-- start off with a hello world, and slowly iterate over programming (in a post internet world, this is especially popular) with loops, if/then statements and so on
But, perhaps aging myself, this book is close to my idea of the traditional introduction.
- Turing_Machine 5y ago> -- start off with theory like turing machines, first order predicate logic and work your way up Or start off with the lambda calculus-based alternative to Turing machines, as in seen in SICP.
- whimsicalism 5y agoI learned this stuff in my school following the textbook https://introtcs.org/public/ https://introtcs.org/public/ and found that in general it was nice to put the actual "gory details" mechanics of how a TM or lambda calculus works into the background to focus on computability.
- munificent 5y agoJust my opinion: > -- start with binary and work your way through hardware and logic gates I'd consider this foundations of computer engineering. > -- start off with theory like turing machines, first order predicate logic and work your way up I'd think of this as more like foundations of computability theory, but, yeah, this seems like another viable angle for me. > -- start off with a hello world, and slowly iterate over programming (in a post internet world, this is especially popular) with loops, if/then statements and so on I'd call this foundations of software engineering.
- whimsicalism 5y ago> I'd think of this as more like foundations of computability theory, but, yeah, this seems like another viable angle for me. Nah I would call this foundation of computer science.
- iamthemalto 5y agoHow about a compromise: theoretical computer science
- bagacrap 5y agowhat other kind is there?
- musicale 5y agoPractical, obviously. ;-) "What does his lucid explanation amount to but this, that in theory there is no difference between theory and practice, while in practice there is?" –Benjamin Brewster, 1882 https://quoteinvestigator.com/2018/04/14/theory/ https://quoteinvestigator.com/2018/04/14/theory/
- bakuninsbart 5y agoI love this exchange, because it helps answer another question often asked, which is "Why shold I study CS at a university if I want to be a Software Developer?" These are 4 different corners of a pretty large, but related field, and while not a single individual can fill out the whole spectrum, it does make sense to expand into each direction. Software Engineering is a discpipline of Computer Science at my university, and my degree also taught systems architecture and computability theory. Each of these can but doesn't have to be important for your work as a software developer, and very few people working in CS in any capacity can completely ignore and of the other facilities.
- tharkun__ 5y agoFWIW, the foundations of computer science I learned at university in the first two or three semesters was "all of the above". Predicate logic, data structures and algorithms (much of what you see in the submitted link), binary and logic gates, a programming language from scratch ('what is an if') in our case Java - yes I skipped those lectures of course and just took the exams ;)) and math (some repeat of calculus from school, then more advanced and also probabilities). I.e. we learned all of these things 'first' in parallel.
- selfhifive 5y agoMy university started with digital design using gates, real analysis, and introduction to programming using C. Then in the next 3 semesters we did computer architecture, data structures, algorithms, microprocessors, ToC, OOP, OS, Linear Algebra, Graph theory, so your approach is actually followed in the real world.
- Lamad123 5y agoThis topic transcends machines as we know them including binary and Turing and Neumann and all that Jazz. These are things philosophers 2000 years ago could and might actually discussed and though about. Dividing a piece of land into states, then counties then cities, etc. is an example of a tree. These "foundations" are mostly useful with computers as we know them, but they don't have to. People might discover new species of computers that do things very differently, but I think will still use these foundations. I also agree with you that something like gates and binary would be a great introduction to computers. This book doesn't seem like an intro to CS, but for somebody who has already programmed or somebody coming from a mathy background.
- TuringTest 5y agoFoundations and Introduction to X are typically very different courses. The second has a much more informal approach, and the objective is to facilitate understanding for someone in their first approach to the discipline. In the case of foundations, the aim is to establish a solid and complete base on which to build all subsequent knowledge; and that need not be easy at all.