Hello everyone! 👋
I’m Adhyan Jain, a B.Tech. CSE student at VIT Vellore. This week marks the beginning of my C programming journey, and I wanted to share my experience as I worked through some of the foundational concepts that any budding programmer should master. In this post, I’ll walk you through my week of learning and the valuable insights I gained, as well as the challenges I faced and how I overcame them.
Day 1 to Day 7: My Journey into C Programming
As a BTech CSE student at VIT Vellore, my journey into C programming has been an exciting and challenging experience. After spending some time learning Python, I decided to dive into C programming, a language known for its low-level operations and its role in understanding computer fundamentals. My goal is to become proficient in C, as it's essential for both my academic curriculum and future endeavors in fields like data structures and algorithms.
What I've Learned So Far:
Day 1: Introduction to C Programming & Basic Syntax
On Day 1, I started by setting up my environment and learning basic syntax like printing output, variables, data types, and basic input-output operations. I also got familiar with the structure of a C program and how the main
function works. The transition from Python’s dynamic nature to C’s strict syntax was a bit challenging, but I quickly adapted.
Day 2: Control Statements
I delved into control statements like if
, if-else
, and switch-case
. These control structures gave me precise control over the flow of my program, and I learned how to make decisions based on certain conditions. Although similar structures exist in Python, getting comfortable with C’s syntax and logic took a bit of practice.
Day 3: Loops
Loops were my next challenge. C’s loops (for
, while
, do-while
) provided me with a deeper understanding of iterating over tasks. Nested loops, break, and continue statements added complexity and gave me the ability to manage repetitive tasks with greater efficiency. It was interesting to compare these loops with Python’s versions, but the key takeaway was the need for a solid understanding of logic and flow.
Day 4: Arrays
Arrays in C are treated as fixed-size collections of elements, which forced me to think more about memory management. Unlike Python’s flexible lists, I had to manually handle the size of arrays, which was a new concept for me. It’s been challenging but also enlightening to understand the importance of memory allocation in programming.
Day 5: Strings & Functions
Strings in C are essentially arrays of characters, and working with them was a bit of an adjustment. The concept of passing data by reference in functions (using pointers) took me a while to get used to, but I eventually appreciated the power it offers in memory management. Writing custom functions to manipulate strings, reverse them, or count vowels added another layer of complexity to my learning.
Day 6: Functions
User-defined functions in C were another fascinating concept. I learned how to declare, define, and call functions to modularize my code. Recursion, another key concept, was a bit tricky at first. I also worked on solving problems using both pass-by-value and pass-by-reference techniques.
Day 7: Pointers
Pointers were the most challenging aspect of C programming so far. Unlike Python, where memory management is abstracted, C requires you to think about addresses and how to dereference them. It was difficult to get comfortable with the concept of pointers, but once I understood how they work, I realized their potential in optimizing memory usage and writing efficient code.
Challenges I Faced:
While my journey through C programming has been rewarding, there were several moments when I struggled:
Functions & Pass-By-Reference: Understanding the difference between pass-by-value and pass-by-reference took some time. The idea of passing memory addresses rather than actual values was foreign to me, but as I worked through examples, I got more comfortable with it.
Strings as Arrays: C treats strings as arrays of characters, which initially threw me off. Unlike Python, where strings are objects with built-in methods, C requires manual handling of strings, such as calculating their length or concatenating them.
Pointers: The concept of pointers was the toughest challenge. In Python, I never had to worry about memory addresses, but in C, pointers allow direct access to memory. It was hard at first to grasp how to use pointers to manipulate data, but I’m starting to see how powerful they can be.
Reflection & Insights:
Learning C has opened my eyes to the low-level mechanisms that power higher-level programming languages. While Python allowed me to focus on the logic, C pushed me to think about memory, performance, and optimization. The biggest lesson I’ve learned so far is that mastering these foundational concepts in C will make me a stronger programmer overall.
The most rewarding part of this journey has been seeing my code become more efficient, more controlled, and more understandable. I can’t wait to continue this journey and tackle more advanced topics like data structures, file handling, and memory management.
Where I Learned:
I’ve been learning C programming from various resources. CodeWithHarry’s YouTube channel has been an excellent starting point for the basics, and W3Schools and GeeksforGeeks provided great references. I also practiced a lot on HackerRank to sharpen my problem-solving skills and improve my C coding proficiency.
That’s a wrap for the first week of my C programming journey. Looking
forward to diving deeper and continuing my growth in this language!
Feel free to check out my GitHub for code examples and to follow my journey : GitHub - Adhyan Jain’s C CodeVault
Also connect with me on LinkedIn : LinkedIn - Adhyan Jain
Any Suggestions?
If you're also learning C or have any tips and tricks to share, I’d love to hear your thoughts! Feel free to drop a comment or connect with me!
That’s all for this week’s journey! I’ll be back next week with more updates and insights as I continue my path with C programming. Stay tuned!
#CProgramming #LearningJourney #Programming #Tech #DeveloperLife #CSE #VITVellore #BeginnerCoder #GitHub
Top comments (0)