Free Online Computer Science Courses

Computer science is the study of computational systems, their practical applications, and the examination of how humans interact with and improve upon new technology. College computer science programs and their open online courses typically focus on these primary concentrations: the theory behind programming language, the pragmatic applications and development of new technology, instructional design, and the creation of more user-friendly tech interfaces. Specifically, many courses deal with algorithm creation and coding techniques, while others will apply this knowledge to real-world tasks such as software construction.

Why Take Free Online Computer Science Courses?

Online computer science courses are offered at both undergraduate and graduate levels, and since computers and mobile technology are so ubiquitous, it is possible to earn a viable education through online courses and degree programs. However, in most instances, hiring personnel will restrict their employee search to candidates with qualifying degrees or exceptional programming abilities. As such, an online computer science course cannot substitute for a degree in the job market, but you can ensure that you receive quality online instruction that equates that of an on-campus program.

Online courses in computer science are viable options if you want to learn more about software engineering, communication network construction, robotics, and coding theory. During these online courses, you will learn:

  • How programming languages differ in terms of form and function.
  • How open sourcing jas given the general public increased ability to design new tech interfaces.
  • What some of the most intriguing advancements in computer science still to come.
  • How advances computing technology influenced seemingly disparate fields like healthcare and finance.
  • Who some of the pioneers of early computational science were and how their findings influence your coursework.

When selecting an open online course from a university, it is essential that you first gauge their accreditation, viability, and relevance to your intended career. Additionally, you should select courses that require copious coding assignments so you earn real-world experience that can be applied to future field-related careers.

Find Free Online Computer Science Courses

We have compiled relevant open courseware in computer science and organized it in the directory below. Open courseware is a collection of online tests, video lectures, and related course materials from universities around the world. While these materials are free to access, you will have to learn independently since you cannot interact with the professor. However, these courses can be excellent resources if you are considering an on-campus or online computer science degree and want to gauge your interest in the subject and your ability to meet classroom requirements.

Subjects

Computer Science (94)

Computer Science 164: Mobile Software EngineeringHarvard University

Video

Computer Engineering, Mobile Engineering, Web Design
Taught by: David J. Malan

Course Description:

This computer engineering online course teaches you how to design web and mobile apps by reviewing coding languages such as HTML5, PHP and JavaScript. This course was published recently in Spring 2012 and admits both undergraduates and graduate students. Structurally, Malan’s course is composed of video lectures and recitation sessions as well as supplementary class materials presented as PDF files on the course’s webpage. You should also be prepared to complete projects such as independently developing iOS apps or mobile web apps.

Object-Oriented Programming in C++University of South Queensland

Open Courseware

Computer Engineering, Programming, Software Development
Taught by: Dr. Ian Richards

Course Description:

This computer engineering online course will teach you key aspects of object-oriented programming using the C++ Standard Template Library (STP) of coding while also covering software development principles such as decomposition and component re-use. This 14-week course is open to both undergraduates and graduate students, but does not have any major prerequisites beyond your assumed knowledge of the C++ interface. You should also be prepared to complete ten modules, three individual assignments and one assessment.

CS 470/670: Artificial IntelligenceUMass Boston

Open Courseware

Systems Design, Engineering, Programming
Taught by: Professor Wei Ding, Ph.D.

Course Description:

This introductory computer science online course will expose you to the techniques of artificial intelligence in computers. Through this class, you will gain a foundational understanding of how search methods, semantic networks and algorithms are used to solve practical problems. Additionally, you will learn how to program applications using the LISP language. You must complete the prerequisite computer science and math courses before you can enroll in this class.

Introduction to RoboticsStanford University

Open Courseware

Computer Engineering, Robotics
Taught by: Oussama Khatib

Course Description:

This computer engineering online course will introduce you to the basic fundamentals of designing, constructing and operating robotic systems by reviewing vital studies in geometry and kinematics. This course is free of charge and admits both undergraduates and graduate students, but you must have prerequisite credits in matrix algebra before enrolling. Additionally, you should review all enclosed lecture notes carefully as there is a mid-term and final examination.

CHE 466: Process Dynamics and ControlsUniversity of Michigan

Video

Process Technology, Engineering, Chemical Engineering
Taught by: Peter J. Woolf

Course Description:

Published in 2009, this process technology online course will provide you with advanced and in-depth knowledge of dynamic systems theory, control theory and process modeling. Through a combination of video lectures and session notes, you will learn how to numerically model a process from physical and logical models, articulate how processes and control objectives work, identify sensitivities in process models, comprehend multi-objective control architecture principles and realistically predict the quality range for a process. This classs is open to graduate and advanced undergraduate chemical engineering students.

Introduction to Computer Science: Programming MethodologyStanford University

Open Courseware

Programming, Software Engineering
Taught by: Mehran Sahami

Course Description:

This programming online course will provide you with an introduction to the programming methodology associated with the Java programming language. Specific topics that will be covered include object-oriented design, encapsulation, decomposition, abstraction and testing as it relates to software engineering and programming. This course is intended to introduce undergraduate students from diverse academic backgrounds to broad concepts associated with computer programming, therefore, there are no defined prerequisites. However, you will need to download and install Java to be complete the assignments.

Introduction to Computer Science: Programming AbstractionsStanford University

Open Courseware

Programming, Software Engineering
Taught by: Julie Zelenski

Course Description:

Through this intermediate programming online course, you will develop an in-depth understanding of complex computer programming themes such as data abstraction using C++, algorithmic analysis and programming recursions. Topics of discussion in this course include the software engineering principles of fundamental data structures, space complexity analysis and data abstraction and modularity. There are no specified courses that you should take as prerequisites, however, students are expected to have considerable experience in computer science and programming methodology.

Introduction to Computer Science: Programming ParadigmsStanford University

Open Courseware

Programming, Software Engineering, Information Technology
Taught by: Jerry Cain

Course Description:

Through this course you will augment your computer programming knowledge while gaining practical programming experience using advanced algorithmic analysis, data abstractions and object-oriented paradigms. In addition to using traditional programming languages such as C and C++, you will practice with modern languages such as Objective C and C# and Python. Required prerequisites for this programming online course include computer programming and problem-solving skills on the CS106B/X level, as well as extensive experience using C++. Therefore, this course is open to advanced undergraduate and graduate students with backgrounds in information technology, computer science and computer programming.

Artificial Intelligence: Machine LearningStanford University

Open Courseware

Robotics, Artificial Intelligence, Machine Learning
Taught by: Andrew Ng

Course Description:

This class will provide you with an introduction to fundamental concepts associated with statistical pattern recognition and machine learning. Specific topics covered in this class include reinforcement learning and adaptive control, bioinformatics, autonomous navigation, speech recognition and parametric/non-parametric learning. Although there are not any specific prerequisites for this robotics online course, you should have general computer science knowledge and skills, the ability to write computer programs and a basic understanding of the basics of probability theory and linear algebra.

Artificial Intelligence: Natural Language ProcessingStanford University

Open Courseware

Robotics, Artificial Intelligence, Natural Language Processing (NLP)
Taught by: Christopher Manning

Course Description:

This artificial intelligence class will provide you with an introduction to the quantitative techniques associated with natural language processing (NLP). In addition to reviewing contemporary research and methodologies, you will develop an in-depth understanding of linguistic processing algorithms and the computational elements of natural languages. Prerequisites for this robotics online course include sufficient programming experience, general knowledge of artificial intelligence concepts and computational linguistics. This course is open to advanced undergraduate and graduate students with backgrounds in symbolic systems, linguistics or computer science.

Quantum ComputationUniversity of Oxford

Video

Science, Physics, Engineering
Taught by: David Deutsch

The Beauty of Joy of ComputingUniversity of California, Berkeley

Video

Programming, Software Engineering
Taught by: Professor Daniel Garcia

Understanding Computers and the InternetHarvard University

Video

Hardware, Software, Internet, Website Development, Programming
Taught by: Dan Armendariz, David J. Malan

Building Mobile Applications - Android/iOS AppsHarvard University

Video

Applications, Programming
Taught by: Dan Armendariz, David J. Malan

Practical Aspects of Modern CryptographyUniversity of Washington

Video

Cryptography, Protocols, Solutions, Digital Rights Management

Search Engines: Technology, Society, and BusinessUniversity of California, Berkeley

Video

Search Engines, Internet, Technology, Business
Taught by: Sergey Brin

The Structure and Interpretation of Computer ProgramsUniversity of California, Berkeley

Video

Programming, Functions
Taught by: Professor Brian Harvey

Programming Languages and CompilersUniversity of California, Berkeley

Video

Compilers, Programming Languages
Taught by: Professor Paul Hilfinger

Computer MusingsStanford University

Video

Literate Programming, Programming
Taught by: Professor Donald E. Knuth

Structure and Interpretation of Computer ProgramsMassachusetts Institute of Technology

Video

Computer Languages, Programming
Taught by: Hal Abelson, Gerald Jay Sussman

Introduction to Computer Science I Harvard University

Video

Programming, Software Engineering
Taught by: David J. Malan

Exposing Digital PhotographyHarvard University

Open Courseware

Photography, Hardware
Taught by: Dan Armendariz

Music and Technology: Live Electronics Performance PracticesMassachusetts Institute of Technology

Video

Electronics, Computer Synthesis Programming, Hardware, Software
Taught by: Prof. Christopher Ariza

Data Structures and Advanced Programming (Java) University of California, Berkeley

Video

Data Structures, Programming, Java
Taught by: Larry M. Weiner

Circuits and ElectronicsMassachusetts Institute of Technology

Video

Circuits, Electronics, Electrical Engineering
Taught by: Prof. Anant Agarwal

Data Structures and Advanced Programming University of California, Berkeley

Video

Interfaces, Algorithmic Analysis, Programming
Taught by: Prof. Paul Hilfinger

Vision AlgorithmsUniversity of Washington

Video

Image Statistics, Energy, Algorithms, Partial Differential Equations

Principles of Digital Communication IIMassachusetts Institute of Technology

Video

Coding, Digital Communication
Taught by: Prof. David Forney

Compilers: Principles, Techniques, and ToolsStanford University

Open Courseware

Compilers, Programming Languages

Computational Camera and PhotographyMassachusetts Institute of Technology

Podcast

Computer Graphics, Electronics
Taught by: Prof. Ramesh Raskar

Introduction to Embedded Systems University of California, Berkeley

Video

Modeling, Dynamics, Systems
Taught by: Sanjit Seshia, Edward A. Lee

Introduction to Videogame StudiesMassachusetts Institute of Technology

Open Courseware

Videogame, Technology
Taught by: Clara Fernandez-Vara

Computers in Our WorldPrinceton University

Open Courseware

Computing, Technology, Programming
Taught by: Brian Kernighan

Introduction to Computer Graphics University of British Columbia

Open Courseware

Computer Graphics, Transformations, Graphics
Taught by: Tamara Munzner

Logic Programming Carnegie Mellon University

Open Courseware

Logic, Programming, Static Analyses
Taught by: Frank Pfenning

Computer Game ProgrammingEastern Michigan University

Open Courseware

Game Programming, Programming, Java
Taught by: Matt Evett

Introduction to Database SystemsUniversity of California, Berkeley

Open Courseware

Calculus, Algebra, Modeling, Databases

Introduction to Computer Systems Carnegie Mellon University

Open Courseware

Programming, Memory, Machines, Internetworking

Linear LogicCarnegie Mellon University

Open Courseware

Linear Logic, Deductions, Programming
Taught by: Frank Pfenning

Automatic Speech RecognitionMassachusetts Institute of Technology

Open Courseware

Algorithms, Automation, Engineering
Taught by: Dr. James Glass, Prof. Victor Zue

Introduction to ProgrammingQueen Mary, University of London

Open Courseware

Programming, Transformers, Machines
Taught by: Matthew Huntbach

Algorithms and Data StructuresQueen Mary, University of London

Open Courseware

Algorithms, Data Structures, Java
Taught by: Matthew Huntbach

Data Communication NetworksMassachusetts Institute of Technology

Open Courseware

Databases, Networking
Taught by: Prof. Dimitri Bertsekas, Prof. Eytan Modiano

Concepts and Tools for Software DevelopmentUniversity of Washington

Open Courseware

Software Development, Programming
Taught by: Magdalena Balazinska

Machine LearningCarnegie Mellon University

Open Courseware

Machine Learning, Systems, Robotics
Taught by: Tom Mitchell, Andrew W. Moore

CSE 461: Computer Communication and NetworksUniversity of Washington

Open Courseware

Networking, Databases, Internetworking
Taught by: Arvind Krishnamurthy

CSE 403: Software EngineeringUniversity of Washington

Open Courseware

Software Engineering, Programming
Taught by: Marty Stepp

CSE 322: Introduction to Formal Models in Computer ScienceUniversity of Washington

Open Courseware

Formal Models, Programming Languages
Taught by: Atri Rudra

CSE 326: Data Structures University of Washington

Open Courseware

Data Structures, Programming

Machine Organization and Assembly University of Washington

Open Courseware

Machine Organization, Assembly Language Programming, Programming
Taught by: John Zahorjan

CSE444 Introduction to Database SystemsUniversity of Washington

Open Courseware

Databases, Networking, Query Execution
Taught by: Dan Suciu

CSE 451: Operating SystemsUniversity of Washington

Open Courseware

Operating Systems, Systems, Memory
Taught by: Ed Lazowska

Advanced Internet and Web Services University of Washington

Open Courseware

Web Services, Internet, Interfaces
Taught by: Dan Weld

Computer VisionUniversity of Washington

Open Courseware

Segmentation, Object Recognition, Optical Flow

Software for Embedded Systems University of Washington

Open Courseware

Software, Embedded Systems, Networks

Advanced Digital DesignUniversity of Washington

Open Courseware

Digital Synthesis, Modeling, Digital Design

CSE 471: Computer Design and OrganizationUniversity of Washington

Open Courseware

Caching, Synchronization, Processors, Dataflow
Taught by: Susan Eggers

CSE 473: Artificial IntelligenceUniversity of Washington

Open Courseware

Artificial Intelligence, Networks, Inference
Taught by: Rajesh Rao

CSE 490: Introduction to Data CompressionUniversity of Washington

Open Courseware

Information Theory, Databases, Arithmetic Coding
Taught by: Richard E. Ladner

Design in NeuroboticsUniversity of Washington

Open Courseware

Neurobotics, Robotics
Taught by: Professor Yoky Matsuoka

Computer Systems University of Washington

Open Courseware

Systems, Engineering
Taught by: D.W. Johnson

CSE 415: Introduction to Artificial IntelligenceUniversity of Washington

Open Courseware

Simulation, Artificial Intelligence, Ensembles

Algorithms & Computational ComplexityUniversity of Washington

Open Courseware

Algorithms, Computation
Taught by: Larry Ruzzo

Implementation of Programming Languages University of Washington

Open Courseware

Programming Languages, Compiler Organization, Software Development
Taught by: Craig Chambers

CSE503: Software EngineeringUniversity of Washington

Open Courseware

Software Development, Programming
Taught by: David Notkin

Computational Neuroscience University of Washington

Open Courseware

Neurobiology, Networks, Coding
Taught by: Rajesh Rao, Adrienne Fairhall

Communicating with Mobile TechnologyMassachusetts Institute of Technology

Open Courseware

Mobile Technology, Mobile Applications, Engineering
Taught by: Dr. Edward C. Barret, Frank Bentley

Computer VisionUniversity of Oxford

Open Courseware

Matlab, Robotics, Computational Vision
Taught by: David Murray

CS 446: Real-Time RenderingUniversity of Virginia

Open Courseware

Rendering Engine, 3D Graphics, Visibility
Taught by: David Luebke

Introduction to Computer GraphicsUniversity of Virginia

Open Courseware

Computer Graphics, Modeling, Programming
Taught by: David Brogan

Animation University of Virginia

Open Courseware

Inverse Kinematics, Motion Capture, Animation, Optimization, Physical Simulation
Taught by: David Brogan

Image SynthesisUniversity of Virginia

Open Courseware

Image Synthesis, Rendering, Computer Graphics
Taught by: Greg Humphreys

Information VisualizationUniversity of British Columbia

Open Courseware

Perception, High Dimensionality, Animation
Taught by: Tamara Munzner

Introduction to Computation (Java)University of British Columbia

Open Courseware

Computation, Java, Hardware
Taught by: Tamara Munzner

Grid ComputingKent State University

Research

Grid Computing, Networking, Functionality
Taught by: Paul A. Farrell

Advanced Topics in CryptographyMassachusetts Institute of Technology

Open Courseware

Cryptography, Secure Computation, Mathematics

Quantum ComputationMassachusetts Institute of Technology

Open Courseware

Quantum Computation, Information Processing, Quantum Logic, Quantum Algorithms
Taught by: Prof. Peter Shor

Principles of Digital CommunicationMassachusetts Institute of Technology

Open Courseware

Digital Communication, Communications, Data Compression
Taught by: Soheil Feizi-Khankandi

I/O-AlgorithmsAarhus University

Open Courseware

Algorithms, Memory, Data Structures
Taught by: Lars Arge

Programming Languages and Translators Columbia University

Open Courseware

Programming Languages, Translators, Programming
Taught by: Prof. Al Aho

Science of SoundUtah State University

Open Courseware

Electrical Engineering, Computing Engineering
Taught by: Paul Wheeler, Ph.D.

XML FoundationsUniversity of California, Berkeley

Open Courseware

Extensible Markup Language (XML), Programming Languages, Syntax
Taught by: Erik Wilde

CS186: Introduction to Database SystemsUniversity of California, Berkeley

Podcast

Database Systems, Relational Algebra, Query Processing
Taught by: Joe Hellerstein, Christopher Olston

Introduction to Artificial IntelligenceUniversity of California, Berkeley

Open Courseware

Artificial Intelligence, Probability, Speech Recognition
Taught by: Dan Klein

Python TrackCalifornia Institute of Technology

Open Courseware

Python, Programming Language, Coding
Taught by: Mike Vanier

Introduction to AlgorithmsMassachusetts Institute of Technology

Open Courseware

Algorithms, Dynamic Programming, Numbers Pictures (NP)
Taught by: Prof. Erik Demaine

Haskell TrackCalifornia Institute of Technology

Open Courseware

Haskell, Programming Language, DSLs (Domain-Specific Languages)
Taught by: Mike Vanier

Java TrackCalifornia Institute of Technology

Open Courseware

Java, Programming Language, Coding
Taught by: Mike Vanier

Advanced C++California Institute of Technology

Open Courseware

C++, Standard Template Library (STL), Algorithms
Taught by: Donnie Pinkston

C++California Institute of Technology

Open Courseware

C++, Functions, Algorithms
Taught by: Donnie Pinkston

C TrackCalifornia Institute of Technology

Open Courseware

C Programming Language, UNIX, Coding
Taught by: Mike Vanier

Data Structures and AlgorithmsKansas State University

Open Courseware

Operating Systems, Data Structures, Algorithms
Taught by: David Schmidt

Java ProgrammingSofia Open Content

Open Courseware

Java Programming, Programming Languages
Taught by: Stephen Gilbert

Course Description:

This freshman level java online course is an introductory teaching to the java programming language. While there are no prerequisites to this course, you should be computer-literate with the ability to install and use computer programs, search the Internet and save and alter basic text files. During this class, you will explore the java programming model, learn how to design java programs and become literate in java code documentation.

Computer Language EngineeringMassachusetts Institute of Technology

Open Courseware

Programming Languages, Functions, Software Development
Taught by: Prof. Saman Amarasinghe, Prof. Martin Rinard