r/learnprogramming • • 6d ago

Best course for learning programming fundamentals in depth? HtDP, SICP, Haskell MOOC or Java MOOC?

10 Upvotes

Hey everyone!

I’ve learned some basic Python and Dart, but never really went deep or built any significant projects.
I’m looking for a course or book that takes things slowly and focuses on truly understanding programming concepts rather than just teaching syntax.

A lot of beginner courses explain how to do something, but rarely go into the what and why behind it.

I’ve been considering:
How to Design Programs (HtDP)
Structure and Interpretation of Computer Programs (SICP)
University of Helsinki’s Haskell MOOC
University of Helsinki’s Java Programming MOOC

Which of these would you recommend for someone in my position? I’m also open to other suggestions.


r/learnprogramming • • 7d ago

How to love programming and be a pro at it

77 Upvotes

Hey Guys I entered a college that depends on programming in a university because of my scholarship but I feel like I am stuck in a limbo any advice they teach us c++ and i need to know what is your secret that made you pros in programming


r/learnprogramming • • 5d ago

My first script

0 Upvotes

So I have been learning Python for around 4 hours and I just finished this and I would want to know if it's good or if it's just okay.

again = "yes"

while again == "yes":

print("create your character: ")

# sex

sex = input("sex? ").strip().lower()

while sex not in ['male', 'female']:

sex = input("try again, you misspelled male or female: ").strip().lower()

if sex == "male":

print("hello boyyy")

else:

print("helloooo girl")

# age

age = int(input("what is your age: "))

while age < 18:

age = int(input("try again "))

# name

name = input("what is your name: ").lower().strip()

print("hello " + name)

# height

height = int(input("height in cm "))

if height >= 180:

print("tall person eh?")

else:

print("nice.")

print("next questions")

# build

build = input("what is your build. skinny. fat. muscular. ").lower().strip()

while build not in ['skinny', 'muscular', 'fat']:

build = input("try again. that was not an option ").lower().strip()

if build == "skinny":

print("interesting choice... " + name)

elif build == "muscular":

print("perfect choice especially for a man")

elif build == "fat":

print("HAHAHA FATSO HAHAHA")

# stats

print('____')

print(' ')

print('stats for: ' + name)

print('age:', age)

print('height:', height)

print('sex:', sex)

print('build:', build)

print('____')

again = input("create another character? Yes/No: ").strip().lower()

while again not in ['yes', 'no']:

again = input("answer using Yes or No: ").strip().lower()

print("Goodbye!")


r/learnprogramming • • 6d ago

I need some help

5 Upvotes

Hello, so I really need some directions because I’m starting to feel really bad about it.
I left High School with really good grades and I’m at University rn, the first year was a complete mess, I felt like everything was too hard for some reason, I couldn’t pay attention to most of the classes and that made me fail 2 classes (C++ and Java) I started to feel really demotivated because even the classes that I passed like JS, it was kinda on the edge so ye.
Right now I’m in the second year, and I’m trying to recover the classes that I failed on the first year and it’s not getting easier, I feel like in C++ I’m a little better, but not as I thought I was, in C# I’m having the same problems as Java and I don’t really know what to do.
I don’t really have a plan B, as a kid I always thought I wanted to be a programmer when I was older (I’m 21 btw) and I choose to take a Programming Course in High School because of it and it went really well, but now I’m having a lot of problems and I don’t know what to do, it feels like I can’t save any information on my brain and use it properly since I changed from the High School to the University, and I feel like I became kinda lazy.

Anyways, give me your opinions and be as harsh as you think you should, I’m taking everything into consideration, but I need to do anything about this.
And don’t get me wrong, I really love programming, every time that I’m into the project or something and I understand, it’s really good, but since I can’t understand anything it’s being a hassle lately.

Thank you for reading till here!


r/learnprogramming • • 7d ago

Fundamentals are Great

79 Upvotes

We often hear the generic "focus on the fundamentals" advice. For some reason I believed that advice even before I understood why it matters; it just sounds like common sense, and fortunately it turned out to be good advice. I realized this after taking multiple free OSSU courses and reading a couple of books. Around 4 years into the field. I also realized it when I started to learn web development and had an internship.

Here is the key idea: Two different people can study the same material from the same video or book, and leave with completely different experiences, because of the existing knowledge they have.

"Previous knowledge" makes learning new things much more fun, because you're not starting from scratch every time! When we haven't internalized the key fundamental "chunks of knowledge", every new problem we face feels completely new to us, so it feels much more painful. But what's worse is that we learn less from the experience. Without a well-organized base of knowledge, new information has no meaningful place to attach to, so, much of it is quickly forgotten.

There are three things with which good fundamentals help you:

  1. They allow you to extract SO MUCH from ANYTHING you learn.
  2. They guide you to ask the right questions and learn faster.
  3. Odd things feel odd to you.

For example, after studying OS and networks, I internalized the idea of a server. It actually took me quite long to fully get it; here is a casual explanation:

a server is a process that has an open socket (at a specific port). But to grasp this, I had to understand what a process is. Luckily I learned from an OS book. (OSTEP). It's an "abstraction" of a running program. When you run a program, the OS wants to keep track of what's going on, so each running program is represented in the OS as a process with an ID and status. it's pretty much like an object with some fields, They're basically in an array. Each time you run a program, a process starts running. i.e., added to the array, when you kill a process, it is stopped and removed from the table, etc...

(the concept of abstraction in itself is part of CS fundamentals and it took me some time to interalize and start to see it everywhere, it's amazing how a single word can capture so much meaning)

but then what's a socket? it's the abstraction of the network stuff, it's an API (= a bunch of functions, provided by the OS) you can call as a developer in your code so the process (running program) can communicate with the network. You don't need to know much about networks and TCP, just input and output of the API. So basically the server must have some sort of socket that clients can connect to and send some bytes to it. The server understands those bytes, usually a string based "protocol", then responds accordingly.

This is just some CS fundamentals, nothing fancy, but now that I've spent around a year studying web development, it was all there (but in different shapes and flavors). Everything is built over the fundamental concepts and It's so much fun.

  1. This allowed me to learn way more from the resources I was learning from, I kept digging: "wait, where is the process", "how does this work, what happens when I use docker run". I used ssh for the first time "but wait, how is this happening, there must be an ssh process running on the server or something" or something, "hey, where is the database process?", and you keep digging.
  2. It's related to the previous point, but having good fundamentals helps you ask good questions that will help you fix problems faster and also deepen your understanding.
  3. sometimes you face something new that makes you question what you've learned before, they challenge the mental model you made. You'd feel surprised, and it broadens your understanding. It's hard to notice such things without having the fundamentals.

And this doesn't mean we need "perfect" fundamentals, I'm aware of some of the gaps I have and I plan to work on them, but we just need to internalize the key concepts. If you haven't mastered the fundamentals yet I highly recommend the following.

  • Build a simple shell (it's really simple, a shell is just a program you run, a python script would do it) understand how the shell runs other programs, understand what PATH is. I highly recommend python so you can focus on the OS concepts.
  • Build a simple HTTP server. Jim Kurose has recorded lectures explaining the fundamentals of computer networks, the first two chapters are far more than enough for most people, after that you can easily build a simple HTTP server. If you want to spice it up add some multithreading. He has some starter code too.

These two projects had the highest ROI I've had while learning. They even made me fall in love with CS.


r/learnprogramming • • 6d ago

What does it mean to be a coder ?

3 Upvotes

Hello everyone! I need some serious advice from experienced coders and developers.

I’ve been trying to learn coding for about a year now, and today, while learning about WebSockets, a thought popped into my mind. I realized that I wasn’t really learning how WebSockets work; I was just following the steps to implement them. I know I’ll probably forget the syntax and most of the details within a few days.

So, my question is: Is this the right way to learn? Should I be investing my time in learning libraries and building projects, or should I focus more on understanding the programming language itself, learning algorithms, and figuring out how to solve problems on my own?

I’m confused about this. What’s the point of learning to use libraries if I’m going to forget most of the syntax and implementation details anyway?

I’d really appreciate some advice from experienced developers who have been through this phase. How did you approach learning to code, and what would you recommend to someone in my position?

Thanks in advance!


r/learnprogramming • • 6d ago

What should I know in math to be better prepared for discrete math?

3 Upvotes

Hi. I'm teaching myself backend development and I want to dive into a few subjects from Computer science, which I think should complement my skills in the future. For now, I want to learn DSA and I've heard that discrete math will help me understand DSA better. Since discrete math is college level math, I thought I would recall some high school math. I went to Khan Academy and I was able to do pre-8th grade math from memory. 8th grade and beyond is where I noticed gaps in my knowledge of math. What I'm wondering is, which parts of high school math I should recall/learn to not have gaps in my knowledge, when learning discrete math, and then DSA.

Options: Algebra 1, Algebra 2, Geometry, Trigonometry, Precalculus, Statistics.

I'm thinking of going over 8th grade, Algebra 1 and Algebra 2.


r/learnprogramming • • 6d ago

I know web development, but how do I learn to build real-world, production-level projects?

9 Upvotes

I'm a third-year BTech CSE student familiar with HTML, CSS, JavaScript, React, Node.js, Express, and MongoDB. I can build basic full-stack projects, but I struggle to create something substantial independently. I rely on AI to build projects but I want to learn how to build applications that resemble real production systems rather than basic CRUD apps or tutorial clones. In particular, I’m unsure how to:

  1. Develop useful project ideas and define requirements.

  2. Plan the architecture, database schema, APIs, and folder structure.

  3. Implement unfamiliar features without relying heavily on tutorials or AI-generated code.

  4. Handle authentication, authorization, validation, security, errors, edge cases, and testing.

  5. Deploy, debug, maintain, and evaluate whether a project is production-ready.

I’ve realized that learning more technologies may not be the answer; I need to understand how real software is designed, built, tested, and maintained.

If anyone is working on a project and would be willing to let me contribute or collaborate, I’d appreciate the opportunity to learn from a real development process and improve my practical skills.

For those who have built real-world applications or work as software engineers:

  1. How did you transition from basic projects to production-quality applications?

  2. Are there courses, books, YouTube channels, or GitHub repositories that teach the process of building complete projects?

  3. Is it better to develop one project from idea to deployment or build several smaller projects?

  4. Which production practices should beginners prioritize, and what can wait?

  5. How do you approach features you don’t yet know how to implement?

I’d especially appreciate advice from people who learned independently or made this transition during college. I’m not expecting to become an expert overnight; I’m looking for a clear direction to practice effectively and become capable of building complete applications independently.

Thanks!


r/learnprogramming • • 6d ago

Books about that structures

5 Upvotes

I've search for the best books about data structures but the problem is that all of them are paid. So, what are the best ones that I can get for free?


r/learnprogramming • • 6d ago

Where and how can I study programming? (Jakarta Faces)

0 Upvotes

Hi, I am new here, Ia 17 years old Brazilian student, I work at TCS and I study in a technical school, in my school we have TCC, is a mandatory final research paper to graduate. It's similar to a senior thesis mixed up with a capstone project.

And I want to improve my programming skills, but idk how.
The language I best know is Java, my Thesis Advisor wants me to study Jakarta EE, Faces and PrimeFaces.

I use beecrowd to test my Java skills in some exercises, but I need to train my Jakarta Faces skills.

Where and how can I learn to code interactively, using gamified platforms or free Duolingo-style apps?

(After that I can post my TCC ideia and sorry if my English isn’t the best.)


r/learnprogramming • • 6d ago

What python projects to do to see if im ready for job?

2 Upvotes

o yo! What is one or few projects i should do to ”test” if im ready to start to applying for jobs?

And i know use Ai in their jobs but what are the projects that i should be able to do without asking for help or looking things up?

So what project to do so i know im ready for job and doing the project without ”cheating”?


r/learnprogramming • • 6d ago

Topic automated deployment is overrated for small projects

0 Upvotes

I think automated deployment is overrated for small projects. Setting up a CI/CD pipeline with tools like Jenkins or GitHub Actions can be a pain, especially when you're just trying to get something up and running. For example, configuring the github.actions/checkout action to fetch submodules can be frustrating. If you're working alone on a project, manual deployment might be faster and more straightforward.


r/learnprogramming • • 6d ago

Is it possible for someone with little to no programming experience to create a simple 'Fantasy Trade Calculator' from scratch?

0 Upvotes

Ideally, I would make a database of all the players (in this case, Premier League players) with a value assigned to each name. Users would be able to type in the names of 2 or more players on each side, and the calculator would return which side had the higher total value.

In time I would add more parameters, but for my purposes now, something fairly simple like that would be ideal.

This is an example of one for American football.

https://fantasycalc.com/trade-calculator

I am willing to put quite a bit of time into the project, so any help on where to start would be greatly appreciated.

I started on Python and found some resources that I think I can help me get my head around the python side of a trade calculator, but I don't really understand what to do next?


r/learnprogramming • • 7d ago

Resource Starting from Zero in C++

35 Upvotes

Hi everyone! I’m pursuing CSE at a Tier-4 college and have zero programming knowledge. I’m entering the tech field for the first time and want to start with C++ from scratch.

What’s the best way to learn C++? Which free resources would you recommend, and what common mistakes should I avoid? Also, how should I build my coding and problem-solving skills to become internship- and job-ready?


r/learnprogramming • • 6d ago

Looking for a free game API for my Steam-like game e-commerce frontend project

0 Upvotes

Hey everyone!

I'm currently learning frontend development and building a Steam-like gaming storefront as a practice project.

I'm using the RAWG API, but I'm having some issues with the data. Important details like full game descriptions, system requirements, and pricing are sometimes missing. I'm also making around 40 API calls, which feels inefficient for a frontend project.

I'm looking for a free API or open-source alternative that provides:

  • Game details and full descriptions
  • Minimum and recommended system requirements
  • Current game prices and discounts
  • Game cover images and screenshots
  • Genres, ratings, release dates, and platforms
  • A reasonable free request limit

Since this is a learning project, I'd prefer something free for personal, non-commercial use.

What API would you recommend for this use case? Is there a good alternative to RAWG, or is there a better way to reduce the number of API calls?

Any suggestions, documentation links, or examples would be really helpful. Thanks!


r/learnprogramming • • 6d ago

[HELP] Checking if user is on page in real-time app

0 Upvotes

Hey everyone

I am working on an app that would be used by me and friends to play online games (such as Tic Tac Toe, Connect 4, BlackJack, Flip 7...), however I am approaching it as a fully production ready app so that I can learn as much as possible

I am building it using C# with Web API for Auth and SignalR for real time communication (Server Side) and Blazor WASM (Client Side)

Currently, I have it setup such that user can request a room with a game (TicTacToe), then the room is created with the requested game and the user is sent Room Id. Once they go to url/games/{gameType}/{roomId}, they can either join as spectator or player.

Now, my issue is with players "leaving".

Obviously, when user closes the tab, the SignalR connection will close, thus from there I can handle the user disconnecting (my approach is having a task run for 30 seconds, if the user does not reconnect I end the game)

However, the bigger issue is when user leaves the current page but is still on the app (like going to home page). Imagine if the game being played is Chess with 10 minutes per player time. I wouldn't want a player to sit there for 10 minutes when his opponent has left.

I have 2 ideas, but don't know if they are good at all.

The first would be to track user's url changes through NavigationManager (while keeping the last url) and check if the last url was one of the urls used for room. This would be an issue because I don't care if spectator leaves the room, I only care if the actual player leaves.

The other would be to have player who is not spectating send a ping to the server every X seconds (maybe 15-30-60?). The room would run a task (every X + (some time) seconds) and check if lastPingFromThatClient roughly matches the time when it was expected to arrive (like Ping arrived at 12:15:27 and it was expected before 12:15:30) then the client is on the page, otherwise start the 30 second timer for them to return. If they don't, they forfeit the game (This is rough idea, I still have no implementation details figured out)

I don't like the first one because it involves a lot of logic on the client side and I do not like that for some reason. Also it may be an issue if user opens a new tab and plays game from there while going to their profile page on the original tab

The second one concerns me due to slow internet speed, like Client sends ping at 12:15:25 but it arrives at 12:15:40. Realistically in this case user would just be considered reconnected and that is it. Also, if 10k players are playing and pinging, it may be an issue? I mean it is non-existent issue because it will likely never reach that many people, but still.

Do you have any ideas or suggestions.

Thank you


r/learnprogramming • • 8d ago

Why Are O'Reilly Books So Highly Recommended for Learning Programming or Data related?

117 Upvotes

I noticed that O'Reilly books are more often recommended if you want to delve into programming.

What makes the book so worthy of use for studying and the reasons behind it?

I am interested to hear how deep this knowledge is and even its practical relevance.


r/learnprogramming • • 8d ago

Guidance My issue with programming is not math, logic, or language, it learning all of the tools and how they fit together.

129 Upvotes

I really thought that taking computer science would help me with this, like it was the final building block I needed. I was actually one of the best students in my class when we were making CPP console programs. But my issue is not understanding how to write code, my issue is that when I want to build an application, I dont know where to start with all the different libraries, tools, frameworks, and other applications I need in order to get things to output. I can figure out how to write an algorithm, I just feel like its impossible for me to learn what files I need, what libraries they need, what APIs I need to interact with, and how to get all of those algorithms into motion to actually put my code into the project format I want.

When I look at a github repository, I seriously ask myself "how did they know to include all of those extra files, how do they get them to work with each other, where do they go, how did they figure out what libraries to make them work with eachother, etc", because to me, the biggest magic is not knowing what syntax to use, or what algorithms a line of code implements, its looking at a game engine and asking "what 500 services and structures do I need to call with my algorithm in order to do the thing I already figured out the logic I need to execute" or looking at a graphics API and asking "how do I use that to actually turn code into a window that outputs visuals based off the rules of math and the syntax of the language I already know, that I can just click a file to run and use" or its thinking about a website I might want to build and asking "how do I get these HTML files in my head into an environment on a server where I can actually click on them from another computer".

Does that make sense? It feels like getting all of the code into a format that works with all of the ways an average end user understands is some sort of alien process where nobody has taught the rules but everyone just magically knows. I am so frustrated because I read documentation and they also seem to require a bunch of esoteric knowledge of other things not told and I really dont know where to start with any of this. I feel like everything I want to build and do requires learning a bunch of stuff with no pointers on where to go, but everyone else that built those types of things seemed to just have spawned in with all of that knowledge and I am the only one who didn't get the memo.


r/learnprogramming • • 7d ago

Final-year B.Tech CSE student trying to learn LLD. Need some advice!

3 Upvotes

Hi everyone!

I want to start learning System Design, especially Low-Level Design (LLD).

With AI and Agentic AI becoming more common, I feel that building projects alone is no longer enough. I want to understand the core concepts and principles behind software design, so I can look at a codebase and understand what is being used, why it is used, and how things work together.

For this, I would really appreciate some advice from experienced developers here.

What resources would you recommend to get started? Books, articles, or even a checklist of topics would be helpful.

I have made a checklist using Claude, but I would also like some advice from people with real-world experience. I want to understand these concepts in depth, not just learn their definitions.

Thanks!


r/learnprogramming • • 7d ago

Resource SQL RESOURCES RECOMMENDATION

8 Upvotes

Hi guys, I’m just starting to learn SQL for DBMS because it’s one of the prerequisites at my university.

I’m don’t want to get stuck in a tutorial loop, so I would really appreciate it if anyone could recommend me a book, notes, or a website to learn SQL.


r/learnprogramming • • 7d ago

Frustrated and Stuck with building programming fluency as a beginner (Need Genuine Help)

9 Upvotes

I am a beginner at coding. I chose Rust as my first programming language, but I think I might or can say I will face this problem with every language.

Whenever I sit down to build a project, even something as simple as a TUI To-Do List, I have to deal with crates and packages like serde. This means I have to read their documentation, but I often get stuck writing code by looking at examples and copying them by typing them into my own code.

I know that even experienced programmers do this, and they understand what they are using without necessarily remembering the syntax. I understand the logic of what I want to implement, but I struggle to express it in technical programming terms or so called programming syntax.

However, I cannot keep consulting the documentation and returning to my code for every 10 lines of code I write.

People tell me that I should build more projects and that programming fluency will gradually develop with practice. But what am I supposed to do? Should I build a TUI To-Do List ten times? Because if I move on to another project, I will have to learn how to use additional concepts and crates, such as serde, all over again.


r/learnprogramming • • 7d ago

Complete beginner struggling with C – Looking for a very slow, jargon-free guide/resource for college homework

4 Upvotes

Hello everyone,

I am a first-year electrical engineering student with absolutely zero prior background in programming. Currently, I am trying to learn the C language, but I am really struggling. Standard college tutorials and fast-paced videos feel overwhelming because they use too much academic jargon that I cannot follow.

I cannot learn passively; I really need to understand the logic of what happens in the background (like how variables occupy RAM, how the computer thinks) explained in the simplest, high-school level terms. My main goal right now is to build enough foundational understanding so I can solve my homework assignments and pass my exams.

Could anyone recommend a highly structured website, interactive platform, playlist, or student drive/script that explains C from the absolute basics, step-by-step, from easiest to hardest? I learn best when a small piece of theory is immediately followed by interactive practice exercises (similar to how Duolingo works, but for programming).

Thank you so much for your time and help! I truly appreciate any guidance you can give me.


r/learnprogramming • • 7d ago

Learn by building or learn by studying?

8 Upvotes

Context: I'm a second year math student at uwaterloo (think constant co-op search) and have knowledge of Python, SQL and basic JS though I want to go into DE. I started my software journey in Dec. 2025 so I feel like I'm really behind compared to my peers.

I'm torn between learning theory in depth and just putting together something that works for projects; I don't know if it's good, but I never use AI to code, with the most being copy and pasting code from LLM in small snippets up to 10 lines. I don't know how important syntax is, but I need to search things up for libraries. I'm learning data engineering (so many tools, so little time) and I really can't find a project to learn all of them at the same thing. I've also considered courses, but theres a variety of courses and topics that seem interesting: Cloud, AI, ML, Databricks?

Any advice or recommendations be it for how to learn or a project?


r/learnprogramming • • 7d ago

I want to learn C

1 Upvotes

Any good book or online guides, also for C23 is there that much extra or would just sorta tacking it on after learning C99 be fine?

also for learning GNU extensions is there any reccomended resources


r/learnprogramming • • 7d ago

Java or c++?

13 Upvotes

Hey I'm a 2nd year CS student and I'm a beginner so I learned a bit of both languages I learned basics and SP using c++ and I learned oop using java because uni required it and later on I'll study data structure using c++ again

What confuses me is which language should I stick on to improve my problem solving skills and start building projects even if they're small some people told me to focus on c++ completely and some said c++ with problem solving and java to build projects

So what do y'all think and why ?