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

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

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

I had a similar problem 8/9 years ago, but with C++11. The trick is that there is no trick. You simply sit and use the feature you want to use. Besides that it is also beneficial to know C++14 before getting into C++17 and know C++11 before getting familiar with C++14 features. (Obviously prerequisite for C++11 is C++03/98, but that's already covered by OP). ...


5

I'm writing only a partial answer, because I currently lack time. That means that I'm not properly sourcing everything, and largely working from my own memory. I don't believe that anything I say below will be wrong, though it is definitely possible that I might be forgetting a few things. In any case, hopefully this will be enough to get you started / ...


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. ...


4

So, if you're simply looking to convert the knowledge you already have, web searches like C++ for C developers C++ for javascript developers C++ for python developers ... will get you up to speed. As a relative beginner, you'll also learn features of the original languages that you didn't know, and get a taste of what sorts of features professional ...


4

If you are already an advanced C programmer, perhaps you need to look at the actual standard, say, for C17. You can find information about the standards, including links to ISO documents here: https://en.wikipedia.org/wiki/ANSI_C. The technical documentation for some of the modern compilers might also be a help. The same link mentions some of those.


3

Ben Klemens' 21st Century C, now in its second edition, doesn't necessarily precisely meet this need, but I'd give it a shot anyway—it's not just a "description of the standard", but also covers how modern C is used in practice.


3

I last taught the Compiler course in 2008, that's a longtime with probably newer books have appeared. (ie sorry if the answer is somehow outdated) But I did had the same complains from the students, then one of them (Hussain Hassan Mehanna, he's probably a prof in UK now) told me that his friend in AUC uses a book called "Compiler Construction, ...


3

A very nice book is Downey's "Think Python" (2nd edition). The link leads you to a free PDF, so you can take a look without cost. It teaches problem solving using Python, not Python per se. Make sure you get the second edition, which covers Python 3 (a somewhat different language than the obsolete Python 2). There are lots of pointers to ...


3

Stroustrup, Bjarne (May 2014) "Programming -- Principles and Practice Using C++" Addison-Wesley ISBN 978-0321-992789 https://stroustrup.com/programming.html 1,000 pages. It will hurt. You will learn.


3

For a language like Java, the way out is to pick a project that isn't just the solution of some equation(s) or a similar mathematical problem. Find a project in which the description of the problem can be analyzed as some "thing" that has discernible "parts". The parts can be modeled as classes and the resulting objects composed into a ...


3

I would guess that taking such courses is a gross waste of time unless they are specifically focused on recent additions to C++. Most of the "beginning C++ courses" won't even get you to essential new features. I haven't followed updates to the language for a long time but first, I think that the "new" language is backward compatible with ...


3

The answer written here has been referenced from some of the leading Quantum Computing research Journals or Publications. The interested readers are advised to visit their website in order to get the rough idea of research trend and field segments before self reading Quantum Computing. The publications/journals include - IEEE Quantum, Quantum Information ...


2

It seems like the course outline is sort-of (mostly?) object oriented programming. If you're feeling lost in that, you might want something like chapter 11 in this book: https://runestone.academy/runestone/books/published/apcsareview/index.html. That might help you to feel a little bit more grounded as you proceed in your course.


2

I'd like to reassure you that if you are accustomed to C++ Java won't be something really difficult to understand. Yeah, it's another language with its peculiarities but nothing enormously hard to cope with. Start from the basics - this rule always works the best. It's OK to be afraid of new things but they are interesting challenges at the same time. ...


2

The first thing you need to understand is that your second language is, perhaps the hardest of all to learn. You already know "how to program" and so the second language seems to get in the way of that. Alternatively you just use the second language in the same way you used the first, resulting in ugly and sub-optimal programs. So, you want to ...


2

It's a little hard to know how to answer this without actually sitting down with you and talking, because there could be so, so many things that are standing in your way. Here are a couple of guesses and hints: If you are working within an OOP paradigm, then the place to start is with the names of the classes and their APIs (the public-facing method ...


2

VisualMelon's answer is a good one; I wanted to extend the suggestion to start on solo projects. Every team sport consists of members who need to both be individually skilled and fit, and work well together as a team. All of these things are hard to learn, and therefore more often than not it is better to learn these one at a time. Therefore, a team is ...


2

I would suggest not rushing into trying to contribute unless you have a very willing mentor: I suspect it's relatively unusual for people to contribute to packages/programs that they themselves don't use (indeed, I would be worried if this wasn't the case). That is, if you are not actually consuming any open-source Java packages/programs, then you probably ...


2

The resource you probably want is JFLAP, created by Susan Rodger at Duke University. It is a software system (in Java) in which you can create automata of all kinds and run simulations on them. Note that from the link above, you can reach the JFLAP book as well.


1

The object models of Java and Python are just about the same. But the reference model is a bit different. But the biggest difference is that in Java, a reference variable is defined to have a certain type (class) and in Python it is just a name. In other words, in Java, references are typed. In Python they are untyped. But in both languages the objects ...


1

I would like to mention some sites, books, and YouTube which I found for Golang: Static Sites Effective Go is an official resource which is available for free from the official Go website https://golang.org/doc/effective_go.html Go by Example is a website with the most common examples https://gobyexample.com the Golang FAQ section https://golang.org/doc/faq ...


1

What specific open source programs/areas are you interested in? Check their webpages, download the sources and build them yourself, they often list "easy/for beginner" tasks, sniff around their development lists, peek at the bug reporting system. That should give you a better idea of the task you are taking on, and how friendly the community is. ...


1

Writing a fully functional application, even if that application is 'trivial' quickly becomes complex and will need some good thinking on paper before starting your code. I would suggest learning a software development proces that starts with requirement analysis and takes you all the way to technical design from which you can start your code. The one I know ...


1

The first bit is where it is going. An intermediary needs this to forward it. It goes first so that at least in theory it can start forwarding before it has finished receiving. Next is the symmetrical data (where it is from). This is common to most protocols (ethernet mac-addresses, IP addresses, tcp/udp ports, …). Next the two sequence numbers, in the same ...


1

I can recommend two things. Project Euler is great for sharpening your algorithmic skills. Also, you can sign up for USACO's training program. It is excellent and you can compete in the USACO competition. It's completely free.


1

I'd start looking at the ACM curriculum recomendations. They break down what a bachelor's degree should cover, in gread detail. Yes, it covers some four years of coursework, full time. No, as Euclid is reported to say, there is no royal road.


1

Books: The standard reference on Algorithmic Game Theory is the book by Nisan, Tardos, Roughgarden, and Vazirani. Algorithmic Game Theory http://www.cambridge.org/journals/nisan/downloads/Nisan_Non-printable.pdf Another book on AGT is by Kevin Leyton-Brown from UBC and Yoav Shoham from Stanford: Multi-Agent Systems: Algorithmic, Game-Theoretic and ...


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