## 4.1 Algorithms and Data Structures

The fundamental toolkit for the aspiring computer scientist or programmer.

What are Data Structures?

Allocating Memory

Records in Memory

Pointers to Pointers

Linked Lists

Timing Programs with a Stopwatch

Counting Operations

Best, Worst, and Average Case

Comparing Algorithms

Understanding Big O

The Mathematics of Big O

Running Time

### Course description

Storing and manipulating data is a fundamental part of computer science, and every programming language provides a few simple ways of doing it. Programmers are then free to use these building blocks to design and implement data structures, special-purpose tools for storing data in particular ways.

### Topics covered

- Data structures
- Records (or structs)
- Memory allocation
- Memory aliasing
- Pointers
- Linked lists
- Running time
- Big-O notation
- Best, worst, and average case analysis

### Prerequisites and next steps

This course assumes understanding of the basics of algorithms, as well as familiarity with variables, loops, conditionals, and arrays.

Up next

### 5.1 Introduction to Neural Networks

Delve into the inner machinery of neural networks to discover how these flexible learning tools actually work.

Jump ahead