
Implement a stack in C using an array with a top index, supporting push, pop, and peek, including overflow, underflow, empty checks, and stack creation with malloc.
Showcases a C function that takes a two dimensional matrix and returns the max of each row and the min of each column using two one dimensional arrays.
Explore how a hello world program uses a preprocessor directive, the main function, and printf to print a message, while scanf, variables, and assignment teach input, memory, and C basics.
Declare variables by type and name, allocating memory and defining operations. Explore primitive types such as int, char, float, and double, and print with printf using %d, %f, %c.
Learn how to read inputs with scanf in c/c++, using the address operator and format specifiers, then compute and display results with proper type handling and precision.
Master C operators through practical examples of arithmetic, relational, logical, and bitwise operations, including shifts, augmented assignments, and operator precedence.
Learn to write, compile, and run C programs on Unix/Linux using gcc, bash, and a file editor; create source, compile with output file, and run with command line arguments.
Learn to write a C program that reads a circle radius, defines a pi constant, and computes and displays the area and circumference with four decimal places.
Master if-else in C/C++, with examples that classify numbers as even or odd, and as positive, negative, or zero, and classify characters by case and digits using ASCII ranges.
Explore selection statements in c/c++ using if-else to determine whether an alphabet entered by the user is a vowel or a consonant, handling lowercase and uppercase inputs with a scanner.
Master switch statements to map a grade input to score ranges and control flow with break. Explore definite and indefinite iteration, sentinel values, and nested ifs to build complex behavior.
Use switch case in C to evaluate a simple expression with two float operands and plus, minus, multiply, and division operators, including division-by-zero handling.
Learn how to fix integer division with casting, optimize code with assignment and increment operators, and master the for loop to automate tasks like summing evens and simulating compound interest.
Learn repetition structures in C with do-while and for loops, comparing their execution order, syntax, and common pitfalls like integer overflow in factorial calculations.
Learn to implement a multiplication table using two nested for loops for rows and columns, with right-aligned formatting (width five) to produce a neat tabular output.
Learn to build a C program that prints an inches-to-centimeters conversion table using a for loop, with user-specified start and end inches in six-inch steps, and formatted output.
Read n numbers from the user and compute maximum and minimum, initializing with the first item. Sum the inputs and divide by n, casting to double for the precise average.
Write a C/C++ program that takes initial, final, and increment degrees, converts to radians using m_pi (pi/180), and prints a right-aligned table of sine and cosine values.
Compute the sum of digits of an input number by repeatedly dividing by ten and adding the remainders using a while loop, processing digits until the quotient becomes zero.
Compare nested if-else structures with switch statements in C/C++ and show how to read a month number, print the month name, and handle invalid inputs.
Classify an input character in C using an if-else chain by checking ASCII ranges for uppercase, lowercase, digits, and punctuation after reading with scanf.
Create a simple calculator in C/C++ that reads two doubles, validates the operator in a loop, applies the operation with a switch, and prints the result.
Explore modular programming in C by building and calling functions, using standard library math tools, and applying divide and conquer and recursion to compose complex solutions.
Learn how to declare, prototype, and define C functions with void and non-void return types, specify arguments, and call them from main to control program flow.
Develop a portable display_bits function that prints an unsigned integer in binary, grouped into eight bits, using a left-shifted mask and bitwise and, with input via scanf.
Explore bitwise operations in C, including and, or, xor, and complement, using unsigned 16-bit patterns, masking with a simple one, and the display bits helper for visualization.
Explore the recursive function in C by computing factorial through self calls, highlighting the base case n equals zero and the pattern of n times factorial of n minus one.
Learn to implement a recursive function that counts occurrences of a character in a string, using a base case at the end and a recursive call on the remaining part.
Write a recursive module that reads n words and prints them in reverse order using a void function with an int parameter, with the base case when n <= 1.
Implement a recursive function that extracts all capital letters from a string into a single output string. Process the first character, recurse on the rest, and combine results.
Explore how pointers in C reference memory addresses to modify variables, enable dynamic memory allocation, and support data structures like linked lists, stacks, queues, and trees.
Explore basic pointer operations in C by declaring int pointers, assigning addresses with ampersand, and dereferencing to read or modify memory contents across variables a, b, p, q, and r.
Learn how to implement a C function that accepts a double and returns its sign, integer part, and fractional part by using pointers for three outputs.
Discover how the stack and heap power memory management in C, with malloc and free, and spot leaks, invalid pointers, and use-after-free with purify.
Declare arrays in C with a type, name, and size, access elements by zero-based index, and learn memory layout, base address, and out-of-bounds risks.
Write a program that reads numbers from an array and graphs the information in a bar chart. We display each number followed by a bar consisting of that many asterisks.
Write a program that reads an integer and displays the digits that appear more than once and the number of their appearances. For example, if the user enters 1868, the program should display that digit 8 appears twice. If no digit appears more than once, the program should display a related message.
Write a program that reads an integer and displays it in binary. Use an array to store the bits of the number. To display the bits of a negative number use the two’s complement technique. For example, if the user enters -5:
a. convert it to positive (i.e., 5).
b. reverse its bits (i.e., 101 becomes 11111111111111111111111111111010.
c. add 1 (i.e., the number becomes 11111111111111111111111111111011 and that should be the output value).
Learn to simulate dice rolls in c/c++ by counting face frequencies with arrays, using rand and modulo six to produce 1–6, and seeding with time for varied results.
Write a program that simulates rolling two dice. The program should use rand twice to roll the first and second die, respectively, then calculate their sum. Because each die can have an integer value from 1 to 6, the sum of the values will vary from 2 to 12, with 7 being the most frequent sum and 2 and 12 the least frequent sums.
Your program should roll the two dice 36,000 times. Use a one-dimensional array to tally the numbers of times each possible sum appears. Print the results in tabular format. Also, determine whether the totals are reasonable—for example, there are six ways to roll a 7, so approximately one-sixth of all the rolls should be 7.
Use a one-dimensional array to solve the following problem. A company pays its salespeople on a commission basis. The salespeople receive $200 per week plus 9% of their gross sales for that week. For example, a salesperson who grosses $3000 in sales in a week receives $200 plus 9% of $3000 for a total of $470. Write a C program (using an array of counters) that determines how many salespeople earned salaries in each of the following ranges—assume that each salesperson’s salary is truncated to an integer amount:
a) $200–299
b) $300–399
c) $400–499
d) $500–599
e) $600–699
f) $700–799
g) $800–899
h) $900–999
i) $1000 and over
Learn to add two matrices in C by reading matrices A and B, computing their sum into C using two-dimensional arrays, and printing the result with nested loops.
Multiply A (m by n) with B (n by p) to get C (m by p); compute c_ij from A's i-th row and B's j-th column by summing products.
Learn to implement a C function maxint that accepts an integer array and its size, iterating to find and return the maximum value, with a practical example.
Learn to implement a C function that takes an integer array and its size, computes the sum with a for loop, casts to double, and returns the average.
Write a C function count_evens that takes an int array and its size, uses a for loop to count elements where array[i] % 2 == 0, and returns the count.
Learn how to return a variable size array from a function in C using dynamic memory allocation with malloc, storing on the heap for the caller to access.
Reverse an array in place using two indices, i and j, to swap elements from ends without extra storage; implement as a void function that reverses the array in place.
Learn to implement a shift array function in C/C++ that uses malloc to allocate int array of n+1 elements, places zero in front, shifts elements right, and returns a pointer.
Implement a reverse array function in C/C++ that takes an integer array and its size, creates a reversed heap copy, returns a pointer, and demonstrates it in a complete program.
Write a function to merge two sorted arrays into a single sorted result using i, j, and k indices and dynamic memory allocation.
Learn to compute the mirror of an image by reversing each row of a two-dimensional array in C, swapping pixel intensities in place to create a mirrored grayscale image.
Learn how to implement a 2x zoom of a grayscale image in C using nearest neighbor interpolation by duplicating each input pixel in the output matrix.
Extend a grayscale image zoom function to accept any integer zoom factor with nearest-neighbor interpolation, mapping 2d images to 1d memory via row-major indexing and using dynamic memory allocation.
Explore how C strings work, distinguishing single vs double quotes and the null terminator. Understand memory implications, delimited strings, and safe input with width specifiers to prevent buffer overflows.
Declare and manipulate a one-dimensional array in C, using fixed size and zero-based indexing. Explore strings as character arrays with a null terminator, and use strlen, strcmp, and strcpy.
Tokenize a line with strtok, store tokens, and print them in reverse. The program uses fgets to read input and delimiters space and backslash n, then outputs the reversed tokens.
Find substrings in a line with strstr: locate the first and second occurrences, and print the remainder from each, after reading text with fgets and the search string with scanf.
Learn to implement two string comparison functions in C, using array indexing and pointer arithmetic, mirroring strcmp and its n-character variant. Explore prototypes, const inputs, null-termination, and return values.
Learn to implement your own string copy and string concatenation functions in C, using array indexing and pointers, and explore the n-character copy and concatenate variants.
Create your own ctype.h style character handling in c by implementing isdigit, isalpha, islower, isupper, isspace, ispunct, isprint, isgraph, and tolower and toupper, demonstrated in a main program.
Count letter frequencies using a 26-element array, map letters to indices by subtracting the ASCII code of a, convert input to lowercase, and count only alphabetic characters across three lines.
Store five student names in a two dimensional character array, then sort them alphabetically using a string compare and a temporary copy to swap elements.
Implement a function that uses dynamic memory allocation to concatenate two strings, allocate sufficient memory, copy both strings, and return the result.
Read multiple strings into a two-dimensional array, then sort them alphabetically from A to Z using exchange sort and string comparison, and print the results.
Convert the program into a modular format by using functions to read names, print a string array, and sort it alphabetically.
Learn to reverse an array of strings in C/C++ by implementing a reverse function. It swaps end elements toward the middle using a for loop and a temporary string.
Implement a string length function in C that accepts a char array, loops to the null terminator, returns an int, and demonstrates both traditional and pointer-based approaches and strlen.
Compare two strings alphabetically using the string.h library, then implement a custom str compare that returns -1, 0, or 1 to indicate which string is greater, equal, or lesser.
Learn how to implement a decimal to binary converter as a reusable function in C, using dynamic memory allocation, pointers, and string return to handle multiple numbers.
Learn how to convert a decimal number to hexadecimal in C/C++ by dividing by 16, tracking remainders, and mapping 10–15 to A–F, with a 16-bit four-digit hex output.
Store strings in a two dimensional char array, read them with scanf, and sort them alphabetically using a function that swaps strings with a temporary buffer via strcpy and strcmp.
Sorts an array of string pointers by birth year with a function, using two parallel arrays and swapping pointers to keep data aligned, then prints both orders.
Explain how to replace parallel arrays with a C struct to encapsulate student name, number, and GPA, and demonstrate swapping and sorting complete records using dot access.
Learn to replace parallel arrays with a single structure for student records (number, name, GPA), and swap and sort these records by GPA using assignment.
Master how to pass C structs to functions by exploring three approaches: individual members, by value, and by pointer. Learn when pointers and array passing optimize speed and safety.
Pass a structure as a function input to print a student record, displaying name, student number, and GPA with a prototype before main and a print_record function for formatting.
Demonstrates how to modify a structure inside a function by passing by pointer, using the address, and the arrow operator to increment a student's GPA by 0.5.
Define and implement a function that returns a student record structure, fill its fields (name, student number, GPA), and copy the returned structure into an array element.
Store student records in a struct, read n students, compute letter grades from midterm, final, and lab, and sort by name using strcmp for an alphabetized list.
Create a shift function that moves a point by x and y using a pointer, altering main data, and test distances to find the nearest point in 2-D coordinates.
Use a stack to verify balanced expressions by pushing opening parentheses, brackets, and braces and popping to match closing ones, ignoring other characters; an empty stack at end confirms balance.
Master file input output in C by using fopen to open files for reading or writing, then read with fscanf, write with fprintf, and close with fclose.
Read numbers from an input file, round to two decimals, and write results to an output file line by line using fscanf and fprintf in C.
Learn to write a C program that reads student records, computes a total grade from midterm, final, and lab, and writes name and total to a file.
Read records from a file into a temporary student array in C using fscanf, handle end-of-file, and map name, midterm, final, laboratory, and total.
Learn to create and read binary files in C/C++, using rb/wb, specifying record size and count for fast, non human readable storage.
Learn to store an array of five student records in a binary file and restore them, using a struct with name and student number and verifying with a printout.
Split a word list into eleven output files by length, named output0.txt through output10.txt; use sprintf, fopen, and a loop to route each word.
Learn to implement a high/low halo card game in C, dealing from a deck, predicting higher or lower, tracking score and average, with booleans and function prototypes.
Create a hand data structure to hold cards with an array, size, and validity, and implement add, remove, count, get, and sort by suit or value for blackjack and poker.
Create a two-hand poker game by implementing hand rankings from royal flush to high card, evaluating and comparing hands, and applying tie-break rules for identical ranks.
Learn to model a 52-card deck in c/c++, shuffle by swapping with random indices, and deal 13 cards to four players, displaying hands in a table format.
Write a complete C program to shuffle a deck, distribute five random cards to four players, evaluate hands using ace=14, king=13, queen=12, jack=11, and determine the winner, including ties.
*New* Enroll in one course and receive a 100% free coupon for one of my other courses! Please contact me after registering for one of the courses and let me know which other course you prefer. Email address: shahram.taheri@antalya.edu.tr
This course is a complete, practical, and confidence-building journey into C programming, designed to take you from the very basics to advanced, real-world applications. Whether you are a beginner learning C for the first time or a student who wants to truly master it beyond syntax, this course is structured to help you think like a programmer.
You will start with simple, motivating examples and quickly move into core programming concepts such as variables, control structures, loops, and functions. Every topic is reinforced with clear explanations and many hands-on examples, so you don’t just learn how C works—you learn how to use it effectively to solve problems.
As the course progresses, you will gain a deep understanding of pointers, dynamic memory allocation, arrays, strings, and structures—topics that often confuse learners but are explained here step by step with intuition and practice. You will work with files, build reusable libraries, and see how C is used in real systems through system programming concepts like processes and inter-process communication.
What makes this course unique is its strong focus on applied learning. You will build complete programs, solve exam-level problems, and work through full case studies such as card games, spell correction systems, linked lists, and image processing tasks. Advanced examples, debugging insights, and clean coding practices are introduced naturally as your skills grow.
The course also smoothly prepares you for the next step by introducing C++ concepts such as object-oriented programming, templates, and operator overloading—helping you transition from procedural to modern programming paradigms.
By the end of this course, you will:
Write clean, efficient, and confident C programs
Understand memory and pointers at a deep level
Solve real programming problems independently
Be well prepared for exams, interviews, and advanced courses
If you want to truly understand programming fundamentals and build a strong foundation for systems programming, embedded systems, operating systems, or C++, this course will guide you every step of the way.