educative.io

Learn C from Scratch (Fahim ul Haq)


Complex Data Types - Quiz This short quiz deals with complex data structures like arrays. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5649512370536448). Debugging - Tricky Code To what degree should your code be concise instead of comprehensive? Will there always be a trade-off? Find out in the lesson below. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5929744323313664). Debugging - Quiz Now that you've learned about the gdb debugger. It's time to test the concepts! View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5763226461536256). Why program in C? - Virtues and Challenges The benefits and limitations of coding in C View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5112264407384064). Why program in C? - The Bottom Line In the end, C is a much more efficient language than many of its peers. However, it doesn't work well when prototyping is involved. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/6245697686863872). Pointers - Links For more on pointers, here are some useful links you can visit. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/4896959307448320). Input and Output - Binary Files (raw bytes) Up till now we've being playing around with files which contain ASCII text. Can C read files with binary data? Let's find out. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5648916175388672). Basic Types, Operators and Expressions - Quiz These are challenging problems which will improve your logical understanding of C. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5632925206839296). Functions - Quiz We're done with functions. Let's refresh what we've learned with this quiz. Good luck! View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5682738237538304). Why program in C? - References Get a better idea of what C really is by checking out these links. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5730774057746432). Pointers - Dynamically Allocated Memory In the heap, we can control the amount of memory allocated to a certain variable by using some built in C functions which we will discuss below. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/6304334191001600). Strings - Exercises This is a fun exercise on string manipulation. Check it out! View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/4790302384586752). Memory : Stack vs Heap - Quiz This short quiz will test the basic concepts of stacks and heaps that you've learned in this chapter. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5720843724259328). Functions - Input Arguments Let's get familiar with giving input arguments to functions. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5432840766357504). Functions - Exercises Test yourself! View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5630239073894400). Complex Data Types - Exercises Time to write some code to solve problems. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5738940401188864). Functions - Variable Scope Further increase your knowledge about function behavior in C by learning about variable scope inside and outside of a function. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/6424445635788800). Basic Types, Operators and Expressions - Exercises Practice your hands on what you have learned so far. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5388774401900544). Functions - Automatic vs Static Variables An introduction to automatic and static variables View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5361209301794816). Basic Types, Operators and Expressions - Constants In this lesson, you will get to know about constants and their different types in C. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5654100301578240). Complex Data Types - Multidimensional Arrays Enrich your knowledge with multidimensional arrays which will prove to be very useful in solving programming problems. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5693950618763264). Control Flow - Break & Continue This lesson will introduce you to the break and continue keywords and their usage. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/6331368862646272). Complex Data Types - Command-line Arguments Learn how to pass additional parameters to your program by the command-line arguments. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5178434284158976). Control Flow - Quiz Test your knowledge on loops and conditional statements. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5706180169039872). Basic Types, Operators and Expressions - Variables An introduction to Variables, which act as label for our data. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5128928880492544). Complex Data Types - Variable-Length Arrays You will be introduced to variable-length arrays so that you don't have to specify array size at compile time. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5186766520713216). Memory : Stack vs Heap - Links For further knowledge on stacks and heaps, check out the references in this lesson. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/6256900572184576). Input and Output - Links For a better understanding of I/O streams, have a look at the references below. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5916202291429376). Complex Data Types - Structures Here is another useful way of storing data: structures. A structure will allow you to store combination of data types which was not possible with arrays. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5699942098141184). Pointers - Exercises Test your knowledge on pointers and dynamic memory! View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/6240442257506304). Pointers - Pointers and Arrays In this lesson, we'll learn how C uses pointers to reference arrays. 'arr[3]' is an example of pointer arithmetic. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5740587957354496). Functions - Rationale Let's study why functions are important. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5167824104325120). Input and Output - Input and Output with Files C also lets us read and write data to files using fopen() and fclose(). View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/4571967722094592). Functions - Defining a Function Learn the syntax for defining a function. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5728885882748928). Functions - Variadic Functions Learn about the variadic functions. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5433300327858176). Strings - Arrays of Strings This lesson will teach how to make an array on strings using pointers. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/6211219300024320). Control Flow - Exercises Enhance your programming by practicing loops and conditionals. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5189010641125376). Memory : Stack vs Heap - The Heap This is the counter-part of the Stack. The heap is an unregulated area of memory, which is both good and bad as we'll learn below. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/6271185633411072). Memory : Stack vs Heap - Examples In this lesson, we'll look at some code and analyze how the Stack and the Heap behave View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5719492789272576). Strings - Strings It's time to learn how to declare strings and how C handles them. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/6155264466092032). Memory : Stack vs Heap - Stack vs Heap Pros and Cons So how do the two structures fair against each other? The trick is to know where to appropriately use them. This lesson lists the pros and cons for both. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5114542350663680). Memory : Stack vs Heap - When to use the Heap ? Since the Heap is a region of unregulated free space, its usage can be a bit complex. Let's discuss ways in which we can use it wisely. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5688895442255872). Pointers - Passing Pointers to Struct There are a couple of ways of handling structs using pointers: - (*pointer).attribute - pointer->attribute View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5629777801117696). Pointers - Quiz Now that you've learned about pointers. Let's put the concepts to test! View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5694656234913792). Memory : Stack vs Heap - The Stack Let's learn about the Stack and how it is useful in allocating memory for functions. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5131000665341952). Input and Output - I/O Streams Now, we'll delve into the input/output methods provided by the C standard library and see how we can interact with the command-line terminal. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/4824090892304384). Strings - Links Further readings for strings. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/6312666427555840). Macros and the C Preprocessor - Conditional Compilation The preprocessor also facilitates conditional compilation. See below to find out how. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5747272637743104). Debugging - The GNU Project Debugger gdb Debugging is the process of finding out where the bug in your code lies. It can fix crashes, remove any logical mistakes, and make your program more efficient. The gdb is a powerful debugging tool for C. Let's examine some of its features. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/6320998664110080). Macros and the C Preprocessor - Links Here are some further readings for Macros and the C Preprocessor. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5407420465545216). Input and Output - Exercises Here are a few interesting questions dealing with input/output and read/write. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/6740715753177088). Macros and the C Preprocessor - Quiz This quiz tests your understanding about Macros and the C Preprocessor. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5730619069825024). Debugging - Breakpoint In debugging, sometimes we need to execute or halt a code line by line. That's where breakpoints come in handy. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5724438880321536). Debugging - Gotchas In this lesson, we'll point out some common unintentional mistakes that can be made in C. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/4905291544002560). Strings - String handling routines in the C standard library The C standard library allows us to manage strings in a few ways. It also allows conversion between strings and numbers. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5085319393181696). Input and Output - Quiz Have questions about Quiz? Go for it! View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5767911197114368). Macros and the C Preprocessor - Macros Macros are a powerful extension of #define statements. They are similar to functions in the sense that they use arguments. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/4515304218558464). Miscellaneous - Topics Not Covered Here (yet) Have questions about Topics Not Covered Here (yet)? Go for it! View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5656620910510080). Advanced Topic 2 : Parallel Programming in C - MPI The purpose of MPI is to divide and manage computation among a group of processor nodes (e.g. cores or CPUs). View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5757200890855424). Setting Up Your Computing Environment - Exercises Have questions about Exercises? Go for it! View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5704093720903680). Advanced Topic 2 : Parallel Programming in C - Quiz A short quiz testing your understanding of Parallel Programming in C View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5101011223969792). Debugging - Links That's it for this section. You can find more information on gdb and debugging in the links below. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5361584574562304). Advanced Topic 1 : A Brief Tour of Some Other Useful C Libraries - GNU Scientific Library (GSL) GSL is the go-to library for programs involving deep mathematical expressions. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5711768290590720). Advanced Topic 1 : A Brief Tour of Some Other Useful C Libraries - BLAS / LAPACK BLAS and LAPACK work similar to GSL, but they are more optimized for linear algebra. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5082366603165696). Advanced Topic 2 : Parallel Programming in C - Exercises Here are some challenges based on everything you've studied so far. Good luck! View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5158825610969088). Speeding up your code - Links The links below can give you further insight about speeding up your code. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5727644637200384). Speeding up your code - Profiling your code using `gprof` Another tool available in C is 'gprof'. We'll see its functionality and how it helps us understand the program runtime. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5662197925543936). Miscellaneous - Links Have questions about Links? Go for it! View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5876291307831296). Advanced Topic 1 : A Brief Tour of Some Other Useful C Libraries - GLib If you want to work with different data structures, GLib is one of the best options. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5040140632195072). Speeding up your code - Known Slugs This lesson deals with functions which make your C program slower. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5517307203813376). Advanced Topic 1 : A Brief Tour of Some Other Useful C Libraries - Apophenia We'll now talk about Apophenia, which is used for statistical computations. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5941557630861312). Advanced Topic 2 : Parallel Programming in C - OpenMP This lesson deals with the OpenMP API which is popular for its handling of multiple threads. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5685543656488960). Advanced Topic 2 : Parallel Programming in C - Links This concludes our section on parallel programming. Be sure to check out the links below as they can help reinforce your concepts. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5160657414520832). Advanced Topic 1 : A Brief Tour of Some Other Useful C Libraries - Introduction This section will shed light on some external libraries which can great enhance C's power. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5120937556967424). Advanced Topic 1 : A Brief Tour of Some Other Useful C Libraries - GNUplot This is a UNIX utility which is used to represent graphical data. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5110807876599808). Control Flow - Loops This lesson will teach you about the general concept of loops and will also cover two types of loops: the while loop and the do-while loop. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/4830789430673408). Basic Types, Operators and Expressions - Defining Your Own Type Names Using typedef Let's make our own data type using the typedef functionality. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5298545728946176). Basic Types, Operators and Expressions - Expressions Learn about the Arithmetic, Relational and Equality operators. You'll also be able to write better code when you will know about operator precedence and a common bug made with the equality operator. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/6238164314226688). Why program in C? - What is C? Let us start with a brief history of C and discover how to write the Hello World program in C. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5750943224168448). Basic Types, Operators and Expressions - Print Statements We'll write a very basic C statement which displays some text on the screen. Let's begin. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5717392181166080). Basic Types, Operators and Expressions - Declarations The syntax for C requires you to write the type of the variable you want to declare before the variable's name. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/4838322803310592). Complex Data Types - Array Initialization and Updating array elements You will learn how to assign values to array elements after an array has been declared. You can also populate an array while it is initialized. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5762262509813760). Compiling, linking, Makefile, header files - Splitting your program into multiple files It is a general practice to divide your code into different categories or files. This section will teach you how to do this correctly. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/4921956017111040). Basic Types, Operators and Expressions - Data Types and Sizes Get familiar with all the data types used in C and also the sizes they occupy in the memory. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5951724355321856). Basic Types, Operators and Expressions - Type Conversions Learn about converting one data type to another through the implicit and the explicit type conversions. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5686812383117312). Basic Types, Operators and Expressions - Increment and Decrement Operators In this lesson, you will learn about ++, -- operators and what happens when you use them as the prefix or postfix operators. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5695604617379840). Strings - Quiz This short quiz tests the concepts of strings in explained in this chapter! View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5688545570193408). Control Flow - Conditionals This lesson will teach you how to execute code selectively based on specified conditions by introducing the if, else if, else statements and the conditional operator. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/4727110530760704). Control Flow - Switch An introduction to switch statements which are also a way to execute selective code based on specified conditions. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/4787871433097216). Functions - Return Value Get to know about how to return a value from a function. Also, discover recursion which is a very important concept in programming. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5096012251136000). Functions - Argument Checking Be careful while inputting arguments to a function. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5165935929327616). Complex Data Types - Arrays This lesson will introduce you to arrays. You will learn how arrays are defined and how to access array elements. In addition, you will also get to know about how C implements arrays and what precautions we have to take while accessing elements. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5161872890265600). Pointers - Passing Pointers to Functions After arrays and structs, we'll see that pointers works with functions two. Another very important concept dealt with in this lesson is that of passing function arguments by reference, which allows us to alter variable outside the function scope. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5707980565643264). Macros and the C Preprocessor - The C processor and the`#define` statement Have questions about The C processor and the`#define` statement? Go for it! View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5146767490285568). Compiling, linking, Makefile, header files - The GNU `make` utility and Makefiles The 'make' method serves as a recipe for your code. It makes compilation easier and cleaner. Here, we'll see how to use 'make' through Makefiles. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/4803844416471040). Compiling, linking, Makefile, header files - Links Below, you can find some more useful information about headers files and makefiles. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5078254171979776). Speeding up your code - Using the Optimizer compiler flags Have questions about Using the Optimizer compiler flags? Go for it! View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5099247972122624). Advanced Topic 2 : Parallel Programming in C - Kinds of Parallel Programming Parallel programming has many uses, but a fully parallel program is not always feasible. Find out more about this in the lesson below. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/4810692741824512). Setting Up Your Computing Environment - Install some basic tool This lesson will introduce you to ways to compile and run C code on your personal computer based on your operating system. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5691878833913856). Why program in C? - When Should I Use C? This lesson will show how can we use the optimizations that C offers compared to other languages to our advantage. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5658962204557312). Pointers - Pointers In the previous section, we learned about the Heap memory structure. Pointers are our way of accessing and manipulating the Heap. This lesson will show you how! View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/6231465775857664). Advanced Topic 2 : Parallel Programming in C - Tools for Parallel Programming Parallel Programming can be a complex affair. Fortunately, we have some models which provide us the desired parallel functionality. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/5677923948298240). Advanced Topic 2 : Parallel Programming in C - Why Parallel Programming? We now enter the world of parallel programming, a modern technique related to multitasking. Let's examine why it's so essential. View the lesson [here](https://www.educative.io/collection/page/10370001/5119797780021248/6246837463810048).
About the Learn C from Scratch (Fahim ul Haq) category [Learn C from Scratch (Fahim ul Haq)] (1)
Why do Operator Overloading? [Learn C from Scratch (Fahim ul Haq)] (2)
Cstrings and Char Arrays in C [Why program in C? - The Bottom Line] (2)
Getting Started with C [Learn C from Scratch (Fahim ul Haq)] (2)