A Bachelors Degree in Computer Science
Hello World! I am writing to this blog after a long time.
Recently, I met one of my mentees who I mentored during a summer internship. She was in her final year of engineering. I asked her about her college and the things she has been working on. She told me about the various courses she has been taking. I was happy to hear about all the AI courses that she has been taking until I heard "... and I skipped the Compilers because it was too difficult". My question was - "How did you have a choice to skip Compilers? Is it an elective nowadays?", "Yes, it is".
It was at this moment that I realized the blunder that engineering colleges in India are making. They are purely selling to recruiters instead of striving for excellence. AI seems very attractive nowadays. It's the buzzword of the century. You can get funding for any startup just by mentioning that AI is being used, even if it is just used to automate employee payroll. You can win any hackathon by mentioning that AI will make your garbage better. Similarly, you can attract high-paying recruiters if you mention that your college is offering AI first courses. Personally, I have tried and tested AI. Unfortunately, the world of statistics didn't resonate well with me. I didn't find it as interesting as I find Compilers and Distributed Systems. Moreover, I strongly believe that Compilers & Systems are the very foundation of AI. AI cannot function without them. I don't even understand why someone would skip over the fundamentals of Computer Science and enroll in some applications-based courses.
In this post, I want to share my perspective and list the courses that ANY CS undergrad must be taking. And I am really serious about it (you can trust me on this). I would divide the courses into the following areas:
Ground Work: These are not strictly Computer Science courses. But these are the groundwork that you need to do to begin your CS journey. Everyone should take the following courses:
- Discrete Mathematics: What are first-order logic and the power of deduction?
- Data Structures: How to logically think about the data stored in a continuous fashion?
- Algorithms: How to run computations over data?
- Statistics: How can a few data points represent a population?
- Numerical Techniques: How can you run an exhaustive search for solutions to mathematical equations?
Level 0: These are the courses everyone should take to be able to understand how a computer really works. They might seem unnecessary and irrelevant to the industry, but believe me, the intuitions that you build through these courses would be of great help. Note that some of the courses mentioned below require deep expertise in electronics (which I assume is a prerequisite for any engineering today):
- Automata Theory: What is a computer and what are its power and limitations?
- Formal Languages: How do I explain what needs to be done by the computer?
- Microprocessor: How does the brain of the computer interpret binary code?
- System Architecture: How do the microprocessor, memory, and other units work together?
- Operating System: What is behind the largest software that abstracts the world of hardware?
- Networking: How do billions of computers interact with each other?
- Compilers: How do the high-level instructions get translated to low-level instructions?
- System Programming: How does a compiled program begin its execution?
- Database Management System: How is data logically represented through 0s and 1s?
- Computer Graphics: If you are interested in game development and video rendering.
- Artificial Intelligence: If you are interested in making the computer learn from statistics.
- Parallel & Distributed System: If you are interested in taking a deep dive into how modern computing systems work.
Comments
Post a Comment