Unit 1: C Programming: Getting Started
- Unit 1.1: Printing, loops, and comments
- Unit 1.2: Integers, variables and user input
- Unit 1.3: Characters and doubles
Unit 2: C Programming: Language Foundations
- Unit 2.1: Logic conditions and if-else statements
- Unit 2.2: Arrays, for and while loops
- Unit 2.3: Strings, sort and search algorithms
Unit 3: C Programming: Modular Programming and Memory Management
- Unit 3.1: Functions and recursion
- Unit 3.2: Memory and the scope of variables
- Unit 3.3: Pointers
Unit 4: C Programming: Pointers and Memory Management
- Unit 4.1: Memory and pointers
- Unit 4.2: Multidimensional arrays
- Unit 4.3: Dynamic memory allocation
Unit 5: C Programming: Advanced Data Types
- Unit 5.1: Structures
- Unit 5.2: Structures and pointers
- Unit 5.3: Linked lists
Unit 6: Linux Basics: The Command Line Interface
- Unit 6.1: History of Linux and the command line
- Unit 6.2: The Linux file system
- Unit 6.3: C program compilation with gcc
Unit 7: C Programming: Using Linux Tools and Libraries
- Unit 7.1: Libraries in C
- Unit 7.2: Makefiles
- Unit 7.3: File operations in C
Unit 1.1: Printing, loops, and comments top
Writing your first program
Correcting simple syntax errors
Printing text and new lines
Printing multiple lines with one printf statement
Printing quotation marks, escaping special characters
Repeating one instrution with a for loop
Repeating a block of instructions with a for loop
Simple looping errors
Commenting your code
Structure of a simple C program
Unit 1.2: Integers, variables and user input top
Printing and computing with integers
Using variables
- Store integers in variables
- Change the value of a variable
- Review: Declare and initialize integer variables
- Activity: assign, re-assign and update a variable
Declaring and naming variables
- Declare and initialize variables in 1-step
- Name your variables: do's and don'ts
- Correct common syntax erros involving variables
- Activity: declare and name variables
Repeating instructions with variables
Reading user input
Reading user input inside a loop
Unit 1.3: Characters and doubles top
Using Characters
Reading characters from the user input
Using decimals
- Declare, assign and print decimal numbers
- Read decimal numbers from user input with scanf()
- Read integers and doubles with scanf()
- Read integers and doubles with one scanf() statement
- Activity: read a decimal number
Dividing in C
Finding the remainder
Converting integers to decimals
Converting decimals to integers
Practicing division
- Activity: divide decimals
- Activity: divide decimals with round off
Unit 2.1: Logic conditions and if-else statements top
Using the if statement
- Use an if statement with a static condition
- Use if and else with a static condition
- Use an if statement with dynamic condition
- Activity: if statements: carpooling
- Activity: if statements: youth hostel
Comparing decimal numbers
- Branch program flow using floating point numbers
- Activity: if statements: bridge tax
- Activity: if statements, Tug of War
Combining logic conditions using the logical AND and OR
Negating a logic condition using the logic operator NOT
Unit 2.2: Arrays, for and while loops top
Using arrays of integers
Repeating instructions with a FOR loop
Using an IF statement inside a FOR loop
Nesting IF and FOR
Repeating inside repetition
Repeating using a WHILE loop
Efficiently using a WHILE loop
Practicing WHILE loops
- Activity: guess my number
- Activity: monitoring a chemical experiment
Unit 2.3: Strings, sort and search algorithms top
Using strings (arrays of characters)
Using the special null terminator (\0) to identify the end of a string
Finding the length of a string
Working with string lengths
Sorting strings
Searching with bisection and sorting with bubble sort
Unit 3.1: Functions and recursion top
Defining functions and passing values to functions
Working with functions
Using recursion
Unit 3.2: Memory and the scope of variables top
Understanding computer memory
- Discover the Von Neumann architecture text video
- Memory representation, RAM, cells, word, byte, bit, memory address text video
Determining the amount of memory used for different data types
Determining the scope of variables
Unit 3.3: Pointers top
Defining pointers and dereferencing pointers
Using pointers with function
Performing simple pointer arithmetic
Passing arrays to functions
Unit 4.1: Memory and pointers top
Defining and dereferencing pointers
Using pointers with functions
Working with pointer arithmetic
Passing arrays to functions
Unit 4.2: Multidimensional arrays top
Working with arrays and pointers
Storing and manipulating strings in arrays
Unit 4.3: Dynamic memory allocation top
Allocating memory at runtime
Freeing dynamically allocated memory
Storing and addressing arrays in dynamically allocated memory
Unit 5.1: Structures top
Define structures
Access and modify structures
Pass structures to functions
Work with structures
Unit 5.2: Structures and pointers top
Create a structure to store the coordinates of a point
Allocate memory for structures
Get to know the concept of a linked list
Unit 5.3: Linked lists top
Creating a single node
Linking nodes
Printing a linked list
Free an entire linked list
Creating linked lists from user input
Searching a linked list
Sorting a linked list using Insertion Sort
Unit 6.1: History of Linux and the command line top
Discovering operating systems
- Operating systems genesis: definition, services (files, memory, processes), key dates
- UNIX genesis: MAC project @ MIT, MULTICS, Thompson & Ritchie
- Linux genesis and history: GNU, Stallman, GPL, Linus Torvalds, Linux
Manipulating the command line interface
- Command line interface, prompt, command options and files data, command cal as example
- First commands: echo 'hello world', date, cal, history, whoami, hostname, uptime, clear, command not found, man, command options
- Interactive commands: top, htop, nano, vim, how to get back to the prompt
- Play with commands: hello, worm, firework, rain, hanoi
Unit 6.2: The Linux file system top
Discovering the file system
- Filesystem, history, FSSTND, /bin, /sbin, /home, /root, /etc, /lib, /tmp, /var, /usr, /dev
- pwd, cd, ls, absolute path, relative path
- pwd, cd, ls, absolute path, relative path (2)
Creating and deleting files and folders
Unblocking yourself in the command line
Modifying, moving and copying files and folders
Searching files and folders
Unit 6.3: C program compilation with gcc top
Compiling C programs under Linux
Managing memory with Linux
Scanf and interactive programs in C
Unit 7: C Programming: Using Linux Tools and Libraries
Unit 7.1: Libraries in C top
Declaring and defining functions
Using the math library in C
Using multiple libraries in C
Unit 7.2: Makefiles top
Modularizing a program
Creating and using a Makefile
Unit 7.3: File operations in C top
Using arguments for main()
Reading from a file
Reading until the end of the file
Writing to a file