Computer Science - why teach?
“Programming is not something you know. It’s something you can figure out.” Chris Pine, programming expert, author of books and tutorials. “In some ways, programming is like drawing. 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 all this.” Andrew Hunt, author of the bestselling book The Pragmatic Programmer and co-author of the Agile Manifesto. It is not difficult to understand where we are heading. To become a really good programmer, or simply to rise at least one step above an ordinary coder, you need to have the broadest and at the same time fairly deep knowledge in various areas, in addition to the programming languages themselves. And mastery of the disciplines included in the concept of CS is one of the first places here.Computer Science disciplines
Let's look at what subjects are included in the field of computer science. To short descriptions of disciplines with reasons for studying them, we will add recommendations for the best book and the best series of free video lectures on the subject from, perhaps, the best English-language guide to computer science, written by Oz Nova and Myles Byrne, teachers at the School of Computer Science Bradfield in San Francisco.-
Programming
Programming is the basis and basic discipline of computer science; most students begin studying the CS course with it. The best CS programming courses will be useful not only for beginners, but also for experienced coders who may have missed certain programming concepts and models when learning it for the first time.
Best book: “Structure and Interpretation of Computer Programs.” Authors: Gerald Sussman and Hal Abelson.
And on JavaRush, 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 area of computer science, including, of course, software development.
Best book: The Algorithm Design Manual. Author: Steven Skiena
Best Video Lecture: Lectures by Steven Skiena
-
Computer architecture
Knowledge of computer architecture, that is, an understanding of 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 the code written by a programmer will be executed by the operating system, so knowledge of how the OS works is also an important element.
Best book: “Operating Systems: Three Easy Pieces.” Authors: Andrea Arpaci-Dusseau and Remzi Arpaci-Dusseau.
Best Video Lecture: Berkeley CS 162
-
Computer networks
Little modern IT can do without using 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. It will also give you a competitive advantage over those who do not master 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 underpins most significant programs, but few people 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
-
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 languages, which is also critically important for any developer in the long term.
Best book: 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 be useful to ensure 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, some advice for those who are planning to start studying CS disciplines.-
Develop practical skills in CS disciplines
One of the advantages of CS, like other IT courses, is that the theoretical skills you have just acquired can be immediately applied in practice. Don't forget about this and alternate theory with practice to achieve the best results.
-
Don't procrastinate
Computer science is a rather complex subject, the study of which is easy for few people, especially at first. That is why, when starting to study CS disciplines, you need to avoid procrastination - do not put off mastering theory, problem solving and practice until later, as this will not only make learning very long, but will most likely not be as effective.
-
Don't limit yourself to one course
Don't expect to be able to get all the knowledge you need in a subject from one course, no matter how good it is. It is always best to consult at least several sources of information to gain a broader understanding of the subject.
-
Find like-minded people
Звучит слегка банально, но эффективно обучаться, How и делать многие другие вещи в жизни, лучше всего в составе группы единомышленников. Найти себе компанию для совместного изучения CS будет полезным по ряду причин. Это поможет учиться более эффективно, вместе решать задачи и проблемы, сравнивать с другими свой прогресс в обучении и навыки применения новых знаний.
-
Учитесь писать слова, а не только code
Еще один распространенный совет от многих экспертов, для тех программистов, которые изучают CS для улучшения своих навыков и повышения профессионального уровня: учиться писать (а не codeить), то есть складывать слова в предложения и составлять из предложений тексты. Этот навык достаточно важен для любого разработчика, а его отсутствие будет мешать прогрессировать не только в изучении компьютерных наук, но и в других аспектах программирования How профессии.
GO TO FULL VERSION