Western Governors University

C949: Data Structures and Algorithms I

A study guide to WGU's C949, the computing course on core data structures, their algorithms and how to choose between them.

Updated October 2026 · 5 min read

C949 Data Structures and Algorithms I is a Western Governors University computing course on the building blocks every programmer uses to store and process data.

The course description covers dynamic data structures such as bags, lists, stacks, queues, trees and hash tables, with their associated algorithms. It also treats object-oriented design and abstract data types as design paradigms, and emphasizes problem solving and designing efficient, maintainable software.

C949 feels hard because it is abstract. You need to picture what happens in memory, compare options by efficiency and trace algorithms by hand, often without a compiler to help.

Course at a Glance

ItemDetails
UniversityWestern Governors University (WGU)
Course codeC949
LevelUndergraduate, competency-based
Subject areaComputer science: data structures and algorithms
Followed byC950 Data Structures and Algorithms II
Typical workTracing algorithms, choosing structures, complexity analysis

What C949 Covers

TopicIn plain language
Abstract data typesWhat a structure does (its operations), separate from how it is built
Lists and bagsOrdered and unordered collections; arrays versus linked lists
Stacks and queuesLast in, first out versus first in, first out
TreesHierarchies; binary search trees keep data sorted for fast lookup
Hash tablesNear-constant-time lookup by key, with collision handling
Searching, sorting and Big-OHow running time grows as input grows

Key Concepts Explained

Big-O Notation

Big-O describes how the work an algorithm does grows with input size n. Linear search is O(n); binary search on sorted data is O(log n); a simple nested-loop sort is O(n squared).

Example: Searching a sorted list of 1,000,000 items. Linear search may check all 1,000,000. Binary search halves the range each step, so it needs at most about 20 comparisons, because 2 to the power 20 is just over a million.

Stacks in Action

A stack supports push, pop and peek. It suits any problem where the most recent item must be handled first, such as undo features or matching brackets.

Example: To check "( [ ] )", push "(" then "[". On "]", pop "[" (a match). On ")", pop "(" (a match). The stack ends empty, so the brackets are balanced. For "( ]", popping "(" on "]" is a mismatch.

Hash Table Collisions

A hash function maps keys to buckets. When two keys land in the same bucket, chaining stores both in a list there, while open addressing probes for the next free slot.

Example: With 10 buckets and hash = key mod 10, keys 15 and 25 both map to bucket 5. Chaining stores them as 15 then 25 in bucket 5; linear probing puts 25 in bucket 6 if it is empty.

Choosing the Right Structure

Much of C949 comes down to one question: given what a program needs to do most often, which structure fits? Start from the operations, not the structure.

ScenarioGood fitWhy
Undo history in an editorStackLatest action is undone first
Print jobs or help-desk ticketsQueueFirst come, first served
Look up a user by IDHash tableFast access by key
Keep names sorted while addingBalanced search treeOrdered and fast to search
Frequent inserts in the middleLinked listNo shifting of elements
Fast access by positionArrayDirect indexing

Abstract Data Types Versus Implementations

A list is an abstract data type: it promises operations like insert, remove and get. An array-based list and a linked list are two implementations with different costs.

Getting item 500 is instant in an array but needs 500 steps along a linked list, while inserting at the front is the reverse. Questions often test whether you can separate the promise from the build.

Typical Work and How to Approach It

Task typeWhat it testsHow to approach it
Trace an algorithmStep-by-step understandingWrite the state after every step
Choose a structureMatching needs to operationsList the operations used most, then compare costs
Complexity questionsBig-O reasoningCount loops and how input shrinks
Short implementationsApplying the conceptsTest edge cases: empty, one item, duplicates

Confirm the current assessment format on your WGU course page, as versions change.

Where Students Get Stuck

Study Tips for C949

How We Help with C949

Send the topics, practice questions or code you are working on. A computer science tutor prepares explained notes, hand traces, complexity walkthroughs and practice problems with answers, or reviews your own code and reasoning.

GradeEssays is independent of Western Governors University. Our help is for learning: we never take exams, complete proctored assessments or access student accounts. Use our material to study, then complete your own work under WGU's academic integrity rules. Revisions within the scope of your original request are free.

Master C949 Data Structures

Share what you are studying and where you lose marks. A CS tutor prepares explained notes, traces and practice problems.

Start My C949 Help

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

Frequently Asked Questions

What does C949 cover?

Dynamic data structures such as bags, lists, stacks, queues, trees and hash tables, their algorithms, abstract data types and efficient software design.

Is C949 hard?

It is abstract rather than long. Drawing structures and tracing algorithms by hand makes it much more manageable.

What is the difference between a stack and a queue?

A stack removes the most recently added item first (LIFO); a queue removes the oldest item first (FIFO).

Why does Big-O matter?

It predicts how an algorithm scales, so you can choose a structure that stays fast as data grows.

Which course follows C949?

C950 Data Structures and Algorithms II, which moves on to graphs, advanced hashing, dynamic programming and NP-complete problems.

Can you help me prepare for C949?

Yes, with explained notes, traces and practice questions. We do not sit exams or log in to WGU systems for you.