I took cs50x in 2016, took me nearly 8 months to finish the course. 2 years later I would agree that starting with C was the best decision and format structure for CS50. It should always be like this
I started learning programming in JavaScript, then took CS50. Wow, the difference in my understanding of "what is going on under the hood", so to speak, has been so beneficial. Seems like starting in C is a great choice.
I have the same experience. CS50, particularly starting with C, filled in so many gaps in understanding the fundamentals in programming and made me write better code.
My journey also quite similar. Started CS50 in Feb last year with no programming experience. Found week 3 too hard so stopped further. Then switched to web development and javascript from October 2021. Learned a lot of JS. Then came back again to CS50 to know something which every software engineer should know. And now i am on week-6! Planning to complete before 1st Jan 2023. I feel it's problem sets are really hard for a complete beginner. So because of this reason I feel that this course is best for both beginners and those with some coding experience. After gaining some programming experience using javascript i came back again and solved those psets. In all this is the best course u have ever taken
I studied python first for a few months as my first language and then started CS50. It really helped me solve those problem sets, just by giving me an idea of how to think as a programmer
Why C? The answer is simple: Theory of Relativity. David just thought: let's first show them the hardest programming language, so later when they see Python (which is objectively still hard), it feels like a walk in the park. Genius move right there, @cs50.
Right? And wasn't it a brilliant idea to start with Scratch, and soon translate those splashy-coloured blocks into sets of curly braces, so that they don't seem like an extra layer of obscurity anymore (or at least less so :p)?
this reply is asinine. i dont need to learn manual driving to know using an automatic is much better. i have eyes. it really is that simple, im sorry you have no imagination.
i'm follow MOOC curriculum Computer Science from Prof James Leland Harp and I study alone . I always look forward to CS 50 podcasts because when i followed CS50 Harvard i didn't feel alone. I feel I'm joining the student community of computer science
I think one advantage of starting with C over Python for beginning, is because I think the strong typing, makes it easier to communicate the concept to the learner that there are different "types" of variables. Also, it is better than C++ or Java or C# for a starter language, because object orientation is a more advanced concept, that is more easily understood once you understand basic variables and functions well. And yes, the low level aspect, but not too low level of assembly, is good, so that the learner can form an appreciation of what the computer is doing without getting too used to high level stuff first is good. Also, pointers are not that hard, if well taught.
I agreeeeeee soooo much! I'm so thankful that I got to learn C first because later on, I have a better view of what goes on underneath. Let's take houses metphorically for example, when something goes wrong in a house and you don't have the blueprints, it's quite hard to decide on what's the best approach to fixing it. Whereas when you know what's underneath, you can pretty much start out on the path closest to the problem.
except you still have the blueprints, they're just written using modern standards. you wouldn't build a house or even start to learn how to build a house using old engineering techniques would you? using old tools for drawing doesn't help you to understand how new ones work better. you're using an incomplete metaphor to describe an idea you cant even comprehend.
@@donovanm.8909 exactly. people eat any BS nowadays. it is different knowing how stuff works and learning old techniques which have nothing to do with it.
man I got to admit that from Malan I've learned just as much about english dictionary (as non native speaker), this guy always has me googling "new word Ive never heard of" meaning.
I would like to share my experience for all of you who dislike or disprove of teaching C as first language. My first language was not C, it was JavaScript which has some syntax similarities to C. What happened to me when learning JavaScript, I found myself many times asking "what hell is going on under the hood" and ended up working my way backwards from a high level language back to a low level language. If you considering to get serious at programming I would argue that learning low level programming is mandatory, for your own sake.
Good talk, you and Brian are a dream-team. Teaching C first is definitely a good way to go. I've started to get more into low-level programming, and I'm reading textbooks on computer organization and operating systems. The book covers MIPS assembly, and working with really takes it to the next level in understanding what's going on under the hood. It's awesome!
@@ronr2030 Oh, of course. The book on computer organization is called "MIPS! MIPS! What wonderful Nips!: A Deep Dive Under the Hood, 8th Edition", by Richard Chase. The operating systems book is called "A Fastidious Rundown of Underlying Truths Revealed within Operating Systems: Linus Torvalds: The Would-be Trillionaire: Heartbreak, Brilliance, and Redemption, The Already-told story, 18th Edition.", written by John Endian-Flops. Both a must read, in my opinion.
50% of programming is the use of abstractions. In c and other languages, Stream is an abstraction that you have to use from the beginning and everyone skips to explain it. If you understand the functions for straem in c I think you will understand each documentation 80% easier. It doesn't matter if it's Java, Javascript, C ++, ..
The fact that CS50 have you literally create functions like atoi or max in C where you have to always specify your data types (floats, ints etc) makes going to other languages so enjoyable and I think many find they miss the strictness or C
I really wanted this podcast. Weeks before I came to know about CS50x on edX from a close friend, I had already begun a course in C++. I gave CS50 a try in the middle of .y C++ course and found it absurd to learn C. However, eventually I understood why Prof. Malan started with C. He used it to gradually level us up on abstractions. It helped me program better. Thank you Prof. Malan !
Yep. Its really dumb how many of these WebTeachers say shit like "Dont learn C, its a waste of time. Learn Python or JavaScript". And i was one of these ppl that followed this advice. I started learning JavaScript (after HTML/CSS) and at first i really made some progress. But i got to a point where i had a blockade bcs i was confused about what happens under the hood. It was too abstracted. Then i found CS50 and got into C. It really helped alot and i finally got some sort of problem solving mindset. And i really have to say: C is a very cool language. I enjoy the interaction with the metal^^
@@ZedP how does it have more limited scope I heared js can be used in front end as back end compared to python which only can be used in back end developement
I love the course but man, the problem sets start off very difficult. The lectures are easy to follow but the online course assumes we are all Harvard quality students.
The thing is that the lection is there to give you the basic concepts and what are the things you are going to implement, how are they related. The shorts are more what are these concepts in detail. And how to implement is up to you. You have to struggle, rewatch, google, try and fail. They are supposed to be hard, because otherwise you would do this easy quiz and won't learn that much. Practice makes a real maestro.
Yes they are hard if you never coded before. I had some experience with JavaScript before i got into CS50 and the mario pset melted my brain^^ But after this warm up, it was ok. CS50s approach is much better than others imo. I learned JavaScript on FCC and i have to say: Going through so many concepts so quickly that you forgot half of it when you finally get to the projects, is just not the right approach for me. I love FCC, but CS50s approach to introduce into coding is much better imo.
You know, I hated C to start, but now I like coding in C after this course! Thank you so much. It's a shame that C seems to be a dying language, only used in ridiculously power-hungry tasks.
Well like you said: It just seems like that. But C wont die anytime soon. And its not only used for power-hungry tasks. Its used especially in Embedded-Systems...and we have a lot of them^^
If you're using Python you're (usually) mostly using C under the hood. C will probably be around for a long time as a low level language. Fortran and Cobol are still around, and if you write those you can get some good contract work maintaining old systems.
I never understood why my uni dropped C as an introductory programming language in favor of Python, a few years after my freshman year. You could choose either one when I started, later you must have gone through Python and C was only optional but I don't think the students know what they're missing on when they choose to skip it. And that's the kind of European uni where you basically graduate in the major you enrolled in before starting the college. So it's not like "being bothered with C" may have no value for you as you're to graduate in CS no matter what.
because people actually use python in the real world and it will help you get a job. typing printf(" "); doesnt help you to understand the function of the command print anymore that typing print() does. you kids seriously have zero imagination
I like both ideologies I started with Java then moved to c. I took assembly before I learned c though. Programming in Java let me learn how to think like a programmer, if I would have started with c I would have gotten overwhelmed with all the manual things you have to do. I can also see the flip side though some people that start with something with python might have a hard time moving to c. Also starting with c builds grit and let’s you learn low level memory which is a great knowledge to have in your back pocket.
as an electrical engineer i was first exposed to Assembly with microprocessors and then C for embedded systems. In that context C is King hands down because there is nothing as fast for those applications.
I started learni Javascript but i coudn't understand the fundumentals of programming for example i coudn't understands what loops/nested loops under the hood Then I started learning C and it made it much easier
I mean I understand the reasons for "Why C?" and I understand the coursework, the theory and can follow everything that is going on. Where C trips me up is with syntax and the IDE - project work just takes up so much time. I am really not interested in ever using C for anything ever again so inherently I have a very strong mental barrier to wanting to learn C to a level where I can write code in it. This is my main objection - I have no desire to learn how to code in C.
I feel the purpose of CS50 is not to teach you any programming language but what are the principles behind computer science. Language is just a tool to understand those. If you know basics then you can learn any language. That's what was the intention when they created this course. Otherwise nobody will learn HTML/CSS/JSS/SQL/Python/C in a single course.
Damn I wish I could find answer to is cs50 course right place to start after being familiar to coding with MIT's processing? My goal is not to create visuals but problem solving -maybe to make novel interactions- I would appreciate any insight.
I am currently working as Python developer for the last 2years. Will it be beneficial if now I learn C Or C++, so that I could know more about what actually is going under the hood????
Learn it. There is no doubt that transitioning from high-level languages like Python and JavaScript to C or C++ is going to be hard, but it's always important to know what's happening "under the hood" as you say. CS50 will make C easy for you.
Imagine a pilot, learning how to drive a race car, is going how to ride horses..... yep, you are learning how to ride horses as kind of "you need to know how horses work, because cars are faster".... stop with that c crap!! keep it as a side-quest if you need, but scrap it from the main course.
@@amalldekan1432 or we could follow Ben Eaters RUclips channel, build a breadboard CPU and build out instruction set and build our compiler and be super men & women
@@amalldekan1432 I myself prefer C to JavaScript(having used both languages, but not at any advanced level), however, I cannot deny that using shit to describe JavaScript is indeed not a good choice. JavaScript is used very much today almost everywhere and node.js and react allow JavaScript to do brilliant stuff.
I took cs50x in 2016, took me nearly 8 months to finish the course. 2 years later I would agree that starting with C was the best decision and format structure for CS50. It should always be like this
I started C++
@@rajab4187 🆗🆒
@Dario Kayden fuck Off bot
what was the course called? is it in this channel? does it teach you how to program using C? please tell me...
They are expert in programming .if they schadule that we learn C first. There is something that we dont know
I started learning programming in JavaScript, then took CS50. Wow, the difference in my understanding of "what is going on under the hood", so to speak, has been so beneficial. Seems like starting in C is a great choice.
I have the same experience. CS50, particularly starting with C, filled in so many gaps in understanding the fundamentals in programming and made me write better code.
My journey also quite similar. Started CS50 in Feb last year with no programming experience. Found week 3 too hard so stopped further. Then switched to web development and javascript from October 2021. Learned a lot of JS. Then came back again to CS50 to know something which every software engineer should know. And now i am on week-6! Planning to complete before 1st Jan 2023. I feel it's problem sets are really hard for a complete beginner. So because of this reason I feel that this course is best for both beginners and those with some coding experience. After gaining some programming experience using javascript i came back again and solved those psets. In all this is the best course u have ever taken
I studied python first for a few months as my first language and then started CS50. It really helped me solve those problem sets, just by giving me an idea of how to think as a programmer
same here
yeah same experience
Never stop teaching c. It will always be the best first language. Keep calm and free your mallocs
Why C? The answer is simple: Theory of Relativity. David just thought: let's first show them the hardest programming language, so later when they see Python (which is objectively still hard), it feels like a walk in the park. Genius move right there, @cs50.
Right? And wasn't it a brilliant idea to start with Scratch, and soon translate those splashy-coloured blocks into sets of curly braces, so that they don't seem like an extra layer of obscurity anymore (or at least less so :p)?
@@katarzynakapusta2525 Yes! CS50 is awesome.
this reply is asinine. i dont need to learn manual driving to know using an automatic is much better. i have eyes. it really is that simple, im sorry you have no imagination.
thats not what the theory of relativity means you fucking pretentious moron.
i'm follow MOOC curriculum Computer Science from Prof James Leland Harp and I study alone . I always look forward to CS 50 podcasts because when i followed CS50 Harvard i didn't feel alone. I feel I'm joining the student community of computer science
I think one advantage of starting with C over Python for beginning, is because I think the strong typing, makes it easier to communicate the concept to the learner that there are different "types" of variables.
Also, it is better than C++ or Java or C# for a starter language, because object orientation is a more advanced concept, that is more easily understood once you understand basic variables and functions well.
And yes, the low level aspect, but not too low level of assembly, is good, so that the learner can form an appreciation of what the computer is doing without getting too used to high level stuff first is good.
Also, pointers are not that hard, if well taught.
I agreeeeeee soooo much! I'm so thankful that I got to learn C first because later on, I have a better view of what goes on underneath. Let's take houses metphorically for example, when something goes wrong in a house and you don't have the blueprints, it's quite hard to decide on what's the best approach to fixing it. Whereas when you know what's underneath, you can pretty much start out on the path closest to the problem.
except you still have the blueprints, they're just written using modern standards. you wouldn't build a house or even start to learn how to build a house using old engineering techniques would you? using old tools for drawing doesn't help you to understand how new ones work better. you're using an incomplete metaphor to describe an idea you cant even comprehend.
@@donovanm.8909 exactly. people eat any BS nowadays. it is different knowing how stuff works and learning old techniques which have nothing to do with it.
man I got to admit that from Malan I've learned just as much about english dictionary (as non native speaker), this guy always has me googling "new word Ive never heard of" meaning.
Right? Me too! for the sake of discussion jsjsjs
Exactly
I would like to share my experience for all of you who dislike or disprove of teaching C as first language.
My first language was not C, it was JavaScript which has some syntax similarities to C. What happened to me when learning JavaScript, I found myself many times asking "what hell is going on under the hood" and ended up working my way backwards from a high level language back to a low level language. If you considering to get serious at programming I would argue that learning low level programming is mandatory, for your own sake.
Good talk, you and Brian are a dream-team. Teaching C first is definitely a good way to go. I've started to get more into low-level programming, and I'm reading textbooks on computer organization and operating systems. The book covers MIPS assembly, and working with really takes it to the next level in understanding what's going on under the hood. It's awesome!
What is the "Book". ?
@@ronr2030 Oh, of course. The book on computer organization is called "MIPS! MIPS! What wonderful Nips!: A Deep Dive Under the Hood, 8th Edition", by Richard Chase. The operating systems book is called "A Fastidious Rundown of Underlying Truths Revealed within Operating Systems: Linus Torvalds: The Would-be Trillionaire: Heartbreak, Brilliance, and Redemption, The Already-told story, 18th Edition.", written by John Endian-Flops. Both a must read, in my opinion.
@@adamantinebipartite4732 none of these books exist… lol
50% of programming is the use of abstractions. In c and other languages, Stream is an abstraction that you have to use from the beginning and everyone skips to explain it. If you understand the functions for straem in c I think you will understand each documentation 80% easier. It doesn't matter if it's Java, Javascript, C ++, ..
The fact that CS50 have you literally create functions like atoi or max in C where you have to always specify your data types (floats, ints etc) makes going to other languages so enjoyable and I think many find they miss the strictness or C
I like how Brian played devil's advocate and caught David off guard, I find that quite cute
Plz do more of these podcasts...
#love from INDIA
I really wanted this podcast. Weeks before I came to know about CS50x on edX from a close friend, I had already begun a course in C++. I gave CS50 a try in the middle of .y C++ course and found it absurd to learn C. However, eventually I understood why Prof. Malan started with C. He used it to gradually level us up on abstractions. It helped me program better. Thank you Prof. Malan !
Yep.
Its really dumb how many of these WebTeachers say shit like "Dont learn C, its a waste of time. Learn Python or JavaScript".
And i was one of these ppl that followed this advice. I started learning JavaScript (after HTML/CSS) and at first i really made some progress.
But i got to a point where i had a blockade bcs i was confused about what happens under the hood. It was too abstracted.
Then i found CS50 and got into C. It really helped alot and i finally got some sort of problem solving mindset.
And i really have to say: C is a very cool language. I enjoy the interaction with the metal^^
CS50 content is so wonderful. There is no CS structure that is comfortable and much fun than CS50x. I'm from Vietnam
Yep, starting with C and continuing with Python. Sometimes that's just everything you need to know about programming.
what about continuing with js instead of python, do you think it's good idea?
@@germa66stealthblack Of course you can. However, JavaScript has the more limited scope than Python, but if you are satisfied with it, just go on.
@@ZedP more limited scope lmao
@@ZedP how does it have more limited scope
I heared js can be used in front end as back end compared to python which only can be used in back end developement
@@better6207 Python is not used only in web development, it has pretty universal scope.
Never change this. C is the goat
I love the course but man, the problem sets start off very difficult. The lectures are easy to follow but the online course assumes we are all Harvard quality students.
Cody Bishop LMFAO I feel the same way
Such difficulity is made that quality to begin with.
the challenge is fun
The thing is that the lection is there to give you the basic concepts and what are the things you are going to implement, how are they related. The shorts are more what are these concepts in detail. And how to implement is up to you. You have to struggle, rewatch, google, try and fail. They are supposed to be hard, because otherwise you would do this easy quiz and won't learn that much. Practice makes a real maestro.
Yes they are hard if you never coded before.
I had some experience with JavaScript before i got into CS50 and the mario pset melted my brain^^
But after this warm up, it was ok. CS50s approach is much better than others imo.
I learned JavaScript on FCC and i have to say:
Going through so many concepts so quickly that you forgot half of it when you finally get to the projects, is just not the right approach for me.
I love FCC, but CS50s approach to introduce into coding is much better imo.
Absolutely amazing and informative podcast, thank you so much.
You know, I hated C to start, but now I like coding in C after this course! Thank you so much. It's a shame that C seems to be a dying language, only used in ridiculously power-hungry tasks.
Well like you said: It just seems like that.
But C wont die anytime soon. And its not only used for power-hungry tasks. Its used especially in Embedded-Systems...and we have a lot of them^^
Thats cuz modern applications have evolved to a level where doing most stuff like making a basic gui would have you writing hundreds of lines of c
I like to think of C as Latin. People say it's a dead language but in reality it's everywhere.
If you're using Python you're (usually) mostly using C under the hood. C will probably be around for a long time as a low level language. Fortran and Cobol are still around, and if you write those you can get some good contract work maintaining old systems.
@@nigh_anxiety You cant really use the "under the hood" term here
It belongs to only David, the man himself
After class, I enjoy coding in c. thank you so much
I never understood why my uni dropped C as an introductory programming language in favor of Python, a few years after my freshman year. You could choose either one when I started, later you must have gone through Python and C was only optional but I don't think the students know what they're missing on when they choose to skip it. And that's the kind of European uni where you basically graduate in the major you enrolled in before starting the college. So it's not like "being bothered with C" may have no value for you as you're to graduate in CS no matter what.
because people actually use python in the real world and it will help you get a job. typing printf("
"); doesnt help you to understand the function of the command print anymore that typing print() does. you kids seriously have zero imagination
Do you think you could do an introduction to assembly language where you could teach just the very basics of language?
I like both ideologies I started with Java then moved to c. I took assembly before I learned c though. Programming in Java let me learn how to think like a programmer, if I would have started with c I would have gotten overwhelmed with all the manual things you have to do.
I can also see the flip side though some people that start with something with python might have a hard time moving to c. Also starting with c builds grit and let’s you learn low level memory which is a great knowledge to have in your back pocket.
C is great for learning.
as an electrical engineer i was first exposed to Assembly with microprocessors and then C for embedded systems. In that context C is King hands down because there is nothing as fast for those applications.
6:22 > _"for those listening in, it's not planned"_
heheheh, i like the gentle way sir DJM handles things :D
I just love this man's voice...
pedagogically ~ in a way that relates to the methods and theory of teaching
I started learni Javascript but i coudn't understand the fundumentals of programming for example i coudn't understands what loops/nested loops under the hood Then I started learning C and it made it much easier
david and brian absolute leyends !!
Thank you
Word of the day: pedagogically
Bonus points if you can drink every time it’s said without permanent liver damage.
DM is very good. Great teacher!!
Such a legend of a course
Damn, I click so fast when I see C :D
You got my attention, subscribed
I mean I understand the reasons for "Why C?" and I understand the coursework, the theory and can follow everything that is going on. Where C trips me up is with syntax and the IDE - project work just takes up so much time. I am really not interested in ever using C for anything ever again so inherently I have a very strong mental barrier to wanting to learn C to a level where I can write code in it. This is my main objection - I have no desire to learn how to code in C.
I feel the purpose of CS50 is not to teach you any programming language but what are the principles behind computer science. Language is just a tool to understand those. If you know basics then you can learn any language. That's what was the intention when they created this course. Otherwise nobody will learn HTML/CSS/JSS/SQL/Python/C in a single course.
Thanks. We love cs50
uni start with c .......mine does
Damn I wish I could find answer to is cs50 course right place to start after being familiar to coding with MIT's processing? My goal is not to create visuals but problem solving -maybe to make novel interactions- I would appreciate any insight.
Thx
In cs50 I enjoyed C, Specially Pointers. Tysm.. David Malan💯
This looks like one of (suits) posters
Podcasts are so old . Update pls
not just I, it's we
How about starting with C++?
Moving away from php is always the righ decision.
Is there a 2022 version of this
WE WOULD LIKE IT MORE IF IT WAS VIDEO
I am currently working as Python developer for the last 2years. Will it be beneficial if now I learn C Or C++, so that I could know more about what actually is going under the hood????
My first language was Python only.
Then C is going to be a nightmare for you..
Probably not.
C++ bruh its what u need
Learn it. There is no doubt that transitioning from high-level languages like Python and JavaScript to C or C++ is going to be hard, but it's always important to know what's happening "under the hood" as you say. CS50 will make C easy for you.
php documentation is way more pleasant to read compared to python documentation in my view.
one advantage i had with c was i learnt ten touch typing with c writing so many codes made me familiar with keyboard
pedagogical?
I think it's similar to the word "academically"
New word for me too, adjective defined as 'related to teaching'
Imagine a pilot, learning how to drive a race car, is going how to ride horses..... yep, you are learning how to ride horses as kind of "you need to know how horses work, because cars are faster".... stop with that c crap!! keep it as a side-quest if you need, but scrap it from the main course.
Why not Java ?
Real men & women know proper C. They also know python. But they learnt C first.
C++ that's what my uni started
@@rajab4187 C++ is lovely too.
lol "real men"
@@amalldekan1432 or we could follow Ben Eaters RUclips channel, build a breadboard CPU and build out instruction set and build our compiler and be super men & women
@@amalldekan1432 I myself prefer C to JavaScript(having used both languages, but not at any advanced level), however, I cannot deny that using shit to describe JavaScript is indeed not a good choice. JavaScript is used very much today almost everywhere and node.js and react allow JavaScript to do brilliant stuff.
nice forehead
Javascript or python could get you a job faster, but your understanding of what's really happening would be inferior.