They cheat in other academic settings as well. Note this recent coding contest: http://www.codechef.com/FEB15 The 3 winners are from North Korea. Some lengthy drama aside, it has long been proven they are teams (this is an individual contest) who all copy from each other. Best Korea!
In reality CP is different. Sure you need to know algorithms and stuff but that comes at a later stage.
See these sites :
Usually first 3 out of 5 or 6 problems of programming contests do not require fancy data structures or algorithms, just observation and clever implementation and sometimes basic stuff like sorting, frequency arrays, binary search etc.
When you're done with this maybe you can start looking at different algorithms.
Topcoder has nice tutorials also. They also have practice rooms for past contests.
Codeforces have regular contests and there (like in codejam) you can see all successful submissions after the contest is over.
Project Euler is awesome.
Code Chef has regular contests. They have 2-3 monthly contests, I think.
Before you start solving these problems, you should make sure that your algorithms knowledge is decent. Without that, it will be hard to improve even by looking at solutions.
Internships are great because they let you try out different kinds of work while getting "real experience".
Also, do a project or two on your own time to help solidify your knowledge in weak areas. Example: maybe download the android dev kit and give it a go. Or whatever interests you most.
Maybe do a couple of these. They are great confidence boosters. http://www.codechef.com/
Post the syllabus of both courses. If I had to guess, I'd say there won't be a big difference anyway. (my college offers both courses)
And kudos for aspiring for ACM ICPC! You should checkout codechef for training yourself. Your field of engineering is irrelevant to the contest. (Even mechanical students can participate)
A few parameters to help you decide:
Placements and internships on their college website
Rank of their students in contests ((checkout here)[http://www.codechef.com/rankings/JULY15])
Their Department's ACM Chapter page on Facebook
Well, you got to give yourself a project or something you want to do. I can't tell you that. But if you have a hard time thinking of anything and just want some example assignments to work with then maybe something like codechef could work: http://www.codechef.com/problems/easy/
What is it that you want to do with it? If you ask yourself that then maybe you can figure out something appropriate. (Assuming this is all voluntary work and not some assignment you need to do with it).
> topcoder
It makes me sad that topcoder only supports "Java, C++, C#, or Visual Basic .Net".
edit: I found this site that supports more languages as well:
I also know about HackerRank, is it the same as topcoder?
I would start by checking out the following site for programming exercises: http://www.codechef.com/
The site basically compiles your code and tell you whether you solved the given problem successfully. This could be good for increasing your programming skills.
As for projects you can undertake, although I do not have any specific recommendations (it really depends on your proficiency and knowledge), I recommend you check you C++ textbooks. They usually have good ideas on projects you might want to implement for practice. I recommend picking up Programming Abstractions in C++ and working out through the suggested problems/exercises and maybe building on that and adding more capabilities/features.
Exactly, I only mentioned that it was Java so that I could specify that I was using longs instead of signed 64-bit ints.
I'm using the Montgomery method as part of a CodeChef problem, if anyone's curious.
Project Euler and Code Chef are both good places to find some things to practice coding.
Basically no matter where you go to school for Computer Science, you'll start off in CS 101. It's helpful to have programming experience, but as long as you can pick it up fairly quickly, you shouldn't have a problem. From personal experience, though (I'm a senior in Computer Science), most of the people who start off as Game Development majors either drop out or switch majors within the first couple years. PM me if you've got any questions about being a CS major.