Humble programmer; Edsger Dijkstra fan. Interested in what helps me write correct programs.
Web development, graph algorithms and databases, Python, .Net core, functional programming.
When I first started my degree in computer science, one of my first teachers provided helpful definition of computer science. Here is the definition:
Computer Science (or informatics) is the study of algorithms and data structures, and:
their formal properties
their mechanical and linguistic realizations
their applications
Courses of study which emphasize point 1 over 2 and 3 are usually called "computer science." Courses of study which emphasize point 2 over 1 and 3 are usually called "computer engineering." Courses of study which emphasize point 3 over 1 and 2 are usually called "information systems."
So, computer science fundamentals are all about algorithms and data structures. This is a rich field of study, and the well-spring from which flows all kinds of insights and helpful problem-solving tools. But concerns from the other areas become important, too, once you take a job, and work alongside real people, from many other walks of life and who have different experiences from your own!
I found that once I started working, there were so many other things in which I had not received formal instruction, such as source-code control habits and systems and the soft skills of working collaboratively.
But none of the rest of that stuff matters without the solid foundation of algorithms and data structures: they are a crucial springboard into making things happen in the real world.
Also, once you start working, it is also possible to keep on learning, and to review, strengthen, the areas where you felt weak or which only got a light touch in your formal schooling. Learn how to learn new things and to strengthen those areas where you are weak. Pick a topic and start reading about it. If you're reading a textbook, try to work through the examples on your own before reading ahead to the author's answers, and then work lots of the exercises. This is painful at times, but can also be rewarding: when you're not in school, you're not forced to hurry to an answer and move onto the next problem in the hopes of maximizing a test or homework score. This takes some of the pressure off! There are wonderful sites, like math.stackexchange.com, etc, which can help when you get stuck.
In summary, learn how to learn: then books like David Gries' The Science of Programming and Charles Pinter's A Book of Set Theory can open up a whole new world for you, and help you to build new skills and insights to the job. Then you can move onto weightier tomes, too, like Knuth's Art of Computer Programming, etc.
This is solid advice! I loved the paragraph about learning, which mentioned that learning complex topics is often a struggle. Also, thanks for the book pointers. I haven't heard of the first two, and will check them out.
For further actions, you may consider blocking this person and/or reporting abuse
We're a place where coders share, stay up-to-date and grow their careers.
When I first started my degree in computer science, one of my first teachers provided helpful definition of computer science. Here is the definition:
Computer Science (or informatics) is the study of algorithms and data structures, and:
Courses of study which emphasize point 1 over 2 and 3 are usually called "computer science." Courses of study which emphasize point 2 over 1 and 3 are usually called "computer engineering." Courses of study which emphasize point 3 over 1 and 2 are usually called "information systems."
So, computer science fundamentals are all about algorithms and data structures. This is a rich field of study, and the well-spring from which flows all kinds of insights and helpful problem-solving tools. But concerns from the other areas become important, too, once you take a job, and work alongside real people, from many other walks of life and who have different experiences from your own!
I found that once I started working, there were so many other things in which I had not received formal instruction, such as source-code control habits and systems and the soft skills of working collaboratively.
But none of the rest of that stuff matters without the solid foundation of algorithms and data structures: they are a crucial springboard into making things happen in the real world.
Also, once you start working, it is also possible to keep on learning, and to review, strengthen, the areas where you felt weak or which only got a light touch in your formal schooling. Learn how to learn new things and to strengthen those areas where you are weak. Pick a topic and start reading about it. If you're reading a textbook, try to work through the examples on your own before reading ahead to the author's answers, and then work lots of the exercises. This is painful at times, but can also be rewarding: when you're not in school, you're not forced to hurry to an answer and move onto the next problem in the hopes of maximizing a test or homework score. This takes some of the pressure off! There are wonderful sites, like math.stackexchange.com, etc, which can help when you get stuck.
In summary, learn how to learn: then books like David Gries' The Science of Programming and Charles Pinter's A Book of Set Theory can open up a whole new world for you, and help you to build new skills and insights to the job. Then you can move onto weightier tomes, too, like Knuth's Art of Computer Programming, etc.
This is solid advice! I loved the paragraph about learning, which mentioned that learning complex topics is often a struggle. Also, thanks for the book pointers. I haven't heard of the first two, and will check them out.