With each passing day, our societies become a little more digital. In this context, I decided to list free access resources to learn the fundamentals of computer science (basic programming, artificial intelligence, blockchain, cryptography…). These resources do not require any prior technical knowledge; they are all accessible, fun, and academic. I classified them per field of expertise and level. I hope it will prove helpful. Enjoy the (road) trip! Cheers, Thibault.
{ps: it goes without saying that I did not receive any sponsorship for creating this list.
Also, feel free to drop me a line on Twitter or LinkedIn if you would like to send me new suggestions}
***
My top favorite resources:
- CS50 for Lawyers (edX — Harvard) (or CS50’s Introduction to Computer Science): This course is a variant of Harvard University’s introduction to computer science, CS50, designed especially for lawyers (and law students). Whereas CS50 itself takes a bottom-up approach, emphasizing mastery of low-level concepts and implementation details thereof, this course takes a top-down approach, emphasizing mastery of high-level concepts and design decisions related thereto. It equips students with a deeper understanding of the legal implications of technological decisions made by clients.
- Code in Place (Stanford): Is this the course with the most teachers ever? In 2020, at the start of the pandemic, as an act of community service over 900 teachers from around the world came together to offer a first-of-its-kind volunteer-led course called Code in Place, hosted by Stanford University. Code in Place is a great, uplifting, learning experience and over 10,000 students learned how to code in python.
- Coding the Law (Suffolk): Learn how to think about technologies in the law by building your own. In this project-based course, open to non-programmers and coders alike, we explore the technical, legal, and ethical dimensions behind the use of computer algorithms by legal practitioners and the justice system. Projects range from the creation of simple document review and automation tools to the construction of expert systems and narrow AIs.
- Solidity Path: Beginner to Intermediate Smart Contracts (a Zombies-based tutorial): CryptoZombies is an open-source, interactive code school that teaches you to build games on Ethereum. The course is designed for beginners to Solidity (starts off with the absolute basics). So if you’ve never coded with Solidity before, don’t worry — we’ll walk you through step by step.
General knowledge of computer science
Beginner
- Coding the Law (Suffolk): Learn how to think about technologies in the law by building your own. In this project-based course, open to non-programmers and coders alike, we explore the technical, legal, and ethical dimensions behind the use of computer algorithms by legal practitioners and the justice system. Projects range from the creation of simple document review and automation tools to the construction of expert systems and narrow AIs.
- Computer Science 101 (edX — Stanford): CS101 is a self-paced course that teaches the essential ideas of Computer Science for a zero-prior-experience audience. Computers can appear very complicated, but in reality, computers work within just a few, simple patterns. CS101 demystifies and brings those patterns to life, which is useful for anyone using computers today.
- Computational Thinking for Problem Solving (Coursera — Penn): Computational thinking is the process of approaching a problem in a systematic manner and creating and expressing a solution such that it can be carried out by a computer. But you don’t need to be a computer scientist to think like a computer scientist! In fact, we encourage students from any field of study to take this course. In this course, you will learn about the pillars of computational thinking, how computer scientists develop and analyze algorithms, and how solutions can be realized on a computer using the Python programming language. By the end of the course, you will be able to develop an algorithm and express it to the computer by writing a simple Python program. This course will introduce you to people from diverse professions who use computational thinking to solve problems. You will engage with a unique community of analytical thinkers and be encouraged to consider how you can make a positive social impact through computational thinking.
- Computer Science (YouTube — Carrie Anne Philbin): In 40 episodes, Carrie Anne Philbin teaches you computer science! This course is based on introductory college-level material as well as the AP Computer Science Principles guidelines. By the end of this course, you will be able to: (i) Outline the history of computers and the design decisions that gave us modern computers; (ii) Describe the basic elements of programming and software; (iii) Identify the basic components of computer hardware and what they do, (iv) Describe how computers are used and how that has evolved over time, (v) Appreciate how far computers have come and how far they might take us.
- Artificial Intelligence Education (Siraj Raval): Hello World, it’s Siraj! I’m a technologist on a mission to spread data literacy. Artificial Intelligence, Mathematics, Science, Technology, I simplify these topics to help you understand how they work. Using this knowledge you can build wealth and live a happier, more meaningful life. I live to serve this community. We are the fastest growing AI community in the world! Co-Founder of Sage Health (www.sage-health.org)
Coding/programming
Beginner
- CS50’s Introduction to Programming with Scratch (edX — Harvard): An introduction to programming using Scratch, a visual programming language via which aspiring programmers can write code by dragging and dropping graphical blocks (that resemble puzzle pieces) instead of typing out text. Used at the start of Harvard College’s introductory course in computer science, CS50, Scratch was designed at MIT’s Media Lab, empowering students with no prior programming experience to design their own animations, games, interactive art, and stories. Using Scratch, this course introduces students to fundamentals of programming, found not only in Scratch itself but in traditional text-based languages (like Java and Python) as well. Ultimately, this course prepares students for subsequent courses in programming.
- Programming in Scratch (edX Harvey Mudd College): Want to learn computer programming, but unsure where to begin? This is the course for you! Scratch is the computer programming language that makes it easy and fun to create interactive stories, games and animations and share them online. This course is an introduction to computer science using the programming language Scratch, developed by MIT. Starting with the basics of using Scratch, the course will stretch your mind and challenge you. You will learn how to create amazing games, animated images and songs in just minutes with a simple “drag and drop” interface. No previous programming knowledge needed. Join us as you start your computer science journey.
- CS50 for Lawyers (edX — Harvard): This course is a variant of Harvard University’s introduction to computer science, CS50, designed especially for lawyers (and law students). Whereas CS50 itself takes a bottom-up approach, emphasizing mastery of low-level concepts and implementation details thereof, this course takes a top-down approach, emphasizing mastery of high-level concepts and design decisions related thereto. Ultimately, it equips students with a deeper understanding of the legal implications of technological decisions made by clients.
- Code in Place (Stanford): CS106A is one of the most popular courses at Stanford University, taken by almost 1,600 students every year. It has been developed over the last 30 years by an amazing team, including Nick Parlante, Eric Roberts, and more. The course teaches the fundamentals of computer programming using the widely-used Python programming language. This course is for everyone from humanists, social scientists, to hardcore engineers. Code in Place is built off the first half of CS106A. Code in Place requires no previous background in programming — just a willingness to work hard and a love for learning. It requires considerable dedication and hard work, over a course of 5 weeks.
- Programming Methodology (Stanford): This course is the largest of the introductory programming courses and is one of the largest courses at Stanford. Topics focus on the introduction to the engineering of computer applications emphasizing modern software engineering principles: object-oriented design, decomposition, encapsulation, abstraction, and testing. Programming Methodology teaches the widely-used Java programming language along with good software engineering principles. Emphasis is on good programming style and the built-in facilities of the Java language. The course is explicitly designed to appeal to humanists and social scientists as well as hard-core techies. In fact, most Programming Methodology graduates end up majoring outside of the School of Engineering. Prerequisites: The course requires no previous background in programming, but does require considerable dedication and hard work.
- Karel the Robot Learns Python (Stanford): The Computational Education Lab is a group of professors in the Computer Science department with a common interest in advancing education using computer science techniques. We are part of a greater mission at Stanford University, and beyond, to make high-quality, inclusive education more accessible to all. We work on a broad set of projects including: AI to understand human learners, new ways to get humans to learn from and teach each other, and better designs for learning experiences. Karel the Robot Learns Python is one of their creations.
- Programming for Everybody (Getting Started with Python) (Coursera — Michigan): This course aims to teach everyone the basics of programming computers using Python. We cover the basics of how one constructs a program from a series of simple instructions in Python. The course has no pre-requisites and avoids all but the simplest mathematics. Anyone with moderate computer experience should be able to master the materials in this course. This course will cover Chapters 1-5 of the textbook “Python for Everybody”. Once a student completes this course, they will be ready to take more advanced programming courses. This course covers Python 3.
- Introduction to Computer Science and Programming Using Python (edX — MIT): This course is the first of a two-course sequence: Introduction to Computer Science and Programming Using Python, and Introduction to Computational Thinking and Data Science. The goal is to provide students with a brief introduction to many topics so they will have an idea of what is possible when they need to think about how to use computation to accomplish some goal later in their career. That said, they are not “computation appreciation” courses. They are challenging and rigorous courses in which the students spend a lot of time and effort learning to bend the computer to their will.
- C++ Tutorial for Beginners – Full Course (YouTube — freeCodeCamp): This course will give you a full introduction to all of the core concepts in C++.
- Learn JavaScript – Full Course for Beginners (YouTube — freeCodeCamp): This tutorial for beginners will teach you everything you need to know to get started with the JavaScript programming language.
- Learn Python – Full Course for Beginners (YouTube — freeCodeCamp): This course will give you a full introduction to all of the core concepts in Python.
- Python Tutorial – Python for Beginners (YouTube — Programming with Mosh): Go from Zero to Hero with Python (includes machine learning & web development project.
Intermediate
- Web Programming with Python and JavaScript (Harvard): This course picks up where Harvard College’s CS50 leaves off, diving more deeply into the design and implementation of web apps with Python, JavaScript, and SQL using frameworks like Flask, Django, and Bootstrap. Topics include database design, scalability, security, and user experience. Through hands-on projects, students learn to write and use APIs, create interactive UIs, and leverage cloud services like GitHub and Heroku. By semester’s end, students emerge with knowledge and experience in principles, languages, and tools that empower them to design and deploy applications on the Internet.
- Algorithms: Design and Analysis (edX — Stanford): Welcome to the self-paced course, Algorithms: Design and Analysis! Algorithms are the heart of computer science, and the subject has countless practical applications as well as intellectual depth. This specialization is an introduction to algorithms for learners with at least a little programming experience.
- Computer Science: Programming with a Purpose (Coursera — Princeton): The basis for education in the last millennium was “reading, writing, and arithmetic;” now it is reading, writing, and computing. Our intent is to teach programming to those who need or want to learn it. We begin by introducing basic programming elements such as variables, conditionals, loops, arrays, and I/O. Next, we turn to functions, introducing key concepts such as recursion, modular programming, and code reuse. Then, we present a modern introduction to object-oriented programming. We use the Java programming language and teach basic skills for computational problem solving that are applicable in many modern computing environments. Proficiency in Java is a goal, but we focus on fundamental concepts in programming, not Java per se.
- Python for Everybody Specialization (Coursera — Michigan): This Specialization builds on the success of the Python for Everybody course and will introduce fundamental programming concepts including data structures, networked application program interfaces, and databases, using the Python programming language. In the Capstone Project, you’ll use the technologies learned throughout the Specialization to design and create your own applications for data retrieval, processing, and visualization.
- Learn Programming With Python (Openclassrooms): Do you already know some Python and want to dive in deeper? Want to turn your “hello world” programs into useful applications? This course is for you! From mobile phones to supercomputers, big and small applications use object-oriented programming, which is the focus of this course. After all, it’s the most prolific programming paradigm in the modern world. Building on your basic Python knowledge, we’ll cover methods, classes, inheritance, modules, and exceptions. We’ll take a hands-on approach to application development, working through two different programs as you learn. After this course, you’ll be able to write object-oriented Python programs and have the foundation required to contribute to and structure larger applications.
Machine learning and algorithms
Beginner
- AI For Everyone (Coursera — Stanford): AI is not only for engineers. If you want your organization to become better at using AI, this is the course to tell everyone–especially your non-technical colleagues–to take. In this course, you will learn: – The meaning behind common AI terminology, including neural networks, machine learning, deep learning, and data science – What AI realistically can–and cannot–do – How to spot opportunities to apply AI to problems in your own organization – What it feels like to build machine learning and data science projects – How to work with an AI team and build an AI strategy in your company – How to navigate ethical and societal discussions surrounding AI Though this course is largely non-technical, engineers can also take this course to learn the business aspects of AI.
- CS50’s Introduction to Artificial Intelligence with Python (edX — Harvard): CS50’s Introduction to Artificial Intelligence with Python 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.
- Algorithms Specialization (Coursera — Stanford): Algorithms are the heart of computer science, and the subject has countless practical applications as well as intellectual depth. 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.
- Algorithms (Khan Academy): We’ve partnered with Dartmouth college professors Tom Cormen and Devin Balkcom to teach introductory computer science algorithms, including searching, sorting, recursion, and graph theory. Learn with a combination of articles, visualizations, quizzes, and coding challenges.
Intermediate
- Machine Learning (Coursera — Stanford): Machine learning is the science of getting computers to act without being explicitly programmed. In the past decade, machine learning has given us self-driving cars, practical speech recognition, effective web search, and a vastly improved understanding of the human genome. Machine learning is so pervasive today that you probably use it dozens of times a day without knowing it. Many researchers also think it is the best way to make progress towards human-level AI. In this class, you will learn about the most effective machine learning techniques, and gain practice implementing them and getting them to work for yourself. More importantly, you’ll learn about not only the theoretical underpinnings of learning, but also gain the practical know-how needed to quickly and powerfully apply these techniques to new problems. Finally, you’ll learn about some of Silicon Valley’s best practices in innovation as it pertains to machine learning and AI.
- Machine Learning Systems Design (Stanford): This course aims to provide an iterative framework for designing real-world machine learning systems. The goal of this framework is to build a system that is deployable, reliable, and scalable. It starts by considering all stakeholders of each machine learning project and their objectives. Different objectives require different design choices, and this book will discuss the tradeoffs of those choices. The course covers all the steps from project scoping, data management, model development, deployment, infrastructure, team structure, to business analysis. At each step, it goes over the motivations, challenges, and limitations, if any, of different solutions. The course ends with a discussion on the future of the machine learning production ecosystem. In the process, students will learn about important issues including privacy, fairness, and security.
- Natural Language Processing with Deep Learning (YouTube — Stanford): The field of natural language processing (NLP) is one of the most important and useful application areas of artificial intelligence. NLP is undergoing rapid evolution as new methods and toolsets converge with an ever-expanding availability of data. In this course you will explore the fundamental concepts of NLP and its role in current and emerging technologies. You will gain a thorough understanding of modern neural network algorithms for the processing of linguistic information. By mastering cutting-edge approaches, you will gain the skills to move from word representation and syntactic processing to designing and implementing complex deep learning models for question answering, machine translation, and other language understanding tasks.
- Amazon’s Machine Learning University (Amazon): This curriculum is designed to sharpen the skills of current ML practitioners, while also giving neophytes the tools they need to deploy machine learning for their own projects. These classes, previously only available to Amazon employees, are now available to all.
- Machine Learning with Python (freeCodeCamp): Machine learning has many practical applications that you can use in your projects or on the job. In the Machine Learning with Python Certification, you’ll use the TensorFlow framework to build several neural networks and explore more advanced techniques like natural language processing and reinforcement learning. You’ll also dive into neural networks, and learn the principles behind how deep, recurrent, and convolutional neural networks work.
- Machine Learning Crash Course (Google): Machine Learning Crash Course features a series of lessons with video lectures, real-world case studies, and hands-on practice exercises.
- Deep Learning (YouTube — NYU): This course concerns the latest techniques in deep learning and representation learning, focusing on supervised and unsupervised deep learning, embedding methods, metric learning, convolutional and recurrent nets, with applications to computer vision, natural language understanding, and speech recognition. The prerequisites include: DS-GA 1001 Intro to Data Science or a graduate-level machine learning course.
- Code-First Intro to Natural Language Processing (YouTube — University of San Francisco): This is the playlist for the fast.ai NLP course, originally taught in the USF MS in Data Science program during May-June 2019. The course covers a blend of traditional NLP topics (including regex, SVD, naive bayes, tokenization) and recent neural network approaches (including RNNs, seq2seq, GRUs, and the Transformer), as well as addressing urgent ethical issues, such as bias and disinformation. Topics can be watched in any order.
- Applied Machine Learning (YouTube — Cornell Tech): Lecture videos and materials from the Applied Machine Learning course at Cornell Tech, taught in Fall 2020. Starting from the very basics, we cover all of the most important ML algorithms and how to apply them in practice. One new idea we tried in this course was to make all the materials executable.
Blockchain
Beginner
- Blockchain Summer School (Thibault Schrepel): The Blockchain Summer School is coming back in the summer of 2022! Professors from Europe and the United States will address the challenges and benefits created by blockchain for our legal systems. This summer school is designed for legal experts, including, lawyers, practitioners, master and Ph.D. students (enrolled in a law degree), competition authorities’ case handlers, academics, government representatives, policy officers, judges, and anyone interested in understanding blockchain. No technical knowledge will be required.
- Solidity Path: Beginner to Intermediate Smart Contracts (a Zombies-based tutorial): CryptoZombies is a free, open-source, interactive code school that teaches you to build games on Ethereum. The course is designed for beginners to Solidity and starts off with the absolute basics. So if you’ve never coded with Solidity before, don’t worry — we’ll walk you through step by step.
- Blockchain Technology (edX — Berkeley): Developed by Blockchain at Berkeley and faculty from UC Berkeley’s premier Computer Science department, this course provides a wide overview of many of the topics relating to and building upon the foundation of Bitcoin and blockchain technology. The course covers many key topics in the blockchain space. This course is open to anyone with any background. Whether you are planning your next career move as a blockchain developer, crypto trader, data analyst, researcher, or consultant, or are just looking for an introduction to Blockchain. This course will help you begin to develop the critical skills needed to future-proof your career.
- Bitcoin and Cryptocurrencies (edX — Berkeley): Developed by Blockchain at Berkeley and faculty from UC Berkeley’s premier Computer Science department, this course presents Bitcoin and cryptocurrencies as the motivation for blockchain technologies, and provides a comprehensive and in-depth overview of the fundamental concepts of the crypto space with a particular emphasis on Bitcoin. This course is open to anyone with any background. Whether you are planning your next career move as a blockchain developer, crypto trader, data analyst, researcher, or consultant, or are just looking for an introduction to Bitcoin technology. This course will help you to begin developing the critical skills needed to future-proof your career.
- Crypto Startup School (a16z): A free, educational program built by Andreessen Horowitz to encourage talented technologists to get started in crypto. It features video lectures, presentations and fireside chats with leading entrepreneurs, investors and experts in the space. Many outstanding programs and resources exist to help founders learn about building tech startups. Our goal with this course is to detail what is different about building in crypto. Participants will learn to understand the fundamentals of building a crypto startup—from the enabling infrastructure, to applications, to business strategy and operational best practices.
- Bitcoin (Khan Academy): In a series of videos, the Khan Academy is exploring the functioning of Bitcoin.
- Blockchain and Money (MIT): This course is for students wishing to explore blockchain technology’s potential use—by entrepreneurs & incumbents—to change the world of money and finance. Kicking off with a review of the technology’s initial application, the cryptocurrency Bitcoin, students will gain an understanding of the commercial, technical and public policy fundamentals of blockchain technology, distributed ledgers and smart contracts in both open sourced and private applications. The class will then turn to current and potential blockchain applications in the financial sector. This will include reviews of potential use cases for payment systems, central banking, venture capital, secondary market trading, trade finance, commercial banking, post trade possessing and digital ID. Along the way, we will explore the markets and regulatory landscape for cryptocurrencies, initial coin offerings, other tokens and crypto derivatives.
- Blockchain Essentials (CognitiveClass.ai): Blockchain technology provides a dynamic shared ledger that can be applied to save time when recording transactions between parties, remove costs associated with intermediaries and reduce risks of fraud or tampering. Businesses contain many examples of networks of individuals and organizations that collaborate to create value and wealth. These networks work together in markets that exchange assets in the form of goods and services between the participants. The video lectures in this course help you learn about blockchain for business and explore key use cases that demonstrate how the technology adds value.
Data science
Beginner
- Computational Thinking and Big Data (edX — Adelaide): Computational thinking is an invaluable skill that can be used across every industry, as it allows you to formulate a problem and express a solution in such a way that a computer can effectively carry it out. In this course, part of the Big Data MicroMasters program, you will learn how to apply computational thinking in data science. You will learn core computational thinking concepts including decomposition, pattern recognition, abstraction, and algorithmic thinking. You will also learn about data representation and analysis and the processes of cleaning, presenting, and visualizing data. You will develop skills in data-driven problem design and algorithms for big data.
- Learning Legal Data Science (datascienceforlawyers.org): The best way to understand what computer science and artificial intelligence can and cannot do in the legal domain is to learn how to program yourself. This course does not require any prior programming skills. It will start from scratch and introduce you to the programming language R. We will go through lectures, scripts, and exercises together that will deal with different legal data science applications. This includes legal search using regular expressions, text to data conversions and analyses, citation network analysis, and legal classification and prediction through machine learning. The goal is not to turn you into a programmer. Instead, it will help you learn how to approach and solve big legal questions in a simple programming environment.
- The Summer Institutes in Computational Social Science (Princeton): The purpose of the Summer Institutes is to bring together graduate students, postdoctoral researchers, and beginning faculty interested in computational social science. The Summer Institutes are for both social scientists (broadly conceived) and data scientists (broadly conceived). Since 2017, our Institutes have provided more than 700 young scholars with cutting-edge training in the field and the opportunity to develop new research collaborations that break down disciplinary barriers. There is no tuition required to attend the Summer Institutes, and many locations cover some or all travel, accommodation, and meal expenses.