Choose your language
Programming Languages Course
More than 2 million students worldwide

Programming Languages Course

Master the theory and practice behind every major programming language paradigm, from syntax and semantics to memory management and compiler construction. This course gives you the deep, transferable knowledge to evaluate, design, and work confidently across any language ecosystem. Whether you're advancing your career or sharpening your computer science foundations, this is the definitive resource for serious programmers.

Dedika for businesses

What you will learn:

You will build a rigorous understanding of how programming languages are designed, classified, and implemented. The course covers formal grammars, parsing techniques, type systems, scoping rules, and control-flow mechanisms across multiple paradigms. You will study functional, object-oriented, imperative, and logic programming in depth, then move into memory management strategies and runtime system architecture. Supplementary material covers compiler construction, metaprogramming, domain-specific language design, and polyglot system integration. By the end, you will be equipped to evaluate any language against real project requirements and communicate those decisions clearly to technical teams.

How you study in practice Programming Languages Course

How you practise Programming Languages Course

For companies looking to train their teams

With Dedika for businesses, the course includes exercises and examples tailored to your company and its specific needs.

Click here

Course content

8 Chapters • 37 LessonsDuration between 4 and 360 hours (you decide)

Chapter 1See details

Foundations of Programming Languages

  • Lesson 1 • History and Evolution of Languages

    Traces language development from assembly through modern paradigms. Provides historical context for understanding current design decisions.

  • Lesson 2 • What Is a Programming Language

    Defines programming languages as formal systems for expressing computation. Establishes vocabulary used throughout the course.

  • Lesson 3 • Language Classification and Paradigms

    Categorises languages by paradigm: imperative, functional, logic, and object-oriented. Prepares students to evaluate any language against a taxonomy.

  • Lesson 4 • Language Design Goals and Trade-offs

    Examines the competing priorities—readability, writability, reliability—that shape language design. Connects design choices to real-world usability.

Chapter 2See details

Syntax, Grammars, and Parsing

  • Lesson 1 • Abstract Syntax Trees

    Distinguishes abstract syntax trees from parse trees and explains their role in compilation. Prepares students for semantic analysis in later chapters.

  • Lesson 2 • Top-Down and Bottom-Up Parsing

    Compares recursive-descent and shift-reduce parsing strategies. Equips students to choose and implement appropriate parsers.

  • Lesson 3 • Lexical Analysis and Tokenization

    Covers the role of the lexer in converting source text into tokens before parsing. Bridges raw source code and grammar-level analysis.

  • Lesson 4 • Parse Trees and Ambiguity

    Explains how parse trees represent syntactic structure and how ambiguity undermines deterministic parsing. Directly supports grammar design skills.

  • Lesson 5 • Formal Grammars and BNF Notation

    Introduces context-free grammars and Backus-Naur Form as tools for specifying language syntax. Grounds all subsequent parsing work.

Chapter 3See details

Semantics and Type Systems

  • Lesson 1 • Approaches to Formal Semantics

    Introduces operational, denotational, and axiomatic semantics as complementary frameworks. Establishes the basis for reasoning about programme correctness.

  • Lesson 2 • Type Systems Fundamentals

    Defines types, type checking, and the spectrum from static to dynamic typing. Connects type discipline to programme reliability.

  • Lesson 3 • Type Inference and Polymorphism

    Covers algorithm-based type inference and parametric polymorphism. Demonstrates how languages achieve generality without sacrificing safety.

  • Lesson 4 • Advanced Type Constructs

    Explores algebraic data types, dependent types, and generics. Prepares students to leverage expressive type systems in modern languages.

Chapter 4See details

Variables, Scope, and Binding

  • Lesson 1 • Variables and Storage Models

    Examines variable attributes—name, type, value, lifetime—and how storage is allocated. Grounds all subsequent scope and binding discussions.

  • Lesson 2 • Namespaces and Modules

    Covers namespace mechanisms that partition the global scope and support large-scale programmes. Bridges scope theory to practical software organisation.

  • Lesson 3 • Scope Rules and Visibility

    Contrasts static (lexical) and dynamic scoping and their effects on name resolution. Directly impacts how students read and write code in any language.

  • Lesson 4 • Binding Time and Lifetime

    Distinguishes when bindings are established—compile time vs. runtime—and how long they persist. Connects to memory management concepts introduced later.

Chapter 5See details

Control Flow and Structured Programming

  • Lesson 1 • Concurrency and Coroutines

    Introduces threads, async/await, and coroutines as advanced control-flow abstractions. Extends structured programming to concurrent execution models.

  • Lesson 2 • Subprograms and Parameter Passing

    Examines function and procedure design, including all parameter-passing modes. Connects to scope and binding concepts from the previous chapter.

  • Lesson 3 • Conditional and Selection Statements

    Covers if-else, switch, and pattern-matching constructs across paradigms. Establishes the baseline for all control-flow study.

  • Lesson 4 • Iteration and Loop Constructs

    Analyses counter-controlled, condition-controlled, and collection-based loops. Prepares students to reason about termination and efficiency.

  • Lesson 5 • Exception Handling Mechanisms

    Covers exception declaration, propagation, and handler design. Demonstrates how languages manage abnormal control flow safely.

Chapter 6See details

Imperative and Object-Oriented Languages

  • Lesson 1 • OOP Design Patterns in Practice

    Applies classic design patterns to reinforce OOP principles. Bridges language features to professional software architecture.

  • Lesson 2 • Imperative Language Core Concepts

    Reviews assignment, sequencing, and state mutation as the foundation of imperative programming. Anchors OOP study in procedural roots.

  • Lesson 3 • Classes, Objects, and Encapsulation

    Defines classes as templates and objects as instances, emphasising encapsulation. Builds the structural vocabulary for OOP design.

  • Lesson 4 • Inheritance and Polymorphism

    Covers single and multiple inheritance, method overriding, and dynamic dispatch. Connects type system concepts to OOP runtime behaviour.

  • Lesson 5 • Interfaces, Abstract Classes, and Mixins

    Examines design contracts through interfaces and abstract classes. Extends inheritance to flexible composition patterns.

Chapter 7See details

Functional Programming Languages

  • Lesson 1 • Higher-Order Functions and Closures

    Covers map, filter, fold, and closure capture as fundamental functional tools. Builds on scope and binding knowledge from earlier chapters.

  • Lesson 2 • Algebraic Data Types and Pattern Matching

    Uses sum and product types with pattern matching to model data precisely. Reinforces type system concepts in a functional context.

  • Lesson 3 • Core Functional Concepts

    Introduces pure functions, immutability, and referential transparency as the pillars of functional programming. Contrasts with imperative state mutation.

  • Lesson 4 • Recursion and Tail-Call Optimisation

    Examines recursion as the primary iteration mechanism and tail-call optimisation as a performance strategy. Connects to control-flow concepts.

  • Lesson 5 • Monads and Functional Effects

    Introduces monads as a structured way to handle effects like I/O and state. Advances students to professional-level functional design.

Chapter 8See details

Memory Management and Runtime Systems

  • Lesson 1 • Manual Memory Management

    Covers explicit allocation and deallocation, including common errors like leaks and dangling pointers. Connects to variable lifetime concepts.

  • Lesson 2 • Runtime System Architecture

    Explores the components of a language runtime: call stack, heap manager, and GC integration. Synthesises all memory topics into a unified model.

  • Lesson 3 • Garbage Collection Algorithms

    Surveys mark-and-sweep, reference counting, and generational GC strategies. Equips students to reason about GC overhead and pause times.

  • Lesson 4 • Memory Layout and Allocation

    Describes stack, heap, and static memory regions and how languages allocate objects. Grounds all memory management discussions.

  • Lesson 5 • Ownership and Borrow Checking

    Examines ownership-based memory safety as an alternative to GC. Demonstrates how compile-time rules eliminate entire classes of runtime errors.

Certification

Your valid completion certificate

This course is for you:

  • Software developers: wanting to move beyond a single language's limitations.

  • Computer science students: ready to connect classroom theory to real-world practice.

  • Backend engineers: curious about why languages behave differently under the hood.

  • Career changers: entering software development with a hunger for foundational depth.

  • Technical leads: needing a principled basis for guiding team language decisions.

What our students say

Your lessons are perfect. I purchased the one-year package and finally have the opportunity to follow various topics of interest without needing to change platforms... I'm grateful for everything you do, I've already recommended you to other people...
Giulio Carlo
Giulio CarloDigital Marketing Student
I like how the lessons are straight to the point and how I can change chapters and skip content I don't need.
Mariana Ferres
Mariana FerresPhotography Student
I like the content and the way videos are presented and transcribed, which speeds up the process!
Luciana Alvarenga
Luciana AlvarengaNail Design Student
The platform is fast, simple to use. The diversity of content and complementary videos really help with learning.
André Felipe
André FelipePrompt Engineering Student

Top qualifications

FAQ

Who is Dedika?

Is the certificate valid in South Africa?

Are the courses free?

What is the course workload?

What are the courses like?

How do the courses work?

What is the duration of the courses?

What is the cost or price of the courses?

What is an EAD or online course and how does it work?

PDF Course