We may earn an affiliate commission when you visit our partners.
Course image
Daniel Gakwaya

Important note : There is an update of this  course to Qt 6. If  you're just starting out, that's what you should take. Take this if you have a specific reason to target Qt 5.

Read more

Important note : There is an update of this  course to Qt 6. If  you're just starting out, that's what you should take. Take this if you have a specific reason to target Qt 5.

This course will take you from zero to a level where you can write any Qt C++ Gui application you may want. It is aimed at complete beginners but people with varying levels of experience wishing to learn Qt C++ Gui will equally find it useful.

Qt is second to none in the field of building cross platform GUI application based on C++. It can currently be used to build software that runs on virtually any platform out there: Windows, Mac, Linux, Android, IOS and even embedded systems. You basically build your software once and all you have to do is build it for your desired platform and voila .

The course starts with a complete beginner to both C++ and Qt in mind, and we take  you through the the process of getting your environment set up on your platform of choice :

  • We do a live install of Qt Creator on Windows

  • We do a live install of Qt Creator on Linux

  • We guide you though how you would install Qt Creator on a Mac

  • We guide you through Qt Creator showing you the tools that work together to get your application built

We then take you on a tour of the C++ programming language, covering the concepts deemed important to start working with Qt to build your shinny GUI applications. You don't need to be a C++ wizard to start writing your applications using Qt. One of the goals behind Qt itself is to be as easy to use as possible, helping you to focus on your application logic rather than the C++ complex plumbing. This does not mean that you can do with zero C++ knowledge though. That's why we take you on a tour to cover the basic concepts of the language covering topics like:

  • Running your first console application and understanding the main function

  • Streams that help you write and read data from your C++ applications

  • Variables and Data Types

  • Basic C++ Operators and Control flow where among other things you learn about if clauses and loops

  • Build an app to guess numbers and put together the concepts learned so far

  • C++ Functions

  • C++ classes

  • Building your first Qt C++ GUI Application

  • Building a GUI Version of your Number guessing game

We then visit the fascinating concept signals and slots in Qt where  you learn the most flexible way to respond to events : 

  • We'll explore lambda functions in C++ in general, we'll need them to use their

    We then go on and explore how to work with the Qt Resource System , Styling your Qt applications with QStyle, QPalette and Style Sheets, Saving your application settings with QSetting, Working with Files and Directories using QFile and QDir and we wrap up the course with a tour of the network capabilities of Qt where we : 

    • See the different classes that are available to work with networks in Qt

    • Build an application to download web pages in our Qt Applications

    • Build an application to consume Rest APIs in your Qt Applications

    This course was designed to help you succeed in becoming a Qt Gui application developer regardless of your current level of expertise. The only requirement is to bring in an open mind and a strong willingness to learn. Now, please check out some of the preview videos andl let's get you STARTED building cross platform GUI applications using Qt.

Enroll now

What's inside

Learning objectives

  • The fundamentals of working with qt to build c++ gui applications
  • Working with qt widget classes
  • Working with dialog classes
  • Using the qt resource system
  • Styling qt applications
  • Working with networks to fetch http data
  • Working with the file system
  • Model view architecture

Syllabus

Getting Started
Important Notice: PLEASE READ!

Welcome! How to make the most out of this course.

Installing & Tools on Windows
Read more
Teaser : Build your First Qt Gui App in 10 minutes!
Installing & Tools on Linux
Join the Official Support Channels

An Overview of the Qt Creator UI and the tools used to build your Application. Content include 

  • Basic understanding of the Qt Creator User interface
  • Your build tools
  • Kits, Compilers, Debuggers
  • Compile process
  • The location of your executable when built
  • Configuring your Kits and more
About Qt Technologies
C++ Beginner Crash Course

Run  your very first C++ program in the Qt Creator Environment : 

  • Understand what a console program is
  • Create a C++ Console Application in Qt Creator
  • Understand the structure of the main.cpp file and the main function inside it
  • use std::cout to print things out

Learn how to use streams to input and output data :

  • Input and output streams basics explained
  • std::cout , std::cerr, std::clog and their usage
  • std::cin and its usage in data input

Know your variables and what kind of data you can stuff inside : 

  • Variables and data types visualized
  • Know about primitive data types, abstract data types and custom data types
  • Know how much space  your data types occupy in computer memory
  • Know the ranges of data  you can stuff in your variables
  • Know how to use your type modifiers : short, long ,signed and unsigned
  • and more ...

All about controlling where your program goes and what it does in there

  • Use math operators to manipulate your variables
  • Use logical operators coupled with if clauses to control the whereabouts of your program
  • Use logical operators to compare your variables
  • Use for, do while and while loops to do repetitive tasks in your applications
  • Put all these together in a fun and easy to understand way

You've learnt a great deal so far. Put your knowledge together and build a fun number guessing console game. Along the way : 

  • You'll learn how to generate random numbers
  • You'll use a loop to keep the user doing something until you tell them to stop
  • You'll do something when the loop has exited : Congratulate the user on nailing the game!
Qt5.12 With srand()

Functions are the most basic way to keep your code organized . You'll :

  • See how to port  your code into a function you can call multiple times
  • Learn about function signatures, pass parameters and capture the returned value
  • Define function overrides to work on different data types

Learn the basics of working with the Class construct in C++ . You'll : 

  • Appreciate how classes are used to model real life objects
  • Learn how to define your own custom classes
  • Add member variables to your class
  • Add member methods ( functions) to manipulate member variables inside the class
  • Instantiate objects of your classes and call methods on it
  • See how to implement methods in your class OUTSIDE the class

Learn more about classes : 

  • Define default and custom constructors for your classes
  • Instantiate an object of your class so that the default constructor is called
  • Define custom constructors with your own parameters and Instantiate objects with them
  • Use initializer lists to initialize member variables in your classes
  • Define a class that uses your custom class as a member variable

Learn about inheritance and splitting your classes into multiple files : 

  • Define a class that inherits another one
  • Work with your classes from multiple files

Enough of the console. Time to work with actual graphical user interfaces built with Qt !

Build a GUI Version of the Number Guessing Game we built in Lecture 9.This lecture may be challenging as it uses UI components before we explain them but this is intended to kind of get  your wheels spinning before we dive deep into these components in section 4. Along the way : 

  • You'll have your first shot on adding ui components on a user interface
  • Don't worry if you don't fully understand them, that's what the entire next section is all about :-)
  • You'll respond when a user does something in the UI and do something in code : Go to Slot.
  • Do a brain connection of how you can take your console program and build a UI on top of it
Signals And Slots

Lambda functions are a great way to do inline functions in C++, you'll have the bare basics about them laid down here and be able to use them in your C++ applications, along the way you'll : 

  • Learn the signature of lambda functions
  • Define a lambda function and attach a function name to it, and call it
  • Define a nameless lambda function and call it right away
  • Define a lambda function that takes parameters
  • Define a lambda function that returns a value
  • Learn what capture lists are all about
  • Learn about capturing variables in context by value and by reference
  • Learn about capturing everything  in context by value and by reference

Learn what a signal and slot is in Qt and different ways to connect them in your Qt applications. Along the way, you'll : 

  • Use the string notation to connect signals and slots
  • Use the functor notation to connect signals and slots
  • Use the functor notation with lambdas to connect signals in Qt
  • Build a Qt widgets project and play with all these types of connections.

Have your try on signals and slots in a sightly more exciting way : 

  • You'll define a slider and progress bar component in the UI
  • Connect to the value changed signal of the slider and feed the data to the progress bar that moves  around when you move your slider.
  • It's going to be fun!
A Tour of Qt Widgets

We've been using the QWidget class on occasion without really having explained it. This is the time to clear the fog. You'll : 

  • Understand the different files you have in a Qt Widgets application and the purpose of each
  • Understand how things are initialized in the main function
  •  See how the code in the Widget.cpp file is connected to the ui form containing your UI components
  • Add UI components on the widget form and access them in code from the class cpp file
  • Create your class from scratch without using UI forms : This gives you the necessary muscle to work with other C++ objects in code. Will revert back to using UI froms later in the course
  • Set properties to your defined class and add a simple UI component to it. IN CODE.
  • See how great the Qt documentation is . You should use it to your advantage!

The last lecture left us with a Widget that we defined in code with a label component on it. Time to take it further . You'll : 

  • Add other UI components and programmatically move them around the widget for better visibility
  • Apply a font to your widgets to make them look different
  • Apply color palettes to your labels to control the text color and the background color
  • Programmatically add a button in and connect a slot to it
  • Give a size hint to your widget for it preferred size
  • See how great the Qt documentation is. Use it to your advantage!

QMainWindow is the main widget for a good number of Qt applications out there. It lets you use things like Menus , Toolbars, status bars very easily.You'll try it in your own Qt application and along the way you'll : 

  • See the different parts it can contain
  • Set a central widget to the QMainWindow class
  • Add menus to your main window
  • Add menu options to your menus
  • Use the QAction class to make your menu options operational ( We'll use that to kill our application from the Quit menu option)
  • connect slots to the triggered signal of the QAction class.
  • Learn how to kill ( Quit ) your Qt application
  • Learn how to show status bar messages

QMessageBox class allows you to show messages to your users. You'll learn different ways you can use this class and look at numerous convenience methods it provides to make your live easier. Along the way, you'll : 

  • Define and use your own QMessageBox from scratch and see all the quirks needed to use it
  • Use different static methods of the class to show information, warning, critical and question messages
  • Add the buttons you want in the message box
  • Respond when a given button is clicked in the message box
  • Set default button to your message box.

It's almost impossible to write a Qt UI application without using the QPushButton class. That's why we've been using  it quite a lot before we even explain it. In this lecture you'll : 

  • Connect a slot to its clicked signal, AGAIN 
  • Look at two other signals the class can emit and connect slots to them

The QLineEdit class allows you to capture one liner input data in your Qt Ui applications. Your task in this lecture is to build an input form completely from code ( position widgets and all that stuff) and make it fully operational. Along the way , you 'll :

  • Capture data from the QLineEdit ui component
  • Check your line edits for emptiness
  • Connect slots to many of the QLineEdit class signals, including cursorPositionChanged, editingFinished, returnPressed,selectionChanged and many more
  • Learn how to set hint text in your line edits

The QTextEdit class gives you an area were you can type longer pieces of texts with paragraphs. You'll going to use it and see some of its important signals. Along the way, you'll : 

  • See the important signals of the component like textChanged,copy,cut,paste and many more
  • Learn how to grap the text/html in the text edit and use it in your program
  • Learn how to set the text/html programmaticaly to the text edit
  • Organize a big chunk of your code into a method to leave the constructor of your class more manageable

QLabel class is mostly used to show text labels in widgets. But its more exciting use is displaying images on widgets. In this lecture you're going to see it in action. Along the way you'll : 

  • Add your UI components on your widget using the widget.ui form file ( We'll be using forms onward in the course) 
  • Have your first encounter with using resources ( images) in your application
  • Prepare a QPixmap objects for use in your labels and set them in there


The layout system in Qt takes away all the burden of positioning widgets manually ( the moving we've been doing all over the place). This lecture is a simple introduction to the topic before we dive deep into using them in the following lectures.

QHBoxLayout allows you to layout widgets horizontally in another widget. In this lecture you'll : 

  • Add UI components to the UI form
  • Declare your own instance of QHBoxLayout
  • Add widgets to your new layout
  • set the layout to the widget
  • The steps above effectively allow you to declare and use your layout in code
  • You'll then tear down the layout ( comment out ) and redo the layout from the UI form so you are aware of the two sides of the coin.

QVBoxLayout allows you to layout widgets vertically in another widget. In this lecture you'll : 

  • Add UI components to the UI form
  • Declare your own instance of QVBoxLayout
  • Add widgets to your new layout
  • set the layout to the widget
  • The steps above effectively allow you to declare and use your layout in code
  • You'll then tear down the layout ( comment out ) and redo the layout from the UI form so you are aware of the two sides of the coin.

The QSizePolicy class control how wigets behave ( grow/shrink) when the containing ( also called parent) widget is resized,  in this lecture, you'll : 

  • Learn the effects of some of the most common size policies on your widgets and how to set them
  • Learn the effects of size policy stretches on wigets contained in your layout
  • See easy to understand examples of how these two control points give  you greater flexibility in building your layouts.

QGridLayout is what it sounds like, lays out your widgets in a grid structure, In this lecture you'll : 

  • Learn how to set up a grid layout for y our widgets
  • Learn about the spanning concepts when you need a widget to occupy multiple cells in the grid.

Checkboxes and radiobuttons are a must have in UIs that require you to collect a set of choices from a user. This lecture explores and sheds some light on different ways you can use them, including : 

  • Laying them out in a groupbox
  • Grouping them in logical groups using QButtonGroup so you can apply a common property to them
  • Connect to their toggled signal and capture the checked state in your code
  • Set them programmatically when you need to
  • Grab all the data in your sets of radiobuttons and checkboxes as a result of some event happening ( button click) 

QList is one of the implementations of lists in Qt. It lets  you store objects in contiguous locations and gives you easy ways to grab  your data back when you need to. In this lecture, you'll : 

  • Declare your list of objects
  • Add data to it in different ways
  • Check on the number of items in your list
  • Loop through the elements of your list and use them in your code

The QComboBox widget is a combined button and popup list. You click on it and a list appears. You then can choose items from that list. In this lecture you'll get handy with this UI component, along the way , you'll : 

  • Add QCombBox component on the form
  • Add elements to in in code
  • Add elements to it as a result of an action on the ui
  • Delete elements from it
  • Let the user add elements to it at run time 
  • Loop through the elements inside and take action on them in your code

QListWidtet is a combined widget and list. It shows all the elements of the list in the widget without the need of popping them up like the combo box does. In this lecture, you'll get handy with this class and see it used in a more realistic way. You'll : 

  • Add a List Widget component to your UI
  • Add elements to it from the UI
  • Add elements in code
  • Delete elements
  • Select single/multiple elements in the list
  • Grab the selected elements in the list widget

QTabWidet allows to stuff different widgets in different tabs. This lecture will take you to a tour on this widget and different ways you can manipulate it. You will : 

  • Add relatively complex sets of layouts in different tabs of the tab widget
  • Add your own new tabs to the tab widget
  • Add your own new tabs and content FROM CODE
  • Respond to events like  you would in any other widget ( the tabwidget is just  a way to organize your widgets)

We have used menus before but we never really got to connect actions in the menu option to actions in the tool bars. This lecture aims at addressing that and lets you build a more realistic mini-text handling application. Along the way you will : 

  • Add menus to your main window
  • Add menu options to them
  • Add a resource file that will contain images icons to be used by your actions generated when you add menu options to your menus
  • Set icons to your actions
  • Add actions to the toolbar
  • Connect the triggered signal of your actions to appropriate slots for handling
  • Show status bar message and use QTimer to schedule a kill of your application
Working With Dialogs

Learn how to leverage QDialog to build your own dialog Classes

QDialog Part 2 of 2
QDialogButtonBox

Put QMessageBox in Context as a Dialog Class

Learn about different static methods  you might call on QFileDialog to help you choose files and directory paths in your file system

Learn how to let the user specify the fond they want to use for text shown in their widgets

Learn how to let the user choose colors in your Qt applications

Learn how to let the user choose one liner pieces of data in your Qt Applications

Working with Resources

Learn what the Qt resource system is all about, the syntax of it , prefixes and aliases.

Get to use image resources correctly in your Qt applications.

Styling your Qt Applications

An overview of how QStyle, QPalette and Style sheets can help in cooking up a custom look and feel for your Qt Application

QPalette used to control the colors of your widgets

Style Sheets used to control the look and feel of your Qt Applications

Style sheets used from external files in your resource files to keep things neat and organized.

Use style sheets to control more than just colors about the look and feel of your Qt Applications.

Working with Settings

See things you should be careful about when saving and loading your settings with QSettings

Get to use QSettings in your Qt applications by Saving and Loading your Colors.

Working with Files and Directories

Leverage the QFile Class to read from and write to external files.

Learn how to leverage QDir to manipulate directories in your Qt Applications.

Model View Architecture Framework
Introduction to the Model View Framework of Qt
Your first try on QModelIndexes
Working with QFileSystemModel
Working with QStandardItemModel
Working with QStringListModel
Building your Custom Model
Working with Roles in the Model
Notifying the view of Changes in the Model
Managing View Header Data
QStandardItem API and QSelectionModel
Working with Networks

See the classes at your service when working with Networks in Qt. It's all about choosing the right tool for the job

Learn the plumbing necessary to use QNetworkAccessManager and it's other helper classes to download stuff from the internet in your Qt Applications. Use these classes the right way.

Handling SSL Warnings/Errors when Downloading SSL Protected Data

Learn about JSON support in Qt and how to use the related Qt classes to consume JSON APIs in your Qt applications. We will download blog post JSON data , parse it and show content of our choice in our Qt Gui

Farewell and Next Steps
BONUS -Course List : Discounted!

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Suitable for those with any level of experience writing C++ GUI Applications
Develops the fundamentals of working with Qt to build C++ GUI Applications
Covers a wide range of Qt topics, including widget classes, dialog classes, and network capabilities
Provides hands-on labs and interactive materials for practical application of concepts
Taught by instructors with extensive experience in C++ GUI development

Save this course

Save Qt 5 C++ GUI Development For Beginners : The Fundamentals to your list so you can find it easily later:
Save

Reviews summary

Beginner-friendly qt gui

Learners say this is a well-received beginner course for GUI development in Qt and C++. It features engaging lectures and thorough instruction that is well-paced.
Great course for beginners.
"This instructor goes at my pace & is very through!"

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Qt 5 C++ GUI Development For Beginners : The Fundamentals with these activities:
Follow Qt's Official Tutorials
Qt's official tutorials provide a structured and interactive way to learn the basics of Qt. Following these tutorials will give you a strong foundation for building Qt applications.
Show steps
  • Visit the Qt documentation website.
  • Click on the 'Tutorials' tab.
  • Select a tutorial from the list, such as 'Creating Your First Qt Widget Application'.
  • Follow the instructions in the tutorial.
Join a Qt Study Group
Joining a study group will provide you with opportunities to discuss course material, ask questions, and learn from your peers.
Show steps
  • Find a Qt study group online or in your local area.
  • Attend study group meetings regularly.
  • Participate in discussions and ask questions.
Practice Writing Signals and Slots
Writing signals and slots is central to Qt GUI programming. Practice with this activity will improve your understanding of the concepts and solidify your skills.
Browse courses on Signals and Slots
Show steps
  • Create a new Qt Widgets application.
  • Add two QPushButton widgets to the main window.
  • Connect the clicked() signal of each button to a slot in your main window class.
  • Implement the slot methods to display a message when each button is clicked.
Three other activities
Expand to see all activities and additional details
Show all six activities
Build a Simple Qt GUI Calculator
Building a simple calculator will give you hands-on experience with the Qt Widgets API, layouts, and signals and slots.
Show steps
  • Create a new Qt Widgets application.
  • Add a QGridLayout to the main window.
  • Add QPushButton widgets to the layout for each digit and operator.
  • Connect the clicked() signal of each button to a slot in your main window class.
  • Implement the slot methods to perform the appropriate calculations and display the result.
Solve Qt Code Challenges
Solving Qt code challenges will test your understanding of Qt concepts and help you develop your problem-solving skills.
Show steps
  • Find a Qt code challenge website or repository.
  • Select a challenge that is appropriate for your skill level.
  • Attempt to solve the challenge on your own.
  • Compare your solution to the provided solution.
Mentor New Qt Developers
Mentoring others can help you solidify your own understanding of Qt concepts while also contributing to the Qt community.
Show steps
  • Identify a new Qt developer who is seeking mentorship.
  • Set up regular meetings to provide guidance and support.
  • Review their code and provide feedback.
  • Answer their questions and help them overcome challenges.

Career center

Learners who complete Qt 5 C++ GUI Development For Beginners : The Fundamentals will develop knowledge and skills that may be useful to these careers:
Qt Developer
A Qt Developer designs and develops Qt applications across multiple platforms, working in either a front-end or back-end capacity. Designing the user interface with a focus on functionality and usability is a major component of this role. Qt Developer often work in teams of other programmers and interact with designers and external stakeholders. They must balance performance with other factors such as memory usage, scalability, and reliability. A course on Qt 5 C++ GUI Development provides a strong foundation in the fundamentals of designing and developing Qt applications. It goes through the process of setting up one's environment, the basics of the C++ programming language, and building a GUI application from scratch. The course includes a tour of the Qt Resource System and how it can be used to manage resources and build cross-platform applications.
UI Developer
A UI Developer is focused on designing and developing the user interface of an application or software product. They work closely with user experience designers to bring a functional and aesthetically pleasing interface to life. UI Developers typically use a variety of tools and technologies to create user interfaces, including Qt. The Qt 5 C++ GUI Development course may be useful for someone interested in this career.
Front-End Developer
Front-End Developers are responsible for the design and development of the user-facing side of a website or application. They work on the client-side, using a variety of programming languages and technologies, including Qt, to create interactive user interfaces and ensure a positive user experience. The Qt 5 C++ GUI Development course may be useful for someone interested in this career.
Software Engineer
Software Engineers apply engineering principles and computer science theory to design, develop, maintain, and test software systems. They work on a variety of projects, from small-scale applications to large-scale enterprise systems. Software Engineers typically have a strong foundation in computer science and programming languages, including Qt. The Qt 5 C++ GUI Development course may be useful for someone interested in this career.
Full-Stack Developer
Full-Stack Developers are responsible for the design and development of both the front-end and back-end of a website or application. They work on both the client-side and server-side, using a variety of programming languages and technologies, including Qt, to create interactive user interfaces and ensure a positive user experience. The Qt 5 C++ GUI Development course may be useful for someone interested in this career.
Web Developer
Web Developers are responsible for the design and development of websites and web applications. They work on the client-side, using a variety of programming languages and technologies, including Qt, to create interactive user interfaces and ensure a positive user experience. The Qt 5 C++ GUI Development course may be useful for someone interested in this career.
Mobile Developer
Mobile Developers are responsible for the design and development of mobile applications. They work on both iOS and Android platforms, using a variety of programming languages and technologies, including Qt, to create interactive user interfaces and ensure a positive user experience. The Qt 5 C++ GUI Development course may be useful for someone interested in this career.
Embedded Systems Engineer
Embedded Systems Engineers are responsible for the design and development of embedded systems, which are computer systems that are designed to perform a specific task or set of tasks. They work on a variety of projects, from small-scale devices to large-scale systems. Embedded Systems Engineers typically have a strong foundation in computer science and programming languages, including Qt. The Qt 5 C++ GUI Development course may be useful for someone interested in this career.

Reading list

We've selected eight books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Qt 5 C++ GUI Development For Beginners : The Fundamentals.
Is an introduction to Qt programming and the C++ programming language. It is recommended for those new to Qt and C++, and for those who wish to learn more about the C++ programming language. The book covers the basics of Qt programming, including the Qt framework, the Qt Creator IDE, and the Qt widget library. It also covers the basics of the C++ programming language, including variables, data types, control flow, and functions.
Provides an in-depth exploration of the Boost C++ libraries, which are widely used in Qt development for tasks such as networking, concurrency, and data structures.
Is written for beginners to Qt 5. It covers a wide range of topics, including the Qt framework, the Qt Creator IDE, and the Qt widget library.
Provides a thorough introduction to the Qt framework and its use in developing C++ GUI applications. It covers the basics of Qt, including its architecture, widgets, and signals and slots, as well as more advanced topics such as model-view programming and network programming.
Is literally and figuratively to the point, with each chapter introducing a new core Qt concept. It provides information in an easy-to-understand format, progressing from the basics of creating a window, to programming Qt components, and finally to more advanced concepts such as database access, networking, internationalization, and deployment.
Provides a comprehensive overview of Qt 4, including its architecture, widgets, and signals and slots. It also covers more advanced topics such as model-view programming and network programming.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Here are nine courses similar to Qt 5 C++ GUI Development For Beginners : The Fundamentals.
Qt 5 C++ GUI Development - Intermediate
Most relevant
Introduction to Qt 5.2: A C++ Cross Platform Application...
Most relevant
Integrating Qt Quick 5 with C++
Most relevant
Python Desktop Application Development
Most relevant
Python GUI Programming Recipes using PyQt5
Most relevant
Create a JavaFX GUI with radio buttons and check boxes
Building and Deploying Applications with Cake
Building Cross-platform Mobile Apps in C# with Xamarin...
Beginner’s Guide to ComfyUI with Stable Diffusion
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2024 OpenCourser