C Programming Language
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.