🎯 Key Takeaways for quick navigation: 07:03 🚀 *When manually compiling C code with Clang, the `-o` flag allows customizing the output file name, such as `clang -o hello hello.c`.* 08:26 🛠️ *The default output file name when compiling with Clang without the `-o` flag is `a.out` (Assembler Output).* 14:13 🔄 *When using external libraries, like CS50's, the `-l` flag followed by the library name (e.g., `-lcs50`) is needed during compilation to link the library's functions with the program.* 15:27 🚀 *Command line arguments, denoted by the `-o` flag and others, modify the behavior of commands like Clang, allowing for more customization and control.* 19:35 🔄 *The compilation process involves four steps: preprocessing, compiling, assembling, and linking. Understanding these steps provides insights into how code is transformed into machine code.* 20:19 📂 *Header files like cs50.h and stdio.h are essential for C programs, providing function prototypes and declarations. They are typically located in the /usr/include folder on the server.* 21:44 🔄 *Preprocessing involves copying and pasting the contents of included files (e.g., cs50.h) into your code. The hash include lines act as temporary placeholders for global find-and-replace during this step.* 22:13 📝 *Function declarations, known as prototypes, specify the function's name, arguments, and return type. This step helps the compiler understand the structure of functions before compiling the code.* 25:32 ⚙️ *Compilation involves converting preprocessed C code into assembly code, a lower-level language more closely understood by the computer's CPU.* 28:24 🤝 *Linking is the final step, combining your compiled code with external libraries (e.g., CS50's code) to create the executable, making all necessary zeros and ones available for execution.* 35:22 🔐 *Decompiling, the reverse of compiling, is possible but challenging. It could expose source code, making it easier to find bugs or exploit software, but the process is complex and may not fully recover the original code.* 47:03 🐞 *Debugging with breakpoints: Use breakpoints in debugging to pause execution at specific lines, allowing you to step through code at your own pace, inspect variables, and identify logical errors.* 49:25 🚶 *Step Over in Debugging: The "Step Over" function in debugging allows you to run the current line of code without diving into function calls, useful for quickly navigating through known sections of code.* 52:14 🐛 *Variable Scope in C: In C, variable scope is limited to the nearest pair of curly braces. Declaring variables within a specific scope ensures they are accessible only within that scope, helping manage program complexity.* 56:03 🚦 *Step Into in Debugging: The "Step Into" function in debugging allows you to dive into function calls, useful for exploring the details of functions and identifying issues within them.* 01:09 📊 *Arrays provide a more efficient way to store multiple values of the same type, eliminating the need for separate variables for each value.* 01:11 🔄 *When working with printf, ensure the format specifier (%f) matches the data type (float) of the variable being printed to avoid errors.* 01:13 💡 *Typecasting allows explicit conversion of data types, addressing issues when mixing different types in expressions or printf statements.* 01:15 📚 *Arrays in C are declared using square brackets to indicate the size, and indexing starts from 0. They provide a more organized way to handle multiple values.* 01:17 🔄 *Transitioning from individual variables to arrays improves code organization and readability, especially when dealing with a large number of values.* 01:18:05 🔄 *Arrays can make code more dynamic by allowing user input. In this case, a program takes user input for test scores and calculates the average using an array.* 01:19:55 🔄 *Using a loop can improve code design when dealing with repetitive tasks, as seen in the example where a for loop is used to get input for multiple test scores.* 01:21:48 🔄 *Arrays in C are contiguous blocks of memory, making it easy to access elements using indices (e.g., `scores[0]`, `scores[1]`).* 01:22:18 🔄 *Functions in C can accept arrays as arguments. The video demonstrates creating a function to calculate the average of an array of scores.* 01:25:33 🔄 *Avoid "magic numbers" in code; use constants for values like array sizes to enhance code maintainability and prevent errors.* 01:29:48 🔄 *In C, you must pass the length of an array to a function; there's no built-in function to determine the size of an array.* 01:33:36 🔄 *Strings in C are essentially arrays of characters. A string variable is an array, and individual characters can be accessed using indices.* 01:36:57 📏 *Strings in C are implemented as arrays with an extra byte at the end, known as a sentinel value (null character), which indicates the end of the string.* 01:37:26 🧩 *The null character is automatically added by C when storing a string in memory, ensuring proper termination and helping distinguish between adjacent strings.* 01:38:25 🧑💻 *Strings in memory occupy one more byte than the characters typed by the programmer, with the extra byte being the null character.* 01:38:54 📊 *The null character (backslash 0) is represented by eight zero bits and serves as an end-of-string indicator in C.* 01:39:48 🕵️ *Null, represented by backslash zero,is also known as NUL and corresponds to decimal number 0 in the ASCII chart.* 01:41:37 🛠️ *Strings can be manually manipulated as arrays of characters, allowing direct access to individual characters using indexing.* 01:44:31 🎓 *Strings are treated specially in C, allowing direct use of the string variable without square brackets for indexing.* 01:45:58 🔄 *Arrays of strings (array of arrays) can be created, providing a way to handle multiple strings in a single data structure.* 01:51:38 📏 *The length of a string can be determined manually by iterating through the characters until the null character is encountered.* 01:53:34 🧰 *The string.h library in C provides useful functions for string manipulation, such as strlen for determining string length.* [01:56:48 URL](th-cam.com/video/XmYnsO7iSI8/w-d-xo.html) *🔄 Understanding ASCII values: Converting lowercase to uppercase involves subtracting 32 from the ASCII value, a fundamental concept utilized in character manipulation.* [01:58:10 URL](th-cam.com/video/XmYnsO7iSI8/w-d-xo.html) *🖥️ Leveraging libraries for efficiency: Using the `ctype.h` library functions like `islower` and `toupper` simplifies code, making it more efficient and less error-prone.* [02:00:08 URL](th-cam.com/video/XmYnsO7iSI8/w-d-xo.html) *📚 Importance of libraries: Demonstrates how leveraging libraries like `ctype.h` can significantly simplify code by handling low-level details, enhancing readability and reducing the chance of errors.* [02:02:00 URL](th-cam.com/video/XmYnsO7iSI8/w-d-xo.html) *📉 Code optimization: Optimizing code by precalculating the length of a string outside of a loop, improving efficiency by avoiding redundant computations.* [02:08:14 URL](th-cam.com/video/XmYnsO7iSI8/w-d-xo.html) *⌨️ Command line arguments: Introduction to handling command line arguments (`argc` and `argv`), allowing more dynamic and interactive program execution without requiring user input during runtime.* [02:10:37 URL](th-cam.com/video/XmYnsO7iSI8/w-d-xo.html) *🧠 Smart program design with command line arguments: Demonstrates conditional statements based on the count of command line arguments (`argc`), allowing the program to adapt and provide meaningful output.* [02:13:30 URL](th-cam.com/video/XmYnsO7iSI8/w-d-xo.html) *🐄 Command line argument example - cowsay: Illustrates a whimsical example using the `cowsay` program, showcasing the versatility and creativity possible with command line arguments in software.* [02:15:24 URL](th-cam.com/video/XmYnsO7iSI8/w-d-xo.html) *🚨 Exit status in C: Introduces the concept of exit status, a hidden integer returned by the `main` function, commonly used to indicate errors or success when a program terminates.* 02:17:18 🚦 *Use `echo $?` to check the exit status of a program in Linux. A status of 0 typically means success, but you can customize it in your code.* 02:18:17 🔢 *Explicitly set the exit status in your program using `return`. This can be useful for indicating success (0) or failure (non-zero) when calling your program from another.* 02:19:13 🔐 *Cryptography involves encrypting information (plaintext) into ciphertext using algorithms known as ciphers. The recipient needs both the algorithm and input details to decrypt and reveal the original message.* 02:20:37 ⚙️ *A cipher in cryptography is the algorithm that transforms plaintext to ciphertext. It requires an input (key) to function. The example of a Caesar cipher involves shifting letters by a certain value.* 02:22:28 🔄 *Encryption scrambles a message, making it unreadable to unauthorized individuals. Decryption, the reverse process, requires the original algorithm and input.* Made with HARPA AI
The teacher teaches these topics in such a fun and somewhat energetic way which makes the material he's teaching more fun to learn. and his explanation to arrays helped me a lot in understanding parts that i didn't get before.
I love that he teaches you through and through whats happening under the hood and then BAM , there is just one little button that does everything for you
Hey Maisha! God calls you today to His love. It doesn'rt matter if you are an agnostic, athiest,muslim whatever, the God of the Universe, Jesus Christ of Nazareth is Holy. He made us perfect like Him but all have sinned & fallen short of His glory, all havturned away, none is righteous and everyone is by default ,deserves gge eternal wages of separation from God in hell. This is the wrath of God against sin is separation from Him, but because He is Holy, He must separate all sinners from Him , as all sin is egregious to Him. Now , here is the good news, what did God do for guilty sinners so they wouldn't have to go to hell? Jesus, the God of the Universe, took all of sin the is of mankind upon His melf, and willingly suffered the wrath of God against sinners, that if you believe in Him, you will be saved. It's a court situation, imagine a robber entered a court asking the judge to pardon his robbery because He gave some of the money to the poor, and He bought mcdonald's for a kid with some of the money stole. The judge replies that though those are good works, they cannot excuse the fact that He stole 1 million, 20,000 USD . The thief then told the judge that time had passed so that means the theft can be forgiven. But the judge replies, that neither time nor good works can allow the theft to be forgiven Him. So the thief broke the law, so He must go to prison, but just before, someone paid the fine, so that we can be forgiven.
Very heartening way of teaching. Makes coding something fun and encouraging with the way he speaks. A two hours video doesn't feel enough. Props to the lecturer.
Another great lecture from David. Even though I've programmed before, I'm learning new concepts in this course. Certainly have enjoyed this course so far and for sure will continue with it throughout 2023.
@eskard1996 hey do u also watch other videos after watching this lecture to further understand the concept or just go directly to lab and problem sets???
hey@@arta2646 , cs50 aint my first course , so i already know the fondamental knowledge like arrays objects and syntax... , thats why first 2 weeks were easy , but after that labs pbst became so hard
@Greem genuinely curious, could you expand on that? What would teaching ‘how’ to think be in this context? Do you mean like mindset or something like that
Thank god there's these kind of videos where it's actually free to get and accessible. Thanks for the video it helped me out a lot. The fact that he teached us in a really fun matter and I really enjoy learning in this class.
This is such great series to learn about programming. The lecturer presents the subject in such a clear, in depth and passionate way that you cannot help but get invested.
Man, I wish I went to Harvard. They're really crafting some incredibly bright young minds at these ivy-league schools. I very much appreciate all the free OpenCourseWare content these schools provide.
These Harvard profs really make things so easy to understand you sort of wonder if so called "geniuses" more likely had great teachers than actual genius...
@@dallysinghson5569 They did a study and found 90% of babies qualify as geniuses. To your point bad teachers and socially shaming curiosity make children less gifted over time.
Today was tough. Made it through the lecture though. These two hours and change took me all day but I did it! Tomorrow I'll get cracking on the homework.
Helped me to understand the programming thinking which I ignored while learning basics of language, this kind of perception helps in understanding the advanced concepts. Kudos! I am more interested to dive deep in the world of Computer Science... :)
We need more instructors like Dr. Malan! Too many young students in the west become scared of technical disciplines due to bad teaching and pathetic academic standards
my favorite part is the compiling section because you get to learn something that isn't taught very often and you get to really understand what's going on under the hood when compiling a program
God calls you today! It doesn'rt matter if you are an agnostic, athiest,muslim whatever, the God of the Universe, Jesus Christ of Nazareth is Holy. He made us perfect like Him but all have sinned & fallen short of His glory, all havturned away, none is righteous and everyone is by default ,deserves gge eternal wages of separation from God in hell. This is the wrath of God against sin is separation from Him, but because He is Holy, He must separate all sinners from Him , as all sin is egregious to Him. Now , here is the good news, what did God do for guilty sinners so they wouldn't have to go to hell? Jesus, the God of the Universe, took all of sin the is of mankind upon His melf, and willingly suffered the wrath of God against sinners, that if you believe in Him, you will be saved. It's a court situation, imagine a robber entered a court asking the judge to pardon his robbery because He gave some of the money to the poor, and He bought mcdonald's for a kid with some of the money stole. The judge replies that though those are good works, they cannot excuse the fact that He stole 1 million, 20,000 USD . The thief then told the judge that time had passed so that means the theft can be forgiven. But the judge replies, that neither time nor good works can allow the theft to be forgiven Him. So the thief broke the law, so He must go to prison, but just before, someone paid the fine, so that we can be forgiven.
I'm currently doing the course on EDX and the lectures are the masked pandemic version. I didn't realize there was a newer version of the lectures out with a more relaxed David Malan. He looks like the mask is making him sweat buckets in the EDX version.
I've watched several courses from CS50 before from their introduction courses and I thought some of them were really easy to understand. So this has been an enjoyable watch as usual, as for my favorite part, I would say the string part is quite interesting to study as it can be correlated to our studies right now, so I would say that part is my favorite.
God calls you today! It doesn't matter if you are an agnostic, athiest,muslim whatever, the God of the Universe, Jesus Christ of Nazareth is Holy. He made us perfect like Him but all have sinned & fallen short of His glory, all havturned away, none is righteous and everyone is by default ,deserves gge eternal wages of separation from God in hell. This is the wrath of God against sin is separation from Him, but because He is Holy, He must separate all sinners from Him , as all sin is egregious to Him. Now , here is the good news, what did God do for guilty sinners so they wouldn't have to go to hell? Jesus, the God of the Universe, took all of sin the is of mankind upon His melf, and willingly suffered the wrath of God against sinners, that if you believe in Him, you will be saved. It's a court situation, imagine a robber entered a court asking the judge to pardon his robbery because He gave some of the money to the poor, and He bought mcdonald's for a kid with some of the money stole. The judge replies that though those are good works, they cannot excuse the fact that He stole 1 million, 20,000 USD . The thief then told the judge that time had passed so that means the theft can be forgiven. But the judge replies, that neither time nor good works can allow the theft to be forgiven Him. So the thief broke the law, so He must go to prison, but just before, someone paid the fine, so that we can be forgiven.
If you find yourself struggling on this one go back and either watch it again or find the same Lecture from a different school year. First watch through had me a bit confused, second watchthrough its all coming together.
These lectures have been so eye opening for a somewhat experienced programmer with nearly zero computer science understanding. I never thought too much about the fact that I could grab a specific character in a string by accessing it like an array- until you revealed that a string is literally just an array of characters! Mind blown!!
For a long time I didn't know where the exit status could be effectively used, but when I started working I started to notice that is is widely used, especially in scripting. For example in the shell scripts you might use something like: ```if my_program; then echo "Success"; else echo "Fail"; fi```
@@quantumcodes2508 Thanks QC... unfortunately I'm way over burdened with too much in life now. I have to pass for now. Hopefully there will a future Op for me. *Cheers to your success in CS50!*
if anyone else is wondering why at 2:03:17, the n = strlen(s) did not have a int prefix, my buddy told me that you can only declare a data type on the same line once. if you wanted both i and n to have a data type, you have to do it outside of the block.
So, he is actually declaring and initializing both "i" and "n" on the same line. Notice that there is a "," between "i = 0" and "n = strlen(s)". Hope this helped!
Already watch the lecture 0 and lecture 1, really amazing clases, im wondering if i have some kind of exercise to practice what i have learned so far, thanks.
What difference does it make, from a memory perspective, using an array carrying three variables vs storing three variables separately? Eventually, both processes are going to use 12 bytes of memory.
The level of syntactic sugar provides for strings though haha Turns out the training wheels come off far quicker when you refuse to use the cloud VS code codespace and set VS code up locally on your PC. Voila you're now left there to ponder for hours why #include returns errors and string name = "David" works for him and it doesn't for you :D After a few rabit holes the CS50.h abstraction fades and you realize there's natively no strings in C like Python or Kotlin, and in C it's just character arrays
I'm confuse why do we need to remember the length of the array? Like we declare it in N and we can change it for later? Or maybe we can look back at it anytime. Can someone explain please? Thank you.
Taking Harvard class at the opposite side of this planet for free. Huge thx from S.Korea. What a astonishing era ! Bless all!
Huge thanks from Nigeria
🎯 Key Takeaways for quick navigation:
07:03 🚀 *When manually compiling C code with Clang, the `-o` flag allows customizing the output file name, such as `clang -o hello hello.c`.*
08:26 🛠️ *The default output file name when compiling with Clang without the `-o` flag is `a.out` (Assembler Output).*
14:13 🔄 *When using external libraries, like CS50's, the `-l` flag followed by the library name (e.g., `-lcs50`) is needed during compilation to link the library's functions with the program.*
15:27 🚀 *Command line arguments, denoted by the `-o` flag and others, modify the behavior of commands like Clang, allowing for more customization and control.*
19:35 🔄 *The compilation process involves four steps: preprocessing, compiling, assembling, and linking. Understanding these steps provides insights into how code is transformed into machine code.*
20:19 📂 *Header files like cs50.h and stdio.h are essential for C programs, providing function prototypes and declarations. They are typically located in the /usr/include folder on the server.*
21:44 🔄 *Preprocessing involves copying and pasting the contents of included files (e.g., cs50.h) into your code. The hash include lines act as temporary placeholders for global find-and-replace during this step.*
22:13 📝 *Function declarations, known as prototypes, specify the function's name, arguments, and return type. This step helps the compiler understand the structure of functions before compiling the code.*
25:32 ⚙️ *Compilation involves converting preprocessed C code into assembly code, a lower-level language more closely understood by the computer's CPU.*
28:24 🤝 *Linking is the final step, combining your compiled code with external libraries (e.g., CS50's code) to create the executable, making all necessary zeros and ones available for execution.*
35:22 🔐 *Decompiling, the reverse of compiling, is possible but challenging. It could expose source code, making it easier to find bugs or exploit software, but the process is complex and may not fully recover the original code.*
47:03 🐞 *Debugging with breakpoints: Use breakpoints in debugging to pause execution at specific lines, allowing you to step through code at your own pace, inspect variables, and identify logical errors.*
49:25 🚶 *Step Over in Debugging: The "Step Over" function in debugging allows you to run the current line of code without diving into function calls, useful for quickly navigating through known sections of code.*
52:14 🐛 *Variable Scope in C: In C, variable scope is limited to the nearest pair of curly braces. Declaring variables within a specific scope ensures they are accessible only within that scope, helping manage program complexity.*
56:03 🚦 *Step Into in Debugging: The "Step Into" function in debugging allows you to dive into function calls, useful for exploring the details of functions and identifying issues within them.*
01:09 📊 *Arrays provide a more efficient way to store multiple values of the same type, eliminating the need for separate variables for each value.*
01:11 🔄 *When working with printf, ensure the format specifier (%f) matches the data type (float) of the variable being printed to avoid errors.*
01:13 💡 *Typecasting allows explicit conversion of data types, addressing issues when mixing different types in expressions or printf statements.*
01:15 📚 *Arrays in C are declared using square brackets to indicate the size, and indexing starts from 0. They provide a more organized way to handle multiple values.*
01:17 🔄 *Transitioning from individual variables to arrays improves code organization and readability, especially when dealing with a large number of values.*
01:18:05 🔄 *Arrays can make code more dynamic by allowing user input. In this case, a program takes user input for test scores and calculates the average using an array.*
01:19:55 🔄 *Using a loop can improve code design when dealing with repetitive tasks, as seen in the example where a for loop is used to get input for multiple test scores.*
01:21:48 🔄 *Arrays in C are contiguous blocks of memory, making it easy to access elements using indices (e.g., `scores[0]`, `scores[1]`).*
01:22:18 🔄 *Functions in C can accept arrays as arguments. The video demonstrates creating a function to calculate the average of an array of scores.*
01:25:33 🔄 *Avoid "magic numbers" in code; use constants for values like array sizes to enhance code maintainability and prevent errors.*
01:29:48 🔄 *In C, you must pass the length of an array to a function; there's no built-in function to determine the size of an array.*
01:33:36 🔄 *Strings in C are essentially arrays of characters. A string variable is an array, and individual characters can be accessed using indices.*
01:36:57 📏 *Strings in C are implemented as arrays with an extra byte at the end, known as a sentinel value (null character), which indicates the end of the string.*
01:37:26 🧩 *The null character is automatically added by C when storing a string in memory, ensuring proper termination and helping distinguish between adjacent strings.*
01:38:25 🧑💻 *Strings in memory occupy one more byte than the characters typed by the programmer, with the extra byte being the null character.*
01:38:54 📊 *The null character (backslash 0) is represented by eight zero bits and serves as an end-of-string indicator in C.*
01:39:48 🕵️ *Null, represented by backslash zero,is also known as NUL and corresponds to decimal number 0 in the ASCII chart.*
01:41:37 🛠️ *Strings can be manually manipulated as arrays of characters, allowing direct access to individual characters using indexing.*
01:44:31 🎓 *Strings are treated specially in C, allowing direct use of the string variable without square brackets for indexing.*
01:45:58 🔄 *Arrays of strings (array of arrays) can be created, providing a way to handle multiple strings in a single data structure.*
01:51:38 📏 *The length of a string can be determined manually by iterating through the characters until the null character is encountered.*
01:53:34 🧰 *The string.h library in C provides useful functions for string manipulation, such as strlen for determining string length.*
[01:56:48 URL](th-cam.com/video/XmYnsO7iSI8/w-d-xo.html) *🔄 Understanding ASCII values: Converting lowercase to uppercase involves subtracting 32 from the ASCII value, a fundamental concept utilized in character manipulation.*
[01:58:10 URL](th-cam.com/video/XmYnsO7iSI8/w-d-xo.html) *🖥️ Leveraging libraries for efficiency: Using the `ctype.h` library functions like `islower` and `toupper` simplifies code, making it more efficient and less error-prone.*
[02:00:08 URL](th-cam.com/video/XmYnsO7iSI8/w-d-xo.html) *📚 Importance of libraries: Demonstrates how leveraging libraries like `ctype.h` can significantly simplify code by handling low-level details, enhancing readability and reducing the chance of errors.*
[02:02:00 URL](th-cam.com/video/XmYnsO7iSI8/w-d-xo.html) *📉 Code optimization: Optimizing code by precalculating the length of a string outside of a loop, improving efficiency by avoiding redundant computations.*
[02:08:14 URL](th-cam.com/video/XmYnsO7iSI8/w-d-xo.html) *⌨️ Command line arguments: Introduction to handling command line arguments (`argc` and `argv`), allowing more dynamic and interactive program execution without requiring user input during runtime.*
[02:10:37 URL](th-cam.com/video/XmYnsO7iSI8/w-d-xo.html) *🧠 Smart program design with command line arguments: Demonstrates conditional statements based on the count of command line arguments (`argc`), allowing the program to adapt and provide meaningful output.*
[02:13:30 URL](th-cam.com/video/XmYnsO7iSI8/w-d-xo.html) *🐄 Command line argument example - cowsay: Illustrates a whimsical example using the `cowsay` program, showcasing the versatility and creativity possible with command line arguments in software.*
[02:15:24 URL](th-cam.com/video/XmYnsO7iSI8/w-d-xo.html) *🚨 Exit status in C: Introduces the concept of exit status, a hidden integer returned by the `main` function, commonly used to indicate errors or success when a program terminates.*
02:17:18 🚦 *Use `echo $?` to check the exit status of a program in Linux. A status of 0 typically means success, but you can customize it in your code.*
02:18:17 🔢 *Explicitly set the exit status in your program using `return`. This can be useful for indicating success (0) or failure (non-zero) when calling your program from another.*
02:19:13 🔐 *Cryptography involves encrypting information (plaintext) into ciphertext using algorithms known as ciphers. The recipient needs both the algorithm and input details to decrypt and reveal the original message.*
02:20:37 ⚙️ *A cipher in cryptography is the algorithm that transforms plaintext to ciphertext. It requires an input (key) to function. The example of a Caesar cipher involves shifting letters by a certain value.*
02:22:28 🔄 *Encryption scrambles a message, making it unreadable to unauthorized individuals. Decryption, the reverse process, requires the original algorithm and input.*
Made with HARPA AI
The teacher teaches these topics in such a fun and somewhat energetic way which makes the material he's teaching more fun to learn. and his explanation to arrays helped me a lot in understanding parts that i didn't get before.
14:47
I love that he teaches you through and through whats happening under the hood and then BAM , there is just one little button that does everything for you
Hey Maisha! God calls you today to His love. It doesn'rt matter if you are an agnostic, athiest,muslim whatever, the God of the Universe, Jesus Christ of Nazareth is Holy. He made us perfect like Him but all have sinned & fallen short of His glory, all havturned away, none is righteous and everyone is by default ,deserves gge eternal wages of separation from God in hell. This is the wrath of God against sin is separation from Him, but because He is Holy, He must separate all sinners from Him , as all sin is egregious to Him. Now , here is the good news, what did God do for guilty sinners so they wouldn't have to go to hell? Jesus, the God of the Universe, took all of sin the is of mankind upon His
melf, and willingly suffered the wrath of God against sinners, that if you believe in Him, you will be saved. It's a court situation, imagine a robber entered a court asking the judge to pardon his robbery because He gave some of the money to the poor, and He bought mcdonald's for a kid with some of the money stole. The judge replies that though those are good works, they cannot excuse the fact that He stole 1 million, 20,000 USD . The thief then told the judge that time had passed so that means the theft can be forgiven. But the judge replies, that neither time nor good works can allow the theft to be forgiven Him. So the thief broke the law, so He must go to prison, but just before, someone paid the fine, so that we can be forgiven.
I can just say WOW! What an awesome professor!. Thanks, CS50 for this amazing lecture series....
bot
Very heartening way of teaching. Makes coding something fun and encouraging with the way he speaks. A two hours video doesn't feel enough. Props to the lecturer.
Another great lecture from David. Even though I've programmed before, I'm learning new concepts in this course. Certainly have enjoyed this course so far and for sure will continue with it throughout 2023.
2nd week lecture completed, now on to lab and problem set 2. Have fun everyone!
same things here
@eskard1996 hey do u also watch other videos after watching this lecture to further understand the concept or just go directly to lab and problem sets???
@@tatsumii1420 hey do u also watch other videos after watching this lecture to further understand the concept or just go directly to problem sets???
@@arta2646 in case of this lecture i went straight to labs. But data structures required much more time.
hey@@arta2646 , cs50 aint my first course , so i already know the fondamental knowledge like arrays objects and syntax... , thats why first 2 weeks were easy , but after that labs pbst became so hard
what a great teacher. makes it easier to understand.
he is awesome
Exactly
@Greem dude shut up
@Greem genuinely curious, could you expand on that? What would teaching ‘how’ to think be in this context? Do you mean like mindset or something like that
@@JeatBunkie might be computational thinking
Thank god there's these kind of videos where it's actually free to get and accessible. Thanks for the video it helped me out a lot. The fact that he teached us in a really fun matter and I really enjoy learning in this class.
This is such great series to learn about programming. The lecturer presents the subject in such a clear, in depth and passionate way that you cannot help but get invested.
For the first time in my life I wrote code that works and I can understand for this assignment. This is already such an amazing course, I love it!!
So glad to hear!
@@davidjmalan dude, you're my hero
Man, I wish I went to Harvard. They're really crafting some incredibly bright young minds at these ivy-league schools. I very much appreciate all the free OpenCourseWare content these schools provide.
2nd'ed
This and the python series has literally changed my life and I'm eternally grateful to David, the cs50 team (Carter et al) and Harvard.
❤
I literally envy them🥺. Quality education that is very rare to find
@Raymond Reddington It built the foundation for a new career path 🙂
These Harvard profs really make things so easy to understand you sort of wonder if so called "geniuses" more likely had great teachers than actual genius...
@@dallysinghson5569 They did a study and found 90% of babies qualify as geniuses. To your point bad teachers and socially shaming curiosity make children less gifted over time.
Wow thank you so much David & Harvard, you are legends for posting this for everyone to see!!! Thank you again!
the way the lecturer presents the subjects is clear and passionate, helps getting invested in it
have you checked out notes of Array of 2023 year ? they are same as 2022 !!!! have could I get the latest one ? any Idea?
Today was tough. Made it through the lecture though. These two hours and change took me all day but I did it! Tomorrow I'll get cracking on the homework.
Helped me to understand the programming thinking which I ignored while learning basics of language, this kind of perception helps in understanding the advanced concepts. Kudos! I am more interested to dive deep in the world of Computer Science... :)
54:07 Ive ran into this issue but never knew the exact reason. Always good to learn something new
David is such a magnificent teacher
can someone give an award to this teacher please?
The debugging technique is very simple but it is very helpful. He also show us how a computer memory work, which is very interesting.
I like how he teaches. He first introduces a problem and then provides a solution.
We need more instructors like Dr. Malan! Too many young students in the west become scared of technical disciplines due to bad teaching and pathetic academic standards
I can't imagine any course to get started with coding other than this. Thanks for the guidance, Love from India.
bhai maine 12 completed is saal ki hai toh kya mai 2022 wali dekhuu ya 2021
mujhe coding 0 knowledge hai
kitne din me complete kiya
my favorite part is the compiling section because you get to learn something that isn't taught very often and you get to really understand what's going on under the hood when compiling a program
There is no better to finish the class, pure genius. David Malan is a magician.
David is such a magnificent teacher. I can just say WOW! What an awesome professor!.
This lecture is very interesting, the lecturer teaches in a unique way that makes the class enjoyable and more understandable.
I agree, truly is a life saver
@1:06:46 "In just a bit" Pun intended? Great lecture as always. Thanks Prof Malan.
I'm so thankful this class is available for free.
Hello
Am 48 year old man from somalia, sorry for my bad england. I seled mi vife for internet conektion to play conter strik. Thank u
Wow, thank you for this, David and all the team!
Manshitster united😂😂😂
Why did u stop gaminnh😢
Great Teacher In The World
So very thankful for you and your amazing computer science content. You're a bad a$$ teacher. Thanks again
A lot of things are beginning to make sense to me. Great class
Why aren't all teachers like this? Making the class fun but yet technically challenging should be the norm. Thanks for these great lectures.
God calls you today! It doesn'rt matter if you are an agnostic, athiest,muslim whatever, the God of the Universe, Jesus Christ of Nazareth is Holy. He made us perfect like Him but all have sinned & fallen short of His glory, all havturned away, none is righteous and everyone is by default ,deserves gge eternal wages of separation from God in hell. This is the wrath of God against sin is separation from Him, but because He is Holy, He must separate all sinners from Him , as all sin is egregious to Him. Now , here is the good news, what did God do for guilty sinners so they wouldn't have to go to hell? Jesus, the God of the Universe, took all of sin the is of mankind upon His
melf, and willingly suffered the wrath of God against sinners, that if you believe in Him, you will be saved. It's a court situation, imagine a robber entered a court asking the judge to pardon his robbery because He gave some of the money to the poor, and He bought mcdonald's for a kid with some of the money stole. The judge replies that though those are good works, they cannot excuse the fact that He stole 1 million, 20,000 USD . The thief then told the judge that time had passed so that means the theft can be forgiven. But the judge replies, that neither time nor good works can allow the theft to be forgiven Him. So the thief broke the law, so He must go to prison, but just before, someone paid the fine, so that we can be forgiven.
The teachers way of explaining really does help the students understand the material
I want to say hello to all of you, I'm from China, and I thank you all for sharing the precious information online!
the ending of the class was superb ...really enjoyed the lecture
The ending was amazing! The best teacher out there!
I cant like these videos enough. This teacher is amazing!
newbie here. I love these lectures. I have to rewatch them again though, but they are great.
David keeps me hanging on to this difficult journey of learning to code, he is an elite teacher
@simulationComplete u want partners for cs50?
Great teacher with amazing teaching skill, i love cs50❤❤❤❤
(type) variable [ no. of units ]
variable [ ++ ] = assigned argument
#include
strlen,
#include
islower, toupper
int main(int argc, string argv[ ])
arg count
arg variables in an array
I'm currently doing the course on EDX and the lectures are the masked pandemic version.
I didn't realize there was a newer version of the lectures out with a more relaxed David Malan.
He looks like the mask is making him sweat buckets in the EDX version.
Thanks, CS50 for this amazing lecture series...
I've watched several courses from CS50 before from their introduction courses and I thought some of them were really easy to understand. So this has been an enjoyable watch as usual, as for my favorite part, I would say the string part is quite interesting to study as it can be correlated to our studies right now, so I would say that part is my favorite.
God calls you today! It doesn't matter if you are an agnostic, athiest,muslim whatever, the God of the Universe, Jesus Christ of Nazareth is Holy. He made us perfect like Him but all have sinned & fallen short of His glory, all havturned away, none is righteous and everyone is by default ,deserves gge eternal wages of separation from God in hell. This is the wrath of God against sin is separation from Him, but because He is Holy, He must separate all sinners from Him , as all sin is egregious to Him. Now , here is the good news, what did God do for guilty sinners so they wouldn't have to go to hell? Jesus, the God of the Universe, took all of sin the is of mankind upon His
melf, and willingly suffered the wrath of God against sinners, that if you believe in Him, you will be saved. It's a court situation, imagine a robber entered a court asking the judge to pardon his robbery because He gave some of the money to the poor, and He bought mcdonald's for a kid with some of the money stole. The judge replies that though those are good works, they cannot excuse the fact that He stole 1 million, 20,000 USD . The thief then told the judge that time had passed so that means the theft can be forgiven. But the judge replies, that neither time nor good works can allow the theft to be forgiven Him. So the thief broke the law, so He must go to prison, but just before, someone paid the fine, so that we can be forgiven.
If you find yourself struggling on this one go back and either watch it again or find the same Lecture from a different school year. First watch through had me a bit confused, second watchthrough its all coming together.
Class starts at 12:30
Thank you!
Mvp
Tnx but I don't need that cuz I have some advanced stuff which skips unusual part of the video automatically 😁
@@yt_brij share the knowledge 🤣
@Anon i guess you meant timestamps
A really qualified and actually educated teacher
best ending to a lecture EVER!
Another week here, this class was incredible
These lectures have been so eye opening for a somewhat experienced programmer with nearly zero computer science understanding. I never thought too much about the fact that I could grab a specific character in a string by accessing it like an array- until you revealed that a string is literally just an array of characters! Mind blown!!
I really appreciate this course.
Thank you David!
For a long time I didn't know where the exit status could be effectively used, but when I started working I started to notice that is is widely used, especially in scripting. For example in the shell scripts you might use something like: ```if my_program; then echo "Success"; else echo "Fail"; fi```
Another lecture down, another pset begins. Thanks for educating me
I can just say WOW! What an awesome professor!
bot
The ending was poetic oml
Great class, thank you!
THIS WAS CS50
Love the intro!
great course
Run it at 2x ... It's efficient... Also, speaks so clearly
32:13 - according to several sources at least, since around 2004 "usr" stands for Unix System Resources, and isn't just an abbreviated "user."
This is helpful ❤
This is a great video thank you CS50, the lecture is great and very helpful
thanks dood
this man is a genius.
After all years, I finally know why I need to study Matrix and linear algebra. It's because of the structure of the computer or RAM. 1:07:18
I love cs50
I had not realized it was Eastern Time in my email alert. So I missed it live. Hoping to catch it here.
Hope to see you in the next live stream
@@quantumcodes2508 Thanks QC... unfortunately I'm way over burdened with too much in life now. I have to pass for now. Hopefully there will a future Op for me. *Cheers to your success in CS50!*
if anyone else is wondering why at 2:03:17, the n = strlen(s) did not have a int prefix, my buddy told me that you can only declare a data type on the same line once. if you wanted both i and n to have a data type, you have to do it outside of the block.
Please tell me if you have the right answer , I also dont know why it's not an integer type of n.....
So, he is actually declaring and initializing both "i" and "n" on the same line. Notice that there is a "," between "i = 0" and "n = strlen(s)". Hope this helped!
The lecture ended like a James Bond movie."This was indeed CS50"🤗
The best teacher for sure!
the best profesor
that was a cool way to end the lecture
Thanx for today session!
Great teaching - He talks really fast and I'm kinda slow but still managed to get everything
You can slow it down
Already watch the lecture 0 and lecture 1, really amazing clases, im wondering if i have some kind of exercise to practice what i have learned so far, thanks.
Cool video. I love your content! Thank you for your efforts.
does the video get buggy/laggy around the 50:26 mark for anyone else? it seems to skip past something that was said
yea, thought it was my PC or wifi at first
The lecture was informative and entertaining
David knows how to end every time differently. Mpwfe ju! (key= -1).
such a great teacher!
So it actually is possible to find the length of an array using: data_type size = sizeof(Array_name) / sizeof(Array_name[index]);
the perfect one.
Best video put there 🎉🎉🎉
At 2:03:30, you're supposed to declare "int" before the variable "n", correct?
What difference does it make, from a memory perspective, using an array carrying three variables vs storing three variables separately? Eventually, both processes are going to use 12 bytes of memory.
Jesus Chirst kid God bless you all for providing cse information for free
Now that's an outro!!
Thank you for this! I've learned so much.
The level of syntactic sugar provides for strings though haha
Turns out the training wheels come off far quicker when you refuse to use the cloud VS code codespace and set VS code up locally on your PC. Voila you're now left there to ponder for hours why #include returns errors and string name = "David" works for him and it doesn't for you :D
After a few rabit holes the CS50.h abstraction fades and you realize there's natively no strings in C like Python or Kotlin, and in C it's just character arrays
This was very easy to understand.
Thank you for such an excellent class. It is appreciated!!
I agree man, beat video in the world
I am curious about the binary representation at the front with the lightbulbs, do anyone know what it is ?
Probably cs50 but that is great observation from you!
I'm confuse why do we need to remember the length of the array? Like we declare it in N and we can change it for later? Or maybe we can look back at it anytime. Can someone explain please? Thank you.
Thanks great stuff
10/10 outro