Western Governors University

D793: Formal Languages Overview

A guide to WGU's D793, the graduate computer science course on programming language design, formal semantics, type systems and verification.

Updated October 2026 · 5 min read

D793 is one of the opening courses in WGU's Master of Science, Computer Science programs.

WGU describes it as an introduction to programming language design and theory that centers on formal semantics and type systems, covering imperative, functional and parallel languages and the techniques used to prove language properties and verify program specifications.

It is theoretical in a way many working programmers have not met. The skill is precise reasoning: stating what a construct means, what a type rule guarantees and why a program meets its specification. Students who are fluent coders but have not used formal notation recently often need time to adjust. The guide lists three competency units.

Course at a Glance

ItemDetails
UniversityWestern Governors University (WGU)
Course codeD793
LevelGraduate (3 competency units in the guide)
ProgramsM.S. Computer Science: AI and Machine Learning, and Human-Computer Interaction
Subject areaProgramming language theory and verification
Typical workA written assessment applying semantics, types and verification ideas

What D793 Covers

Beyond the headline topics, WGU's description mentions differentiating functional from procedural languages, exploring compiled, interpreted, query and assembly languages, and examining object-oriented principles, program correctness, testing and verification. The two listed competencies are:

Competency (summarized)What it means in practice
Explain history, formal semantics and type systems for different language typesDescribe how languages differ and how their meaning and typing rules are defined
Apply techniques for proving language properties and verifying specificationsUse proofs, invariants and checks to show a program or language behaves as claimed

Key Concepts Explained

Formal Semantics

Semantics gives a precise meaning to program constructs. Operational semantics describes how a program executes step by step; other approaches describe meaning in terms of mathematical functions or logical assertions. The aim is to remove ambiguity.

Example: For an assignment such as x := x + 1 starting with x = 4, a small-step rule evaluates the right side to 5 and then updates the store so x maps to 5. Writing each step shows exactly what the construct does.

Type Systems

A type system assigns types to expressions and rejects programs that misuse them. Type soundness is the key property: a well-typed program does not "go wrong" in ways the system claims to prevent. Static typing checks before running; dynamic typing checks during execution.

Example: A typing rule might say that if e1 and e2 both have type int, then e1 + e2 has type int. An expression adding an int to a string has no derivation, so the checker rejects it.

Program Correctness

Correctness is shown relative to a specification. A loop invariant is a condition true before and after each iteration; combined with termination and the exit condition, it proves the loop does its job.

Example: A loop that sums an array has the invariant "total equals the sum of the first i elements". It holds at the start (i = 0, total = 0), is preserved by each step, and at the end (i = n) gives the full sum.

Typical Assignments and How to Approach Them

Task elementWhat it testsHow to approach it
Language comparisonParadigm understandingContrast functional and procedural styles with a small code example each
Semantic or typing derivationPrecise reasoningWrite each rule application on its own line and name the rule used
Correctness argumentVerification techniqueState the specification, invariant, termination and conclusion
Language evaluationJudgment against requirementsChoose a language for a business need and justify with its properties

How to Read and Write a Proof

Formal arguments follow a pattern. Learning the pattern is more useful than memorizing individual proofs, because the same shape returns in every task.

Where Students Get Stuck

Study Tips for D793

How We Help with D793

Send the task, rubric and any draft or notes. A writer with a computer science background can prepare a worked model for study, explain notation and proof technique in plain language, or review your reasoning for missing steps. See our master's assignment help guide for how orders work.

GradeEssays is independent of Western Governors University. Model work is for study and reference; what you submit must be your own under WGU's academic integrity policy, and no outcome is promised. Orders are written from scratch with free revisions within the scope of your original request, and a full refund if late.

Make Sense of Your D793 Task

Share the task, rubric and draft. A writer prepares a worked model with each reasoning step explained.

Start My D793 Help

Free revisions · Full refund if late · Written from scratch for your order

Frequently Asked Questions

Which programs include D793?

WGU's guides list it in the M.S. Computer Science plans for AI and Machine Learning, and Human-Computer Interaction.

How many competency units is D793?

Three, according to the guides.

Is D793 mostly coding?

It is mostly reasoning about languages. You may read or write short code samples, but the emphasis is semantics, types and verification.

What is type soundness?

The guarantee that well-typed programs avoid the kinds of errors the type system is designed to prevent.

What is a loop invariant?

A condition that holds before and after every iteration and helps prove the loop correct.

Do I need advanced maths first?

Comfort with logic and basic discrete mathematics helps; the course resources introduce the notation used.