Having been out of school for a while now, I've had a lot of time to reflect on how well certain courses prepared me for my career in artificial intelligence and machine learning. I finally decided to put my thoughts to the page and design a complete curriculum for a 4-year undergraduate degree in artificial intelligence.
These courses are intended to provide both breadth and depth to newcomers in the fields of artificial intelligence and computer science. This curriculum is inspired heavily by the courses that I took and is a reflection of the skills we at Confetti AI believe are necessary to succeed in an artificial intelligence career today.
While you might be able to acquire some knowledge of AI through a single Coursera class, my emphasis here is instead on developing a deep conceptual understanding coupled with practical application of those concepts. Thorough understanding of a domain really just takes time. Shortcuts don't work, and so that's why this list is geared toward people that want to methodically start from the basics.
With that introduction out of the way, let's get started.
Year 1: Build Out Your Fundamentals 🏁
In your first year of an artificial intelligence degree, you should focus on learning the core concepts that underlie both computer science and modern machine learning. Here I am assuming absolutely no prior computer science experience, and so a good part of the year should be spent learning all the software and algorithm fundamentals you will need throughout your degree and career. The courses you should focus on include:
Programming Fundamentals: Introduces object-oriented programming along with data structures (sets, graphs, etc.). Artificial intelligence practitioners need to have solid software engineering skills. Relevant course: CS 106B.
Introduction to Computer Systems: Teaches how computer science systems are designed and structured from a low-level standpoint. Here the emphasis is on learning the software compilation process, what happens when you execute a computer program, and how programs are organized in memory among other things. Relevant course: CS 107.
Algorithms: Covers the math and theory behind widely used computer science algorithms such as breadth-first search and dynamics programming as well as how to analyze the memory and runtime characteristics of those algorithms. Relevant course: CS 161.
Probability Theory: Probability and statistics form the core of many machine learning algorithms, and learning how to interpret and analyze data will be crucial to any machine learning or data science career. Relevant course: CS 109.
Linear Algebra: Covers how to manipulate matrices and vectors, solve linear equations, and apply least-squares methods. These mathematical underpinnings are extensively used in machine learning. Relevant course: EE 103.
Multi-dimensional Calculus: You should get comfortable taking the gradients of functions, as this is at the heart of techniques like backpropagation which are the main workhorses of modern deep learning. Relevant course: Vector Calculus For Engineers.
Year 2: Explore Domains, Develop Systems Knowledge 💻
The focus of your second year in an artificial intelligence undergrad should be on exposing yourself to general principles in artificial intelligence, what kinds of problems have been/are tackled and how they have been approached. In addition, you should continue to develop an understanding of computer systems that are relevant to model building and also exercise software engineering and design principles. To that end, these classes are recommended:
Introduction to Artificial Intelligence: Covers a broad survey of different artificial intelligence fields such as search, game playing, logic, graphical models, and machine learning and the applications of these algorithms. Such a course should provide historical context for the evolution of ideas from methods like symbolic logic to statistical techniques. Relevant course: CS 221.
Compilers: Covers the design and theory behind compilers, ideally with an emphasis on building a fully-fledged compiler from scratch. Compilers are at the core of every program you write, and it is important even for artificial intelligence practitioners to understand how they work so that you can be competent engineers. Such a course will give you good exposure to building a sophisticated software system, focusing on modular well-architected components that are documented and tested. Outside of that, if you are interested in pursuing artificial intelligence as applied to language understanding, the parallels between the design of compilers and the traditional natural language processing stack are uncanny. Relevant course: CS 143.
Introduction to Databases: Covers the principles behind database management systems, focusing on topics such as the relational data model, indices, schemas, and transactions. Any modern data scientist or machine learning engineer will have to interact with databases in some capacity and so it is crucial to learn how they are organized. Relevant course: CS 145.
Parallel Computing: Parallel computation platforms form the core of so many platforms and technologies today from Apache Spark to hardware such as GPUs. A class in parallel computing should introduce the ideas behind these systems, so that you are more adept at using them efficiently. Relevant course: CS 149.
Operating Systems: If you want to get *really* good at systems programming and being a more proficient engineer, take an operating systems course in which you have to build an OS from scratch. Not only will you learn how operating systems are designed but you will learn how to be an effective debugger and code wrangler. These foundational skills will be invaluable in any future artificial intelligence career where you have to write code on a daily basis. Relevant course: CS 140.
Year 3: Advanced Coursework to Gain Depth 🧙
In your third year, you should focus on building out depth in machine learning as well as domain-specific applications of statistical principles including natural language processing, big data analysis, and computer vision. Here are a few recommended classes to take:
Machine Learning: Covers principles in machine learning including supervised and unsupervised learning and model training concepts such as the bias-variance tradeoff, regularization, and model selection. Definitely learn these ideas and learn them well, as they are used by artificial intelligence practitioners daily. Relevant course: CS 229.
Convex Optimization: Covers the ideas behind solving convex optimization problems with applications to statistics, machine learning, signal processing, and other domains. While many models nowadays use non-convex objectives, it is helpful to have an understanding of the formalism behind tractable optimization problems. Relevant course: EE 364A.
Probabilistic Graphical Models: Covers the graphical model paradigm which allows for modeling large collections of random variables probabilistically. Many problems in various applications like computer vision and natural language processing can be expressed using graphical models, and so it is helpful to know these ideas. Relevant course: CS 228.
Data Mining: Covers techniques and methodologies for how to process large datasets, focusing in particular on applications such as recommendation systems, clustering, and large-scale supervised machine learning. Given the amount of new data generated every day, it is essential for AI practitioners to be comfortable manipulating and analyzing data at scale, especially through the use of a modern toolkit like Spark. Relevant course: CS 246.
Natural Language Processing: Introduces the theory and practice behind getting machines to understand textual data. Such a class should provide an overview of the tasks in traditional natural language processing like parsing and named entity recognition, and teach how these tasks are tackled using techniques like deep learning. Relevant course: CS 224N.
Convolutional Neural Networks for Computer Vision: Covers the theory behind modern deep learning architectures, specifically as it pertains to building computer vision models. Having solid fundamentals in neural networks is crucial to success in today's artificial intelligence landscape. Relevant course: CS 231N.
Year 4: Real-World Experience Is Essential 🌄
The name of the game your fourth year should be all about practice, practice, practice! By the time you've gone through your first three years, you will have developed a solid understanding of low-level computer science and software engineering principles as well as the theory behind artificial intelligence concepts and their applications. At this point, you want to spend the time to get your hands dirty.
Find a problem space you are interested in, get an existing dataset (or develop your own), and start building models. Learn the nuances of data manipulation, hypothesis testing, and error analysis. Learn how to troubleshoot models.
Becoming an effective artificial intelligence specialist requires putting all the principles you have learned into practice. Here are a few options for how to get as much practice as you can:
Take project classes: Some universities offer courses where you spend the entire duration of the course rigorously tackling a single project in a problem space. These classes are nice because you have the time to really dive deep into all the complexities of the project. An example of a course like this that comes to mind is CS 341.
Get involved with research: Doing research is a phenomenal way to get hands-on experience with all the intricacies of artificial intelligence work. Offer to help a graduate student with a project of theirs you are interested in, or ask a faculty mentor to sponsor your own project! By doing this you will gain great exposure to what the day-to-day looks like when working on artificial intelligence projects.
Do an industry internship: If your schedule permits it, consider taking some time off from school to do an internship at an artificial intelligence-oriented company. Many companies offer 3-6 month long internships where you are exposed to real-world applications of the principles you've learned. If you are planning on going into industry right after school, there is no better way to experience the work of a data scientist or machine learning engineer.
And with that, you have completed a thorough 4-year curriculum designed to prepare you for success in a machine learning or data science career! It's worth mentioning that going through all the above courses is not strictly necessary.
An alternate route is to go through the above list and take courses to fill in your own conceptual/skill gaps. While there's a lot to learn, it's an exciting time to be involved with artificial intelligence with countless opportunities and promising problem spaces.
If you're interested in pursuing a career in machine learning or data science, get in touch!
Reproduced with permission from this post.