Answers.Body: <p>I would not start with <code>C</code> as your first language, though it is a 700% (May be more) better choice than <code>C++</code>.</p>
  
  <p>A good series is Structure and Interpretation of Computer Programs -- MIT Press. There is a <a href="https://rads.stackoverflow.com/amzn/click/com/0262510871" rel="nofollow noreferrer" rel="nofollow noreferrer">book</a> and a series of <a href="https://www.youtube.com/watch?v=2Op3QLzMgSY" rel="nofollow noreferrer">videos</a> of lectures. They use Scheme, a LISP variant, which is a good choice for a first language. It uses the functional paradigm, however, which is very different from C. </p>
  
  <p>While you may thing that you should choose a language that you will use at work, as this seems like the quickest way to arrive at where you want to be. I strongly suspect that it is faster to first learn to program (with whatever language makes this easier), and then learn a language (the one that you will eventually work with). I would like to see if there is any research on this. There is research that says that learning two things at once (e.g. programming and a language) is much much harder (possibly <span class="math-container">$n\times{}m$</span> instead of <span class="math-container">$n+m$</span>). So if we make the learning-the-language part easier, then over all cognitive load will be reduced <strong>a lot</strong>. </p>
  
  <p>I have however noticed that graduates that have studied industrial languages, can not (in general) program. However those that can program (but only know learning languages), cad be quickly taught a new language. And people that know more than one language, are better programmers.</p>
  
  <hr>
  
  <p>Note: lisp is used in the programming of quantum computers (as it is easy to write compilers in it), so should no be classed as just a learning language.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-10-06T21:36:12.100Z
Answers.Text: Only a very few top tech companies will use Scheme or know how to interpret an answer expressed a la SICP.
Answers.UserDisplayName: Buffy
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-10-07T01:17:10.953Z
Answers.Text: I love that book but I don't think it's a good way to learn algorithms for technical interviews.
Answers.UserDisplayName: Ellen Spertus
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-10-07T17:52:24.923Z
Answers.Text: @Buffy I agree, so let me paraphrase my 3rd paragraph: While you may thing that you should choose a language that will be asked about in an interview, as this seems like the quickest way to arrive at where you want to be. I strongly suspect that it is faster to first learn to program (with whatever language makes this easier), and then learn a language (the one that you will be asked about)
Answers.UserDisplayName: ctrl-alt-delor
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-10-06T17:48:56.253Z
Answers.LastActivityDate: 2019-10-07T17:49:00.197Z
Answers.LastEditDate: 2019-10-07T17:49:00.197Z
Answers.UserDisplayName: ctrl-alt-delor
Answers.Body: <p>Your question doesn't make much sense. First, there are literally thousands of major algorithms, and many of them are quite involved. You don't begin your studies with Red-Black Trees because even their purpose will elude you until you've (at the very least) spent some time dealing with sorts and searches.</p>
  
  <p>Second, if you eliminate time complexity and the actual steps to make an algorithm possible, what is left? A vague discussion of the purpose of the algorithm? Needless to say, no such discussion would include any bits of actual programming, especially not in a low-level language like C.</p>
  
  <p>Speaking of which, why are you focused on C? Do you have a particular reason for this choice of language?  C is a "low-level" language, which means it works quite closely to how machines think, and quite differently from how people think. This is sort of like taking a math class that provides only axioms, and makes the student prove all of the important results on their own. I am not suggesting that there is no value there, but (1) it is much, much harder, and (2) you're more likely to simply give up in frustration when you can't seem to do anything at all, even after months of effort.</p>
  
  <p>Beginners, particularly if self-taught, should start in higher-level languages where they can begin to learn how to actually undergo the process of programming without having to worry yet about pointer arithmetic and memory management.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-10-07T10:22:28.490Z
Answers.LastActivityDate: 2019-10-07T10:22:28.490Z
Answers.UserDisplayName: Ben I.
Body: <p>The course should be discussed in c language. 
  I am presently learning basic computer programming through a book and while doing the questions from the book from a chapter say array, I found out most of the questions are based on algorithm, so I want to study all major algorithms before attempting these computer</p>
  
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2019-10-06T08:57:50.503Z
Comments.Text: What are "the main algorithms" for you ?
Comments.UserDisplayName: Michel Billaud
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2019-10-06T12:13:03.093Z
Comments.Text: The algorithm which are asked in job interview of top tech companies and in acm-icpc
Comments.UserDisplayName: Piesquareisg
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2019-10-06T14:26:10.173Z
Comments.Text: Learning how to use an array is a first step on the long walk to learning how to program, and succeeding a job interview in a top tech company.
Comments.UserDisplayName: Michel Billaud
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2019-10-06T17:50:37.060Z
Comments.Text: The last sentence of you question is not complete (please edit).
Comments.UserDisplayName: ctrl-alt-delor
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2019-10-07T01:18:39.207Z
Comments.Text: I am not sure how allgorithms can be discussed without their steps, and technical interviews include complexity analysis, at least at top companies. Could you clarify what you want?
Comments.UserDisplayName: Ellen Spertus
Tags: <programming><algorithms>
Title: Is there any series of videos in which all the main algorithms are discussed without going into things like time complexity and space complexity
ThreadText: # Is there any series of videos in which all the main algorithms are discussed without going into things like time complexity and space complexity
  
  (Asked by: username_0 on 2019-10-06)
  
  The course should be discussed in c language.
  I am presently learning basic computer programming through a book and while doing the questions from the book from a chapter say array, I found out most of the questions are based on algorithm, so I want to study all major algorithms before attempting these computer
  
  **Tags:** programming, algorithms
  
  > **Comments:**
  > **username_1**: What are "the main algorithms" for you ?  
  > **username_0**: The algorithm which are asked in job interview of top tech companies and in acm-icpc  
  > **username_1**: Learning how to use an array is a first step on the long walk to learning how to program, and succeeding a job interview in a top tech company.  
  > **username_2**: The last sentence of you question is not complete (please edit).  
  > **username_3**: I am not sure how allgorithms can be discussed without their steps, and technical interviews include complexity analysis, at least at top companies. Could you clarify what you want?  
  
  ---
  
  ## 2 answers
  
  ### Answer by username_5 on 2019-10-07. Score: 1
  
  Your question doesn't make much sense. First, there are literally thousands of major algorithms, and many of them are quite involved. You don't begin your studies with Red-Black Trees because even their purpose will elude you until you've (at the very least) spent some time dealing with sorts and searches.
  
  Second, if you eliminate time complexity and the actual steps to make an algorithm possible, what is left? A vague discussion of the purpose of the algorithm? Needless to say, no such discussion would include any bits of actual programming, especially not in a low-level language like C.
  
  Speaking of which, why are you focused on C? Do you have a particular reason for this choice of language? C is a "low-level" language, which means it works quite closely to how machines think, and quite differently from how people think. This is sort of like taking a math class that provides only axioms, and makes the student prove all of the important results on their own. I am not suggesting that there is no value there, but (1) it is much, much harder, and (2) you're more likely to simply give up in frustration when you can't seem to do anything at all, even after months of effort.
  
  Beginners, particularly if self-taught, should start in higher-level languages where they can begin to learn how to actually undergo the process of programming without having to worry yet about pointer arithmetic and memory management.
  
  
  ---
  
  ### Answer by username_2 on 2019-10-06. Score: 0
  
  I would not start with `C` as your first language, though it is a 700% (May be more) better choice than `C++`.
  
  A good series is Structure and Interpretation of Computer Programs -- MIT Press. There is a [book](https://rads.stackoverflow.com/amzn/click/com/0262510871) and a series of [videos](https://www.youtube.com/watch?v=2Op3QLzMgSY) of lectures. They use Scheme, a LISP variant, which is a good choice for a first language. It uses the functional paradigm, however, which is very different from C.
  
  While you may thing that you should choose a language that you will use at work, as this seems like the quickest way to arrive at where you want to be. I strongly suspect that it is faster to first learn to program (with whatever language makes this easier), and then learn a language (the one that you will eventually work with). I would like to see if there is any research on this. There is research that says that learning two things at once (e.g. programming and a language) is much much harder (possibly $n\times{}m$ instead of $n+m$). So if we make the learning-the-language part easier, then over all cognitive load will be reduced **a lot**.
  
  I have however noticed that graduates that have studied industrial languages, can not (in general) program. However those that can program (but only know learning languages), cad be quickly taught a new language. And people that know more than one language, are better programmers.
  
  ---
  
  Note: lisp is used in the programming of quantum computers (as it is easy to write compilers in it), so should no be classed as just a learning language.
  
  > **Comments:**
  > **username_4**: Only a very few top tech companies will use Scheme or know how to interpret an answer expressed a la SICP.  
  > **username_3**: I love that book but I don't think it's a good way to learn algorithms for technical interviews.  
  > **username_2**: @username_4 I agree, so let me paraphrase my 3rd paragraph: While you may thing that you should choose a language that will be asked about in an interview, as this seems like the quickest way to arrive at where you want to be. I strongly suspect that it is faster to first learn to program (with whatever language makes this easier), and then learn a language (the one that you will be asked about)  
  
  ---
  
  