Java, C, C++, Go, Rust, and systems programming
44 courses available
Showing 44 courses
EPFL (via Coursera)
Functional Programming Principles in Scala - EPFL is a comprehensive intermediate-level resource offered by EPFL, focused on building practical skills in programming and data structures. Whether you're a complete beginner looking to start a new career or a professional aiming to upgrade your skills, this resource provides a thorough learning experience. This is a structured online course with a carefully designed curriculum. Each module builds on the previous one, creating a logical progression from fundamentals to advanced topics. The course typically includes video lectures, reading materials, hands-on exercises, quizzes, and sometimes peer-reviewed assignments. This structured approach ensures you don't miss any critical concepts and build a solid foundation. This resource covers topics essential for success in programming and data structures, including algorithms, data structures, system design, and coding interview patterns. The curriculum is structured to build your knowledge progressively — starting with foundational concepts and advancing to real-world applications. By the end, you should be able to: Understand the core concepts and theoretical foundations Apply your knowledge through hands-on exercises and small projects Build the practical skills employers actually screen for Develop the problem-solving approach used by working professionals Duration: Estimated duration: 25 hours of content, designed to be completed in 3-5 weeks at a comfortable pace. Basic familiarity with the subject area is recommended. You should have completed a beginner-level course or have equivalent self-taught knowledge. Comfort with using a computer and basic problem-solving skills will help. This resource is designed for a wide audience: Students (B.Tech, BCA, MCA, BSc) looking to complement their academic learning with practical, industry-relevant skills Fresh graduates preparing for campus placements or off-campus interviews Working professionals looking to upskill, switch domains, or advance their careers Career changers transitioning from non-tech backgrounds into programming and data structures Freelancers wanting to add new services to their portfolio Self-learners passionate about programming and data structures and wanting structured guidance Pricing: This resource is completely free with no hidden charges. Completing this resource and building related skills can prepare you for roles such as Software Development Engineer (SDE), Software Engineer, Backend Developer. Realistic salary bands in India (2025-2026), based on Naukri/AmbitionBox data: Freshers / 0-2 years: Rs 6-12 LPA Mid-level / 2-5 years: Rs 15-30 LPA Senior / 5+ years: Rs 30-60 LPA Actual offers vary heavily by city, company tier, and how strong your portfolio or interview performance is. Companies actively hiring in this space include Google, Amazon, Microsoft, Flipkart, PhonePe, Atlassian. Strong programming and DSA skills are the 1 factor in clearing technical interviews at product companies. Companies like Google, Amazon, Microsoft, Flipkart, and PhonePe all use coding rounds as their primary hiring filter. The Indian tech interview landscape typically involves 2-3 DSA rounds, 1 system design round (for experienced roles), and 1-2 behavioral rounds. Candidates who have solved 200+ quality problems on platforms like LeetCode consistently report higher interview success rates. EPFL is a well-established platform trusted by millions of learners worldwide. This particular resource has been selected by our editorial team based on: Content quality — comprehensive coverage with clear explanations Practical focus — emphasis on hands-on skills over pure theory Student outcomes — positive reviews and career success stories Indian relevance — content applicable to the Indian job market and interview patterns Updated curriculum — material reflects current industry practices and tools We regularly review and update our recommendations to ensure they remain relevant and high-quality.
Exercism
Exercism Elixir Track is a comprehensive intermediate-level resource offered by Exercism, focused on building practical skills in programming and data structures. Whether you're a complete beginner looking to start a new career or a professional aiming to upgrade your skills, this resource provides a thorough learning experience. This is a hands-on, project-based learning platform where you learn by doing, not just watching. Instead of passive video consumption, you'll actively write code, solve problems, and build projects from the very first lesson. Research consistently shows that active practice leads to 3-5x better retention compared to passive learning. You'll make mistakes, debug issues, and develop real problem-solving skills that directly translate to workplace performance. This resource covers topics essential for success in programming and data structures, including algorithms, data structures, system design, and coding interview patterns. The curriculum is structured to build your knowledge progressively — starting with foundational concepts and advancing to real-world applications. By the end, you should be able to: Understand the core concepts and theoretical foundations Apply your knowledge through hands-on exercises and small projects Build the practical skills employers actually screen for Develop the problem-solving approach used by working professionals Duration: Estimated duration: 35 hours of content, designed to be completed in 4-7 weeks at a comfortable pace. Basic familiarity with the subject area is recommended. You should have completed a beginner-level course or have equivalent self-taught knowledge. Comfort with using a computer and basic problem-solving skills will help. This resource is designed for a wide audience: Students (B.Tech, BCA, MCA, BSc) looking to complement their academic learning with practical, industry-relevant skills Fresh graduates preparing for campus placements or off-campus interviews Working professionals looking to upskill, switch domains, or advance their careers Career changers transitioning from non-tech backgrounds into programming and data structures Freelancers wanting to add new services to their portfolio Self-learners passionate about programming and data structures and wanting structured guidance Pricing: This resource is completely free with no hidden charges. Completing this resource and building related skills can prepare you for roles such as Software Development Engineer (SDE), Software Engineer, Backend Developer. Realistic salary bands in India (2025-2026), based on Naukri/AmbitionBox data: Freshers / 0-2 years: Rs 6-12 LPA Mid-level / 2-5 years: Rs 15-30 LPA Senior / 5+ years: Rs 30-60 LPA Actual offers vary heavily by city, company tier, and how strong your portfolio or interview performance is. Companies actively hiring in this space include Google, Amazon, Microsoft, Flipkart, PhonePe, Atlassian. Strong programming and DSA skills are the 1 factor in clearing technical interviews at product companies. Companies like Google, Amazon, Microsoft, Flipkart, and PhonePe all use coding rounds as their primary hiring filter. The Indian tech interview landscape typically involves 2-3 DSA rounds, 1 system design round (for experienced roles), and 1-2 behavioral rounds. Candidates who have solved 200+ quality problems on platforms like LeetCode consistently report higher interview success rates. Exercism is a well-established platform trusted by millions of learners worldwide. This particular resource has been selected by our editorial team based on: Content quality — comprehensive coverage with clear explanations Practical focus — emphasis on hands-on skills over pure theory Student outcomes — positive reviews and career success stories Indian relevance — content applicable to the Indian job market and interview patterns Updated curriculum — material reflects current industry practices and tools We regularly review and update our recommendations to ensure they remain relevant and high-quality.
Miran Lipovaca
Learn You a Haskell for Great Good is a comprehensive advanced-level resource offered by Miran Lipovaca, focused on building practical skills in programming and data structures. Whether you're a complete beginner looking to start a new career or a professional aiming to upgrade your skills, this resource provides a thorough learning experience. This is a comprehensive text-based learning resource — ideal for learners who prefer reading and reference-style learning over videos. The advantage of text-based resources is that you can easily search for specific topics, bookmark important sections, copy code snippets, and revisit concepts quickly without scrubbing through video timelines. Many working professionals prefer this format as it's easier to learn in short bursts during breaks. This resource covers topics essential for success in programming and data structures, including algorithms, data structures, system design, and coding interview patterns. The curriculum is structured to build your knowledge progressively — starting with foundational concepts and advancing to real-world applications. By the end, you should be able to: Master Go syntax, goroutines, and channels Build concurrent programs with Go's lightweight threading model Create REST APIs and CLI tools in Go Deploy Go binaries to production servers Duration: Estimated duration: 20 hours of content, designed to be completed in 2-4 weeks at a comfortable pace. This is an advanced resource meant for learners who already have solid fundamentals. You should have at least 6 months of hands-on experience or have completed intermediate-level courses in this area. This resource is designed for a wide audience: Students (B.Tech, BCA, MCA, BSc) looking to complement their academic learning with practical, industry-relevant skills Fresh graduates preparing for campus placements or off-campus interviews Working professionals looking to upskill, switch domains, or advance their careers Career changers transitioning from non-tech backgrounds into programming and data structures Freelancers wanting to add new services to their portfolio Self-learners passionate about programming and data structures and wanting structured guidance Pricing: This resource is completely free with no hidden charges. Completing this resource and building related skills can prepare you for roles such as Software Development Engineer (SDE), Software Engineer, Backend Developer. Realistic salary bands in India (2025-2026), based on Naukri/AmbitionBox data: Freshers / 0-2 years: Rs 6-12 LPA Mid-level / 2-5 years: Rs 15-30 LPA Senior / 5+ years: Rs 30-60 LPA Actual offers vary heavily by city, company tier, and how strong your portfolio or interview performance is. Companies actively hiring in this space include Google, Amazon, Microsoft, Flipkart, PhonePe, Atlassian. Strong programming and DSA skills are the 1 factor in clearing technical interviews at product companies. Companies like Google, Amazon, Microsoft, Flipkart, and PhonePe all use coding rounds as their primary hiring filter. The Indian tech interview landscape typically involves 2-3 DSA rounds, 1 system design round (for experienced roles), and 1-2 behavioral rounds. Candidates who have solved 200+ quality problems on platforms like LeetCode consistently report higher interview success rates. Miran Lipovaca is a well-established platform trusted by millions of learners worldwide. This particular resource has been selected by our editorial team based on: Content quality — comprehensive coverage with clear explanations Practical focus — emphasis on hands-on skills over pure theory Student outcomes — positive reviews and career success stories Indian relevance — content applicable to the Indian job market and interview patterns Updated curriculum — material reflects current industry practices and tools We regularly review and update our recommendations to ensure they remain relevant and high-quality.
Elixir Team
Elixir - Getting Started Guide is a comprehensive intermediate-level resource offered by Elixir Team, focused on building practical skills in programming and data structures. Whether you're a complete beginner looking to start a new career or a professional aiming to upgrade your skills, this resource provides a thorough learning experience. This is a comprehensive text-based learning resource — ideal for learners who prefer reading and reference-style learning over videos. The advantage of text-based resources is that you can easily search for specific topics, bookmark important sections, copy code snippets, and revisit concepts quickly without scrubbing through video timelines. Many working professionals prefer this format as it's easier to learn in short bursts during breaks. This resource covers topics essential for success in programming and data structures, including algorithms, data structures, system design, and coding interview patterns. The curriculum is structured to build your knowledge progressively — starting with foundational concepts and advancing to real-world applications. By the end, you should be able to: Understand the core concepts and theoretical foundations Apply your knowledge through hands-on exercises and small projects Build the practical skills employers actually screen for Develop the problem-solving approach used by working professionals Duration: Estimated duration: 8 hours of content, designed to be completed in 1-2 weeks at a comfortable pace. Basic familiarity with the subject area is recommended. You should have completed a beginner-level course or have equivalent self-taught knowledge. Comfort with using a computer and basic problem-solving skills will help. This resource is designed for a wide audience: Students (B.Tech, BCA, MCA, BSc) looking to complement their academic learning with practical, industry-relevant skills Fresh graduates preparing for campus placements or off-campus interviews Working professionals looking to upskill, switch domains, or advance their careers Career changers transitioning from non-tech backgrounds into programming and data structures Freelancers wanting to add new services to their portfolio Self-learners passionate about programming and data structures and wanting structured guidance Pricing: This resource is completely free with no hidden charges. Completing this resource and building related skills can prepare you for roles such as Software Development Engineer (SDE), Software Engineer, Backend Developer. Realistic salary bands in India (2025-2026), based on Naukri/AmbitionBox data: Freshers / 0-2 years: Rs 6-12 LPA Mid-level / 2-5 years: Rs 15-30 LPA Senior / 5+ years: Rs 30-60 LPA Actual offers vary heavily by city, company tier, and how strong your portfolio or interview performance is. Companies actively hiring in this space include Google, Amazon, Microsoft, Flipkart, PhonePe, Atlassian. Strong programming and DSA skills are the 1 factor in clearing technical interviews at product companies. Companies like Google, Amazon, Microsoft, Flipkart, and PhonePe all use coding rounds as their primary hiring filter. The Indian tech interview landscape typically involves 2-3 DSA rounds, 1 system design round (for experienced roles), and 1-2 behavioral rounds. Candidates who have solved 200+ quality problems on platforms like LeetCode consistently report higher interview success rates. Elixir Team is a well-established platform trusted by millions of learners worldwide. This particular resource has been selected by our editorial team based on: Content quality — comprehensive coverage with clear explanations Practical focus — emphasis on hands-on skills over pure theory Student outcomes — positive reviews and career success stories Indian relevance — content applicable to the Indian job market and interview patterns Updated curriculum — material reflects current industry practices and tools We regularly review and update our recommendations to ensure they remain relevant and high-quality.
Elixir School
Elixir School is a comprehensive beginner-level resource offered by Elixir School, focused on building practical skills in programming and data structures. Whether you're a complete beginner looking to start a new career or a professional aiming to upgrade your skills, this resource provides a thorough learning experience. This is a comprehensive text-based learning resource — ideal for learners who prefer reading and reference-style learning over videos. The advantage of text-based resources is that you can easily search for specific topics, bookmark important sections, copy code snippets, and revisit concepts quickly without scrubbing through video timelines. Many working professionals prefer this format as it's easier to learn in short bursts during breaks. This resource covers topics essential for success in programming and data structures, including algorithms, data structures, system design, and coding interview patterns. The curriculum is structured to build your knowledge progressively — starting with foundational concepts and advancing to real-world applications. By the end, you should be able to: Understand the core concepts and theoretical foundations Apply your knowledge through hands-on exercises and small projects Build the practical skills employers actually screen for Develop the problem-solving approach used by working professionals Duration: Estimated duration: 20 hours of content, designed to be completed in 2-4 weeks at a comfortable pace. No prior experience is required. This course starts from the absolute basics and gradually builds up complexity. A computer with internet access is all you need to get started. This resource is designed for a wide audience: Students (B.Tech, BCA, MCA, BSc) looking to complement their academic learning with practical, industry-relevant skills Fresh graduates preparing for campus placements or off-campus interviews Working professionals looking to upskill, switch domains, or advance their careers Career changers transitioning from non-tech backgrounds into programming and data structures Freelancers wanting to add new services to their portfolio Self-learners passionate about programming and data structures and wanting structured guidance Pricing: This resource is completely free with no hidden charges. Completing this resource and building related skills can prepare you for roles such as Software Development Engineer (SDE), Software Engineer, Backend Developer. Realistic salary bands in India (2025-2026), based on Naukri/AmbitionBox data: Freshers / 0-2 years: Rs 6-12 LPA Mid-level / 2-5 years: Rs 15-30 LPA Senior / 5+ years: Rs 30-60 LPA Actual offers vary heavily by city, company tier, and how strong your portfolio or interview performance is. Companies actively hiring in this space include Google, Amazon, Microsoft, Flipkart, PhonePe, Atlassian. Strong programming and DSA skills are the 1 factor in clearing technical interviews at product companies. Companies like Google, Amazon, Microsoft, Flipkart, and PhonePe all use coding rounds as their primary hiring filter. The Indian tech interview landscape typically involves 2-3 DSA rounds, 1 system design round (for experienced roles), and 1-2 behavioral rounds. Candidates who have solved 200+ quality problems on platforms like LeetCode consistently report higher interview success rates. Elixir School is a well-established platform trusted by millions of learners worldwide. This particular resource has been selected by our editorial team based on: Content quality — comprehensive coverage with clear explanations Practical focus — emphasis on hands-on skills over pure theory Student outcomes — positive reviews and career success stories Indian relevance — content applicable to the Indian job market and interview patterns Updated curriculum — material reflects current industry practices and tools We regularly review and update our recommendations to ensure they remain relevant and high-quality.
Scala Exercises
Scala Exercises - Interactive Learning is a comprehensive intermediate-level resource offered by Scala Exercises, focused on building practical skills in programming and data structures. Whether you're a complete beginner looking to start a new career or a professional aiming to upgrade your skills, this resource provides a thorough learning experience. This is a hands-on, project-based learning platform where you learn by doing, not just watching. Instead of passive video consumption, you'll actively write code, solve problems, and build projects from the very first lesson. Research consistently shows that active practice leads to 3-5x better retention compared to passive learning. You'll make mistakes, debug issues, and develop real problem-solving skills that directly translate to workplace performance. This resource covers topics essential for success in programming and data structures, including algorithms, data structures, system design, and coding interview patterns. The curriculum is structured to build your knowledge progressively — starting with foundational concepts and advancing to real-world applications. By the end, you should be able to: Understand the core concepts and theoretical foundations Apply your knowledge through hands-on exercises and small projects Build the practical skills employers actually screen for Develop the problem-solving approach used by working professionals Duration: Estimated duration: 10 hours of content, designed to be completed in 1-2 weeks at a comfortable pace. Basic familiarity with the subject area is recommended. You should have completed a beginner-level course or have equivalent self-taught knowledge. Comfort with using a computer and basic problem-solving skills will help. This resource is designed for a wide audience: Students (B.Tech, BCA, MCA, BSc) looking to complement their academic learning with practical, industry-relevant skills Fresh graduates preparing for campus placements or off-campus interviews Working professionals looking to upskill, switch domains, or advance their careers Career changers transitioning from non-tech backgrounds into programming and data structures Freelancers wanting to add new services to their portfolio Self-learners passionate about programming and data structures and wanting structured guidance Pricing: This resource is completely free with no hidden charges. Completing this resource and building related skills can prepare you for roles such as Software Development Engineer (SDE), Software Engineer, Backend Developer. Realistic salary bands in India (2025-2026), based on Naukri/AmbitionBox data: Freshers / 0-2 years: Rs 6-12 LPA Mid-level / 2-5 years: Rs 15-30 LPA Senior / 5+ years: Rs 30-60 LPA Actual offers vary heavily by city, company tier, and how strong your portfolio or interview performance is. Companies actively hiring in this space include Google, Amazon, Microsoft, Flipkart, PhonePe, Atlassian. Strong programming and DSA skills are the 1 factor in clearing technical interviews at product companies. Companies like Google, Amazon, Microsoft, Flipkart, and PhonePe all use coding rounds as their primary hiring filter. The Indian tech interview landscape typically involves 2-3 DSA rounds, 1 system design round (for experienced roles), and 1-2 behavioral rounds. Candidates who have solved 200+ quality problems on platforms like LeetCode consistently report higher interview success rates. Scala Exercises is a well-established platform trusted by millions of learners worldwide. This particular resource has been selected by our editorial team based on: Content quality — comprehensive coverage with clear explanations Practical focus — emphasis on hands-on skills over pure theory Student outcomes — positive reviews and career success stories Indian relevance — content applicable to the Indian job market and interview patterns Updated curriculum — material reflects current industry practices and tools We regularly review and update our recommendations to ensure they remain relevant and high-quality.
MIT OpenCourseWare
This course covers amino acid sequence control of protein folding, misfolding, amyloid polymerization and aggregation. Readings and discussions address topics such as chaperone structure and function, folding and assembly of fibrous proteins, and pathologies associated with protein misfolding and aggregation in Alzheimer’s, Parkinson’s, Huntington’s and other protein deposition diseases. Students are required to write and present a research paper. Level: Beginner. Free course materials from MIT OpenCourseWare including lecture notes, assignments, and exams.
EDUCBA
By the end of this course, learners will be able to develop Cprograms, apply object-oriented programming principles, build database-driven applications, handle exceptions, and deliver complete real-world projects using the .NET framework. Ultimate .NET Training is a comprehensive, hands-on course designed to take learners from foundational Cconcepts to advanced application development. Starting with .NET setup, core syntax, and control structures, the course progressively builds skills in functions, OOPS, file handling, exception management, and ADO.NET database integration. Learners then apply these skills to meaningful projects such as login systems, CRUD-based applications, desktop games, a chatbot, and a full online examination system. What makes this course unique is its project-centric, end-to-end approach—each concept is reinforced through practical implementation rather than theory alone. The structured progression ensures beginners gain confidence while advanced learners strengthen real-world problem-solving skills. By completing this course, learners will be equipped with job-ready .NET development capabilities, practical coding experience, and the confidence to build scalable, maintainable applications for professional environments.
Packt
This course features Coursera Coach! A smarter way to learn with interactive, real-time conversations that help you test your knowledge, challenge assumptions, and deepen your understanding as you progress through the course. Rust is a powerful language designed for performance and memory safety, and in this course, you’ll master building idiomatic Rust programs using collections, traits, and advanced features. Through detailed examples and hands-on projects, you’ll gain the skills to handle dynamic data with vectors, HashMaps, and strings, and build clean, reusable, and flexible code with traits. By the end of the course, you’ll have a solid understanding of Rust’s collections and trait system to write efficient, modular code in a variety of domains. The course begins with the fundamentals of Rust’s collections: vectors, strings, and HashMaps. You’ll learn how to manipulate these data structures and apply ownership rules effectively. Then, you’ll dive into traits—defining, implementing, and using them to define shared behavior, enforce constraints, and ensure code reuse. Additionally, you’ll explore error handling techniques, which are crucial for robust Rust applications. This course is ideal for intermediate Rust programmers looking to deepen their knowledge and improve their code organization and structure. It is a perfect fit for anyone looking to write clean, idiomatic Rust code while mastering Rust’s powerful collection types and trait system.
Packt
This course features Coursera Coach! A smarter way to learn with interactive, real-time conversations that help you test your knowledge, challenge assumptions, and deepen your understanding as you progress through the course. Rust is renowned for its ability to ensure memory safety without a garbage collector, and this course will equip you with the tools to navigate Rust's ownership model, references, borrowing, and more. Through practical examples and in-depth explanations, you’ll gain hands-on experience managing memory safely while structuring your programs effectively. By the end of this course, you’ll understand the foundational concepts like ownership, borrowing, and references and be able to apply them to write memory-efficient, safe programs in Rust. The course begins with an introduction to ownership and its significance in Rust's memory management, followed by a deep dive into references and borrowing. You'll learn how to efficiently handle data and manage memory through concepts like slices, structs, enums, and generics. In addition, you’ll explore Option and Result enums for managing errors and optional values, ensuring that you write reliable and safe applications. This course is ideal for intermediate programmers who want to enhance their understanding of memory management and safety in systems programming. It is perfect for developers interested in learning Rust or transitioning from other languages.
Coursera
Welcome to IBM COBOL – Basic Testing and Debugging! By enrolling in this course, you are taking a big step in increasing your knowledge and hands on experience with IBM COBOL testing and debugging topics and technologies. In this course, you will describe common errors associated with working with COBOL. You will list file status codes. You will also describe the process of debugging COBOL code. So let’s get started!
Packt
This course offers a comprehensive introduction to programming using flowcharts and pseudocode, ideal for anyone new to programming. You'll gain a solid understanding of key programming concepts like variables, operators, conditional statements, loops, functions, and more. By the end of the course, you’ll be able to visualize logic and translate it into simple pseudocode that can be used in any programming language. The journey begins with an introduction to programming fundamentals, where you’ll download essential tools like Diagrams.net and Notepad++ to create flowcharts and pseudocode. You'll then dive into creating your first flowchart and writing basic pseudocode, understanding the logic behind these key programming concepts. This foundation will help you structure your programs logically before coding. As you progress, you'll explore core programming constructs such as variables (integer, float, boolean, string, etc.), operators, and conditional statements. The course focuses on the practical application of these concepts through assignments and solutions. You'll practice using conditional statements like if-else and switch, as well as loops to execute repetitive tasks. The course is perfect for beginners who are looking to start their journey into programming. No prior programming knowledge is required, and the content progresses at a comfortable pace to ensure you build confidence in writing code using flowcharts and pseudocode.
University of Colorado System (via Coursera)
Since many software developers are compulsive coders, they have created software over the years to help them do their job. There are tools which make design and its associated tasks easier. The course introduces some basic tools and techniques to help you with design. Tools aren’t always tangible, however. The last two lessons of this course discuss questions of Ethics in software development. The purpose here is, as with tools, to equip you to better carry our your responsibilities as a designer. Students will be required to have a prior knowledge of writing and delivering software and some programming knowledge in java.
Pragmatic AI Labs
Learn to build production agentic AI systems using actor model foundations, subagent architecture patterns, and multi-language implementations. You will explore the actor paradigm for concurrent computation, where isolated processes communicate through message-passing with zero shared memory, eliminating race conditions and deadlocks that crash production systems. The course covers Actix supervision trees in Rust for fault-tolerant actor recovery and location transparency for seamless distributed scaling. You will implement Claude subagent patterns for task-specific AI configurations with isolated state and tool access, and examine pmat subagent architecture for code quality analysis through specialized delegation pipelines. The subagent module demonstrates supervised multi-agent coordination, applies Amdahl's law to understand parallelization limits of subagent systems, and explains why simple agents often outperform complex multi-agent designs. You will also explore small language models as efficient alternatives for agent reasoning tasks. The hands-on module covers actor implementations in three languages: Deno with TypeScript, Go with goroutines and channels, and Rust with ownership-based memory safety. You will build Go supervisor patterns for automatic actor recovery and examine a complete agentic coding project repository. By completing this course, you will be able to design fault-tolerant agentic systems using actor model principles, implement subagent architectures with Claude, and build actor patterns across multiple programming languages.
Princeton University (via Coursera)
The basis for education in the last millennium was “reading, writing, and arithmetic;” now it is reading, writing, and computing. Learning to program is an essential part of the education of every student, not just in the sciences and engineering, but in the arts, social sciences, and humanities, as well. Beyond direct applications, it is the first step in understanding the nature of computer science’s undeniable impact on the modern world. This course covers the first half of our book Computer Science: An Interdisciplinary Approach (the second half is covered in our Coursera course Computer Science: Algorithms, Theory, and Machines). Our intent is to teach programming to those who need or want to learn it, in a scientific context. We begin by introducing basic programming elements such as variables, conditionals, loops, arrays, and I/O. Next, we turn to functions, introducing key concepts such as recursion, modular programming, and code reuse. Then, we present a modern introduction to object-oriented programming. We use the Java programming language and teach basic skills for computational problem solving that are applicable in many modern computing environments. Proficiency in Java is a goal, but we focus on fundamental concepts in programming, not Java per se. All the features of this course are available for free. People who are interested in digging deeper into the content may wish to obtain the textbook Computer Science: An Interdisciplinary Approach (upon which the course is based) or to visit the website introcs.cs.princeton.edu for a wealth of additional material. This course does not offer a certificate upon completion.
University of Alberta (via Coursera)
The way that software components — subroutines, classes, functions, etc. — are arranged, and the interactions between them, is called architecture. In this course you will study the ways these architectures are represented, both in UML and other visual tools. We will introduce the most common architectures, their qualities, and tradeoffs. We will talk about how architectures are evaluated, what makes a good architecture, and an architecture can be improved. We'll also talk about how the architecture touches on the process of software development. In the Capstone Project you will document a Java-based Android application with UML diagrams and analyze evaluate the application’s architecture using the Architecture Tradeoff Analysis Method (ATAM). After completing this course, you will be able to: • Compare and contrast the components, connections, protocols, topologies, constraints, tradeoffs, and variations of different types of architectural styles used in the design of applications and systems (e.g., main program and subroutine, object-oriented, interpreters, pipes and filters, database centric, event-based). • Describe the properties of layered and n-tier architectures. • Create UML ipackage, component, and deployment diagrams to express the architectural structure of a system. • Explain the behaviour of a system using UML activity diagrams. • Document a multi-application system with a layered architecture.
Coursera
COBOL is a programming language that serves a wide range of businesses. Key aspects of COBOL are that it is scalable, mature, and self-documenting. In this COBOL CORE class you’ll discover more features of the language, how to handle tables, edit, use switches, numeric usage, and structured COBOL. Enjoy your ride through the world of COBOL! We’re excited to have you here and can’t wait to get started.
University of Minnesota (via Coursera)
After completing this course, you will have an understanding of the fundamental principles and processes of software testing. You will have actively created test cases and run them using an automated testing tool. You will being writing and recognizing good test cases, including input data and expected outcomes. After completing this course, you will be able to… Describe the difference between verification and validation. Explain the goal of testing. Use appropriate test terminology in communication; specifically: test fixture, logical test case, concrete test case, test script, test oracle, and fault. Describe the motivations for white and black box testing. Compare and contrast test-first and test-last development techniques. Measure test adequacy using statement and branch coverage. Reason about the causes and acceptability of and poor coverage Assess the fault-finding effectiveness of a functional test suite using mutation testing. Critique black-box and white-box testing, describing the benefits and use of each within the greater development effort. Distinguish among the expected-value (true), heuristic, consistency (as used in A/B regression), and probability test oracles and select the one best-suited to the testing objective. Craft unit and integration test cases to detect defects within code and automate these tests using JUnit. To achieve this, students will employ test doubles to support their tests, including stubs (for state verification) and mocks (for behavioral verification) (https://martinfowler.com/articles/mocksArentStubs.html). This course is primarily aimed at those learners interested in any of the following roles: Software Engineer, Software Engineer in Test, Test Automation Engineer, DevOps Engineer, Software Developer, Programmer, Computer Enthusiast. We expect that you should have an understanding of the Java programming language (or any similar object-oriented language and the ability to pick up Java syntax quickly...
École Polytechnique Fédérale de Lausanne (via Coursera)
Scala is an expressive, versatile, and safe programming language. In this course, you will learn how to get the most out of Scala to solve common programming tasks such as modeling business domains, breaking down complex problems into simpler problems, manipulating data, or running parallel tasks. Along the journey, you will also learn the best practices for writing high-quality code that scales to large applications, how to handle errors, how to write tests, and how to leverage a productive development environment. This comprehensive, hands-on, course aims at leveling up your programming skills by embracing both functional programming and object-oriented programming. You will become familiar with the standard library and the common patterns of code used in the real world. Each week contains about 1h30 of video lectures. Each lecture is a ~10 min video focused on a specific skill or concept. We always start by looking at concrete problems, and then explain how language features or libraries make you more productive to solve these problems in general. Lectures are generally followed by a quiz to assess your progress. At the end of each week, a graded assignment inspired by real-world applications will give you an opportunity to put things in practice. The course covers Scala 3, and it mentions the differences with Scala 2.
Packt
Updated in May 2025. This course now features Coursera Coach! A smarter way to learn with interactive, real-time conversations that help you test your knowledge, challenge assumptions, and deepen your understanding as you progress through the course. This course equips you with the skills and knowledge to build an automation framework. Covering both basic and advanced concepts in TestNG and framework building, you’ll start with basic annotations, test execution management, and framework design. You'll delve into the page object model and page factory, then explore advanced TestNG concepts and annotations, parallel execution, and data-driven testing. The course emphasizes TestNG, Java, Maven, Selenium WebDriver, the page object model, and page factory design. By the end, you'll be able to build an automation framework from scratch. Ideal for fresh graduates, QE managers seeking better automation solutions, and QTP/UFT professionals transitioning to in-demand testing tools. This course is perfect for software testers, QA engineers, and developers who want to enhance their automation skills. A basic understanding of Java and Selenium WebDriver is recommended to fully benefit from the content.
Packt
This course features Coursera Coach! A smarter way to learn with interactive, real-time conversations that help you test your knowledge, challenge assumptions, and deepen your understanding as you progress through the course. In this course, you will learn how to seamlessly transition from building Cconsole applications to creating fully functional Windows Forms (WinForms) applications, while incorporating source control for a professional development workflow. The course begins with setting up a GitHub account and adding your Visual Studio solutions to source control, providing you with the foundational skills to manage and track your projects. You’ll then dive into WinForms basics, starting with setting up your environment using Visual Studio 2022. Learn how to create a simple car rental application, and understand how to work with controls, properties, and events in WinForms. As you build your first applications, you’ll gain hands-on experience with form validation, exception handling, and integrating databases using SQL Server and ADO.NET. Through this course, you’ll acquire the essential skills to create database-driven WinForms applications. You’ll learn to work with SQL Server Express, set up databases, and utilize Language Integrated Query (LINQ) to interact with your database, making your applications dynamic and interactive. This course is perfect for developers who already have a basic understanding of Cand want to transition into WinForms development. It’s ideal for those looking to create more advanced, interactive applications and manage their code effectively with source control. Prerequisites include basic knowledge of Cprogramming and familiarity with Visual Studio. By the end of the course, you will be able to create Windows Forms applications, manage your projects with GitHub, interact with databases using ADO.NET and LINQ, and implement exception handling and form validation.
MIT OpenCourseWare
The laws of nature are expressed as differential equations. Scientists and engineers must know how to model the world in terms of differential equations, and how to solve those equations and interpret the solutions. This course focuses on the equations and techniques most useful in science and engineering. Course Format This course has been designed for independent study. It provides everything you will need to understand the concepts covered in the course. The materials include: Lecture Videos by Professor Arthur Mattuck. Course Notes on every topic. Practice Problems with Solutions. Problem Solving Videos taught by experienced MIT Recitation Instructors. Problem Sets to do on your own with Solutions to check your answers against when you’re done. A selection of Interactive Java® Demonstrations called Mathlets to illustrate key concepts. A full set of Exams with Solutions, including practice exams to help you prepare. Content Development Haynes Miller Jeremy Orloff Dr. John Lewis Arthur Mattuck. Level: Beginner. Free course materials from MIT OpenCourseWare including lecture notes, assignments, and exams.
Coursera
This course is aimed at anybody interested in COBOL or or software development. In this course, you will be introduced to core practices, systems, and methodologies associated with IBM COBOL software development. You will learn about COBOL as a self-documenting language. You will review working with existing coding. This course also covers quality assurance (QA), technical support and project management.
AI (via edX)
Rust Data Engineering
Korea Advanced Institute of Science and Technology(KAIST) (via Coursera)
The goal of this course is to help students: 1. learn new languages quickly, 2. evaluate various languages and pick the most suitable one for a given task, 3. know when and how to design a little language, and 4. understand the effects of languages on thought and communication. We will study programming language concepts, not as paradigms but as a set of basic building blocks, by 1) implementing interpreters for the concepts using the Scala programming language and 2) rigorously discussing the concepts using the operational semantics.
Hong Kong University of Science and Technology (via edX)
Modern Assembly Language Programming on ARM
AI (via edX)
Rust Fundamentals
Packt
This course is tailored for automation testers and developers looking to advance their expertise in Selenium WebDriver and framework design. Starting with the latest Selenium 4.0 features, you’ll explore new capabilities like relative locators and advanced window handling techniques. The course then delves into taking partial screenshots of WebElements and validating UX aspects through element dimensions, ensuring you can handle even the most intricate automation tasks. Next, you'll embark on a comprehensive journey into framework design, beginning with TestNG and its powerful features, including annotations, parallel test execution, and custom test configurations. You will also learn to create and manage Maven projects, integrate Selenium with popular tools like Jenkins, and design efficient, maintainable frameworks. The course covers object-oriented programming principles necessary for framework development, ensuring your code is clean, reusable, and scalable. In the final segments, you'll implement advanced design patterns such as the Page Object Model and Factory and integrate Cucumber for behavior-driven development. You’ll gain hands-on experience with real-world examples, crafting end-to-end test scripts that can be executed in parallel across different environments. By the end of this course, you will have the knowledge and skills to design and implement sophisticated test automation frameworks that meet industry standards. This course is designed for experienced automation testers, QA engineers, and developers who have a basic understanding of Selenium WebDriver and are looking to deepen their knowledge in advanced techniques and framework design. Prior experience with Java and test automation tools is recommended.
Linux Foundation (via edX)
Foundations of RISC-V Assembly Programming
Packt
Updated in May 2025. This course now features Coursera Coach! A smarter way to learn with interactive, real-time conversations that help you test your knowledge, challenge assumptions, and deepen your understanding as you progress through the course. This advanced course focuses on object-oriented and generic programming in C++, emphasizing the core principles and techniques that every experienced developer should master. The course will guide you through advanced inheritance, exception handling, file input/output operations, and template programming, equipping you with the knowledge to write clean, efficient, and reusable C++ code. You’ll also explore C++11/14/17 features such as lambda expressions, type traits, and advanced STL usage. The course starts by enhancing your object-oriented programming skills with in-depth discussions on inheritance, composition, and polymorphism, along with practical examples and real-world applications. You will also explore advanced topics like virtual functions, dynamic casting, and multiple inheritance, ensuring a solid understanding of complex object hierarchies. Exception handling will be tackled next, where you will learn advanced techniques such as stack unwinding, nested exceptions, and using the noexcept keyword for performance improvements. As you progress, the course introduces the power of generic programming through templates, exploring topics like template argument deduction, perfect forwarding, variadic templates, and class template specialization. You will learn how to optimize code and improve flexibility with these tools, enabling you to build robust, reusable components. The course then dives into C++'s powerful Standard Template Library (STL), where you'll master containers such as std::vector, std::map, and std::unordered_map, and learn the performance nuances with Big-O notation. This course is designed for intermediate to advanced programmers who want to refine their C++ skills and gain expertise in com...
MIT OpenCourseWare
This course is based on the work of the MIT-African Internet Technology Initiative (MIT-AITI). MIT-AITI is an innovative approach by MIT students to integrate computers and internet technology into the education of students in African schools. The program focuses upon programming principles, cutting-edge internet technology, free open-source systems, and even an entrepreneurship seminar to introduce students in Africa to the power of information technology in today’s world. MIT-AITI achieves this goal by sending MIT students to three African nations in order to teach both students and teachers through intensive classroom and lab sessions for six weeks. The AITI program is implemented with emphasis on classroom teaching, community-oriented projects, and independent learning. This course has two major components: Content from a spring 2005 preparatory seminar offered by the MIT-AITI leadership. The goal of this seminar is to adequately prepare the AITI student teachers for their upcoming summer experiences in Africa. A snapshot of the summer 2005 MIT-AITI program. This includes the Java®-based curriculum that MIT-AITI ambassadors teach in Africa each year, as well as content from an entrepreneurship seminar offered concurrently with the IT class. Level: Beginner. Free course materials from MIT OpenCourseWare including lecture notes, assignments, and exams.
École Polytechnique Fédérale de Lausanne (via Coursera)
Reactive programming is a set of techniques for implementing scalable, resilient and responsive systems as per the Reactive Manifesto. Such systems are based on asynchronous message-passing, and their basic building-blocks are event handlers. This course teaches how to implement reactive systems in Scala and Akka by using high-level abstractions, such as actors, asynchronous computations, and reactive streams. You will learn how to: use, transform and sequence asynchronous computations using Future values write concurrent reactive systems based on Actors and message passing, using untyped Akka and Akka Typed design systems resilient to failures implement systems that can scale out according to a varying workload transform and consume infinite and intermittent streams of data with Akka Stream in a non-blocking way understand how back-pressure controls flows of data
MIT OpenCourseWare
This resource presents a collection of essays developed from the author’s experience teaching the course 12.800 Fluid Dynamics of the Atmosphere and Ocean, offered to graduate students entering the MIT/WHOI Joint Program in Oceanography. The collection includes the following three essays: Essay 1: Lagrangian and Eulerian Representations of Fluid Flow Part 1: Kinematics and the Equations of Motion Part 2: Advection of Parcels and Fields Essay 2: Dimensional Analysis of Models and Data Sets: Similarity Solutions and Scaling Analysis Essay 3: A Coriolis Tutorial Part 1: The Coriolis Force, Inertial and Geostrophic Motion Part 2: A Rotating Shallow Water Model and Geostrophic Adjustment Part 3: Beta Effects and Western Propagation Part 4: Wind-Driven Ocean Circulation and the Sverdrup Relation Part 5: On the Seasonally-Varying Circulation of the Arabian Sea The goal of this resource is to help each student master the concepts and mathematical tools that make up the foundation of classical and geophysical fluid dynamics. These essays treat these topics in considerably greater depth than a comprehensive fluids textbook can afford, and they are accompanied by data files (MATLAB® and Fortran) to allow some application and experimentation. They should be suitable for self-study. Level: Advanced. Free course materials from MIT OpenCourseWare including lecture notes, assignments, and exams.
Vanderbilt University (via Coursera)
This course teaches computer programming to those with little to no previous experience. It uses the programming system and language called MATLAB to do so because it is easy to learn, versatile and very useful for engineers and other professionals. MATLAB is a special-purpose language that is an excellent choice for writing moderate-size programs that solve problems involving the manipulation of numbers. The design of the language makes it possible to write a powerful program in a few lines. The problems may be relatively complex, while the MATLAB programs that solve them are relatively simple: relative, that is, to the equivalent program written in a general-purpose language, such as C++ or Java. As a result, MATLAB is being used in a wide variety of domains from the natural sciences, through all disciplines of engineering, to finance, and beyond, and it is heavily used in industry. Hence, a solid background in MATLAB is an indispensable skill in today’s job market. Nevertheless, this course is not a MATLAB tutorial. It is an introductory programming course that uses MATLAB to illustrate general concepts in computer science and programming. Students who successfully complete this course will become familiar with general concepts in computer science, gain an understanding of the general concepts of programming, and obtain a solid foundation in the use of MATLAB. Students taking the course will get a MATLAB Online license free of charge for the duration of the course. The students are encouraged to consult the eBook that this course is based on. More information about these resources can be found on the Resources menu on the right.
Packt
This course features Coursera Coach! A smarter way to learn with interactive, real-time conversations that help you test your knowledge, challenge assumptions, and deepen your understanding as you progress through the course. In this comprehensive course, you will dive deep into the world of C++ templates, gaining both theoretical knowledge and practical experience. You’ll start with foundational concepts like template syntax and basic function templates, before advancing to more complex topics like class templates, specialization, and template instantiation. By understanding how templates enhance code reusability and flexibility, you’ll unlock powerful programming techniques to elevate your C++ skills. The course is structured into distinct modules focusing on key areas such as function templates, class templates, and template changes across C++ standards. You'll explore critical topics like non-type template parameters, template argument deduction, and the practical uses of variadic templates. In addition, we'll cover template optimizations introduced in C++11, C++14, C++17, and C++20, ensuring you’re equipped with the most up-to-date tools for real-world applications. Whether you're a seasoned C++ developer or someone eager to master template programming, this course will provide you with the depth of knowledge required to use templates effectively in modern C++ programming. By tackling hands-on examples and a final project, you'll sharpen your problem-solving skills and get exposure to best practices in template-based design. This course is perfect for intermediate to advanced programmers who already have a basic understanding of C++ syntax and object-oriented programming principles. It’s ideal for developers aiming to specialize in template programming and those who want to improve their skills in managing complex codebases. By the end of the course, you will be able to create and optimize function and class templates, apply advanced template features intr...
MIT OpenCourseWare
Students work in small collaborative design teams to propose, build, and document a semester-long project focused on mobile applications for cell phones. Additional assignments include creating several small mobile applications such as context-aware mobile media capture and games. Students document their work through a series of written and oral proposals, progress reports, and final reports. This course covers the basics of J2ME and explores mobile imaging and media creation, GPS location, user-centered design, usability testing, and prototyping. Java experience is recommended. Level: Beginner. Free course materials from MIT OpenCourseWare including lecture notes, assignments, and exams.
École Polytechnique Fédérale de Lausanne (via Coursera)
Reactive programming is a set of techniques for implementing scalable, resilient and responsive systems as per the Reactive Manifesto. Such systems are based on asynchronous message-passing, and their basic building-blocks are event handlers. This course teaches how to implement reactive systems in Scala and Akka by using high-level abstractions, such as actors, asynchronous computations, and reactive streams. You will learn how to: use, transform and sequence asynchronous computations using Future values write concurrent reactive systems based on Actors and message passing, using untyped Akka and Akka Typed design systems resilient to failures implement systems that can scale out according to a varying workload transform and consume infinite and intermittent streams of data with Akka Stream in a non-blocking way understand how back-pressure controls flows of data
Packt
Updated in May 2025. This course now features Coursera Coach! A smarter way to learn with interactive, real-time conversations that help you test your knowledge, challenge assumptions, and deepen your understanding as you progress through the course. In this comprehensive course, you'll embark on a journey to master Selenium, a powerful tool for automating web applications. Starting with the basics of setting up your first web application, you'll learn to efficiently locate web elements using various strategies like ID, name, and tag name. The course includes the use of TestNG for project setup and debugging techniques. You'll explore handling different form elements, creating robust automation scripts that mimic real-world interactions. Advanced topics like window navigation, alert handling, and using WebDriver's manage window methods are covered, along with implicit and explicit waits for dynamic web testing. The course also covers cross-browser testing, headless tests, and data-driven testing using CSV and Excel files. By the end, you'll understand the Page Object Model, Selenium Grid, and standalone server, equipping you with the skills to scale your automation tests. Designed for QA professionals and software testers with basic web technology knowledge, the course enhances skills in automated testing using Selenium. Fundamental Java knowledge is recommended.
Korea Advanced Institute of Science and Technology(KAIST) (via Coursera)
The goal of this course is to help students: 1. learn new languages quickly, 2. evaluate various languages and pick the most suitable one for a given task, 3. know when and how to design a little language, and 4. understand the effects of languages on thought and communication. We will study programming language concepts, not as paradigms but as a set of basic building blocks, by 1) implementing interpreters for the concepts using the Scala programming language and 2) rigorously discussing the concepts using the operational semantics.
EPFL (via edX)
Reactive Programming Principles in Scala
Coursera
Professor Tak Auyeung of American River College, said it beautifully, “A programming language is not a fashion statement” it is used for a purpose. Whether it is to add new features, modify logic, create APIs to integrate it into other applications, or implement modern development practices, businesses around the world need application developers who know COBOL. This introductory COBOL course helps a novice learn the Structure of COBOL programs, Data types & Variable Handling, Intrinsic Functions, Branching logic and more. The goal of the course is to enable the participant to be able to write basic COBOL programs. This is a fantastic compliment to the IBM z/OS Practitioner path for the IBM Mainframe. Join the COBOL Fridays web series. These webinars are curated for first-time programmers, lifelong learners, and anyone who's interested in learning COBOL. http://ibm.biz/cfcoursera On successful completion of this course, learners are eligible to earn their COBOL Programming with VSCode badge.
Coursera
Welcome to IBM COBOL – Data and File Management! By enrolling in this course, you are taking a big step in increasing your knowledge and hands on experience with IBM COBOL data and file management. In this course, you will learn the fundamental elements of COBOL code. You will learn the process of working with COBOL data. You will learn handling COBOL files. This course also relational databases in a mainframe, COBOL context. So let’s get started!
Duke University (via Coursera)
In this project, you will learn how to use the Zola static site generator to build and deploy a fast, secure static website. You will install Zola, create a site structure, incorporate themes and templates, customize content and configuration, and deploy the final site to a cloud hosting platform. By the end of the project, you will have hands-on experience building a production-ready site with Zola that can be used for personal or professional use cases.
Packt
Updated in May 2025. This course now features Coursera Coach! A smarter way to learn with interactive, real-time conversations that help you test your knowledge, challenge assumptions, and deepen your understanding as you progress through the course. This course begins with an in-depth exploration of WebDriver Event Listeners, providing insights into its operations through a detailed two-part series. You'll then transition to cross-browser testing using Selenium Grid 2.0, learning to configure hubs and nodes, set up Grid with JSON files, and run test cases in a Grid environment with real-world examples. The course advances into build management with Maven, highlighting its features and advantages, and demonstrating how to create, import, and migrate Maven projects. You'll integrate Maven with TestNG and generate reports to boost project management and testing efficiency. Next, dive into Git and GitHub for robust version control, covering installation, repository creation, branching, and conflict resolution. Continuous integration with Jenkins is thoroughly covered, from setup and configuration to managing plugins and securing Jenkins. You'll build freestyle and remote projects, schedule builds, and integrate with Git, mastering CI/CD pipelines for automated software delivery. By the end, you'll implement WebDriver Event Listeners, configure Selenium Grid, manage builds with Maven, utilize Git and GitHub, set up Jenkins, execute database and performance testing, integrate with Sauce Labs, and generate advanced reports. Designed for intermediate to advanced testers, developers, and automation engineers with basic Selenium and Java knowledge, this course enhances skills in automation frameworks and continuous integration tools.