C Programming Language

 

Warning

Lectures

Lecture Topic Watch Duration
Warning Watching 3 min
1 Hardware & Software fundamentals View 22 min
2 Structure of a program View 13 min
3 First program View 25 min
4 Calling printf & including stdio.h View 27 min
5.1 Practicals on Windows OS View 21 min
5.2 Practicals on Ubuntu (Linux) View 24 min
5.3 Practicals on Ubuntu (VM on Windows) View 20 min
6 Accepting input using scanf View 31 min
7 if / else conditional constructs View 32 min
8 Solution of assignment given in lecture 7 View 29 min
9 while loop View 44 min
10 Nested while loop View 22 min
11 for loop View 17 min
12 do while loop View 16 min
13 break keyword View 19 min
14 continue keyword View 18 min
15 Array View 32 min
16 Two dimensional array View 27 min
17 Array (Address calculation) View 17 min
18 Exit code of a program View 11 min
19 Creating a separate function View 24 min
20 Function that returns data View 24 min
21 Local and global variable View 30 min
22 Binary system View 29 min
23 Cases of overflow View 29 min
24 char data type View 35 min
25 switch / case View 18 min
26 Data type identification / sizeof operator View 21 min
27 Pointers View 54 min
28 Memory allocation on STACK View 49 min
29 Address arithmetic View 40 min
30 One dimensional array as an argument View 17 min
31 Two dimensional array as an argument View 36 min
32 Using pointer as an array View 29 min
33 Initializing elements of an array View 23 min
34 Function parameter for array type arguments View 11 min
35 String View 39 min
36 Accept string without space using scanf View 29 min
37 String algorithms View 29 min
38 Solutions of assignments given in lecture 37 View 41 min
39 White space characters View 12 min
40 Accepting string with tabs and spaces using scanf View 67 min
41 String algorithms View 22 min
42 Solutions of assignments given in lecture 41 View 42 min
43 Clearing stdin buffer View 29 min
44 Single line block View 30 min
45 fgets to accept string View 33 min
46 Predefined string handling functions View 42 min
47 Accepting command line arguments View 28 min
48 Pointer to a function View 27 min
49 switch / case construct (Repeated) View 12 min
50 Read only variable View 16 min
51 Global variable (Repeated) View 40 min
52 Solution to assignment given in lecture 51 View 41 min
53 struct keyword to create a custom data type View 26 min
54 Pointer to a structure View 26 min
55 Memory alignment and structure padding View 45 min
56 Dynamic memory allocation View 31 min
57 Resizing memory allocation View 32 min
58 Solution of assignment given in lecture 57 View 25 min
59 Implementing singly linked list View 43 min
60 Recursion View 33 min
61 Solution of assignment given in lecture 60 View 28 min
62 Local variable as static View 15 min
63 Inner / nested structure View 20 min
64 typedef keyword View 14 min
65 Macros View 28 min
66 Statement expressions and multi-line macros View 15 min
67 Macro and variable number of arguments View 25 min
68 Enumerated data type View 20 min
69 Writing generic algorithm View 32 min
70 memcpy function View 52 min
71 Passing variable number of arguments to a function View 9 min
72 Creating library View 54 min
73 Static v/s shared library View 23 min
74 File handling (writing characters) View 39 min
75 File handling (reading characters) View 27 min
76 File handling (writing and reading strings) View 28 min
77 Little / Big Endian View 25 min
78 File handling (Text and binary mode) View 19 min
79 File handling (fwrite / fread) View 37 min
80 File handling (Applying fwrite / fread) View 41 min
81 File handling (fprintf / fscanf) View 18 min
82 fseek (moving the internal pointers) View 25 min
83 File handling (w+ r+ a+ modes) View 18 min
84 Data file porting issues View 32 min
From this point you can start learning C++ in parallel
85 File system (creating directory) View 17 min
86 File system (change / remove directory) View 13 min
87 File system (reading directory contents) View 12 min
88 File system (real path) View 7 min
89 Traversing directory recursively View 36 min
90 struct with flexible array View 31 min
91 Solution of assignment given in lecture 90 View 14 min
92 Network programming (Server side - Part 1) View 69 min
93 Data structure for various types of clients View 54 min
94 Data structures related to connected clients View 17 min
95 Accepting client connection View 20 min
96 Connecting client to server View 20 min
97 Client IP / Port from network to host byte order View 23 min
98 Explicitly set port on client side View 9 min
99 Send / Receive data View 27 min
100 Create Thread View 19 min
101 Send arguments to thread View 23 min
102 Fetch data returned by thread View 16 min
103 stdout - buffering schemes View 10 min
104 Sharing memory between threads View 24 min
105 Thread synchronization using mutex View 30 min
106 Deadlock View 25 min
107 Communication between threads - problem statement View 22 min
108 Communication between threads using condition variable View 29 min
109 Broadcast - One producer and many consumers View 27 min
110 What happens after main ends View 33 min
111 Detaching threads View 21 min
112 How to avoid deadlocks View 21 min
113 Setting thread attributes View 24 min
114 Why servers should be multi threaded ? View 18 min
115 Making the server multi threaded View 57 min
116 Kill all threads and shutdown server View 17 min
117 Shutdown server after all threads complete View 35 min
118 Project - Server Monitor - 1. Scope of the project View 14 min
119 Project - Server Monitor - 2. Network Layer - Server side skeleton View 45 min
120 Project - Server Monitor - 3. Network layer - Defining server side functions View 90 min
121 Project - Server Monitor - 4. Network Layer - Client side skeleton View 18 min
122 Project - Server Monitor - 5. Network layer - Defining client side functions View 29 min
123 Project - Server Monitor - 6. Network Layer - Planning data transmission View 42 min
124 Project - Server Monitor - 7. Network Layer - Sending request from client side View 73 min
125 Project - Server Monitor - 8. Network layer - Receiving response on client side View 45 min
126 Project - Server Monitor - 9. Network Layer - Server side receive and send implementation View 42 min
127 Project - Server Monitor - 10. Network layer - Test and remove bugs View 43 min
128 Project - Server Monitor - 11. Network layer - Get remote and local IP / Port View 79 min
129 Project - Server Monitor - 12. Network layer - Stop server implementation View 25 min
130 Project - Server Monitor - 13. Network layer - Limitations View 29 min
131 Project - Server Monitor - 14. Network layer - Creating library files View 35 min
132 Project - Server Monitor - 15. Network layer - Documenting with doxygen View 22 min
133 Project - Server Monitor - 16. Network layer - Documenting client API View 64 min
134 Project - Server Monitor - 17. Network layer - Documenting server API View 49 min
135 Project - Server Monitor - 18. Network layer - Main page documentation View 12 min
136 Project - Server Monitor - 19. Command / Action layer - Prototyping server side functions View 58 min
137 Project - Server Monitor - 20. Command / Action layer - Prototyping client side functions View 43 min
138 Project - Server Monitor - 21. Command / Action layer - Prototyping encoder functions View 57 min
139 Project - Server Monitor - 22. Command / Action layer - Implementing encoder functions View 57 min
140 Project - Server Monitor - 23. Command / Action layer - Encoding fractional numbers View 73 min
141 Project - Server Monitor - 24. Command / Action layer - Prototyping decoder functions View 43 min
142 Project - Server Monitor - 25. Command / Action layer - Introducing stream header View 49 min
143 Project - Server Monitor - 26. Command / Action layer - Extracting elements from stream View 55 min
144 Project - Server Monitor - 27. Command / Action layer - Testing decoders View 26 min
145 Project - Server Monitor - 28. Command / Action layer - Sample client application View 68 min
146 Project - Server Monitor - 29. Command / Action layer - Sample server application View 52 min
147 Project - Server Monitor - 30. Command / Action layer - Server side implementation - Part 1 View 53 min
148 Project - Server Monitor - 31. Command / Action layer - Server side implementation - Part 2 View 69 min
149 Project - Server Monitor - 32. Command / Action layer - Server side implementation - Part 3 View 57 min
150 Project - Server Monitor - 33. Command / Action layer - Server side implementation - Part 4 View 40 min
151 Project - Server Monitor - 34. Command / Action layer - Client side implementation - Part 1 View 50 min
152 Project - Server Monitor - 35. Command / Action layer - Client side implementation - Part 2 View 44 min
153 Project - Server Monitor - 36. Command / Action layer - Testing & debugging View 40 min
154 Project - Server Monitor - 37. Command / Action layer - Need to keep the connection open View 38 min
155 Project - Server Monitor - 38. Command / Action layer - Code to keep the connection open View 44 min
156 Project - Server Monitor - 39. Command / Action layer - Finalizing and creating library View 19 min
157 Project - Server Monitor - 40. Service layer - Get memory information View 35 min
158 Project - Server Monitor - 41. Service layer - Get file system usage information View 24 min
159 Project - Server Monitor - 42. Service layer - Prototyping user information service View 41 min
160 Project - Server Monitor - 43. Service layer - User information service implementation View 60 min
161 Project - Server Monitor - 44. Service layer - Get listening sockets information View 73 min
162 Project - Server Monitor - 45. Service layer - Get connected clients information View 51 min
163 Project - Server Monitor - 46. Service layer - Finalizing port service View 20 min
164 Project - Server Monitor - 47. Writing client / server project starter template View 89 min
165 Project - Server Monitor - 48. Writing template function generator View 44 min
166 Project - Server Monitor - 49. Writing template generator View 46 min
167 Project - Server Monitor - 50. Server Monitoring Application - Part 1 View 51 min
168 Project - Server Monitor - 51. Server Monitoring Application - Part 2 View 49 min
169 Project - Server Monitor - 52. Server Monitoring Application - Part 3 View 63 min
170 Open GL - Graphics Library FrameWork (GLFW) - 1 View 34 min

More topics to follow

Project - Server Monitor (Remaining parts)
Parsing command line options
ncurses
Collections using glibc
Forking processes
Raising & handling signals
Multiplexing
System calls for File Handling
Pipes
Shared Memory
UDP Client Server Programming
Interfacing C with MySQL / MongoDB
Build tools
Introduction to IOT / Embedded programming in C
GUI Programming
Image processing
Computer vision
Introduction to implementing AI / ML in C

Projects

Between various topics, you will learn to implement projects like

  • Server Monitor
  • File Transfer Client / Server
  • JSON Parser
  • HTTP Web Server
  • File System Observer & Auto Backup System
  • Chat Client / Server
  • SMTP Client
  • Smart Home Controllers
  • Streaming Server

Some part of the project will be in the form of guided assignments. You will have to implement the solutions with zero help from our side.

After completing our course / project, you can participate in Paid Open Source Programs (4 to 6 months)

Google Summer of Code (GSoC)

As of 2023 they pay around $1500 for short-term projects and around $3000 for long term projects

Outreachy

As of 2023 they pay around $7000

Linux Foundation Mentorship Program

As of 2023 the stipend amount varies from around $3000 to $6000

Many other open source programs of this kind are conducted for students.

Thinking Machines has got nothing to do with these programs and you will not get any kind of assistance from us for the same.