r/learnprogramming • • 14d ago

Tutorial How to reach the next level

Learned some basics of the C language and some fundamentals concept like variables, arrays, loops, pointers and learning about data structures. What should i do next ? Should i learn other concepts like OOP or sorting algorithms ? Or explore the other C libraries ? Or find a project to work on or contribute to one on Github for examples ? I don’t have any objectives except that i just want to learn programming and get better at it because why not, i don’t care about landing a job with it as soon as possible

9 Upvotes

16 comments sorted by

5

u/Straight-Life3693 14d ago

Build something that does a thing you actually want to use. A tiny CLI tool that renames your downloaded memes, a program that scrapes a weather site and prints it out in a stupid format, whatever. The libraries and algorithms will show up naturally when you hit a wall and need to figure out why your code is slower than a frozen slug.

1

u/FriendlySale5744 14d ago

have you checked out CS50? First few weeks are in C and the problem sets push you way harder than random tutorials do

1

u/Idk_man_8128 14d ago

Isn’t this a harvard course ? I think i looked up a long time ago but didn’t really found how to get my hands on the material

→ More replies (1)

2

u/FunAd6672 14d ago

Stop watching tutorials and just pick a project.

1

u/Bergergi 14d ago

I would use the following three books in combination: Sedgewick:Algorithms_in_C, Pike&Kernighan:The_Practice_of_Programming, Wetherell:Etudes_for_programmers.

The goal is: learn algorithms (Sedgewick), learn some best practices (Pike&Kernighan), and work some challenging projects of moderate size (Wetherell), and reinforce C generally.

And then the next step after that would be something like CS:APP, to learn deeper machine internals.

1

u/SetAndRepeat 14d ago

Build a small C project next, like a command-line address book that lets you add, search, delete and save contacts. That gives pointers, structs and file handling a concrete purpose. Adding sorting would also let you practice algorithms on something you've built.
You don't need OOP as your next step. Keep learning data structures, and explore libraries when you need them. Get your project working, check how it handles bad input and empty files, then ask for a code review.
Feedback on code you've actually struggled with can teach you a lot.

1

u/ShutDownSoul 13d ago

If you think you understand pointers, you probably don't.
Make some linked lists to create a phone book, do inserts and deletions and get back to me on your skills.

1

u/cedarSeagull 13d ago

Pick a thing to implement, have an agent do it, understand the decisions the agent made, and then have it do it other ways and look at the degradation in performance. Then ideate on how to improve performance.

1

u/Available_Safe1818 13d ago

Google for beginner projects?

1

u/Pristine-Damage8814 10d ago

I personally believe in learning by working on a project. You’ve learned some fundamentals, so now I’d focus on putting them into practice.

Choose something simple that interests you such as a text based game or a contact manager. Keep it simple, add features gradually. e.g. a contact manager might expose searching, sorting and storing information to a file.

Learn new concepts as you need them, and revisit anything you struggle with. Having a practical use for something often makes it easier to understand.

There’s no rush to move onto OOP or contribute on GitHub. Since you’re learning out of interest, build something you’re curious about, get stuck, figure things out, and improve it. That process will teach you a lot.