JavaRush /Java Blog /Random EN /How to become a cool developer from an ordinary coder? Le...

How to become a cool developer from an ordinary coder? Learning Computer Science

Published in the Random EN group
The modern world of IT and software development is quite harsh - high requirements for the qualification of coders, constant changes and growing competition force specialists working in this field to constantly engage in self-education and development. Continuous learning is required even in order to simply remain in demand as a specialist, because “getting behind the times” is as easy as shelling pears. How to become a cool developer from an ordinary coder?  Learning Computer Science - 1In our publications on CodeGym, we try to help readers to fully develop and self-learn in order to become as competitive as possible in the tempting world of IT development. In today's article, we will talk about self-education in the vast discipline - Computer Science. What exactly is included in the concept of computer science (CS) we will analyze a little later, but for now we will try to answer the question: why, in fact, a programmer needs to learn CS subjects and strive for improvement in this area.

Computer Science - why teach?

“Programming is not something you know. It's something you can figure out." Chris Pine is a programming expert and author of books and tutorials. “In a way, programming is like painting. At first, you only have a blank canvas and materials. You need to use a combination of science, art and craft to figure out what to do with it all.” Andrew Hunt, bestselling author of The Pragmatic Programmer and co-author of The Agile Manifesto. It is easy to understand where we are going. To become a really good programmer, or just to rise at least one step above an ordinary coder, you need to have the widest possible and at the same time quite deep knowledge in various areas, in addition to the programming languages ​​themselves. And the possession of the disciplines included in the concept of CS is one of the first places here.

Disciplines of Computer Science

Let's take a look at what subjects are included in the field of computer science. To short descriptions of disciplines with reasons for studying them, we add recommendations for the best book and the best series of free video lectures on the subject from perhaps the best English-language computer science guide written by Oz Nova and Myles Byrne, teachers of the School of Computer Science Bradfield in San Francisco.
  • Programming

    Programming is the basis and basic discipline of computer science, most students start studying the CS course from it. The very best programming courses within CS will be useful not only for beginners, but also for experienced coders who may have missed certain concepts and programming models when they first learned it.

    Best Book: Structure and Interpretation of Computer Programs Authors: Gerald Sussman and Hal Abelson.

    And on CodeGym, by the way, the legendary Harvard course “CS50. Fundamentals of Programming” , fully translated into Russian.

    Best Video Lecture: Brian Harvey's Berkeley CS 61A

  • Algorithms and data structures

    Knowledge of the most common algorithms and data structures helps to solve various kinds of problems, and this is very important in any field of computer science, including, of course, software development.

    Best book: The Algorithm Design Manual. Author: Steven Skiena.

    Best Video Lecture: Lectures by Steven Schiena

  • computer architecture

    Knowledge of computer architecture, that is, understanding how a computer actually works, is another important piece of the puzzle, without which attempts to build software designs and models often fail.

    Best Book: Computer Organization and Design Authors: David Patterson and John Hennessy.

    Best Video Lecture: Berkeley CS 61C

  • OS

    Almost all code written by a programmer will be executed by the operating system, so knowing how the OS works is also an important element.

    Best book: "Introduction to operating systems" (Operating Systems: Three Easy Pieces). Authors: Andrea Arpaci-Dusseau and Remzi Arpaci-Dusseau.

    Best Video Lecture: Berkeley CS 162

  • Computer networks

    Not much in modern IT can do without the use of the Internet, so it is important for IT professionals to understand how the World Wide Web works in order to use its full potential.

    Best Book: Computer Networking: A Top-Down Approach. Authors: James Kurose, Keith Ross.

    Best Video Lecture: Stanford CS 144

  • Mathematics for computer science

    Since computer science is essentially a branch of applied mathematics, knowledge of this subject will also be very useful in almost any profession related to programming. And also give you a competitive advantage over those who do not own this discipline.

    Best book: Mathematics for Computer Science. Authors: Albert R. Meyer, Eric Lehman, and Frank Thomson Leighton.

    Best Video Lecture: Tom Leighton's MIT 6.042J

  • Database

    Databases are a relatively new field in computer science, and there are still not many experts in it. Data is another key element of CS because it is at the heart of most meaningful programs, but few understand how database systems actually work.

    Best book: Readings in Database Systems. Authors: Joseph M. Hellerstein and Michael Stonebraker.

    Best Video Lecture: Joe Hellerstein's Berkeley CS 186 How to become a cool developer from an ordinary coder?  Learning Computer Science - 2

  • Languages ​​and compilers

    Understanding how programming languages ​​and compilers technically work allows you to improve your code and programming skills. It also makes it easier to learn new PLs, which is also critical for any developer in the long run.

    Best book: "Compilers: principles, technologies and tools" (Compilers: Principles, Techniques and Tools). Authors: Alfred Aho, Monica S. Lam, Ravi Sethi, Jeffrey Ullman.

    Best video lecture: Alex Aiken's course on Lagunita

  • Distributed Systems

    These days, most systems are distributed. Computers and programs are becoming more complex, and knowledge of distributed systems will prove to be useful in ensuring that your software runs correctly and smoothly.

    Best Book: Distributed Systems, 3rd Edition. Authors: Maarten van Steen and Andrew S. Tanenbaum.

    Best Video Lecture: CS 436: Distributed Computer Systems

Tips for Studying Computer Science

And finally, a few tips for those who plan to start studying CS disciplines. How to become a cool developer from an ordinary coder?  Learning Computer Science - 3
  1. Develop practical skills in CS disciplines

    One of the advantages of CS, like other IT courses, is that the newly acquired theoretical skills can be immediately put into practice. Keep this in mind and alternate theory with practice to achieve the best results.

  2. Don't procrastinate

    Computer science is a fairly complex subject, the study of which is not easy for anyone, especially at first. That is why, when starting to study CS disciplines, one should not succumb to procrastination - do not put off learning theory, problem solving and practice until later, because because of this, training can not only be very long, but most likely will not be as effective.

    How to become a cool developer from an ordinary coder?  Learning Computer Science - 4
  3. Don't limit yourself to one course

    Don't expect to get all the knowledge you need in a subject from one course, no matter how good it is. It is best to always refer to at least a few sources of information to achieve a broader understanding of the subject.

  4. Find like-minded people

    It sounds a little trite, but learning effectively, like doing many other things in life, is best done as part of a group of like-minded people. Finding a company to study CS together will be beneficial for a number of reasons. This will help you learn more effectively, solve tasks and problems together, compare your progress in learning and skills in applying new knowledge with others.

  5. Learn to write words, not just code

    Another common advice from many experts, for those programmers who study CS to improve their skills and increase their professional level: learn to write (not code), that is, put words into sentences and make texts out of sentences. This skill is quite important for any developer, and the absence of it will hinder progress not only in the study of computer science, but also in other aspects of programming as a profession.