We may earn an affiliate commission when you visit our partners.
Jens Schendel

You are invited on an exciting journey where you will learn, with guidance, to use Google's GO programming language to develop modern web applications that are highly scalable in both depth and scope. You'll take advantage of the extraordinary capabilities GO holds for full-stack developers to build all sorts of server/client-based applications.

This course is intended as a rich resource for learning programming basics as well as concepts in general and developing modern and fast web application with Google's GO (golang) programming language in particular - a comprehensive learning experience.

Read more

You are invited on an exciting journey where you will learn, with guidance, to use Google's GO programming language to develop modern web applications that are highly scalable in both depth and scope. You'll take advantage of the extraordinary capabilities GO holds for full-stack developers to build all sorts of server/client-based applications.

This course is intended as a rich resource for learning programming basics as well as concepts in general and developing modern and fast web application with Google's GO (golang) programming language in particular - a comprehensive learning experience.

The easiest way to learn new programming techniques and modern concepts in software design is to apply them using real-life examples. In this course you will learn how to plan, implement, test, debug and finally install a modern web application - a homepage for renting out bungalows as vacation homes - on a web server.

You will learn about the advantages of the GO programming language and, on the way to a working application, how to integrate other elements such as SQL/PostgreSQL databases, JavaScript (client-side and server-side), AJAX techniques

Besides programming in GO, this course also deals with

  • HTML5 / CSS / DOM

  • JavaScript (Vanilla, without jQuery dependence)

  • SQL / PostgreSQL

  • Migrations / FIZZ

  • JSON

  • Routes, Handlers, Models

  • Tests, Error Handling

  • Linux (bash), Windows (Command Line), macOS (bash)

  • git / github

  • Installation on a webserver

  • and much more

While suitable for beginners with basic programming experience, it is designed to be a resource for fairly advanced developers. It's filled with examples, explanations, and clarifications of concepts needed to develop modern, fast and secure web applications, and comes with a code repository on Github and a detailed course outline as PDF, which serves as part of the course.

Included external packages an dependencies:

  • go-chi | Router

  • scs | Sessions

  • nosurf | CSRF-Token

  • govalidator | Validator (server-sided)

  • pgx/v5 | PostgreSQL Driver & Toolkit

  • go-simple-mail | Golang package for sending e-mail

  • Caddy 2 | a powerful, enterprise-ready, open source web server with automatic HTTPS written in GO

Also playing a part:

  • bootstrap | Bootstrap - You can learn at your own pace and return to content at any time for deeper insights or to learn additional concepts when you are ready.

    • This course also comes with a 100% money back guarantee.

    • I think this is one of the most comprehensive courses in English for developing modern, fast, and secure web applications from scratch.

    • And if for some reason the course doesn't work for you, you can get a full refund within the first 14 days*.

    Enroll now.

    You can get great value from this course and, more importantly, you'll have a great time learning one of the best programming languages ever - the GO programming language, the fastest growing programming language with the highest paid programmers in the US within the last years.

    GO is an open-source programming language that makes it easy to develop simple, reliable, and efficient software.

    GO was developed by computer science luminaries at one of the best, if not the best, software development companies ever - Google. The design and implementations are by Robert Griesemer, Rob Pike and Ken Thompson.

    GO is a very good choice for learning a programming language because it was developed by some of the same people who created the C programming language, Unix, and UTF-8 - some of the most influential contributions to computer science. With GO Robert Griesemer, Rob Pike, and Ken Thompson created a modern programming language that can easily run on multiple processors in parallel, works smoothly in different environments, and makes it easy for programmers to write programs with a very streamlined and user-friendly syntax.

    Why did Google develop a new programming language?

    In Google's words, "GO was born out of frustration with existing languages and environments for systems programming. Programming had become too difficult and the choice of languages was partly to blame. One had to choose either

    • efficient compilation,

    • efficient execution, or

    • ease of programming;

    all three were not available in the same mainstream language. Programmers who could were choosing ease over safety and efficiency by moving to dynamically typed languages such as Python and JavaScript rather than C++ or, to a lesser extent, Java. GO is an attempt to combine the ease of programming of an interpreted, dynamically typed language with the efficiency and safety of a statically typed, compiled language. It also aims to be modern, with support for networked and multicore computing.

    Finally, working with GO is intended to be fast: it should take at most a few seconds to build a large executable on a single computer. To meet these goals required addressing a number of linguistic issues: an expressive but lightweight type system; concurrency and garbage collection; rigid dependency specification; and so on. These cannot be addressed well by libraries or tools; a new language was called for."

    Learn with me the advantages in web programming of one of the best programming languages ever developed. You will get knowledge, ideas, concepts, inspiration and code examples to design software and applications yourself according to your wishes.* Check Udemy's Terms and Conditions for details.

Enroll now

What's inside

Learning objectives

  • How to build modern, fast, and secure web applications in google's go programming language
  • How to code your programs in the go (golang) programming language
  • How to organize your application in go while developing correctly
  • Integrate 3rd party packages with go modules
  • Write plain javascript without depending on something like jquery
  • Creating html pages using html5
  • Creation and usage of cascading style sheets (css)
  • How to write tests in go
  • Brief insight in creating entity relationship diagrams
  • Using "migrations" (and fizz) to build a develpoing environment for a postgresql database
  • How to setup and connect to a postgresql database (server) in go
  • Managing sessions in go
  • Learn best practices for security in web applications
  • Create and use of middleware in go
  • Implementation of secure user authentication in go
  • Deployment of a go web application to a real server
  • Setup of caddy 2 as reverse proxy with https
  • Many other competencies a full-stack developer should have
  • Show more
  • Show less

Syllabus

Introduction the lecturer, Google's Go, the Course itself and an IDE
Allow Me To Introduce Myself - The “whoami” For Udemy Courses

A brief overview why Go is one of the best programming languages to learn today and why it is makes a perfect choice for a web application.

Read more

The title says it all, we install Go and set up Visual Studio Code as an integrated development environment (IDE).

TL;DR;

Use the accompanying course overview as PDF. It is part of the the course.

Don’t skip lectures if you’re not sure you know the content.

Typing, not copying, is the path to success!

This Course comes with a PDF which sees itself as an accompanying part of the courses.

An brief overview over the course for you to get a first impression of what awaits you.

A brief list of useful sources to learn about Google's programming language GO.

The following list can be downloaded with included links in the form of a PDF in the resources for this lesson and is also included in the PDF that comes with the course.

About GO

  • GO Website

  • The GO Playground

  • GO’s Standard Library

  • GO Packages

  • GO Specifications

  • GoByExample

Integrated Development Environment (IDE)

  • Visual Studio Code

Included external packages an dependencies:

  • go-chi | Router

  • scs | Sessions

  • nosurf | CSRF-Token

  • govalidator | Validator (server-sided)

  • pgx/v5 | PostgreSQL Driver & Toolkit

  • go-simple-mail | Golang package for sending e-mail

  • Caddy 2 | a powerful, enterprise-ready, open source web server with automatic HTTPS written in GO

Also playing a part:

  • bootstrap | Bootstrap - HTML, CSS, and JavaScript framework (no jQuery)

  • RoyalUI-Free-Bootstrap-Admin-Template | Free Bootstrap 4 Admin Template

  • Simple-DataTables | DataTables but in TypeScript transpiled to Vanilla JS

  • postgres | PostgreSQL Server (mirror only)

  • pop | Soda/Migrations - standardization of database tasks

  • dbeaver | Dbeaver - free multi-platform database tool

  • vanillajs-datepicker | Vanilla JavaScript datepicker

  • notie | unobtrusive notifications - clean and simple JavaScript

  • SweetAlert2 | so many options for JavaScript popups

  • MailHog | Web and API based SMTP testing

  • Foundation for Emails 2 | Quickly create responsive HTML e-mails that work

  • Cobra | A Framework for Modern CLI Apps in GO

  • GoDotEnv | A GO port of Ruby's dotenv library

Introduction to, respectively, repetition of programming techniques commonly used in Go and you should know about

Even more notes before the first line of code!

The fundamental basics of creating programs in Go

More basics

Brief look at functions in Go

Learn about pointers in Go (and something about strings)

The secret nature of variables and how a struct brings order to chaos

Methods are attached to structs by using receivers of functions

Not bread and butter, but goji berries on steroids

How to make Decisions in Go

Iteration over values different data types with loops and the keyword range

Interfaces allow values to be considered as of more than one type: under conditions

Support by the package managment in Go

Channels are the lifeblood of Go communication, without them things would flow less smooth-lee.

A simple example just to make sure you know what we do this for.

Often criminally neglected, but no less important, is to test the code!

The HTTP Request/Response Cycle

Brief explanation, where our application will live on the HTTP request/response cycle

Our very first web application comes to life!

We add another handler and equip it with the power of internal functions.

Learn how to handle errors gracefully.

We learn how to make use of HTML templates in Go

Cleaning up code, divide in several files, and adding bootstrap for styling.

We structure our code and make it ready to be be used with go modules!

Learn to use layouts to get everything out of your templates.

Learn a method to build a simple dynamically growing cache.

A static cache for templates offers advantages for our web application.

We use a global variable that we make available in a configuration file.

We use the global variable defined in the configuration file to create a static cache that can be turned on and off.

Notes on the use of a configuration file.

Learn how to share information with templates to process data.

Introduction of middleware und routing packages in Go, as well as of state management and sessions.

Learn what routing means for middleware implementation

Learn how to import external packages and use them.

Switching a the external routing package.

Learn how to create middleware in Go with a quick practice and become a middleware master in no time!

Implementation of a middleware in the form of a package for the creation and management of session data.

A quick test to see if passing data embedded in sessions works.

Preliminary considerations for the selected project and first work with forms.

Learn to roughly outline a project and estimate scope and workload.

A brief note of why to use github.com may be a good idea!

Including static files in web applications is about including static files like CSS, JavaScript, and images.

How old and modern HTML works.

We set up a serverless development environment to create HTML pages that we will later convert into Go templates. We start with the landing page.

With a simple landing page, bungalow pages are 1-2-3-Finished!

Creation of an HTML page with a form to get dates from the user.

An HTML form to make a reservation.

Implementation of JavaScript and CSS
JavaScript: Friend Or Foe?

Learn to add a third-party (Vanilla) JS package for a new date picker.

Implementation of JS package „notie“.

Added JS package Sweetalert2 for using its modal windows.

We create our own JS module.

We implement a new function in our JS module and try to deploy it to a button.

Swapping your own CSS to a local file, sorting through CSS imports, and a quick look at how CSS works.

Learn how to use HTML in Go templates and do server side validation
Brief Overview What's Going On In This Section

Learn how to turn plain HTML into GO templates.

We provide security against Cross-Site Request Forgery (CSRF) by generating a token for each potential POST request using the middleware NoSurf.

Explore how to use Golang to create a handler that returns data in JSON format.

In this lesson, you will learn how a request via JavaScript to our web application can trigger a response from our JSON data providing handler, interpret its response, and use the data in JavaScript!

In addition, you will learn to customize the custom() function in JavaScript to make it more generic.

Keep your code’s structure clean – do refactoring.

A small overview of what server-side validation is and why it makes more sense than client-side validation (alone) in many cases.

Evaluate form data and identify errors.

Create a packages model that holds data models and create new validators.

Create more fields and make several of them "required" fields at once.

Learn how to use an external package that provides additional validators.

Use sessions to display the collected reservation data on a summary page after the reservation.

Use notie to give the user feedback on their actions.

Introduction of an alternate template engine in GO.

Learn about the importance of testing your code and how Go supports you with that.

About the purpose, but also the importance of tests in GO.

Learn how to test the package main of your web application when the test itself executes a function main().

Learn how to test GET request handlers.

Learn how to test POST-request handlers.

To test a package under always the same environment, it is necessary to create such an environment.

Learn how to add render tests for the other functions in the package.

Take a look at the coverage of the test for the packages handlers and render.

Write a basic test for the package forms.

A solution for testing the functions in the package forms.

You are welcome to write a batch file or script to simplify the invocation of your application.

Creation of a Package 'helpers' - First Resident: Error Handling

Implementation of functions to distinguish client-side and server-side errors.

Demonstration of uses of the methods ClientError and ServerError and updates of the corresponding tests.


Basics in database usage demonstrated using PostgreSQL

An Overview over the key features presented in this section

  • My Free Training on Udemy Running a Simple Webserver Performing CRUD Actions on a PostgreSQL Database Server

  • PostgreSQL Server Download

  • Postgres.app Download (macOS only)

  • DBeaver Community Edition (CE) Download

  • PostgreSQL vs mySQL

A quick guide to install and connect PostgreSQL and DBeaver on Linux.

A quick guide to install and connect PostgreSQL and DBeaver on macOS.

A quick guide to install and connect PostgreSQL and DBeaver on Windows.

Learn the basic handling of the necessary actions you want to be able to perform in databases:

  • Create

  • Read/Retrieve

  • Update

  • Delete/Destroy

known together as CRUD.

Learn beyond CRUD statements, clauses and options to create more complex database queries.

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Covers HTML5, CSS, and Javascript, which are essential for front-end web development, alongside Go, which is often used for back-end development
Explores integrating SQL/PostgreSQL databases, which are commonly used for data storage in web applications, and migrations, which are essential for managing database schema changes
Includes external packages such as go-chi, scs, nosurf, and govalidator, which are useful for building robust and secure web applications
Teaches Caddy 2, a modern web server with automatic HTTPS, which simplifies deployment and enhances security for web applications
Requires familiarity with HTML, CSS, and Javascript, which may pose a challenge for learners without prior web development experience
Utilizes pgx/v5, a PostgreSQL driver & toolkit; ensure compatibility with your PostgreSQL server version, as older versions may have compatibility issues

Save this course

Save GO (golang): Develop Modern, Fast & Secure Web Applications to your list so you can find it easily later:
Save

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 GO (golang): Develop Modern, Fast & Secure Web Applications with these activities:
Review Basic Programming Concepts
Solidify your understanding of fundamental programming concepts like variables, data types, and control flow to prepare for learning Go syntax and structure.
Browse courses on Variables
Show steps
  • Read introductory materials on programming concepts.
  • Complete online quizzes to test your knowledge.
  • Write simple programs using these concepts in any language.
Review: 'The Go Programming Language'
Deepen your understanding of Go syntax, semantics, and best practices by studying a comprehensive guide.
Show steps
  • Read the chapters relevant to the current course modules.
  • Work through the examples provided in the book.
  • Experiment with the code and modify it to test your understanding.
Practice Go Syntax Exercises
Reinforce your understanding of Go syntax by completing coding exercises on platforms like Go by Example or HackerRank.
Show steps
  • Select a platform with Go coding exercises.
  • Complete exercises focusing on different language features.
  • Review solutions and understand alternative approaches.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Review: 'Effective Go'
Improve your Go coding style and best practices by reviewing the official 'Effective Go' document.
Show steps
  • Read through the 'Effective Go' document.
  • Apply the recommendations to your existing Go code.
  • Refactor your code to adhere to the suggested guidelines.
Build a Simple REST API in Go
Apply your knowledge of Go and web development concepts by building a REST API that interacts with a database.
Show steps
  • Design the API endpoints and data models.
  • Implement the API using Go and a framework like Gin or Echo.
  • Connect the API to a PostgreSQL database.
  • Write tests for the API endpoints.
Write a Blog Post on Go Concurrency
Solidify your understanding of Go's concurrency features by writing a blog post explaining goroutines and channels.
Show steps
  • Research Go's concurrency model.
  • Write a clear and concise explanation of goroutines and channels.
  • Include code examples to illustrate the concepts.
  • Publish the blog post on a platform like Medium or your own website.
Contribute to a Go Open Source Project
Gain practical experience and contribute to the Go community by contributing to an open-source project.
Show steps
  • Find a Go project on GitHub that interests you.
  • Read the project's contribution guidelines.
  • Identify a bug or feature to work on.
  • Submit a pull request with your changes.

Career center

Learners who complete GO (golang): Develop Modern, Fast & Secure Web Applications will develop knowledge and skills that may be useful to these careers:
Web Application Developer
A web application developer designs, builds, and maintains web applications. This course is particularly helpful for aspiring web application developers because it covers the fundamentals of web development using the GO programming language, including server-side logic, database interaction, client-side scripting, and testing. The course's focus on building a real-world application, with features such as user authentication and database integration, provides the hands-on experience a web application developer needs. Furthermore, it explores the use of HTML, CSS, and JavaScript, all indispensable for creating functional and engaging user interfaces. The emphasis on secure web applications, as well as the deployment to a real server, gives the learner a thorough introduction to the life of a web application developer. The inclusion of testing, error handling, and debugging are also crucial for building stable and dependable web applications.
Full-Stack Developer
A full stack developer is responsible for both the front-end and back-end development of applications. This course is excellent for anyone aspiring to be a full stack developer because it teaches both client-side technologies and server-side development. It covers how to build a web application from the ground up using GO, including database integration with SQL/PostgreSQL, as well as HTML, CSS, and JavaScript for the front end. The course emphasizes using a variety of tools and techniques, providing the comprehensive skillset a full stack developer needs. The course also delves into routing, handling requests, and using JSON, fundamental to the tasks that a full stack developer undertakes. Learning about session management, middleware, and user authentication also contributes to the depth of skills for a potential full stack developer.
Back-End Developer
A back end developer is responsible for the server-side logic, databases, and APIs of an application. This course is a great starting point for learners interested in back end development since it focuses on building server-side applications using the GO programming language. The course covers integrating databases, managing sessions, and creating secure APIs, which are all core responsibilities of a back end developer. The course includes instruction on planning, implementing, testing, and debugging a web application using GO. Furthermore, the course teaches about migrations and how to use middleware, which are important components in the work of a back end developer. Also, the course materials emphasize error handling, a crucial skill in server-side development.
Software Engineer
A software engineer develops, tests, and maintains software systems. This course provides a robust foundation for aspiring software engineers who want to learn the GO programming language as it covers many important areas within software engineering. The course teaches how to use GO to make modern, fast, and secure web applications, emphasizing the practical aspects of software development. Topics include planning, implementation, testing, and debugging, as well as utilizing SQL/PostgreSQL databases, all of which are crucial for a software engineer. Furthermore, the course includes many areas of interest to a software engineer such as version control with git/github, how to integrate 3rd party packages, and how to deploy an application to a web server, all of which are essential skills.
API Developer
An API developer builds and maintains Application Programming Interfaces that allow different software systems to communicate with each other. This course may be helpful for an API developer since it provides skills for developing server-side applications using GO, which are the foundation for building APIs. The course explores routes, handlers, models, and JSON which are needed for the construction of effective APIs. In addition, you will learn to interact with databases using SQL/PostgreSQL, a common requirement in API development. Error handling and secure authentication are covered in the course, as well, which are crucial for API developers. Furthermore, the course touches on how to send and receive JSON data, and interact with JavaScript on the client side, beneficial to any API developer.
Database Administrator
A database administrator manages and maintains databases, and this course may be helpful for a database administrator because it covers several technologies related to databases, including SQL and PostgreSQL. The course teaches how to set up and connect to a PostgreSQL database using GO, as well as how to perform database migrations and use FIZZ, which are useful skills for a database administrator. The course also deals with how to interact with a database using GO, and can help the learner understand the interaction between the application and the database, as well as how to make appropriate queries for database retrieval. While this course does not make database administration its focus, the insights it offers into database interaction are highly relevant.
DevOps Engineer
A DevOps engineer automates and streamlines the software development lifecycle, and this course may be useful for aspiring DevOps engineers. The course covers deploying web applications to real servers, which is a key task for DevOps engineers. The course also teaches about setting up a web server such as Caddy 2 with HTTPS, a common task for DevOps professionals. The courses touches on tools such as git/github, which are essential to the daily work of a DevOps engineer. The course also introduces students to the command line environments of Linux, Windows, and macOS, which are important for server management. Though not the central focus, this course touches on many areas that a DevOps engineer will find helpful for their career.
Systems Architect
A systems architect designs the overall structure and components of a system. This course may be useful to a systems architect, as it covers the use of GO for building web applications, as well as the underlying technologies such as databases and web servers. The course material provides a deep understanding of how applications are built, deployed, and maintained, which is helpful for designing effective systems. The course also provides a look at different aspects of web application development from both the client and server sides, and the ways in which they should interact. Though this course is not explicitly about systems architecture, the in-depth look at web application technologies can help provide insight for a systems architect.
Solutions Architect
A solutions architect is responsible for designing and implementing solutions for specific business problems using technology. This course may be helpful for a solutions architect who needs to understand how to build secure and scalable web applications, as it provides a deep understanding of full-stack web development using GO. The course provides hands-on experience with planning, implementing, testing, and debugging an application, which a solutions architect can use in problem solving. It also explores how to integrate various components such as databases, client-side technologies, and web servers, which is beneficial for designing effective solutions. Also, this course offers experience with deployments, a valuable contribution for a solutions architect.
Technical Consultant
A technical consultant provides expert technological guidance to clients. This course may be useful for a technical consultant as it provides a practical understanding of web development using the GO programming language. The course offers an in-depth look into web application development, and includes database integration, client-side scripting, and back end server logic, all of which a technical consultant might encounter in advising clients. In addition, the skills acquired concerning testing, error handling, and security can provide a technical consultant with insight. The course also emphasizes real-world application, as well as deployment, valuable for a consultant.
Web Security Analyst
A web security analyst is responsible for securing web applications and identifying vulnerabilities. This course may provide a useful introduction to web security for a web security analyst, since it covers best practices for building secure web applications using the GO programming language. The course teaches how to implement secure user authentication, manage sessions, and use CSRF tokens, which are essential for web security. The inclusion of topics such as error handling and testing is also valuable for assuring that a web application is free from vulnerabilities and well defended. The emphasis the course places on practical skills also makes it relevant to the work of a web security analyst.
Software Quality Assurance Engineer
A software quality assurance engineer ensures that software meets quality standards. This course may be helpful for a software quality assurance engineer because it includes a strong focus on testing. The course teaches how to write tests in GO, how to test handlers and render functions, and how to implement error-handling, all of which are important for ensuring the quality of a software application. In addition, the course material emphasizes the importance of testing. While this is not the course's main focus, the detailed approach to testing is valuable for a software quality assurance engineer.
Technical Project Manager
A technical project manager oversees and coordinates technical projects. This course may provide a benefit for a technical project manager because it offers an understanding of the technologies that go into building a modern web application, particularly with GO. The course provides insight into the planning, implementation, and deployment of a web application. Furthermore, the course covers the use of various technologies and frameworks, providing a technical project manager with insight into the complexities of application development. This can give a technical project manager a deeper understanding of project scope, as well as the technical milestones required to meet project goals.
Mobile Application Developer
A mobile application developer designs and builds applications for mobile devices. This course may be helpful for a mobile application developer who seeks to understand back-end development, especially in GO, a language that can also be used in mobile. While the course doesn't directly teach mobile application development, it provides a strong foundation in building secure and scalable server-side applications, which can be required for mobile applications. The course covers database interaction, API development, and secure authentication, all relevant to the back-end of a mobile application. The course can also impart valuable knowledge on testing, error handling, and deployment, all crucial for both mobile and web developers.
Data Scientist
A data scientist analyzes data to extract meaningful insights, and this course may be useful for a data scientist who needs to understand how data is collected, stored, and managed in a web application context. While the primary focus is not on data science, the course discusses how to use SQL and PostgreSQL databases, which are common for storing data. The course may offer insight into the infrastructure of data management in applications, which is necessary for a data scientist to understand. Also, the course may help a data scientist who wishes to create their own tools for data analysis with GO, as it provides a good look into the language itself.

Reading list

We've selected two 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 GO (golang): Develop Modern, Fast & Secure Web Applications.
Comprehensive guide to the Go programming language, covering everything from basic syntax to advanced concurrency patterns. It serves as an excellent reference for understanding the nuances of Go and its standard library. This book is particularly useful for understanding the underlying principles and best practices for writing efficient and maintainable Go code. It is commonly used as a textbook in university courses and by industry professionals.
Effective Go is not a book, but rather a document provided by the Go team that provides guidance on writing clear, idiomatic Go code. It covers topics such as formatting, naming conventions, commenting, and error handling. This valuable resource for learning how to write Go code that is both readable and maintainable. It is best used as a reference to improve the quality and style of your Go code.

Share

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

Similar courses

Similar courses are unavailable at this time. Please try again later.
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 - 2025 OpenCourser