Try to learn programming with Harvard CS50 from Edx

Should I just give up? Am I too much of a brainlet to learn programming? Why is it so hard to go from the theoretical basis to actual practice?

Attached: 1517276432893.png (645x968, 107.97K)

Other urls found in this thread:

when was the last time you installed gentoo?
it should be now

most software engineers just copy and paste from stackexchange pajeets, just learn to self-market

Get your hands dirty! That's how a bunch of people here got into programming when they were young and had too much ADHD to take long theoretical courses seriously.

Learn Python or Javascript or some other scripting language to begin with because of how easy and rewarding they are in the beginning, then switch to another languages suited for larger code bases, and begin to learn the theoretical basis.


I'm pretty sure at least one of John Carmack's less than 10yo son already knows Racket. And other people like the aussie Troy Hunt who is behind haveibeenpwned is also teaching one of his young kids Python. And i'm pretty sure they aren't being introduced to it with 5 inch thick books on the theoretical basis of programming.

Start with Knuth's Art of Computer Programming. You think you're a brainlet, and you are, but you don't understand just how much of a brainlet you are.

If you're that much of a faggot, yes go right ahead and give up. And don't bother trying anything else difficult since you can't take failing a few times.
Because that's when you know if you really understood or only kind of understood it. Also because it is hard. Most "programmers" are like said, they have no idea what they're doing and are worthless.

Attached: knuth.jpg (850x400, 53.08K)

big surprise there, hey, you think trumps son is a millionaire too?

What a surprise.

Attached: 05e6c26ac72f782e01aa7cf3db5ef5aa88cdd0baebc8d5c2bb8f17734a9e9b04.jpg (1366x768, 217.32K)


I feel like the course is not very logical though. They explain "this is a loop, ths is an if" etc and then immediately ask me to solve a problem using them, I feel like someone had just taught me the alphabet and then asked me to write Moby Dick immediately after.

Not OP, but:

What a surprise.

Attached: dumb_faggot.png (947x324, 158.72K)

Try the learncpp guide.

Go back.

First of all, if you insist on using CS50 material, try one of the older ones (preferably the very first one from 2007 I think). The audience was much smaller and it resembled actual lectures, while having watched portions of a more recent one I had the impression it devolved into a cringeworthy circus show held in a huge auditorium.
Secondly, if you are new to the concepts which the instructor is talking about, you can't expect to understand everything and just from the lecture and you won't be able to tacle the assignments just basing on having watched the lectures. From what I can remember he was going quite fast from one thing to another often just barely scratching the surface. You will complement watching those lectures with lots of referring to other sources and practicing on your own.

You may be a brainlet but cs50 being good is just a meme. There are much better courses online, teached from people who like to teach and not overpaid jewish professors.

Thanks user I'll check it out

I am reading the two books about C programming that they suggested as complementary reading material

Do you know of some examples?

Attached: 1517927970744.png (817x443, 34.27K)

Since you're learning C, go on libgen and pirate Deitel - C how to program. Read the chapter and then play with the syntax yourself and do all the exercises. It requires time and patience. If you forget the syntax, look it up online, but of course don't look up the solution to an exercise.
Elitists hate this book, but it has good exercises and therefore it's a good book for someone just starting.

In general there are a lot of university manuals with good exercises (always pirate them), but I can only recommend Deitel and it's better if you just focus on one.

You can also follow this youtube playlist, I'm not sure it covers enough C, but it's good for a beginner

Problem with getting advice on the internet is that people who give advice can't put themselves in the shoes of a beginner. Therefore they'll recommend books that are pretty hardcore or have social status (Harvard cs50) and criticize books/courses good for beginners because "they teach bad practices" or some other bullshit that doesn't concern a beginner. They don't remember when they were beginners themselves, and I'm often preoccupied many are beginners right now and never went past a chapter 3 of a book but they are just repeating what they heard.

After that, you should also decide what you want to do with programming. You are learning C, but do you know why?
I mean, do you want to program something or just solve puzzles forever? You can use almost any language to learn how to program, and it doesn't take that much time to learn the fundamentals of programming. But after that it's all about acquiring specialized skills to solve problems, like how to use tools and patterns common in a certain field, to a deep understanding of a specific language.

I was writing out a post last night, but decided against it. Now I see this thread, and it's hard to ignore someone not being able to find the answer to such a simple problem.

In my many talks with people from all over the world of different specialties, it seems the most common factor is determination to be exceptional in their field. When I first started out, I felt like an utter brainlet. I tried installing Gentoo (before the meme) and could not shake the crushing feeling of uncertainty and helplessness. There was no wiki, there were no real man pages, there were only mailing lists to parse through and gain the info needed to distinguish the ass from the mouth. Yet I failed the first time through. And the second time through. But then the third time through I got a few steps closer, but not very far. So the fourth time comes around, in between the routine installing Ubuntu because I was CLI-iliterate, and I make some more steps. Something like steps^2. I didn't succeed and I had to install Ubuntu again. Despite all of this, I still had it in mind to install Gentoo just once, if only to quench my ambitions. Well, about a month later comes by, I've been using Ubuntu mixed with learning the CLI, and I now have a good grasp of all the utilities and how the system interacts with the hardware. What make flags are and how to use the Bourne Again Glue Language. Ubuntu was worse than windows and I needed out to the promised "userland." So I pop in the installation media once again. I run through all the usual start stuff, such as working with the BiOS to switch boot order and configuring my network manually (something so seamless and quick, but easy to never have to do by hand with the assortment of tools that move you away from the bare metal, at hand). And everything seems very easy. I'm not uneasy and my ego is intact. Hell, I'm so comfortable using the cli, that I'm installing Gentoo on 3 hours of sleep from just the muscle memory of having to do the steps so many times. Alas, muscle memory only takes me so far, before that dreaded blue compile flags interface is bubbling up memories I've tried to suppress. I feel uncertain if the outcome will be different this time, but my experiences in the past month have taught me to be resourceful and confident in my ability to troubleshoot. I don't really think me writing out five more sentences to fluently wrap up this story, so

I think this feeling comes from never having set out to attain a goal. If you had, you would've learned that most things you put your mind to are possible. The resources are plenty and your brain young and pliable. All the people who do great things in CS, had to have started writing Hello World programs in their programming language of choice. For some it was assembly, for others scratch. It probably didn't even work the first time, so they spent hours debugging a simple print statement. Hours for only "Hello World." But once they'd paid their dues, that knowledge was available to them in mere seconds. They no longer need to debug newer statements, because they know the quirks and can do it right the first time in log previous-time. But now they want to write a simple calculator with a user interface, so they must repeat again. The cycle of being ignorant and confused, then transcending this inferiority into betterment of oneself.

Thanks, downloaded it and will check it out, maybe I'll even buy it later this month.
Not really. Seemed like a good place to start. I am kind of interest in learning how to datamine social media, but I want to be able to have good fundamentals and be able to get into a bit of everything when I need it to. I figured that I would begin with C rather than a meme language like Python.

I know I'm a complete loser and failure at life user, I assure you that you don't need to remind me. It's not even the first time I try to get into programming. The first time I was in middle school and I tried to learn actionscript. I seem to recall I got to the point where I made a ball bounce off the edges of the screen, and another one where the ball had physics and I could make it jump by clicking on it. I tried to learn Java and Python, years apart. I always failed in the end, I learned the basics of the language, but then could not put it into practice or simply got demoralized. Tomorrow is my 27th and here we are, trying once again, and probably failing for the nth time. And for what? Just for the sake of trying, because it's not like this attempt is going to make my life any better, it's just a distraction to numb the pain.

*27th birthday

You should kill yourself or go back to cuckchan

why not both?

Because dead people go back to \emptyset forever, and cuckchan, being an existent entity, is not in \emptyset.

that's like, your opinion man

Prove it wrong. While you're at it, prove what exactly is going on inside of black holes.

It's not, learning C won't teach you good fundamentals about modern programming paradigms because it doesn't inherently support them, that's one of the reasons why I suggested the learncpp tutorial.

In my experience most of the worst code I have ever had to work with (and the code which I have to work with on a daily basis) is written in C, whats worse is that its code that many people use.

The fact that you are trying even after so many failures isn't a bad thing, its likely that each time you came close to overcoming your main barrier to understanding and this is the reason why you keep coming back.

Don't learn programming for the sake of programming. Learn it because you have a goal, something you want to make.

I've identified your problem.

Computer scientists sometimes program, and programmers often use insights from computer science to write better programs, but computer science and programming aren't the same thing. "Computer" science is something of a misnomer; you can do computer science without a computer.

If you want to learn computer science, a branch of mathematics, give CS50 another try.

If you want to learn programming, take any of the advice you've received in this thread on getting up to speed in a practical sense with a modern programming language. You can always tackle CS50 again after you've intuited some of the concepts via actual programming experience. One of the most enlightening experiences I ever had about algorithm design came from solving a Project Euler problem badly, then solving it again in a much more efficient way.

Good luck.

The existence of black holes is unproven, Tyson.

This right here. Make some small things, learning as you go. When you know a bit more(functions, variables, control structures, arrays, objects) you'll be set to learn how to do these same things in any arbitrary language.

Learning C will teach you how not to program.

Some Andrew weenie, writing of Unix buffer-length bugs, says:> The big ones are grep(1) and sort(1). Their "silent> truncation" have introduced the most heinous of subtle bugs> in shell script database programs. Bugs that don't show up> until the system has been working perfectly for a long time,> and when they do show up, their only clue might be that some> inverted index doesn't have as many matches as were expected.Unix encourages, by egregious example, the mostirresponsible programming style imaginable. No errorchecking. No error messages. No conscience. If a studenthere turned in code like that, I'd flunk his ass.Unix software comes as close to real software as TeenageMutant Ninja Turtles comes to the classic Three Musketeers:a childish, vulgar, totally unsatisfying imitation.

> ...> There's nothing wrong with C as it was originally > designed,> ...bullshite.Since when is it acceptable for a language to incorporatetwo entirely diverse concepts such as setf and cadr into thesame operator (=), the sole semantic distinction being thatif you mean cadr and not setf, you have to bracket yourvariable with the characters that are used to representswearing in cartoons? Or do you have to do that if you meansetf, not cadr? Sigh.Wouldn't hurt to have an error handling hook, real memoryallocation (and garbage collection) routines, real datatypes with machine independent sizes (and string data typesthat don't barf if you have a NUL in them), reasonableequality testing for all types of variables without havingto call some heinous library routine like strncmp,and... and... and... Sheesh.I've always loved the "elevator controller" paradigm,because C is well suited to programming embedded controllersand not much else. Not that I'd knowingly risk my life inan elevator that was controlled by a program written in C,mind you...

OP, could you at least post examples of those problems?

So you learned something? I see nothing wrong with this.

Who the fuck says that?

CSCI E-50 Syllabus
...Topics include abstraction, algorithms, data structures, encapsulation, resource management, security, software engineering, and web development. Languages include C, Python, SQL, and JavaScript plus CSS and HTML.

What the FUCK. This is way too much scope for a beginning class in programming. You need to start with basic procedural stuff using primitive data types. Then you move on to simple data structures, and that should be a class all on its own. That's the weeder course that separates programmers from normalfags.
Then you dip your foot into some assembly programming, another dedicated class, so you can actually understand what's happening underneath and not be some nigger floating in the ocean. Then you move on to advanced data structures. Next is a class on programming language theory, so you can generalize what you've learned so far and not be some one-trick pony. THEN AND ONLY THEN do you take a class on algorithms.

I cannot fathom how they expect to breeze through all these subjects in the course of one class. Also,

Fucking really? I don't know what the fuck these Harvard niggers are doing, but its not cranking out decent programmers. Course should be titled, "How to hate programming and never come back"

it's not as indepth as you think. It's more along the lines of "these kids just learned while and for loops, lets have them implement a simple Cesar Cipher"


Yes, that's how beginner lessons look like. If people cannot pass this level, it's a sign to show that they cannot pass the higher levels.

SQL is the only one of those languages that isn't complete garbage.

You spelled CSS wrong.


But that's just it, it's not depth, it's pure breadth. I argue that you cannot learn programming correctly in this way. I literally couldn't design a course any better with the intent to scare someone away from programming and teaching them just enough to make it all seem like magic. I mean, you're teaching basic data structures in the same course as "software engineering" and HTML. It's a fucking joke.

Learn VBA, OP. You'll be your office's wiz kid (in a normalfag environment).

Harvard wouldn't keep around a class that doesn't prepare them for future coursework.

Just download QBasic or GW-BASIC and run them in Dosbox. That's all you need to start making games and shit.

This OP. You will be like webm related in no time.

Attached: basic.webm (720x480, 4.44M)

If you're stupid like me, you learn from experience.

Attached: cirno5.jpg (1200x849, 294.1K)

The purpose of CS50 is fundamental programming logic. All the depth they need to be an expert programmer can come later. Looping constructs, conditionals, and functions come first. Data structures, complexity analysis and formal verification comes later.

Why wouldn't they, if its profitable? It's not an introduction any more than the "Cosmos" documentary is an introduction to being an astrophysicist.

You need to re-read the syllabus. It includes data structures and software engineering. It's more of a buffet than a course, and totally inappropriate for anybody who wants to become a programmer.

Not an argument.

cs50 is hard, try " How to Design Programs" if you are dumb like me, I also got BTFO by cs50 initially.


Is that also what you say to women when they reject you?

found in /pdfs/ btw

Go learn by doing:

Why have so many decades passed yet we still use Unix?

What shit.

Do not frustrate yourself. Learn everyday a little bit and soon you will be good at it.
Most users drop good gnu/linux distros because of the impatience.
The above sentence is to be taken as a analogy. You should be patient and learn things from the beginning. Do not engage into very complicated and complex projects at first.

The one good thing that helped me is the following: teaching.
If you try to repeat the process of learning while transmitting the learned you learn it way faster. If, like me, you are too much of a hikkiko, record yourself doing it.

Learn scripting language like Python or Perl first. Also git gud at the Bash shell. Learning how to use Bash and I/O redirection allows you to make the computer your bitch. You can human-centipede you programs with Bash and become a god.

Attached: 995e4649534a3de0d6f834ab70a4040378853d39600988f45e9c254719b65e3d-pol.png (251x251, 91.7K)

this is good advice, along the same lines I think going through a book like "Introduction to Programming Emacs Lisp", since the payoff with both of these strats will provide immediate utility, along with utility for the rest of your life, even if you don't become a programmer.

and pedagogically, I think cs50 sucks compared to the "Systematic Programming Design" on EdX, which begins with "How to Code: Simple Data".