Many of you liked our articles about how to gain a Computer Science education from MIT University for FREE where we’ve created a Computer Science curriculum from free MIT courses and how to become a Certified Data Scientist at Harvard University for FREE where we’ve found a FREE Data Science program at Harvard University.
In this article, we are going to create a Computer Science curriculum by combining courses from the best universities and companies in the world. We are going to organize it in 4 academic years and in each year, we are going to have 2 semesters, which brings the total to 8 semesters.
By the end of the curriculum, you will gain significant knowledge of a Computer Science Engineer with expertise in Artificial Intelligence (Machine Learning, Deep Learning, NLP, Data Science, Computer Vision). Check out these 10 Artificial Intelligence YouTube channels and 10 free Artificial Intelligence Courses from Harvard, MIT and Stanford.
All of the courses will be FREE to attend, and at each one of them, you can get a certificate. You ARE NOT REQUIRED to get a certificate since some of them cost money, but if you want for example to buy them you can.
You can buy only the certificates you want (for example you can buy the certificate for Artificial Intelligence but don’t buy the one for Software Engineering).
Our advice is NOT TO BUY certificates, since the most important part is to gain actual knowledge, not a piece of paper. Certificates are not guaranteed for your knowledge.
You can show that you have knowledge by creating different applications and projects, and every employer value more practical knowledge that any diploma.
The best FREE combined Computer Science curriculum
- Introduction to Computer Science (Harvard)
This course teaches students how to think algorithmically and solve problems efficiently. Topics include abstraction, algorithms, data structures, encapsulation, resource management, security, software engineering, and web development.
- C Programming: Getting Started (Dartmouth)
In this course, you will learn the principles of C programming and start coding hands-on in a browser tool that will provide instant feedback on your code. The C programming language is one of the most stable and popular programming languages in the world.
It helps to power your smartphone, your car’s navigation system, robots, drones, trains, and almost all electronic devices. C is used in any circumstances where speed and flexibility are important, such as in embedded systems or high-performance computing.
In this course, you will get started with C and learn how to write your first programs, how to make simple computations and print the results to the screen, how to store values in variables and how to repeat instructions using loops.
Beginners, even those without any programming experience, will be able to immediately start coding in C with the help of powerful yet simple coding tools right within the web browser. No need to install anything!
- C Programming: Language Foundations (Dartmouth)
In this course you will learn to use logical statements and arrays in C. Logical statements are used for decision-making with follow-up instructions, based on conditions you define.
Arrays are used to store, keep track of, and organize larger amounts of data. You will furthermore implement some fundamental algorithms to search and sort data.
Within moments of this course, you will be coding hands-on in a new browser tool developed specifically for this course, receiving instant feedback on your code. No need to install anything!
In this course, you will learn how to evaluate limits graphically and numerically, the physical meaning, and geometric interpretation of the derivative, to calculate the derivative of any function, to sketch many functions by hand, to make linear and quadratic approximations of functions, to apply derivatives to maximize and minimize functions and find related rates.
This course covers elementary discrete mathematics for computer science and engineering. It emphasizes mathematical definitions and proofs as well as applicable methods.
Topics include formal logic notation, proof methods; induction, well-ordering; sets, relations; elementary graph theory; integer congruences; asymptotic notation and growth of functions; permutations and combinations, counting principles; discrete probability.
Further selected topics may also be covered, such as recursive definition and structural induction; state machines and invariants; recurrences; generating functions.
Here are all the video lectures.
- Object-Oriented Programming in Java (Microsoft)
In this Java course, examine the role of objects in code, explore how to use them, and see how to design them for optimal code reuse and structure. Get tons of hands-on coding experience using popular Java objects, like Arrays and Lists, and then leverage those learnings to design your own object hierarchies.
Plus, practice using inheritance, interfaces, abstract classes, and encapsulation techniques to help you manage large code bases.
- Calculus 1B: Integration (MIT)
You will learn to interpret it geometrically as an area under a graph and discover its connection to the derivative. You will encounter functions that you cannot integrate without a computer and develop a big bag of tricks to attack the functions that you can integrate by hand.
The integral is vital in engineering design, scientific analysis, probability and statistics. You will use integrals to find centers of mass, the stress on a beam during construction, the power exerted by a motor, and the distance traveled by rocket.
- Combinatorial Mathematics (Tsinghua)
In this course, you’ll learn the counting principles based on the basic operations “+”, “-”, “*”, “/”, generating functions, recurrent number serials such as Fibonacci number, Catalan number, Pigeon hole principles, Inclusion and exclusion principles, Polya counting based on group theory.
This computer science course is a bottom-up exploration of the abstractions, principles, and techniques used in the design of digital and computer systems. If you have a rudimentary knowledge of electricity and some exposure to programming, roll up your sleeves, join in and design a computer system!
- Probability (Harvard)
In this course, we will introduce important concepts such as random variables, independence, Monte Carlo simulations, expected values, standard errors, and the Central Limit Theorem. These statistical concepts are fundamental to conducting statistical tests on data and understanding whether the data you are analyzing is likely occurring due to an experimental method or to chance.
- Statistics and R (Harvard)
This course teaches the R programming language in the context of statistical data and statistical analysis in the life sciences. We will learn the basics of statistical inference in order to understand and compute p-values and confidence intervals, all while analyzing data with R code.
We provide R programming examples in a way that will help make the connection between concepts and implementation. Problem sets requiring R programming will be used to test understanding and the ability to implement basic data analyses. We will use visualization techniques to explore new data sets and determine the most appropriate approach.
We will describe robust statistical techniques as alternatives when data do not fit assumptions required by the standard approaches. By using R scripts to analyze data, you will learn the basics of conducting reproducible research.
- Algorithms: Design and Analysis, Part 1 (Stanford)
This specialization is an introduction to algorithms for learners with at least a little programming experience. The specialization is rigorous but emphasizes the big picture and conceptual understanding over low-level implementation and mathematical details.
After completing this specialization, you will be well-positioned to ace your technical interviews and speak fluently about algorithms with other programmers and computer scientists. Specific topics in the course include: “Big-oh” notation, sorting and searching, divide and conquer (master method, integer, and matrix multiplication, closest pair), randomized algorithms (QuickSort, contraction algorithm for min cuts), data structures (heaps, balanced search trees, hash tables, bloom filters), graph primitives (applications of BFS and DFS, connectivity, shortest paths).
- Linear Algebra – Foundations to Frontiers (UT Austin)
In this course, you will learn all the standard topics that are taught in typical undergraduate linear algebra courses all over the world, but using our unique method, you’ll also get more! LAFF was developed following the syllabus of an introductory linear algebra course at The University of Texas at Austin taught by Professor Robert van de Geijn, an expert on high-performance linear algebra libraries.
Through short videos, exercises, visualizations, and programming assignments, you will study Vector and Matrix Operations, Linear Transformations, Solving Systems of Equations, Vector Spaces, Linear Least-Squares, and Eigenvalues and Eigenvectors. In addition, you will get a glimpse of cutting-edge research on the development of linear algebra libraries, which are used throughout computational science.
- Algorithms: Design and Analysis, Part 2 (Stanford)
This course is an introduction to algorithms for learners with at least a little programming experience. The course is rigorous but emphasizes the big picture and conceptual understanding over low-level implementation and mathematical details. After completing this course, you will have a greater mastery of algorithms than almost anyone without a graduate degree in the subject.
Specific topics in Part 2 include: greedy algorithms (scheduling, minimum spanning trees, clustering, Huffman codes), dynamic programming (knapsack, sequence alignment, optimal search trees, shortest paths), NP-completeness and what it means for the algorithm designer, analysis of heuristics, local search.
- Software Engineering: Introduction (The University of British Columbia)
In this course, you will learn software engineering principles that are applicable to the breadth of large-scale software systems. The course explores topics such as agile development, REST and Async programming, software specification, design, refactoring, information security, and more.
By the end of this course, learners will work in teams, applying an agile software development process to specify, design, and test multiple versions of complex software systems.
- UML Class Diagrams for Software Engineering (KU Leuven)
In this computer science course, you will gain an in-depth understanding of Unified Modeling Language (UML) class diagrams, which are used to visually represent the conceptual design of a system. You will learn about UML class diagrams and how they are used to map out the structure of a business domain by showing business objects, their attributes, and associations.
This course explores the concepts and algorithms at the foundation of modern artificial intelligence, diving into the ideas that give rise to technologies like game-playing engines, handwriting recognition, and machine translation.
Through hands-on projects, students gain exposure to the theory behind graph search algorithms, classification, optimization, reinforcement learning, and other topics in artificial intelligence and machine learning as they incorporate them into their own Python programs.
By course’s end, students emerge with experience in libraries for machine learning as well as knowledge of artificial intelligence principles that enable them to design intelligent systems of their own.
This course will cover topics including: Fundamentals of system hardware, Introduction to OS concepts, OS processes and threads, Thread concurrency and deadlocks, memory management.
In this course you will learn Deciphering a matrix using the Singular Value Decomposition, Quantifying and qualifying numerical error, solving linear systems and linear least-squares problems, Computing and employing eigenvalues, and eigenvectors.
- Databases: Relational Databases and SQL (Stanford)
Databases reside behind a huge fraction of websites; they’re a crucial component of telecommunications systems, banking systems, video games, and just about any other software system or electronic device that maintains some amount of persistent information.
In addition to persistence, database systems provide a number of other properties that make them exceptionally useful and convenient: reliability, efficiency, scalability, concurrency control, data abstractions, and high-level query languages. Databases are so ubiquitous and important that computer science graduates frequently cite their database class as the one most useful to them in their industry or graduate-school careers.
This Machine Learning with Python course dives into the basics of machine learning using Python, an approachable and well-known programming language. You’ll learn about supervised vs. unsupervised learning, look into how statistical modeling relates to machine learning, and do a comparison of each.
We’ll explore many popular algorithms including Classification, Regression, Clustering, and Dimensional Reduction and popular models such as Train/Test Split, Root Mean Squared Error (RMSE), and Random Forests. Along the way, you’ll look at real-life examples of machine learning and see how it affects society in ways you may not have guessed!
- Robotics (Columbia University)
In this course, you will learn to Represent 2D and 3D spatial relationships, homogeneous coordinates, manipulate robot arms: kinematic chains, forward and inverse kinematics, differential kinematics, Program and navigate mobile robots: robot and map representations, motion planning, plan complete robot systems, Develop present and future applications for robots.
The topics of this course include database design, scalability, security, and user experience. Through hands-on projects, you’ll learn to write and use APIs, create interactive UIs, and leverage cloud services like GitHub and Heroku. By course’s end, you’ll emerge with knowledge and experience in principles, languages, and tools that empower you to design and deploy applications on the Internet.
In this course, you will utilize Python, Watson AI, and OpenCV to process images and interact with image classification models. You will also build, train, and test your own custom image classifiers. This is a hands-on course and involves several labs and exercises.
All the labs will be performed in the Cloud and you will be provided access to a Cloud environment completely free of charge. At the end of the course, you will create your own computer vision web app and deploy it to the Cloud. This course does not require any prior Machine Learning or Computer Vision experience; however, some knowledge of Python programming language is necessary.
- Deep Learning Essentials (Universite de Montreal)
This course will help you to understand the basics and terminology related to Deep Learning, identify the types of neural networks to use to solve different types of problems, get familiar with Deep Learning libraries through practical and tutorial sessions.
- Natural Language Processing (Microsoft)
In this course, you will be given a thorough overview of Natural Language Processing and how to use classic machine learning methods. You will learn about Statistical Machine Translation as well as Deep Semantic Similarity Models (DSSM) and their applications. We will also discuss deep reinforcement learning techniques applied in NLP and Vision-Language Multimodal Intelligence.
This course introduces the fundamental concepts and tools used in modeling large-scale graphs and knowledge graphs. You will learn a spectrum of techniques used to build applications that use graphs and knowledge graphs. These techniques range from traditional data analysis and mining methods to the emerging deep learning and embedding approaches.
In this TensorFlow course, you will learn the basic concepts of TensorFlow, the main functions, operations, and the execution pipeline. Starting with a simple “Hello World” example, throughout the course you will be able to see how TensorFlow can be used in curve fitting, regression, classification, and minimization of error functions.
This concept is then explored in the Deep Learning world. You will learn how to apply TensorFlow for backpropagation to tune the weights and biases while the Neural Networks are being trained. Finally, the course covers different types of Deep Architectures, such as Convolutional Networks, Recurrent Networks, and Autoencoders.
The course will teach you how to develop Deep Learning models using Pytorch while providing the necessary deep-learning background. We’ll start off with PyTorch’s tensors and its Automatic Differentiation package.
Then we’ll cover different Deep Learning models in each section, beginning with fundamentals such as Linear Regression and logistic/SoftMax regression.
We’ll then move on to Feedforward deep neural networks, the role of different activation functions, normalization, and dropout layers. In the final part of the course, we’ll focus on Convolutional Neural Networks and Transfer Learning (pre-trained models). Several other Deep Learning methods will also be covered.
- Reinforcement Learning Explained (Microsoft)
In this course, you will be introduced to the world of reinforcement learning. You will learn how to frame reinforcement learning problems and start tackling classic examples like news recommendation, learning to navigate in a grid-world, and balancing a cart-pole.
You will explore the basic algorithms from multi-armed bandits, dynamic programming, TD (temporal difference) learning, and progress towards larger state space using function approximation, in particular using deep learning. You will also learn about algorithms that focus on searching the best policy with policy gradient and actor-critic methods.
Along the way, you will get introduced to Project Malmo, a platform for Artificial Intelligence experimentation and research built on top of the Minecraft game.
- Convex Optimization (Stanford)
This course concentrates on recognizing and solving convex optimization problems that arise in applications. The syllabus includes: convex sets, functions, and optimization problems; basics of convex analysis; least-squares, linear and quadratic programs, semidefinite programming, minimax, extremal volume, and other problems; optimality conditions, duality theory, theorems of alternative, and applications; interior-point methods; applications to signal processing, statistics and machine learning, control, and mechanical engineering, digital and analog circuit design, and finance.
- Introduction to Genomic Data Science (UC San Diego)
In the first half of this course, we’ll investigate DNA replication, and ask the question, where in the genome does DNA replication begin? You will learn how to answer this question for many bacteria using straightforward algorithms to look for hidden messages in the genome.
In the second half of the course, we’ll examine a different biological question, and ask which DNA patterns play the role of molecular clocks. The cells in your body manage to maintain a circadian rhythm, but how is this achieved on the level of DNA? Once again, we will see that by knowing which hidden messages to look for, we can start to understand the amazingly complex language of DNA. Perhaps surprisingly, we will apply randomized algorithms to solve problems.
Finally, you will get your hands dirty and apply existing software tools to find recurring biological motifs within genes that are responsible for helping Mycobacterium tuberculosis go “dormant” within a host for many years before causing an active infection.
- Data Storage and Processing (ITMO)
This course is an introduction to initial data processing. We will start with data types and sources, methods of data preparation: cleaning, filling in the missing values, data smoothing, and normalization.
The course will familiarize you with descriptive statistics and data visualization methods. You will also learn how to analyze time series and find trends.
- Busines Intelligence for IoT solutions (Microsoft)
This course guides students through a series of lab activities that provide hands-on experience querying and visualizing data. After completing this course, students will be able to construct IoT data visualizations that allow a business to gain insights related to its operations.
The first module examines the characteristics of time series data – how it can be used for analysis and prediction. It specifically walks the student through how IoT telemetry data is typically generated as time series data and techniques for managing and analyzing it with Azure Time Series Insights.
Module two takes a closer look at specific features of Azure Time Series Insights – how it can be used to store, analyze, and instantly query massive amounts of time series data. In the third module, students get a general introduction to using Power BI, with specific emphasis on how Power BI can load, transform, and visualize IoT data sets.
In the final module, students will move from using BI with static IoT data sets to working with real-time streaming IoT data. Students use Azure Stream Analytics as a data source for Power BI and explore the unique capabilities and insights that provide.
- Operations Research: An Active Learning Approach (Hong Kong Polytechnic University)
Operations Research (OR) deals with problem formulation and application of analytical methods to assist in the decision-making of operational problems in planning and control.
The techniques of OR are useful quantitative tools to assist operations managers, and have wide applicability in engineering, manufacturing, construction, financial and various service sectors. Operations Research is an applied mathematics subject and is also a course in many engineering and management programs.
This course is designed for both students learning OR and learners who are practitioners in their respective professionals. The mathematical procedures for the OR techniques are introduced in detail in the examples provided in the course.
This helps learners to master the methodology and the techniques and apply them to achieve their goals through active learning. This course introduces two prominent OR techniques and their extended topics.
The Simplex Method for Linear Programming (LP) has been considered one of the top 10 algorithms of the 20th century. LP is an optimization technique for solving problems such as finding the optimal product mix, production plan, and shipment allocation, in order to maximize the profit or minimize the cost.
The Critical Path Method (CPM) is a popular technique employed by project managers in scheduling project activities. Some extended topics of CPM are also introduced to deal with certain special situations in project management.
So, this is our combined Computer Science and Engineering curriculum from the best and most prestigious universities in the world and from some of the best IT companies in the world.
As you can see it is 4 academic years, and it really will create skillful Engineers from you with huge expertise in Artificial Intelligence and its fields.
As we’ve already mentioned, all of the courses are FREE to enroll in, and all of the materials are FREE. In each of the courses, you can get a certificate that costs money, and you can take the certificate if you want to, but we suggest not to.
The most important thing is that you will gain knowledge from these top institutions and you will make and build tons of applications that later at your job interviews will be valued way more than any certificate or diploma.
Like with every post we do, we encourage you to continue learning, trying and creating.