
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.
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 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.
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.
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.
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 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.
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 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.
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.
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.
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.
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.
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.
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.
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.
Implement a function that uses dynamic memory allocation to concatenate two strings, allocate sufficient memory, copy both strings, and return the result.
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.
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.
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.
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.
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.
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.
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.