There's a CS program course where we have to solve one coding problem every day. This course is really exciting. When solving the problems, bugs can appear, and although it's rare, the problems themselves might be flawed, so we communicate our opinions openly and honestly about these issues. Once, we were asked to solve a problem using a 'Map,' and I got confused because I thought they meant a geographical map!
Some people say
Why do we learn algorithms?
Why do we need coding skills?
Certainly, we don't need to conquer all knowledges, but we should have basic skills in order to take advandate of AI. I think AI is just a kind of gear for level-up based on our foundation.
The UIUC CS program provides a strong foundation in programming through a variety of courses covering fundamental concepts like data structures, algorithms, and software engineering. Students learn multiple programming languages, including Python, C++, and Java, and gain hands-on experience through challenging projects and assignments. The curriculum emphasizes both theoretical understanding and practical application, preparing graduates for a wide range of programming-related careers. Furthermore, the program offers specialized courses in areas like artificial intelligence, machine learning, and distributed systems, allowing students to deepen their expertise in specific programming domains.
UIUC Coding course is pretty much strong, but you can also take a look other web sites as well.Here are some popular and helpful websites for practicing coding problems, categorized for easier browsing:
LeetCode (leetcode.com): *The* go-to for interview preparation. Massive library of problems, well-organized by company, topic, and difficulty. Strong community, good discussion forums. Supports many languages. Free and paid (Premium) options. The Premium version unlocks more company-specific problem sets and features.
HackerRank (hackerrank.com): Widely used for coding challenges and assessments. Offers problems in various domains (algorithms, data structures, mathematics, AI, databases, etc.). Often used by companies for recruitment. Supports many languages. Good learning paths.
Codeforces (codeforces.com): Focuses on competitive programming. Regular contests, problems of varying difficulty (generally more challenging than LeetCode or HackerRank). Strong emphasis on speed and efficiency. Large and active community.
AtCoder (atcoder.jp): Another popular competitive programming platform, especially strong in Japan. Regular contests, well-organized problems, and good editorials.
CodingBat (codingbat.com): Excellent for beginners. Small, focused problems to practice basic coding concepts in Java and Python. Simple interface, immediate feedback.
Project Euler (projecteuler.net): Mathematical problems that can be solved with programming. Focuses on algorithm design and optimization.
Edabit (edabit.com): Gamified coding challenges. Very beginner-friendly. Focuses on short, practical coding snippets. Offers points, ranks, and a progress tracker.
Codewars (codewars.com): Coding challenges ("kata") contributed by the community. Wide range of difficulty levels. Supports many languages. Focuses on practical skills.