Answers.Body: <p>The course is broad and it is short. It is no more than an introduction. It would, I think, give you an idea about whether this is a good path for you to take. But it won't carry you very far along the path. </p>
  
  <p>It's breadth precludes much depth. Several languages are discussed. Several core ideas, from algorithmic thinking to data structures. It is, of course, that breadth that makes it valuable as a first course, as you get to look at a lot of things that will be developed more completely in courses that follow this one. </p>
  
  <p>However, a deep knowledge of all that and more is needed for a career. It is a worthwhile thing to do as a starter, but expect to need more. If it is successful, then you will wind up <em>wanting</em> more, actually. </p>
  
  <p>And don't expect it to be easy, assuming you want to learn much from it. </p>
  
  <hr>
  
  <p>Note also that an undergraduate "major" in CS in the US is normally 15 or more CS courses (in addition to math, etc), of which this would be the first. You probably don't need all of that knowledge from 15 courses, but they are what forms the "foundation". </p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2020-02-20T21:26:13.767Z
Answers.Text: If anything, I found my degree didn't cover nearly enough. For example, there was no exposure to databases in the base curriculum. I took a database elective but it only covered theoretical and running queries by hand, not actually anything about building an application connected to a database. I agree with "learning how to learn" since specific tools can quickly go obsolete, but an application connected to a database seems like a fairly common topic...........
Answers.UserDisplayName: user3067860
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2020-02-18T18:34:30.187Z
Answers.LastActivityDate: 2020-02-19T13:12:28.613Z
Answers.LastEditDate: 2020-02-19T13:12:28.613Z
Answers.UserDisplayName: Buffy
Answers.Body: <p>The purpose of an introductory course is threefold:</p>
  
  <ol>
  <li>To lay out the field, and give the student a sense of what that field involves and entails.</li>
  <li>To provide the fundamental background knowledge one would need to proceed further into the field.</li>
  <li>To help students figure out whether this is a field they should pursue further.</li>
  </ol>
  
  <p>I have only a passing familiarity with the CS50x courses, so someone with more intimate knowledge me jump into correct me, but my impression is that these courses focus mostly on goal number two.  Goal number 1 is laudatory, but the truth is that the field is so broad, it would be impossible to do justice to even a small subset of the fields of knowledge within computer science and computer engineering in an introductory course.</p>
  
  <p>That's not to say that it would be a bad idea to go through this course if you're looking to change fields. There's a reason that this material has been created as an introduction. This is fundamental knowledge that you'll need in order to learn more advanced concepts, and you will likely not have much success without approaching these fundamentals (whether in CS50 or elsewhere).  But don't expect that the course alone will put you in good stead all by itself. More likely, it will simply help you get set up to learn further.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2020-02-18T18:14:30.063Z
Answers.LastActivityDate: 2020-02-18T18:14:30.063Z
Answers.UserDisplayName: Ben I.
Answers.Body: <p>Starting with CS50 is good, but it's just a beginning.</p>
  
  <p>I'm a newbie in programming, and I started learning it with many sources including CS50.
  (As far as I know, CS50x is almost the same as CS50. if it's not, please comment me. CS50 is Harvard's computer science course for very beginners.)</p>
  
  <p>CS50 is a very good course for a beginner, especially if you wanna grab the whole picture of programming but not going deeper too much.</p>
  
  <p>It starts with learning C, so you can learn the basic concepts of memory address and pointer. And it covers modern languages such as Python(of course only basics though), and also you'll even learn some simple web development.</p>
  
  <p>So, if you're a beginner and don't know what to learn first, then CS50 is a good way to go.</p>
  
  <p>But I think you should dig much more to get some knowledge of CS undergrad. In CS undergrad, you learn algorithms, data structures, networks, operating systems, computer structures, etc. These are very very important if you wanna become a high-level software engineer.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2020-02-19T08:25:41.647Z
Answers.LastActivityDate: 2020-02-19T13:09:02.563Z
Answers.LastEditDate: 2020-02-19T13:09:02.563Z
Answers.UserDisplayName: starriet 차주녕
Answers.Body: <p>Yes. It worked for me. I wrote about it on my blog:</p>
  
  <p><a href="https://andydavi.es/blog/I-took-CS50/" rel="nofollow noreferrer">https://andydavi.es/blog/I-took-CS50/</a></p>
  
  <p><a href="https://andydavi.es/blog/how-to-become-a-software-developer-in-nine-months/" rel="nofollow noreferrer">https://andydavi.es/blog/how-to-become-a-software-developer-in-nine-months/</a></p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2020-02-19T15:26:49.393Z
Answers.Text: Hey andydavies, welcome to [cseducators.se]!  I have d/v'd for two reasons: first, as a general rule on the SE network, answers with links should contain some sort of (short) summary of the takeaway in case the link goes dead.  More importantly, though, is software engineer/software developer confusion.  Software engineering is a related field, but with a somewhat different center of gravity.  (Take a look at BenCottrell's answer to get a reasonable sense of Software Engineering, or google software developer vs software engineer.)
Answers.UserDisplayName: Ben I.
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2020-02-19T15:37:02.123Z
Answers.Text: @BenI. Ok...just trying to be helpful. Developer...engineer...I've read the definitions online and I can't tell the difference between them. Both describe every software job I've ever had.
Answers.UserDisplayName: andydavies
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2020-02-19T16:15:22.693Z
Answers.Text: That's totally fair!  And to add to the confusion, sometimes the terms are used synonymously, and on projects with smaller teams, all of the jobs merge so that everyone is doing both.  But, in case this helps you, a specialized Software Engineer may do very little coding during their day to day job, instead spending their time going back and forth between the clients, upper management, and the software developers, while a software developer's job would typically center on generating good, carefully-crafted code.
Answers.UserDisplayName: Ben I.
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2020-02-19T16:16:29.783Z
Answers.Text: Perhaps [this](https://www.electronicproducts.com/Education/Career/Software_engineer_vs_computer_programmer_what_s_the_difference.aspx) will help!
Answers.UserDisplayName: Ben I.
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2020-02-19T16:20:20.113Z
Answers.Text: Thanks for the link. I wonder if this is a US thing (I'm in the UK). The distinction that article describes is more Senior Developer vs Developer here. But anyway..doesn't matter, it's just a word. Peace.
Answers.UserDisplayName: andydavies
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2020-02-26T15:07:47.760Z
Answers.Text: So I actually read your posts and the stuff there is good...but having link only answers means that this is quite likely to get deleted at some point. If you could bring some of the content that you have in your posts here, I'm sure it could be a good answer to this question, especially since you have specific experience with that course.
Answers.UserDisplayName: user3067860
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2020-02-19T15:05:42.903Z
Answers.LastActivityDate: 2020-02-19T15:05:42.903Z
Answers.UserDisplayName: andydavies
Answers.Body: <p>No, not by a long shot, although Harvard's CS50x is an excellent introduction which provides around 10 hours of lectures then problem sets which support approximately 100 hours of practice at programming by solving Computer Science problems (not quite the same as software engineering problems).    </p>
  
  <p>Most typical entry-level software engineers (regardless of their background) will likely have spent several thousand hours learning their craft by the time they start their first job (Something roughly equivalent to the amount of time a typical graduate may have had after 3 years at university). </p>
  
  <p>This obviously includes programming and core computer science concepts, but most importantly it involves having hands-on exposure to building some working software (Which is about far more than just writing code -- actually, writing code is only a small part of the total amount of work which goes into building working software).</p>
  
  <p>While it's certainly true that Software Engineering is rooted in Computer Science, and computational thinking skills are an essential prerequisite, that capability is nowhere near enough on its own. </p>
  
  <p>Generally speaking, most software engineering problems also have a degree of subjectivity built on top of that - i.e. they go beyond just needing to find solutions based on logic;  most of the problems faced by software engineers are more about humanity - meaning that the vast majority of issues involved in building software can't be solved just by writing an algorithm. </p>
  
  <p>Just to provide a few examples - this list is neither complete nor comprehensive, but hopefully illustrates the kinds of things that are learned through hands-on experience of working on software projects (even spare-time hobby projects and open-source software):</p>
  
  <ul>
  <li>Requirements gathering and analysis</li>
  <li>Software design principles and approaches to software design (e.g. consideration towards interfaces, modularity, and automated testing)</li>
  <li>Pragmatism and consideration towards real-world constraints (e.g.  people's time, or their willingness to accept change, etc.)</li>
  <li>Communication, knowledge-sharing and collaboration with other developers (e.g. peer reviews, pairing)</li>
  <li>UI/UX Design</li>
  <li>Communication with users and stakeholders, including managing their expectations and seeking their feedback. </li>
  <li>Teamwork and being able to function within processes and procedures that allow many people to contribute to the same project/codebase.</li>
  </ul>
  
  <p>On top of that, there's also the fact that software engineering often tends not to be about using code to solve every problem but to include a lot of effort reusing other people's existing/working/tested solutions to avoid re-inventing the wheel (For example, "devops" tools, app frameworks, cloud services, 3rd-party libraries, O/S capabilities etc.)</p>
  
  <p>This often includes trying out tools/libraries/frameworks to check their capabilities, then figuring out how to integrate your code with those things (e.g. through programmatic APIs, configuration management, build/integration/deployment processes, automation/scripting, etc.)</p>
  
  <p>This is not to say you need to be any kind of expert in these things for an entry-level Software Engineering position, however once you're confident in the core skills of computer science, programming and computational thinking,  it'll be important to focus learning around building software - at which point a lot of issues around tools/APIs/libraries/frameworks start to crop up, and so should the issues around understanding software design, testing, pragmatism, and (ideally) a lot of interaction with other programmers. </p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2020-02-19T13:23:39.890Z
Answers.Text: Informative.My current situation is am a grad in the field of electronics and Instrumentation and I do know the very basics of  C/C++(and little python) as they are used to code some in electronics application too,but I really want to get into a software industry now and most of them currently require some hands on experience in Java and they seek someone who has built or worked on some software or framework,so can you please give me a roadmap on how to actually get into these?(currently am focusing on Java as the jobs am interested in work on it).I am really confused where to start with it.
Answers.UserDisplayName: S.D
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2020-02-19T14:00:35.350Z
Answers.Text: @sagnikdas too broad. do your intro to java courses, find some tutorials using the frameworks the jobs you are interested use (spring etc) and then try make some of your own projects from scratch solving some made up problem you design. play with a couple of databases and learn the basics. once everything is running locally, then maybe start to look how code is deployed in production. enjoy the process, it takes time.
Answers.UserDisplayName: chris
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2020-02-19T14:33:23.813Z
Answers.Text: Am not sure about the framework but they do mostly some backend/server side stuff along with some little front end dev.
Answers.UserDisplayName: S.D
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2020-02-19T17:54:16.280Z
Answers.Text: @sagnikdas As the other comment mentions, that is far a very broad question, but you can get other university-level courses from EdX and Coursera which will introduce a lot of those topics.   For example, MIT has two free Software Engineering Java courses on EdX.   Also there are half a dozen free Java courses from Duke university and UC San Diego on Coursera.   Beyond that, personal projects are really the way to go - once you start tackling larger and more complex projects, I expect you'll naturally run into a lot of issues around software design, frameworks, tooling, etc.
Answers.UserDisplayName: Ben Cottrell
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2020-02-20T16:42:42.197Z
Answers.Text: I've worked with several software people that had an Electrical Engineering degree, and they didn't use Java.  Decide what your end goal is, and take your choice of primary language seriously because the right combo can mean an extra digit on your paycheck. @sagnikdas
Answers.UserDisplayName: JPhi1618
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2020-02-21T06:04:12.777Z
Answers.Text: @JPhil below is the example of a JD from LinkedIn,what do u make from it?
Answers.UserDisplayName: S.D
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2020-02-21T06:05:21.013Z
Answers.Text: text from LinkedIn)Responsibilities  The entire codebase is your playground and you are here to solve your customer's problem.  That means you never block on some other engineer or team.  To solve a problem, say, if something has to be changed in search service or something new has to be built on our App, you as an engineer are expected to make these changes everywhere and plan the launch, training, marketing of your product.  Beginning of every quarter you are expected to publish key capabilities that you intend to launch.
Answers.UserDisplayName: S.D
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2020-02-21T14:41:33.240Z
Answers.Text: @sagnikdas Sounds like a start up looking for a very senior architect who can also do business analysis, training, and user support (oh, and marketing!). And never slip schedule. They didn't mention hours or salary, but I can't imagine how you can get 5 jobs done in less than 100 hours a week...and I'm not sure what the salary would have to be to compensate me for working that many hours, enough to pay for my mental breakdown after a month or two. (Or the description is just a lie, could be either way.)
Answers.UserDisplayName: user3067860
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2020-02-24T10:08:39.343Z
Answers.Text: You are very correct,they are actually a start up and are giving a senior role it seems, anyway,does anyone have any idea about sources where I can look up to some interesting personal projects to get some insights?
Answers.UserDisplayName: S.D
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2020-02-29T16:35:00.343Z
Answers.Text: @sagnik Well, Github, just Google for open source, etc. The questions are more 1) what constitutes interesting, and 2) what will you get value out of looking at. For 1, newbies often believe that a project needs to be commercially interesting...invent a shiny new algorithm, or appeal to a huge user base...but frankly that is typically going to mess up point 2. Start with some software you might actually use, ideally something a little bit simple. A phone app that's pretty basic, or a game or browser addon. Then actually compile it on your computer. Proceed from there.
Answers.UserDisplayName: user3067860
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2020-02-29T16:46:54.083Z
Answers.Text: Btw, I was being pretty sarcastic about that job description. It's like a standard schmo posting a singles ad for super hot, extremely wealthy, etc, etc. So most startups would like super amazing developers, but those super amazing devs can get more reliable jobs elsewhere. They usually only go with the startup if they have a personal reason (eg. founder). Intermediates can (cautiously) go with a startup as a move up job, but watch out for the startup taking juniors... Usually is a sign that they have no clue and will treat you poorly.
Answers.UserDisplayName: user3067860
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2020-02-19T08:32:53.107Z
Answers.LastActivityDate: 2020-02-19T18:00:02.607Z
Answers.LastEditDate: 2020-02-19T18:00:02.607Z
Answers.UserDisplayName: Ben Cottrell
Body: <p>I am looking to get into a software engineer role and I need some fundamental knowledge of Computer Science Engineering concepts. Will David Milan's basic Computer Science course from Harvard, <a href="https://online-learning.harvard.edu/course/cs50-introduction-computer-science/" rel="noreferrer">CS50x</a>, be enough to accomplish this?</p>
  
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2020-02-18T18:12:25.153Z
Comments.Text: Most people will not know what CS50x is, so the question makes no sense,
Comments.UserDisplayName: Brian Tompsett - 汤莱恩
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2020-02-19T09:33:40.000Z
Comments.Text: @BrianTompsett-汤莱恩 CS50(x) is quite a phenomenon in in the US, and CS50x even outside of that. At least, among developers. A bit of explanation towards a potential employer is warranted.
Comments.UserDisplayName: Mast
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2020-02-19T13:05:35.390Z
Comments.Text: @Brian Tomopsett While it is a phenomenon among mostly UG students in developing countries,my question was more about the content of the course and not the recognition of the course itself.
Comments.UserDisplayName: S.D
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2020-02-19T20:21:24.317Z
Comments.Text: Just curious, what do you think CS students do for the rest of 4 years outside of that one course?
Comments.UserDisplayName: user3067860
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2020-02-21T06:08:12.170Z
Comments.Text: @user3067860 Whole course might have many different aspects like discreet maths,probablity,electives and other sub topics within CS.I am not sure, obviously I don't expect one single course to cover all domains.
Comments.UserDisplayName: S.D
Tags: <self-learning><curriculum-review><curriculum>
Title: Is the CS50x course enough to get the generic knowledge of a CS grad?
ThreadText: # Is the CS50x course enough to get the generic knowledge of a CS grad?
  
  (Asked by: username_0 on 2020-02-18)
  
  I am looking to get into a software engineer role and I need some fundamental knowledge of Computer Science Engineering concepts. Will David Milan's basic Computer Science course from Harvard, [CS50x](https://online-learning.harvard.edu/course/cs50-introduction-computer-science/), be enough to accomplish this?
  
  **Tags:** self-learning, curriculum-review, curriculum
  
  > **Comments:**
  > **username_1**: Most people will not know what CS50x is, so the question makes no sense,  
  > **username_2**: @username_1 CS50(x) is quite a phenomenon in in the US, and CS50x even outside of that. At least, among developers. A bit of explanation towards a potential employer is warranted.  
  > **username_0**: @username_1 Tomopsett While it is a phenomenon among mostly UG students in developing countries,my question was more about the content of the course and not the recognition of the course itself.  
  > **username_3**: Just curious, what do you think CS students do for the rest of 4 years outside of that one course?  
  > **username_0**: @username_3 Whole course might have many different aspects like discreet maths,probablity,electives and other sub topics within CS.I am not sure, obviously I don't expect one single course to cover all domains.  
  
  ---
  
  ## 5 answers
  
  ### Answer by username_8 on 2020-02-19. Score: 15 | Accepted answer
  
  No, not by a long shot, although Harvard's CS50x is an excellent introduction which provides around 10 hours of lectures then problem sets which support approximately 100 hours of practice at programming by solving Computer Science problems (not quite the same as software engineering problems).
  
  Most typical entry-level software engineers (regardless of their background) will likely have spent several thousand hours learning their craft by the time they start their first job (Something roughly equivalent to the amount of time a typical graduate may have had after 3 years at university).
  
  This obviously includes programming and core computer science concepts, but most importantly it involves having hands-on exposure to building some working software (Which is about far more than just writing code -- actually, writing code is only a small part of the total amount of work which goes into building working software).
  
  While it's certainly true that Software Engineering is rooted in Computer Science, and computational thinking skills are an essential prerequisite, that capability is nowhere near enough on its own.
  
  Generally speaking, most software engineering problems also have a degree of subjectivity built on top of that - i.e. they go beyond just needing to find solutions based on logic; most of the problems faced by software engineers are more about humanity - meaning that the vast majority of issues involved in building software can't be solved just by writing an algorithm.
  
  Just to provide a few examples - this list is neither complete nor comprehensive, but hopefully illustrates the kinds of things that are learned through hands-on experience of working on software projects (even spare-time hobby projects and open-source software):
  
  * Requirements gathering and analysis
  * Software design principles and approaches to software design (e.g. consideration towards interfaces, modularity, and automated testing)
  * Pragmatism and consideration towards real-world constraints (e.g. people's time, or their willingness to accept change, etc.)
  * Communication, knowledge-sharing and collaboration with other developers (e.g. peer reviews, pairing)
  * UI/UX Design
  * Communication with users and stakeholders, including managing their expectations and seeking their feedback.
  * Teamwork and being able to function within processes and procedures that allow many people to contribute to the same project/codebase.
  
  On top of that, there's also the fact that software engineering often tends not to be about using code to solve every problem but to include a lot of effort reusing other people's existing/working/tested solutions to avoid re-inventing the wheel (For example, "devops" tools, app frameworks, cloud services, 3rd-party libraries, O/S capabilities etc.)
  
  This often includes trying out tools/libraries/frameworks to check their capabilities, then figuring out how to integrate your code with those things (e.g. through programmatic APIs, configuration management, build/integration/deployment processes, automation/scripting, etc.)
  
  This is not to say you need to be any kind of expert in these things for an entry-level Software Engineering position, however once you're confident in the core skills of computer science, programming and computational thinking, it'll be important to focus learning around building software - at which point a lot of issues around tools/APIs/libraries/frameworks start to crop up, and so should the issues around understanding software design, testing, pragmatism, and (ideally) a lot of interaction with other programmers.
  
  > **Comments:**
  > **username_0**: Informative.My current situation is am a grad in the field of electronics and Instrumentation and I do know the very basics of  C/C++(and little python) as they are used to code some in electronics application too,but I really want to get into a software industry now and most of them currently require some hands on experience in Java and they seek someone who has built or worked on some software or framework,so can you please give me a roadmap on how to actually get into these?(currently am focusing on Java as the jobs am interested in work on it).I am really confused where to start with it.  
  > **username_9**: @sagnikdas too broad. do your intro to java courses, find some tutorials using the frameworks the jobs you are interested use (spring etc) and then try make some of your own projects from scratch solving some made up problem you design. play with a couple of databases and learn the basics. once everything is running locally, then maybe start to look how code is deployed in production. enjoy the process, it takes time.  
  > **username_0**: Am not sure about the framework but they do mostly some backend/server side stuff along with some little front end dev.  
  > **username_8**: @sagnikdas As the other comment mentions, that is far a very broad question, but you can get other university-level courses from EdX and Coursera which will introduce a lot of those topics.   For example, MIT has two free Software Engineering Java courses on EdX.   Also there are half a dozen free Java courses from Duke university and UC San Diego on Coursera.   Beyond that, personal projects are really the way to go - once you start tackling larger and more complex projects, I expect you'll naturally run into a lot of issues around software design, frameworks, tooling, etc.  
  > **username_10**: I've worked with several software people that had an Electrical Engineering degree, and they didn't use Java.  Decide what your end goal is, and take your choice of primary language seriously because the right combo can mean an extra digit on your paycheck. @sagnikdas  
  > **username_0**: @JPhil below is the example of a JD from LinkedIn,what do u make from it?  
  > **username_0**: text from LinkedIn)Responsibilities  The entire codebase is your playground and you are here to solve your customer's problem.  That means you never block on some other engineer or team.  To solve a problem, say, if something has to be changed in search service or something new has to be built on our App, you as an engineer are expected to make these changes everywhere and plan the launch, training, marketing of your product.  Beginning of every quarter you are expected to publish key capabilities that you intend to launch.  
  > **username_3**: @sagnikdas Sounds like a start up looking for a very senior architect who can also do business analysis, training, and user support (oh, and marketing!). And never slip schedule. They didn't mention hours or salary, but I can't imagine how you can get 5 jobs done in less than 100 hours a week...and I'm not sure what the salary would have to be to compensate me for working that many hours, enough to pay for my mental breakdown after a month or two. (Or the description is just a lie, could be either way.)  
  > **username_0**: You are very correct,they are actually a start up and are giving a senior role it seems, anyway,does anyone have any idea about sources where I can look up to some interesting personal projects to get some insights?  
  > **username_3**: @sagnik Well, Github, just Google for open source, etc. The questions are more 1) what constitutes interesting, and 2) what will you get value out of looking at. For 1, newbies often believe that a project needs to be commercially interesting...invent a shiny new algorithm, or appeal to a huge user base...but frankly that is typically going to mess up point 2. Start with some software you might actually use, ideally something a little bit simple. A phone app that's pretty basic, or a game or browser addon. Then actually compile it on your computer. Proceed from there.  
  > **username_3**: Btw, I was being pretty sarcastic about that job description. It's like a standard schmo posting a singles ad for super hot, extremely wealthy, etc, etc. So most startups would like super amazing developers, but those super amazing devs can get more reliable jobs elsewhere. They usually only go with the startup if they have a personal reason (eg. founder). Intermediates can (cautiously) go with a startup as a move up job, but watch out for the startup taking juniors... Usually is a sign that they have no clue and will treat you poorly.  
  
  ---
  
  ### Answer by username_5 on 2020-02-18. Score: 8
  
  The purpose of an introductory course is threefold:
  
  1. To lay out the field, and give the student a sense of what that field involves and entails.
  2. To provide the fundamental background knowledge one would need to proceed further into the field.
  3. To help students figure out whether this is a field they should pursue further.
  
  I have only a passing familiarity with the CS50x courses, so someone with more intimate knowledge me jump into correct me, but my impression is that these courses focus mostly on goal number two. Goal number 1 is laudatory, but the truth is that the field is so broad, it would be impossible to do justice to even a small subset of the fields of knowledge within computer science and computer engineering in an introductory course.
  
  That's not to say that it would be a bad idea to go through this course if you're looking to change fields. There's a reason that this material has been created as an introduction. This is fundamental knowledge that you'll need in order to learn more advanced concepts, and you will likely not have much success without approaching these fundamentals (whether in CS50 or elsewhere). But don't expect that the course alone will put you in good stead all by itself. More likely, it will simply help you get set up to learn further.
  
  
  ---
  
  ### Answer by username_4 on 2020-02-18. Score: 6
  
  The course is broad and it is short. It is no more than an introduction. It would, I think, give you an idea about whether this is a good path for you to take. But it won't carry you very far along the path.
  
  It's breadth precludes much depth. Several languages are discussed. Several core ideas, from algorithmic thinking to data structures. It is, of course, that breadth that makes it valuable as a first course, as you get to look at a lot of things that will be developed more completely in courses that follow this one.
  
  However, a deep knowledge of all that and more is needed for a career. It is a worthwhile thing to do as a starter, but expect to need more. If it is successful, then you will wind up *wanting* more, actually.
  
  And don't expect it to be easy, assuming you want to learn much from it.
  
  ---
  
  Note also that an undergraduate "major" in CS in the US is normally 15 or more CS courses (in addition to math, etc), of which this would be the first. You probably don't need all of that knowledge from 15 courses, but they are what forms the "foundation".
  
  > **Comments:**
  > **username_3**: If anything, I found my degree didn't cover nearly enough. For example, there was no exposure to databases in the base curriculum. I took a database elective but it only covered theoretical and running queries by hand, not actually anything about building an application connected to a database. I agree with "learning how to learn" since specific tools can quickly go obsolete, but an application connected to a database seems like a fairly common topic...........  
  
  ---
  
  ### Answer by username_6 on 2020-02-19. Score: 3
  
  Starting with CS50 is good, but it's just a beginning.
  
  I'm a newbie in programming, and I started learning it with many sources including CS50.
  (As far as I know, CS50x is almost the same as CS50. if it's not, please comment me. CS50 is Harvard's computer science course for very beginners.)
  
  CS50 is a very good course for a beginner, especially if you wanna grab the whole picture of programming but not going deeper too much.
  
  It starts with learning C, so you can learn the basic concepts of memory address and pointer. And it covers modern languages such as Python(of course only basics though), and also you'll even learn some simple web development.
  
  So, if you're a beginner and don't know what to learn first, then CS50 is a good way to go.
  
  But I think you should dig much more to get some knowledge of CS undergrad. In CS undergrad, you learn algorithms, data structures, networks, operating systems, computer structures, etc. These are very very important if you wanna become a high-level software engineer.
  
  
  ---
  
  ### Answer by username_7 on 2020-02-19. Score: 0
  
  Yes. It worked for me. I wrote about it on my blog:
  
  <https://andydavi.es/blog/I-took-CS50/>
  
  <https://andydavi.es/blog/how-to-become-a-software-developer-in-nine-months/>
  
  > **Comments:**
  > **username_5**: Hey username_7, welcome to [cseducators.se]!  I have d/v'd for two reasons: first, as a general rule on the SE network, answers with links should contain some sort of (short) summary of the takeaway in case the link goes dead.  More importantly, though, is software engineer/software developer confusion.  Software engineering is a related field, but with a somewhat different center of gravity.  (Take a look at username_8's answer to get a reasonable sense of Software Engineering, or google software developer vs software engineer.)  
  > **username_7**: @BenI. Ok...just trying to be helpful. Developer...engineer...I've read the definitions online and I can't tell the difference between them. Both describe every software job I've ever had.  
  > **username_5**: That's totally fair!  And to add to the confusion, sometimes the terms are used synonymously, and on projects with smaller teams, all of the jobs merge so that everyone is doing both.  But, in case this helps you, a specialized Software Engineer may do very little coding during their day to day job, instead spending their time going back and forth between the clients, upper management, and the software developers, while a software developer's job would typically center on generating good, carefully-crafted code.  
  > **username_5**: Perhaps [this](https://www.electronicproducts.com/Education/Career/Software_engineer_vs_computer_programmer_what_s_the_difference.aspx) will help!  
  > **username_7**: Thanks for the link. I wonder if this is a US thing (I'm in the UK). The distinction that article describes is more Senior Developer vs Developer here. But anyway..doesn't matter, it's just a word. Peace.  
  > **username_3**: So I actually read your posts and the stuff there is good...but having link only answers means that this is quite likely to get deleted at some point. If you could bring some of the content that you have in your posts here, I'm sure it could be a good answer to this question, especially since you have specific experience with that course.  
  
  ---
  
  