We may earn an affiliate commission when you visit our partners.
Course image
Frahaan Hussain

Learn about everything there is to know about Linux Bash Scripting. A step by step process is used to explain every facet of these topics.

NOTE: This course includes information on application programming and design.

Read more

Learn about everything there is to know about Linux Bash Scripting. A step by step process is used to explain every facet of these topics.

NOTE: This course includes information on application programming and design.

Gain a good understanding of the following concepts with this course:

  1. What Bash scripting is?

  2. Linux Certifications

  3. How to develop using the Linux programming language

  4. Features of the Linux programming language

  5. Coding semantics

  6. Application programming

  7. Network programming

Linux is the most popular platform in the world. These platforms are developed for by all companies such as Google, Facebook and Microsoft for mobile development. This course will ensure you are not left out as more and more companies request this awesome and powerful language. This course will teach you everything about programming Linux applications.

You will receive all the knowledge to use and leverage the powerful technology behind these amazing and wonderful platforms.

Over 400,000 students have enrolled on my courses and all of them are extremely satisfied. You will also be satisfied with this course. If you do not like the course, remember that within 30 days you can request a full refund. I guarantee you satisfaction.

If you have any questions regarding the topics covered in this course, please feel free to ask. I'm always happy to help those who want to learn.

To summarise this is what you get:

• Lifetime access to HD quality videos. No monthly subscription. Learn at your own pace, whenever you want.

• All videos are downloadable. Learn wherever you want, even without an internet connection.

• Downloadable starter code and final code for each section.

• Free helpful support in the course Q&A when you have questions or get stuck.

• Multiple coding challenges to practice your new skills (solutions included).

Sounds great? Then start this adventure today by clicking the “Take this course" button, and join me in the only Linux Programming course that you will need.

Enroll now

What's inside

Learning objectives

  • Bash scripting
  • Linux programming
  • Shell scripting
  • Application programming
  • Scripting
  • Cross platform development
  • Terminal commands
  • Unix commands
  • Command prompts
  • Semantics of general programming
  • The format of coding applications
  • All the features of bash scripting
  • Show more
  • Show less

Syllabus

Introduction

Course introduction

Learn about the differences between Bash, Shell, Command Line and Terminal.

Learn about navigating your computer using the command line
Read more

Whenever it's required to take a look at the contents of a directory on the command line in Linux, ls is the command that's used. It lists the contents sorted in alphabetical order.

The pwd command, like ls and cd, is one of the most frequently used Linux utilities. Regardless of the kind of user you are (newbie or pro), you'll find yourself using this command line tool a lot. So in this tutorial, we will quickly discuss the basics of pwd through some easy to understand examples.

The cd command is one of the most frequently used commands in Linux, as it's used to change directories (one of the most basic command line operations). While most users restrict themselves to the basic usage of cd, there are many other features the tool provides.

The pushd command stores a directory path in the directory stack while the popd command removes the top directory path from the same stack. In addition, both these commands make the directory being working on as your new working directory.

While working on the Linux command line, there may be times when you'd encounter a file which is an archive (say a .zip file), but its extension (or lack of it) would suggest otherwise. It's in times like these, the file command proves helpful as it lets you determine the actual file type.

While find is no doubt one of the most popular as well as powerful command line utilities for file searching in Linux, it not fast enough for situations where-in you need instantaneous results. If you want to search a file on your system through the command line, and speed is the top most priority, then there's another command that you can use: Locate.

The which command in Linux lets users know about the absolute path of command line tools.

If your work involves running tools and scripts on the Linux command line, I am sure there are a lot of commands you would be running each day. Those new to the command line should know there exists a tool - dubbed history - that gives you a list of commands you've executed earlier.

Time to test your knowledge on navigation

You will learn about finding helpful information for commands

Man pages are one of the most useful resources when it comes to understanding command line utilities. A man page, however, contains a lot of details about the command. There may be times when you'd want to quickly know - may be in a small line or so - what a command line tool does. Well, you'll be glad to know there exists a command that's specifically built for this purpose.

In Linux, if you ever need help regarding a command, all you need to do is to open its man page. But what if a situation arises wherein the requirement is to quickly search the names and descriptions of all available man pages? Well, Linux has got your covered, as there exists a command dubbed apropos that does exactly this for you.

A very useful aspect of the Linux command line is that the documentation for almost all command line tools is easily accessible. These documents are known as man pages, and you can easily access them through the command line using the man command.

Time to test your knowledge on getting help for commands

You will learn about handling files and folders

At any given time on the command line, you are in a directory. So it speaks for itself how integral directories are to the command line. In Linux, while the rm command lets you delete directories, it's the mkdir command that allows you create them in the first place.

Sometimes, while working on the command line in Linux, you might want to create a new file. Or, there may be times when the requirement is to change the timestamps of a file. Well, there exists a utility that can you can use in both these scenarios. The tool in question is touch, and in this tutorial, we will understand its basic functionality through easy to understand examples.

If you are new to Linux, it's worth knowing that command line is a very powerful tool, capable of doing almost all those tasks that you can do through the graphical interface. However, more often than not, you'll find yourself doing simple tasks on the command line. One such simple task is to copy files/directories.

Just like cp for copying and rm for deleting, Linux also offers an in-built command for moving and renaming files. It's called mv. In this article, we will discuss the basics of this command line tool using easy to understand examples.

Deleting files is a fundamental operation, just like copying files or renaming/moving them. In Linux, there's a dedicated command - dubbed rm - that lets you perform all deletion-related operations. In this tutorial, we will discuss the basics of this tool along with some easy to understand examples.

So we've already discussed the rm command that's primarily used for deleting files and directories from the Linux command line. However, there's another, related command line utility that is specifically aimed at removing directories. The tool in question is rmdir, and in this tutorial, we will discuss the basics of it using some easy to understand examples.

There are times when you create, say, a bash script on your Linux machine. But when you try running it, you get a permission error. What do you do? Simple, assuming you're on Ubuntu, right click on the file's icon, go to the 'Permissions' tab, and enable the 'Allow executing file as program' option.

Time to test your knowledge on working files

You learn about handling files

If you a regular Linux command line user, I am sure you must have used the cat command. The tool is mostly used for displaying contents of a file, although it provides many other small but useful features. In this article, we will discuss the cat command in detail, explaining some of its key features.

Sometimes, while working on the command line, you'll see outputs produced by commands in certain cases are so large that they don't fit into the screen area, and hence, you get to see only the last part of the output (as the initial part scrolls past the screen). Thankfully, there are utilities that are specifically designed to help you in such cases.

GNU nano is a text editor for Unix-like computing systems or operating environments using a command line interface. It emulates the Pico text editor, part of the Pine email client, and also provides additional functionality. Unlike Pico, nano is licensed under the GNU General Public License.

Time to test your knowledge of using text files

You will learn about handling users

Sudo (superuser do) is a utility for UNIX- and Linux-based systems that provides an efficient way to give specific users permission to use specific system commands at the root (most powerful) level of the system. Sudo also logs all commands and arguments.

The main work of the su command is to let you switch to some other user during a login session. In other words, the tool lets you assume the identity of some other user without having to logout and then login (as that user).

If you are new to system administration in Linux, you'll gradually learn that user management is an important aspect of your work. The Linux command line offers several command-line utilities for this purpose, and one of them is the id command.

Time to test your knowledge on users

You will learn about killing programs and logging out

Ctrl + C is the interrupt signal. When you type this in a terminal, bash sends SIGINT to the job in the foreground.

We've already discussed the kill command that you can use in case you want to terminate processes in Linux. However, there exists another command line utility that you can use for the same purpose: killall. In this tutorial, we will discuss the basics of this command using some easy to understand examples.

If you are a Linux newbie, and your work involves doing stuff through the command line, then it goes without saying that you must be spending a lot of time on the terminal window. As you'd likely agree, there are some commands that we tend to use very frequently, like ls, cp, and rm. However, there are some others that are comparatively less used. In this tutorial, we will discuss one such, less frequently used command: Exit.

Time to test your knowledge for ending programs and logging out.

You will learn about using shortcuts

Ctrl D tells the terminal that it should register a EOF on standard input, which bash interprets as a desire to exit. Ctrl + D ( ^D ) means end of file.

Learn how to reduce clutter and clear the bash terminal screen.

Learn how to zoom in on the bash terminal.

Learn how to zoom out in the bash terminal.

Learn about moving the cursor in the terminal for advanced navigation.

Learn about deleting text in the bash terminal.

Learn about fixing typos in the bash terminal.

Learn about cutting and pasting in the bash terminal.

Learn about capitalising characters in the bash terminal.

Time to test your knowledge on shortcuts

Learn about creating Bash scripts

Learn about the basic structure of a bash file.

In computing, echo is a command that outputs the strings it is being passed as arguments. It is a command typically used in shell scripts and batch files to output status text to the screen or a computer file, or as a source part of a pipeline.

You should be aware of the fact that you might not be the only person reading your code. A lot of users and system administrators run scripts that were written by other people. If they want to see how you did it, comments are useful to enlighten the reader.

Comments also make your own life easier. Say that you had to read a lot of man pages in order to achieve a particular result with some command that you used in your script. You won't remember how it worked if you need to change your script after a few weeks or months, unless you have commented what you did, how you did it and/or why you did it.

A variable in bash can contain a number, a character, a string of characters. You have no need to declare a variable, just assigning a value to its reference will create it.

In computer programming, a string is traditionally a sequence of characters, either as a literal constant or as some kind of variable. The latter may allow its elements to be mutated and the length changed, or it may be fixed (after creation). A string is generally considered as a data type and is often implemented as an array data structure of bytes (or words) that stores a sequence of elements, typically characters, using some character encoding. String may also denote more general arrays or other sequence (or list) data types and structures.

In most computer programming languages, a while loop is a control flow statement that allows code to be executed repeatedly based on a given Boolean condition. The while loop can be thought of as a repeating if statement.

In computer science, a for-loop (or simply for loop) is a control flow statement for specifying iteration, which allows code to be executed repeatedly.

Use DO UNTIL loops when a condition is not true and you want to execute the loop until the condition is true. The DO UNTIL loop tests the condition at the end of the loop and repeats only when the condition is false. Otherwise the loop executes once and ends.

When a break statement is encountered, it terminates the block and gets the control out of the switch or loop. When a continue statement is encountered, it gets the control to the next iteration of the loop. A break causes the innermost enclosing loop or switch to be exited immediately.

User Input is one of the most important aspects of programming concepts. Every program should have some sort of user interaction, from getting a character's name for a game to asking for a password to log into a database.

IF Statement is one of the most popular instructions among the Decision Making statements. IF Statement gives the desired intelligence to a program, so that it can take decisions based on a criteria and most importantly decide the program flow.

CASE Statement. The CASE statement chooses from a sequence of conditions, and executes a corresponding statement. The CASE statement evaluates a single expression and compares it against several potential values, or evaluates multiple Boolean expressions and chooses the first one that is TRUE.

Command line argument is a parameter supplied to the program when it is invoked.Command line argument is an important concept in programming. It is mostly used when you need to control your program from outside.

In programming, a named section of a program that performs a specific task. In this sense, a function is a type of procedure or routine. Some programming languages make a distinction between a function, which returns a value, and a procedure, which performs some operation but does not return a value.

Global variables are declared outside any function, and they can be accessed (used) on any function in the program. Local variables are declared inside a function, and can be used only inside that function. It is possible to have local variables with the same name in different functions.

In computer programming, an array is a set of data elements stored under the same name. Arrays can be created to hold any type of data, and each element can be individually assigned and read. There can be arrays of numbers, characters, sentences, boolean values, and so on.

Environment variables such as $SHELL are valid systemwide. In a current Bash shell, $BASH points to the execution path of bash, whereas $SHELL points to the shell defined as default (which may be of the same value). For an explanation of environment variables see Environment Variables in Ubuntu Help.

Their primary purpose is to generate build artifacts through activities like compiling and linking source code. Build-automation servers. These are general web based tools that execute build-automation utilities on a scheduled or triggered basis; a continuous integration server is a type of build-automation server.

Aliases. A Bash alias is essentially nothing more than a keyboard shortcut, an abbreviation, a means of avoiding typing a long command sequence. If, for example, we include alias lm="ls -l. more" in the ~/.bashrc file, then each lm [1] typed at the command-line will automatically be replaced by a ls -l.

Alternatively referred to as a wild character or wildcard character, a wildcard is a symbol used to replace or represent one or more characters. The most common wildcards are the asterisk (*), which represents one or more characters and question mark (?) that represents a single character.

Using Multiple Commands. Linux allows you to enter multiple commands at one time. The only requirement is that you separate the commands with a semicolon. Running the combination of commands creates the directory and moves the file in one line.

Time to test your knowledge of Bash

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Develops Bash Scripting and application programming, which are core skills for Linux programming
Taught by Frahaan Hussain, who are recognized for their work in Bash scripting
Examines Bash Scripting, which is highly relevant to Linux programming
Offers hands-on labs and interacive materials
Builds a strong foundation for beginners in Linux programming
Takes a creative approach to an otherwise established topic, field, or subject

Save this course

Save Bash Scripting, Linux and Shell Programming Complete Guide to your list so you can find it easily later:
Save

Reviews summary

Highly recommended bash scripting guide

Learners say this Bash Scripting, Linux and Shell Programming course is well-structured, easy to understand, and perfect for beginners. The instructor, Sal, is praised for her engaging and clear delivery. Students appreciate Sal's personal anecdotes and real-life examples and report feeling like she is teaching one-on-one. Students highly recommend this course.
Bite-Sized and Well-Organized
"I like the segmented nature of Sal’s approach; bite size nuggets of information."
"She makes the material engaging and easy to understand."
"The course is good, profound knowledge."
Engaging and Easy to Understand
"very interesting, easy to follow, easy to understand."
"Sal Jade teaches every aspect of the deck, leaving nothing out"
"Sal's background as a teacher really shows in the way she structures her courses and in the way she produces the content."
Best for Beginners
"Loved the course. It was easy to learn as I am a beginner."
"Easy to understand for beginners."
"it is absolutely great! I am a total beginner and the explanations are great to understand the tarot clearly!"

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 Bash Scripting, Linux and Shell Programming Complete Guide with these activities:
Review Basic Linux Commands
Revisiting the basics of Linux commands will strengthen your foundation and make it easier to understand Bash scripting concepts.
Browse courses on Linux Commands
Show steps
  • Go through a beginner-friendly Linux commands tutorial or course.
  • Practice using the commands in a terminal window.
  • Refer to the Linux command man pages for detailed information.
Review the basics of bash scripting
Refresh your memory on the fundamentals of bash scripting before starting the course.
Browse courses on Bash Scripting
Show steps
  • Read through your notes from a previous bash scripting course or tutorial.
  • Watch a refresher video on the basics of bash scripting.
  • Take a practice quiz on bash scripting basics.
Compile a List of Useful Bash Scripting Resources
Creating a collection of valuable Bash scripting resources will provide you with a central repository of helpful materials.
Show steps
  • Search for and gather Bash scripting tutorials, documentation, and other resources.
  • Organize and categorize the resources into a list.
  • Share your list with other learners or publish it online.
11 other activities
Expand to see all activities and additional details
Show all 14 activities
Follow a Bash Scripting Course on Coursera or Udemy
Following a comprehensive Bash scripting course will provide you with a structured learning experience and access to expert guidance.
Show steps
  • Choose a reputable course on Coursera or Udemy.
  • Set aside dedicated time each week to work through the course material.
  • Complete all assignments and exercises.
Learn about bash scripting basics
Solidify your understanding of the fundamentals of bash scripting.
Browse courses on Bash Scripting
Show steps
  • Watch a tutorial on the basics of bash scripting.
  • Read the documentation for the bash command.
  • Practice writing simple bash scripts.
Practice writing bash scripts
Reinforce your understanding of bash scripting syntax and semantics.
Browse courses on Bash Scripting
Show steps
  • Find a coding challenge website or book.
  • Solve as many bash scripting challenges as you can.
  • Review your solutions and identify areas for improvement.
Join a Study Group or Online Community for Bash Scripting
Engaging with other learners and experts in a study group or online community will provide you with opportunities to ask questions, share knowledge, and practice your skills.
Show steps
  • Search for Bash scripting study groups or online communities.
  • Join a group that aligns with your learning goals and availability.
  • Actively participate in discussions and activities.
Automate a Task Using Bash Scripting
Automating a task using Bash scripting will allow you to apply your skills to a practical problem and experience the benefits of scripting firsthand.
Show steps
  • Identify a repetitive or time-consuming task that you can automate.
  • Design and develop a Bash script to automate the task.
  • Test and refine your script until it runs smoothly.
Practice Writing Bash Scripts
Writing Bash scripts repeatedly will strengthen your understanding of the syntax and semantics of the language.
Show steps
  • Find a beginner-friendly Bash tutorial or course.
  • Follow along with the tutorial or course, writing out the scripts by hand.
  • Once you have a good understanding of the basics, try writing your own scripts.
Follow a Tutorial on Advanced Bash Scripting Techniques
Exploring advanced Bash scripting techniques will broaden your knowledge and enable you to write more sophisticated scripts.
Show steps
  • Find a tutorial or course on advanced Bash scripting techniques.
  • Follow along with the tutorial or course, taking notes and practicing the techniques.
  • Experiment with the techniques in your own scripts.
Write a blog post or article about bash scripting
Demonstrate your understanding of bash scripting by creating a resource for others.
Browse courses on Bash Scripting
Show steps
  • Choose a topic related to bash scripting that you are knowledgeable about.
  • Write a blog post or article that explains the topic clearly and concisely.
  • Publish your blog post or article online.
Build a Bash Script-Based Project
Working on a project that requires you to apply your Bash scripting skills in a practical setting will solidify your understanding and enhance your problem-solving abilities.
Show steps
  • Identify a problem or task that can be solved or automated using Bash scripting.
  • Design and develop a Bash script-based solution.
  • Test and debug your script.
  • Document your project and share it with others.
Write a Blog Post or Article on Bash Scripting
Writing a blog post or article about Bash scripting will force you to synthesize your knowledge and share it with others, deepening your understanding.
Show steps
  • Choose a topic related to Bash scripting that you are knowledgeable about.
  • Research and gather information on the topic.
  • Organize your thoughts and write a well-structured article.
Build a small project using bash scripting
Apply your bash scripting skills to solve a real-world problem.
Browse courses on Bash Scripting
Show steps
  • Identify a problem that can be solved using bash scripting.
  • Design and implement a bash script to solve the problem.
  • Test and debug your bash script.
  • Deploy your bash script and make it available to others.

Career center

Learners who complete Bash Scripting, Linux and Shell Programming Complete Guide will develop knowledge and skills that may be useful to these careers:
Systems Administrator
Manage and maintain computer systems and networks. Knowledge of Bash scripting, the Linux operating system, and network programming is essential for this role. This course will help you gain the necessary knowledge and skills to succeed as a Systems Administrator by providing a comprehensive understanding of these topics.
Computer Systems Analyst
Analyze computer systems to detect and resolve hardware and software issues. Knowledge of Bash scripting, the Linux operating system, and network programming is essential for this role. This course will help you gain the necessary knowledge and skills to succeed as a Computer Systems Analyst by providing a comprehensive understanding of these topics.
Network Administrator
Manage and maintain computer networks. Knowledge of Bash scripting, the Linux operating system, and network programming is essential for this role. This course will help you gain the necessary knowledge and skills to succeed as a Network Administrator by providing a comprehensive understanding of these topics.
Network Engineer
Design, implement, and maintain computer networks. Knowledge of Bash scripting, the Linux operating system, and network programming is essential for this role. This course will help you gain the necessary knowledge and skills to succeed as a Network Engineer by providing a comprehensive understanding of these topics.
Cloud Engineer
Design, implement, and maintain cloud computing solutions. Knowledge of Bash scripting, the Linux operating system, and network programming is essential for this role. This course will help you gain the necessary knowledge and skills to succeed as a Cloud Engineer by providing a comprehensive understanding of these topics.
Application Architect
Design and develop the architecture of software applications. Knowledge of Bash scripting, the Linux operating system, and network programming is essential for this role. This course will help you gain the necessary knowledge and skills to succeed as an Application Architect by providing a comprehensive understanding of these topics.
Web Developer
Design and develop websites. Knowledge of Bash scripting, the Linux operating system, and network programming is essential for this role. This course will help you gain the necessary knowledge and skills to succeed as a Web Developer by providing a comprehensive understanding of these topics.
Information Security Analyst
Analyze computer systems and networks for security vulnerabilities and threats. Knowledge of Bash scripting, the Linux operating system, and network programming is essential for this role. This course will help you gain the necessary knowledge and skills to succeed as an Information Security Analyst by providing a comprehensive understanding of these topics.
DevOps Engineer
Combine software development and operations to improve the efficiency and reliability of software delivery. Knowledge of Bash scripting, the Linux operating system, and network programming is essential for this role. This course will help you gain the necessary knowledge and skills to succeed as a DevOps Engineer by providing a comprehensive understanding of these topics.
Security Analyst
Analyze computer systems and networks for security vulnerabilities and threats. Knowledge of Bash scripting, the Linux operating system, and network programming is essential for this role. This course will help you gain the necessary knowledge and skills to succeed as a Security Analyst by providing a comprehensive understanding of these topics.
Computer Programmer
Design, develop, and maintain computer programs and applications. This course will help you gain the necessary knowledge and skills to succeed as a Computer Programmer by providing a comprehensive understanding of Bash scripting, the Linux operating system, and network programming.
Software Engineer
Design, develop, and maintain software applications. This course will help you gain the necessary knowledge and skills to succeed as a Software Engineer by providing a comprehensive understanding of Bash scripting, the Linux operating system, and network programming.
IT Manager
Manage and oversee the information technology department of an organization. Knowledge of Bash scripting, the Linux operating system, and network programming is essential for this role. This course will help you build a foundation in these areas by providing a comprehensive understanding of the topics.
Database Administrator
Design, implement, and maintain databases. Knowledge of Bash scripting and the Linux operating system is essential for this role. This course will help you build a foundation in these areas by providing a comprehensive understanding of the topics.
Data Analyst
Analyze data to identify trends and patterns. Knowledge of Bash scripting and the Linux operating system is essential for this role. This course will help you build a foundation in these areas by providing a comprehensive understanding of the topics.

Reading list

We've selected nine 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 Bash Scripting, Linux and Shell Programming Complete Guide.
Classic guide to advanced programming in the Unix environment. It covers a wide range of topics including system calls, file systems, and network programming. It good choice for experienced programmers who want to learn more about advanced programming in the Unix environment.
Classic guide to Unix programming. It covers a wide range of topics including shell programming, system programming, and network programming. It good choice for experienced programmers who want to learn more about Unix programming.
Comprehensive guide to the Linux programming interface. It covers a wide range of topics including system calls, file systems, and network programming. It good choice for experienced programmers who want to learn more about the Linux programming interface.
Comprehensive guide to advanced Bash scripting techniques. It covers topics such as shell functions, arrays, and regular expressions. It is recommended for experienced Bash users who want to take their scripting skills to the next level.
Comprehensive guide to Linux system programming. It covers a wide range of topics including system calls, file systems, and network programming. It good choice for experienced programmers who want to learn more about Linux system programming.
Comprehensive guide to shell programming. It covers a wide range of topics including shell basics, shell scripting, and advanced shell programming. It good choice for experienced shell users who want to learn more about advanced shell programming techniques.
Provides a comprehensive overview of the Linux command line. It covers a wide range of topics including file management, text processing, and system administration. It good choice for beginners who want to learn more about the Linux command line.
Covers the basics of the Bash shell with a focus on practical examples and hands-on exercises. It good choice for beginners who want to learn the fundamentals of Bash scripting.
Compact and easy-to-use guide to the Linux command line. It provides quick reference to a wide range of commands and utilities. It good choice for beginners and experienced users alike who want a quick and handy reference to the Linux command line.

Share

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

Similar courses

Here are nine courses similar to Bash Scripting, Linux and Shell Programming Complete Guide.
Bash Shell Scripting Tutorial for Beginners
Most relevant
Create Python Linux Script to Generate a Disk Usage Report
Most relevant
The Bash Shell and Basic Scripting in Linux
Most relevant
Bash Scripting and Shell Programming (Linux Command Line)
Most relevant
Bash Shell Scripting: From Zero To Automation
Most relevant
Linux: Introduction to Shell Scripting for DevOps
Most relevant
Scripting for Security with Bash
Most relevant
Linux and Bash for Data Engineering
Most relevant
Shell Scripting: Discover How to Automate Command Line...
Most relevant
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