8

The fundamental question is, whether your goal is to learn programming (in which case the language doesn't matter at all … theoretically at least) or to learn Java. If you want to learn programming, the programming language and the version doesn't really matter. It only matters insofar as to understand the examples, and to understand the concepts behind the ...


8

If your aiming for the IOI, the first step has to be figuring out how to get onto your country's delegation. In the USA (where I am), that means USACO. If not, then you will have to determine what that pathway is. Every country has some method of determining delegates. The next step would depend a lot on how those delegations are formed within your ...


7

This is difficult to answer in general. I have personally used a lot of different solutions depending on the course. For low level courses it may make less difference, but maybe not. I still have many of the text books from fifty years ago that I considered important to my development, and have consulted them. There are courses in which there are truly ...


7

I would recommend a mixed strategy. There are two sorts of books that are appropriate for e-books, I think. The first category is books that you need now, but wouldn't intend to keep. This includes books in subjects that are less important to your main objectives. In the US, at the undergraduate level, it might mean books that are required in subjects other ...


7

I've taught a lot of people SQL in person (over 3000), and I've had to cobble together materials out of a bunch of resources to do it. For Exercises: http://sqlzoo.net http://pgexercises.com https://www.codewars.com/?language=sql For slides, you can use mine, just fork them and remove the branding (they are CC-licensed, the branding is just there to look ...


7

The "problem" with the dragon book is that it is so complete; intentionally so. Over its lifetime there have been tremendous advances in the theory and practice of building compilers. If you want "state of the art", then you want the dragon book, probably a later (harder) edition, even. But it is a bit much, as you have seen, for a first ...


6

It is impossible to say which is best, but here are some things to consider. Some factors: paper books vs e-books Paper books can be passed on (sold) to pupils in the next year. E-books can be searched (Depending on Digital Restrictive Management (DRM) ). Sometimes they are less searchable, than paper books. Therefore consider e-books for reference ...


6

Ben's answer on how to find and join a team is spot on. I'll address what you should be studying. Competitive programming generally is about correct use of algorithms and data structures. There are college courses available on youtube for mastering that subject. At a bare minimum, you should be comfortable implementing a linked list, graph, stack, heap, ...


6

If he wants to have a blast biting into some very fun and challenging problems, Project Euler is fantastic, and entirely language neutral. He may find that certain problems are out of his grasp until he learns a bit more programming, but there will be many that will be possible even with what he has. (Arrays, structs, and pointers should make all of the ...


6

Although the question is asking for a book, looking a "Project Euler" mentioned in another answer, I would like to suggest Codewars might be what you are looking for. On codewars you choose your programming language and then you get different levels of problems to solve step by step. You not only test your answer with their built-in testing tool ...


5

In my experience, students will try to avoid reading even a single full page if they can get away with it. It has also been my experience that most students don't really know how to learn from text, so that they often need a guided activity that utilizes it. This isn't merely to get them to engage with text in the first place, but also to focus their ...


5

My school district does not buy textbooks anymore. That has been a policy for at least the last five years. I do have a very old set of books for Programming I that I will refer to myself, and that I will check out to students who request one, but they rarely ask for one. I would guess that this move to a "textbook-less" world will accelerate. School ...


5

The hardest part of determining anything in computer science is the requirements first. If you don't know what the program should do, then there is no way to do it correctly. Thus, Winnie the Pooh is a wonderful book on the matter. It clearly describes time and time again how simple misunderstandings of the base assumptions lead to absurdities of action. ...


5

I think you first need to decide what your goals are. Are you interested in computer architecture because: You want to design computer hardware and so need to understand it at a fundamental level? Or because you want to write software whose performance is enhanced by an above-average understanding of computer architecture? Or because you are just mildly ...


5

For a student, any recent edition will be fine. Don't overthink it. The first task is to become thoroughly familiar with the mental model required of a Java programmer. Or even, for the very experienced, the mental model of a programmer in general. Most, but not all of the recent changes in Java are in the libraries, but even the more fundamental additions ...


5

I'll try to give a few actual textbook recommendations. If the goal is to learn Java for regular programming, I would avoid like the plague any Java book that doesn't at least go through Java 5, at which point it practically became a different language. I have always found David Liang to be quite a clear writer, and his most recent text (finally) introduces ...


5

It is not clear to me what exactly OP is looking for, but one relevant book is: David Alan Grier, "When Computers Were Human", Princeton University Press 2005. The author served for several years as editor in chief of the IEEE Annals of the History of Computing. He was inspired to work on the book when he learned that his grandmother had graduated ...


5

The International Olympiad in Informatics is an international competition for gifted young amateur programmers. The tasks from past editions are available online, including detailed problem descriptions, test cases, and test harnesses. While these tasks are described in a way that should be understandable to novice programmers, they are quite challenging and ...


4

Cost can be a HUGE burden on a student or school with textbook prices being absolutely ridiculous. I think one has to consider how the student will actually be using the book(s). How many times does a textbook go unopened for an entire semester or only brought out due to a required reading. Do you actually use a textbook lock step with the instruction, is ...


4

I have read E-books since 2008 (completed one today) and found them useful in: Save the Trees Easy/Quick Transportation Multiple copies enable you to comment out etc. Searching, etc. is very easy. Very helpful in finding those books who are unavailable/unheard of/banned in a given jurisdiction. A course/science may have lot of books and one can't purchase ...


4

I'm going to jump the gun a bit here and make a suggestion with less than complete information. Assuming that the students have seen a fair amount of Java and its libraries and also assuming that the book they used isn't terrible on OO concepts then I'd suggest that you run a project course. There are a fair number of possibilities for projects One is to ...


4

The timeless way of building — Christopher Alexander (https://www.patternlanguage.com/patterns/justsostory.html) This is a 3 volume book that includes A Pattern Language. This set of books is probably one of the most influential book from outside of computing to affect computing. It was the seed that started Patterns. The volume A Pattern Language has ...


4

While I like and upped Buffy's answer, I think there's a bit of a pattern that I follow that I'd like to share. Unless hardware is specifically involved, or the course is heavy on theory, I prefer to avoid textbook use. When I think a particular book will be useful, I may add it to a recommended reading list. For Courses with Emphasis on Hardware: If ...


4

Although it is not quite what you are asking, I deprecated these two books when teaching compiler design as many otherwise capable students are finding them tough going. I started to focus on more practical based books. Its a matter of top-down versus bottom-up approaches to the material (not the parsing). I now prefer Grune: "Modern Compiler Design&...


4

I don't know this book in particular, but I do know Computer Science text books in general, and offer this advice: Consider the title: Operating System Concepts. It is about basic and fundamental concepts that underlie operating systems. The basic concepts, the core material of the text, are not going to change much from first edition to the tenth. You are ...


4

Two books come to mind. Both build a project and you learn about object-oriented program design and testing. However, both assume at least a good grasp of basic Java. Nether will cover all of the topics you mentioned, nor do they have videos, but will give you a good idea of how to develop larger programs. You will learn a lot by code reading and osmosis. ...


3

My standard answer for this is the following, copied from another answer I've given here. If you want a thorough study of how to approach and develop algorithms, get a copy of: David Gries, The Science of Programming The book will change how you think about algorithms and how they are developed. One of the key ideas is algorithm development from loop-...


3

Requiring a book makes sense when: The course is big enough, or vice versa, the book is small enough. If you plan to use 1/10 of the book in your course, maybe you should avoid using a book, or you should search for a smaller book The topic is well delimited within the scope of the book. There are courses too broad for a book, especially in our field. If ...


3

We have a class set of textbooks. When I started at this school I was told that I needed to check them out and use them. I talked them down to only issuing me half of the class set and one book went between each pair of computers. They've been in the storeroom for the past 2.5 years. The first year we also had codes to give out to students so they could ...


3

Since you said non-programming, rather than non-CS I'd like to add a couple of very small books by V.J Rayward-Smith: A First Course In Formal Language Theory First Course in Computability Both books give an excellent, compact, introduction to important topics and important background for upper-level courses. Both are available at GoodReads. Hard ...


Only top voted, non community-wiki answers of a minimum length are eligible