# include <noob.h>

From Noob to Pro in C

Master system-level programming, memory management, and advanced algorithms - one step at a time.

4.8 GHz
Processing Power
64 GB
RAM Available
main.c
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>

#define THREAD_COUNT 4

void *parallel_task(void *arg) {
    int thread_id = *(int*)arg;
    printf("Thread %d executing\n", thread_id);
    return NULL;
}

int main() {
    pthread_t threads[THREAD_COUNT];
    int thread_args[THREAD_COUNT];
    
    for(int i = 0; i < THREAD_COUNT; i++) {
        thread_args[i] = i;
        pthread_create(&threads[i], NULL,
                      parallel_task,
                      &thread_args[i]);
    }
    
    for(int i = 0; i < THREAD_COUNT; i++) {
        pthread_join(threads[i], NULL);
    }
    
    return 0;
}

Core System Programming Topics

01

Memory Management

  • → Stack vs Heap
  • → Memory Allocation
  • → Memory Leaks
  • → Garbage Collection
0x01
0x02
0x03
02

Multithreading

  • → Thread Creation
  • → Synchronization
  • → Mutex & Semaphores
  • → Race Conditions
$ gcc -pthread main.c
03

System Calls

  • → File Operations
  • → Process Management
  • → Signal Handling
  • → IPC Mechanisms
int fd = open("data.txt", O_RDWR);

Virtual Lab Environment

Access our high-performance computing environment for hands-on system programming experience.

Linux Environment

Ubuntu 20.04 LTS

Development Tools

GCC, GDB, Valgrind

student@ctu:~$
gcc -Wall -Wextra -O2 main.c -o program
student@ctu:~$
valgrind --leak-check=full ./program
==1234== Memcheck, a memory error detector
==1234== Command: ./program
_

Course Structure

Foundation

  • → C Language Basics
  • → Memory Model
  • → Compilation Process
  • → GNU Tools

Advanced Memory

  • → Custom Allocators
  • → Memory Pools
  • → Buffer Management
  • → Cache Optimization

System Integration

  • → Kernel Modules
  • → Device Drivers
  • → System Calls
  • → POSIX APIs

Performance

  • → Profiling Tools
  • → Optimization
  • → Benchmarking
  • → Assembly Integration

Interactive Labs

Memory Lab
ACTIVE
0x00
0x04
0x08
0x0C
0x10
0x14
0x18
0x1C
int *ptr = (int*)malloc(32);
*ptr = 42;  // Write to 0x00
*(ptr + 1) = 84;  // Write to 0x04
Process Lab
DEBUGGING
pid_t pid = fork();
if (pid == 0) {
    // Child process
    execl("/bin/ls", "ls", "-l", NULL);
} else if (pid > 0) {
    // Parent process
    wait(NULL);
    printf("Child completed\n");
}

Development Tools

GDB
(gdb)
break main
(gdb)
run
(gdb)
next
Valgrind
==8== HEAP SUMMARY
total heap usage: 72 allocs,
71 frees, 8,400 bytes allocated
==8== LEAK SUMMARY
Perf
Performance counter stats:
2,142,783,611 cycles
524,087,655 instructions
0.238174408 seconds time elapsed

Research Projects

Current Research Areas

  • Real-time Operating Systems
  • Embedded Systems Programming
  • High-Performance Computing
  • System Security & Exploitation
root@research:~#
./configure --enable-kernel-module
root@research:~#
make && make install
Building kernel module...
_