So when you saw this you were probably able to either completely relate to it or you are wondering what is going on. Either way, welcome to the NPTEL course on getting started with competitive programming. My name is Neel Dhara and I'm a faculty member with the discipline of Computer Science and Engineering here at IIT, Gandhi Nagar. So in this introduction video, I'll tell you a little bit about the course and hopefully this information will help you decide if this course is right for you. So first of all, what is competitive programming?
It's hard to describe. briefly but I will try to just give you a general sense especially if you're not already familiar with the term. So computer science at large has a rich history of contest culture around its various themes. So whether you're interested in code algorithm design or maybe you're interested in software engineering and you like hunting for bugs and fixing them or maybe you're keen on crypto and security or maybe machine learning and data science all of these and more themes in computer science have a sort of a contest culture associated with them and the typical format is that there would be platforms where challenges are posted either by academics or by leaders in industry or maybe both and it's typically an open format where People are encouraged to sort of submit their responses to said challenges.
They're usually time bound ranging from anywhere between a few hours to a few weeks and sometimes even longer. And of course the rules and the formats vary from platform to platform, from contest to contest. But there are very many of them and if you are completely unfamiliar with with this world, but you enjoy programming and you like what you see in your computer science courses, I would definitely encourage you to sort of look around a bit and check out these opportunities because they definitely provide a good challenge and a great learning experience as well. Contests can either be in team formats or they could require solo participation.
So you can take your pick depending on how you like to work. So the focus of this course is on what is usually called competitive programming. Some people like to call it sport programming.
It really is like a mind sport and the focus is traditionally on algorithmic puzzles. Usually these can be tackled after you have done a first course in algorithms and data structures. So of course we will see many more concrete examples as we go along. But the typical format across various platforms is that you're usually given a problem or a collection of problems. They're usually framed like a story, so you get to read the story and figure out what the abstraction should be.
And then you have to, of course, solve the problem, typically first in your mind or on pen and paper, and then you need to translate your solution into code that you can then run typically on the platform's servers. and they will let you know if your approach was right or wrong by running your code against a whole bunch of test cases. So again, if all of this is new to you, then don't worry about it.
In the first week of this course, we will be telling you about how everything works in a lot more detail. Now, why should you be interested in competitive programming? So I think, so I can speak for myself. I am, although I don't compete officially, I would definitely consider myself an enthusiast. And that's because I really enjoy solving a good puzzle.
And I anyway think about algorithms as a part of my job. So it really brings together my love for algorithms and my love for a good story and a good puzzle. All of that sort of comes together.
And overall, it's been a really fun. and satisfying experience. Of course, I will be honest, like any good challenge, it's also often very frustrating, but that's all a part of the deal. You might be interested in competitive programming because maybe you enjoy a good competition and that gives you a bit of an adrenaline rush. It's a concrete goal to go after.
The good news for you is that the competitive programming calendar is super active. There are contests that happen practically every week. These are global contests.
they're typically open to everybody. You could be in school or college or you could be a professional or a hobbyist, it doesn't really matter. So you could be competing for the fun of it, you could be competing for the glory of it, it could also be something that helps with your professional goals and in particular if you're in college and placement season is around the corner then this is something that might be useful if you're targeting tech companies because often the hiring process.
usually involves screening rounds that are formatted in a way that is very similar to contest programming so they should give you some practice but I would say in general regular being a regular participant in competitive programming contests just it keeps your mind sharp and it improves your problem solving skills in general it improves your coding skills you always learn something new it's it's a really it's it's a really fulfilling journey and experience. You also get to meet like-minded people, make new friends. There's a lot of reasons why you might want to be doing competitive programming so take your pick.
Who is this course designed for? So this course was was designed keeping in mind anybody who has finished a first course in data structures and algorithms and they're looking to get started with competitive programming. Of course, you don't necessarily have to be an aspiring competitive programmer to enjoy this course. All you need to get the most out of this course is some level of comfort with a programming language. Ideally one of C++, Python or Java because that's where we will be able to provide the most support.
But really as long as it's not a completely exotic language and is supported by the platforms that you're interested in competing on, any language is fair game. And what you need apart from that is some exposure to data structures and algorithms. So we really are looking for an exposure to ideas that are quite elementary. So for instance, you should be comfortable with things like arrays and lists and trees and so on. You should be familiar with paradigms like greedy and divide and conquer and dynamic programming and so on.
And in terms of actual algorithms, some examples of things that we will be using are algorithms for finding say shortest paths or minimum spanning trees or maximum flows and so on and so forth. So it helps to have seen some of this before. Of course we will have pointers to anything that we use as a part of the course material but if you're seeing these for the first time you might find that this course is just a little more challenging than it needs to be.
So maybe I would suggest that maybe you finish your algorithm scores first and then come to this. Of course, if you have time to spare and you want to challenge yourself, you're very welcome to join in anyway and to just check things out. If you're an intermediate or advanced level competitive programmer already, then you might find this course useful as some extra practice or a quick recap.
But the course itself is really design keeping in mind. somebody who is getting started with competitive programming. In terms of the logistics of the course, this will run like a typical NPTEL course spread out over 12 weeks and we will be having the usual format with videos and assignments being issued every week that of course you're highly encouraged to keep up with.
Apart from this we will be running some informal contests on a competitive programming platform. They will not play a role in your grading but you are again a part of the program. I'm sort of really encouraged to actually go through them, participate in those contests so that you get sort of the additional benefit of practice.
That's the plan in terms of the logistics of the course. But if you have any questions at all, please feel free to reach out to me. You can see my email on your screen right now. And if you have like a favorite competitive programming puzzle or really any puzzle in general that you really liked and you can't wait to share, please do send it over.
I would look forward to hearing from you. And I also hope. that you will consider joining us on this course and I look forward to seeing you on the other side.
Thanks so much for watching and bye for now.