Pointers
Program translation
Data types and ADTs
Processes and threads
100

This is used to read the memory referenced by a pointer

What is a dereference (*)?

100

This runs before the compiler and handles directives like #include and #define

What is the preprocessor?

100

Four of C's primitive types

What are char, short, int, long, float, double (any four)?

100

This C library can be used to create and manage threads

What is pthread?

200

This function allocates space on the heap

What is malloc?

200

This step runs after the compiler and combines multiple object modules into a load module

What is the linker?

200

An ADT implements this object-oriented principle by hiding its implementation in a separate file

What is encapsulation/data hiding?

200

This system call creates a copy of a process. You can check the return value to see if you are the original process or the copy

What is fork?

300
Two kinds of bugs one can face by mishandling pointers

What are dangling pointers and memory leaks?

300

This step converts the source code into a list of tokens

What is lexing (lexical analysis)?

300

This data structure allows multiple fields to overlap in memory -- writing to one can overwrite the contents of others.

What is a union?

300

This resource is shared by threads but not by processes

What is memory?

400

This keyword indicates that two function arguments cannot point to the same memory

What is restrict?

400

The order of the following translation steps:

Optimization, semantic analysis, code generation, lexical analysis, parsing.

What is lexical analysis, parsing, semantic analysis, optimization, code generation?

400

Two functions any ADT should have

What are create/destroy? (new/delete, etc.)

400

This can be used to prevent two threads from accessing the same resource at the same time.

What is a mutex?