hey everyone
im a teen who just started getting into coding ,im currently using free code camp to learn the basics ,and im having so much fun and glad i got into it
while looking for other resources to improve i came across the cousera Harverd CS50 course ,and i want to enroll but i have a few questions if ever took this course i would appreciate you answering them
.is it actually beginner friendly (like just learned HTML type of beginner)?
.is the certificate actually useful ?
.im considering applying for financial aid because i cant afford the fee for the certificate, does anyone here actually applied for it and got it ?
thank u 💓
Videos
Is CS50 worth it?
Is Harvard’s CS50 free?
Is CS50 difficult?
I'm talking about both in general and in my personal situation. For reference where I'm coming from, I'm currently in finance (I'm a relationship manager - I deal with credit) and I've been aggressively trying to go from adept to advanced in python to move towards a more Data science like career. That said, most of what I've done at the moment is learning and I'm trying to decide whether I should be going for developing projects only or should I be involving some accreditation. Would it make sense to save 90 bucks and just start building on projects alone or would both be impressive to have?
Heres a link to the course for more reference: https://online-learning.harvard.edu/course/cs50-introduction-computer-science
Hi reddit, I want to learn python, but don't know from where to start. I came across multiple youtube videos but don't know which one is good enough. I wanted to also ask if the https://cs50.harvard.edu/python/ course is worth it if anyone has done it.
Any suggestion would do.
For context: I am a chem graduate trying to learn python to transition into data science/ computational chemistry. Anyone with a similar career also please respond, I'd love to know your take
Basically everyone on this and other subreddits recommend this course for anyone who’s interested in learning programming. I am teaching myself about web development and it’s going quite well and I’m enjoying it, but I’m curious if I should go ahead and enroll in CS50 or am I just waisting my time by doing that?
I was looking at the harvard cs50 extension course as a great introduction to programming concepts. I prefer a regimented approach to learning, but I have no problem being recommended a book or two. I want to teach myself c++/Java, but I am having a difficult time finding anything that introduces the basic concepts. What would you suggest? I had been recommended python before, but I can't seem to wrap my head around things like arrays, strings, etc. and want to focus solely on building a strong foundation first. Also, I really don't want to dive into python, as I'd rather start with my target languages first. Edit: Thank you all for your wonderful suggestions. I am now more motivated to try out your suggestions and give this a shot!
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.
The purpose of an introductory course is threefold:
- To lay out the field, and give the student a sense of what that field involves and entails.
- To provide the fundamental background knowledge one would need to proceed further into the field.
- 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.