Closed amadeann closed 5 years ago
I found the exercise on Dynamic Programming the most challenging and most rewarding part of CS50. I recommend doing this part.
IMHO the lecture itself is not particularly good. Google 'edit distance video' to find better and shorter explanations. This video helped me a lot: https://www.youtube.com/watch?v=We3YDTzNXEk.
Regarding the remainder of the course. Having web development experience, I put the videos on 2x speed and blazed through them. It shouldn't be too hard anyway. And it is a good reminder of all the fundamentals that we normally take for granted.
I found it fulfilling to have done all the exercices and to get a certificate. But maybe that's a reflection of my OCD and the time that I have available. ;-)
Since week 5 touches on HTML (so it moves away from C), is the week covering Dynamic Programming required?
Haven't looked at it yet, but it would be nice to include dynamic programming in the curriculum. I am in favor of changing the wording assuming the assignment is as good as @FlorianHoornaar says it is -- has anyone else tried it?
What is actually the reason for skipping the python/web part?
Thanks for your thoughts on this.
Skipping the second part is recommended since the second part is apparently much easier. It probably depends on when you're coming from.
In my case, I've been doing quite a bit of development for over a year, and had some experience with statistical programming languages at the university (R and SAS 4GL). I also worked full-time in Business Intelligence for 2 years, so I got the working knowledge of databases as well. I don't need another introduction to high-level programming languages, and basics of web development. On the other hand, I feel like I am lacking a lot in terms of more basic computer science theories. That's why I decided to start doing the courses in this repo (I took before both parts of Nand2Tetris and I think it was the best online course I ever took).
I'd guess that a lot of people starting the OSSU 'degree' come from a similar background. They have some working knowledge of programming, but never had a chance to get solid understanding of different CS theories. So it doesn't really make sense to go over the basics once again if you can spend that time going straight for the knowledge you're after. Since the 'degree' will take a few years to complete, it's better not to 'waste' too much time on things that won't give you too many new insights.
I am in favor of changing the wording assuming the assignment is as good as @FlorianHoornaar says it is -- has anyone else tried it?
It seems like week 5 (HTTP/HTML) and 6 (Dynamic programming)do not contain assignments (or at least edx page does not mention them at this time) Only lectures: https://video.cs50.net/2017/fall/lectures/6 http://video.cs50.net/2017/fall/lectures/7
But I see that week 7(Web Programming) contains this new assignment - https://docs.cs50.net/2018/x/psets/6/similarities/more/similarities.html , probably that what FlorianHoornaar referred to.
For what its worth I'm about to start on that assignment this week, so I should soon be able to add my thoughts to @FlorianHoornaar's endorsement
Okay, now I’m anxious. If you solve it within the hour... Feel free to lie your ass off, or at least soften the blow a bit. 😰
@a1h05 “Similarities” is indeed the one with Dynamic Programming
I've finished all CS50 course long time ago.. and since OSSU focusing on CS not programming languages! what you'll learn from this week and so on won't be computer science but some web development and simple syntax. if you started next course -- intro to computer science using python -- professor Eric discussed dynamic programming and memoization and other concepts beside basic algorithms.. studying CS make you understand what's really going on with solid understanding while it would be easy to study/know any programming language to work with for certain situation I've finished3 months of Udacity Android nano-degree by Google in 6 days with project submissions
@hanjiexi There is a section dedicated to Dynamic Programming in Part II of the Stanford Algorithms Course, which is already included in the curriculum. I haven't seen the latest version of CS50, but IMO the Stanford course explains it pretty well and offers a systematic approach to identify opportunities for using DP.
Nonetheless I think CS50 is a great course and should be completed in full. Like @FlorianHoornaar said it is a good refresher even for those with experience, and they can choose to skim through it if needed. For people who came from a non-technical background, it is a good overview of topics they are about to dive deeper into.
it is -- has anyone else tried it?
Have tried https://docs.cs50.net/2018/x/psets/6/similarities/more/similarities.html . I had not used dynamic programming before, so it was interesting enough for me. I think from introduction point of view it is worth to complete.
If we want to omit web development, it is possible to do this task without it. You could only touch helpers.py and then check it in the console via ./score FILE1 FILE2
Just to follow up on this after finishing the assignment:
Don't worry @FlorianHoornaar, I did find this assignment to be challenging haha. I also found your recommended video to explain the algorithm much more clearly, so thanks for that 👍
I think this assignment and the web part of the course in general are pretty darn good (better even than when I took CS50 a few years ago).
I think at this point it probably just boils down to preference for whether or not the later sections of the course be mandatory/optional. There are valid points on both sides.
The only solution I could think of would be to collect the arguments for & against finishing the course, and add that to the linked FAQ, letting students decide for themselves.
I'm personally planning on finishing the course, but only because its so motivating to actually finish something, and I can't count how many times I've started a self-pace online course and not finished it.
There is a section dedicated to Dynamic Programming in Part II of the Stanford Algorithms Course, which is already included in the curriculum.
I totally forgot about that! That definitely counts against making CS50's new section mandatory.
On the other hand, there's nothing wrong with repeating the same concept twice, and the feedback on that assignment has been very positive. We originally made the web section of CS50 optional because it was too easy, shallow, and frivolous. But that reasoning doesn't seem to apply in this case, so I am in favor of keeping this assignment in the curriculum.
CS50 course has been updated in 2018, and now it includes Dynamic Programming in week 6 (link: What's new?).
The curriculum says:
Since week 5 touches on HTML (so it moves away from C), is the week covering Dynamic Programming required? Or is it something that will be covered anyway in subsequent courses?