ossu / computer-science

🎓 Path to a free self-taught education in Computer Science!
MIT License
168.05k stars 21.25k forks source link

RFC: Replace Py4E with CS50P #1164

Open pulkitkrishna00 opened 1 year ago

pulkitkrishna00 commented 1 year ago

Problem:

Duration: 1 month {Extended till we have more analysis from different people, to allow further discussion)

Background: OSSU recommends Py4E for Introduction to Programming. That is a good course till the Regular Expressions chapter, but after that there is a sharp increase in difficulty level and it starts to teach topics which are not really needed. Many students complain about this. For example,

I have recently started this course, It was all great till tuples. Regular expression seemed a little over the head (or something that i would need to look at every time before writing the expression) and then network programming seems to be going a lot over the head. Does anyone have any suggestion on how to move forward? (I am doing the assignment and quizzes too). Does going through these again and again help?

for PY4E, do i need to do chapters 12-14 (so regular expressions, network programming and using web services)?

i'm glad i'm not the only one! it all made sense until networked programs section, and then i started to feel very confused and dumb

We already recommend people on discord to do only upto regular expressions.

CS50P is offered by CS50, and is a much better course. (It is a purely programming course, NOT a CS course, unlike CS50 itself). It teaches almost the same thing as Py4E does upto Regular Expressions. The instructor (David Malan, the one from CS50) is very good. And unlike Py4E, the instructor does coding live, instead of just highlighting code in a presentation. The course infrastructure is also very great and provides a web IDE, hence beginners don't need to worry about installing things and can focus on learning instead. The assignments are nice and are of right difficulty level.

The course is also newer, means it teaches new things like f-strings (This is not really a very important point, but relevant). It also teaches debugging and unit testing, which I think are essential things to learn early. The course also provides a free certificate, which may provide motivation to beginners.

Proposal:

Alternatives:

zackyvt commented 1 year ago

Recommend Py4E only upto Regular Expressions in the curriculum.

Afaik this is the majority opinion in the community.

Py4e is really only there to prep students for MIT 6001x.

bradleygrant commented 1 year ago

The request is compelling and (in my opinion) merits discussion.

I'd like to have a little bit more information:

Saffronosu commented 1 year ago

I'd like to add that three of the later (post-regex) chapters of Py4E rely on a level of twitter API access that is no longer available for free. This seems to have only been brought up in the channel a couple of times, so I'm guessing most people are skipping these later chapters regardless.

I've done Py4E as well as a couple choice weeks of CS50P to supplement (namely the sections on Unit Testing and OOP). CS50P has a much higher production quality for its lectures and more involved problem sets. However, the presentation style can be hectic and I think had this not been my third python-based MOOC there would have been a lot more rewinding and rewatching throughout the lectures I watched versus Py4E's. I think there's something to be said for Py4E's short-video, extra-gentle, office-hours-visit vibe considering we are discussing what to recommend for a literal-very-first programming course.

EDIT: For a more salient recommendation I'd say to keep Py4E but further highlight, perhaps directly on the main CS repo, to only do the first 11 chapters.

aryankumarakj commented 1 year ago

if people feel py4e difficult after Regular Expressions then they can stop there as it is only introduction to cs and not Not specific programming which can be adressed later in the core cs .so we need something in intro to cs which covers basics of all aspects of cs .cs50 is good one .

pulkitkrishna00 commented 1 year ago

@bradleygrant

  • If we don't know anybody yet who has, can we get a few people to volunteer to take both??

I have done Py4E and am doing CS50P currently. I have done upto week 6 (the seventh week).

the lectures are monolithic

The lectures of CS50P are much shorter than CS50, but definitely much longer than Py4E. Most of the lectures are about 1 hour long (except week 0, which is 1 hour 45 minutes). Also, as I said the instructor does coding live in the recordings, unlike in Py4E, so you can follow along. This is much better than watching the instructor highlight already written code in a presentation, IMO.

the assignments are too long and too hard for people working individually

CS50P does not have these problems. The assignments are short and easily solvable. So far, I don't think any assignment involved more than 50 lines of code. The number of assignment is larger than CS50, but the overall time spent on solving the assignments of a particular week is much shorter than CS50.

that the topic selection is extremely broad yet skin-deep -- like a "survey course".

Like I said, CS50P teaches almost the same things as Py4E upto Regular Expressions plus debugging and Unit testing. Unlike CS50, the sole focus is on teaching Python. The "names" of the weeks are:

  1. Functions, Variables
  2. Conditionals
  3. Loops
  4. Exceptions
  5. Libraries
  6. Unit Tests
  7. File I/O
  8. Regular Expressions
  9. Object-Oriented Programming
  10. Et Cetera
pulkitkrishna00 commented 1 year ago

To add another point, Py4E is only included to teach python and prep students for MIT 6001x. But the thing is, Py4E is a specialization on Coursera. It is not designed to teach only the python language to prepare for another course. CS50P on the other hand, is specifically designed to only teach the basics of Python.

pulkitkrishna00 commented 1 year ago

@aryankumarakj

if people feel py4e difficult after Regular Expressions then they can stop there as it is only introduction to cs and not Not specific programming which can be adressed later in the core cs.

Py4E is currently placed under the heading "Introduction to Programming". It is really only there to prep students for MIT 6001x, which is "Introduction to CS". And people, unless they ask on Discord, do not know that they can stop there. They may become demotivated and think that CS is not for them.

so we need something in intro to cs which covers basics of all aspects of cs .cs50 is good one .

This is outside the scope of this issue, but CS50 has been discussed many times in the past, I suggest you read those discussions. We already have a very good intro CS course.

aryankumarakj commented 1 year ago

@pulkitkrishna00 if they can't figure this small little things even we have great support on discord they can ask any time we are there for that and think of those whose who really required all of it for them removing entire cource won't be beneficial also it will be very tough for them to be self taught cs if they can't figure it out i don't know you are getting it or not.but they have to understant their requirements what they need but somewere you also hold point so "we could add as reminder that till the Regular Expressions chapter is requirement or mandatory for the cource what you say i am just suggesting don't get offended please."

cs50 i said just as other optional not mandatory cource as it gives less detailed but more of topic view and now they are updating the cource every single year and haa i agree very well we have best course in the world just i am adding to it may it help just re think sorry to mentioning that in you comment i am really sorry

pulkitkrishna00 commented 1 year ago

if they can't figure this small little things even we have great support on discord they can ask any time we are there for that and think of those whose who really required all of it for them removing entire cource won't be beneficial also it will be very tough for them to be self taught cs if they can't figure it out i don't know you are getting it or not.but they have to understant their requirements what they need but somewere you also hold point so "we could add as reminder that till the Regular Expressions chapter is requirement or mandatory for the cource what you say i am just suggesting don't get offended please."

The point of OSSU is to make things easier for people self-teaching themselves CS. If we can make things easier for them, what is the problem in doing so?

I would understand going through all these, if there was no alternative course which provided exactly what is needed. But since CS50P teaches exactly the things that is required, is newer and much better (IMO), I would prefer to switch the courses.

aryankumarakj commented 1 year ago

@pulkitkrishna00 this is already easy we can add alternative but can't wipe out entire cource to make reit easy as all different level of people are opting this cource . and yes cs50p is one of the great cource as i have done all cs50 coneurce like cs50 web cs50 and cs50p so i agree this cource is great to opt but we can't remove py4e as it has its own value.

pulkitkrishna00 commented 1 year ago

@pulkitkrishna00 this is already easy we can add alternative but can't wipe out entire cource to make it easy as all different level of people are opting this cource . and yes cs50p is one of the great cource as i have done all cs50 cource like cs50 web cs50 and cs50p so i agree this cource is great to opt but we can't remove mit cource it has its own values.

Wait, just to clear any confusion, this RFC is definitely not about replacing the MIT course. It is about replacing the Py4E course, which is there just to prepare for the MIT course.

aryankumarakj commented 1 year ago

@pulkitkrishna00 this is already easy we can add alternative but can't wipe out entire cource to make it easy as all different level of people are opting this cource . and yes cs50p is one of the great cource as i have done all cs50 cource like cs50 web cs50 and cs50p so i agree this cource is great to opt but we can't remove mit cource it has its own values.

Wait, just to clear any confusion, this RFC is definitely not about replacing the MIT course. It is about replacing the Py4E course, which is there just to prepare for the MIT course.

sorry for that py4e also i mean in that and i taught you want to put cs50p and remove all other intro to cs because it has two courcework intro to programing and intro to cs

Ninjamokama3 commented 11 months ago

I'm still only on the first course (PY4E), yet, I'm all in on replacing PY4E with this course without a second thought . I watched the first lecture and it was amazing. The lecturer did a fantastic job at keeping me engaged throughout the whole thing. I find it to be WAY better taught and just a more high-quality, in-depth course in general.

waciumawanjohi commented 11 months ago

Above Bradley writes "Ideally we would love to involve several people who can meaningfully speak to the differences."

This RFC still has only 1 contributor, the original submitter, who has written with their experience of actually taking both courses.

I would say the next step is to more aggressively recruit participants to take both courses in full and share their perspectives. Such an effort can include:

@pulkitkrishna00 , do you need support in carrying out some set of those?

pulkitkrishna00 commented 11 months ago

@waciumawanjohi I have opened PR #1177 adding the course page. I do not have permissions to pin a message on discord, so yes, I need help to pin it.

waciumawanjohi commented 11 months ago

PR merged.

If you post a message in the appropriate Discord channel and then ping me, then I'll pin the message.

Mohamed1khaled2 commented 11 months ago

Can i take both at the same time?

malkajaco commented 10 months ago

You can include CS50P as a an option in CS timeline spreadsheet. Right now the first course is PY4E and I CS50P is not there.

z1xel commented 9 months ago

I am doing both simultaneously and can attest that CS50P feels like a much more holistic, exhaustive, and organized course. The problem sets are drastically more challenging/varied/numerous and encourage reading the documentation. Many (if not all) of the exercises on PY4E already have some code pre-written which might not seem like a big deal but facing an empty document and planning a course of action feels pretty essential to me. Also a big advantage of 50P is the live coding that takes place in the lectures where you can follow more closely the problem-solving reasoning the professor is going through(simulating).

svenschnydrig commented 8 months ago

I completed CS50P and think if it's just about learning Python and getting prepared for MIT 6.0001 CS50P is better suited than PY4E. I also completed the Introduction to Programming with Python and Advanced Programming with Python courses from the University of Helsinki and I liked them even better than CS50P, although that might just be a personal preference and both courses are excellent.

Alaaesmat20 commented 6 months ago

Recommend Py4E only upto Regular Expressions in the curriculum.

Afaik this is the majority opinion in the community.

Py4e is really only there to prep students for MIT 6001x.

How learn english plan, i'am egyption ??

etherealcomity commented 6 months ago

Background: I initially took PY4E up until Tuples, and then switched to CS50P until I finished it. I went back to PY4E and completed the whole thing.

I would say that if PY4E is there for people who knows little to no coding, then I agree that PY4E is a better option. For starters, PY4E offers a very gentle introduction to programming in general so I would imagine this would be a better fit for laypeople with little to no coding experience. CS50P is fine during the first week but then exponentially gets harder starting around Week 6 or so.

However, I do agree that CS50P better prepares you for MIT 6.00.1x since it is harder than PY4E. So I would propose maybe PY4E up till regular expression (and maybe OOP since it's only a short read) -> CS50P -> MIT 6.00.1x for optimal preparation.

I have heard that the PY4E people are planning to modernize the course to include f-strings and such but I'm not sure when that will happen. All in all, I think I'm pretty conflicted between choosing one of the other.

lovnir commented 6 months ago

Hey, I'm finishing the py4e course currently, I tried cs50p at first but I didn't enjoy the style of the lectures and it didn't interest me, I switched to py4e and it's much better, it does miss some concepts which might confuse people but I found it really easy to watch and work through and the UI of the site is better, the instructor is phenomenal as well.

edcedcedcedc commented 5 months ago

I took PY4E and CS50p here are the proofs.

My background:

Algebra 1, 2, High school Geometry, Trigonometry and Precalculus at Khan Academy and 1.5 years of commercial frontend monkey coding using js,ts,react,mui, git, jenkins etc.

cs50p:
cons

Long in depth lectures. Very non monotonus lecturer. At times super challenging diverse and not boring problems. Give you an understanding of linux cli, and propagates the use of terminal. Give you a superficial understanding of vscode and propagets it as a standard. Use only ratio and percents concepts what is regarding to math. Teach you to read the documentation and inform yourself there if any questions. Unit 7(regular expressions) might be optional, but I liked it, for example I could never understand something like this, but I finally did, this is my ipv4 validation with just reading documentation + lecture +chatgpt(for little hints) + working on my own: r"(((1\d?\d?|[2-9]\d|2[0-5][0-5])|((21|22|23|24)\d)|0)\.){3}((1\d?\d?|[2-9]\d|2[0-5][0-5])|((21|22|23|24)\d)|0)$"

pros

Not good for complete beginners, they are going to have a hard time, maybe only if they have math or coding background. Non linear problem difficulty. Units 8 and 9(oop and etc), are irrelevant from my perspective and out of scope for this intro course. Unit 6(file i/o) might be ommited if taken py4e before that. 15% of exercises feel useless and might be ommited.

PY4E:
cons

Very good lecturer. Vids where lecturer explains every step of the problem. No math included at all. Exeptionally good for beginners. Linear problem difficulty.

pros

Poor problem testings. Very the same problems, you mostly parse files and lookup for matching. Escaltes quickly after regexp unit. For me honesty it was boring, this maybe would be good if you have really NO coding experience at all or just a little.

post scriptum

This were long 5.5 weeks, so, I am done finally, moving forward.

hussein-m-kandil commented 4 months ago

I have finished both courses and I hope to, correctly, present my opinion in English which is not my first language.

Proof:

Screencast from 04-15-2024 05:08:45 PM.webm

Background:

I studied Py4E as a complete beginner in late 2021 and overall (not just the last few chapters) it was difficult for me but I passed it and did all the assignments & quizzes and it took me 5 weeks of full-time studying to finish it.

I studied CS50P in 2023 with a reasonable background in programming; after finishing many courses including MIT 6001x (on EDX), CS50x (2022), Programming Languages (parts A, B, and C), and others. So CS50P was not difficult for me at all and it took me about 3 weeks of full-time studying to finish it and build its final project.

I admit that I like CS50 courses in general because they organize the content well and make good room for practicing through good problems to solve with each lecture (Py4E has good problems/assignments too), and for this reason, I wish I could suggest "CS50T then CS50P as an intro to programming" and "CS50x as an intro to CS", but I understand that it will be difficult for beginners especially CS50x which took me more than 4 months of full-time studying to finish, while I wasn't a complete beginner (i studied it after Py4E & MIT 6001x), so it wouldn't be wise if the learner spent more than 6 months on introductory level courses learning topics already covered in depth in the rest of the curriculum.

Suggestion:

So I suggest that we keep the introduction simple by recommending Py4E only up to Regular Expressions in the curriculum and these are some reasons why I suggest that (from my point of view):

Final thoughts:

Overall, CS50P is a great course but Py4E is more suitable to start with and fits more with the rest of the curriculum.

Ag909090 commented 3 months ago

Great job I'll run it an see if it's comparable

On Mon, May 20, 2024, 11:28 PM Pulkit Krishna @.***> wrote:

Closed #1164 https://github.com/ossu/computer-science/issues/1164 as not planned.

— Reply to this email directly, view it on GitHub https://github.com/ossu/computer-science/issues/1164#event-12873618907, or unsubscribe https://github.com/notifications/unsubscribe-auth/BDHRNWE6B7LBIDNACUA2IRLZDLEPDAVCNFSM6AAAAAA2Q37UDSVHI2DSMVQWIX3LMV45UABCJFZXG5LFIV3GK3TUJZXXI2LGNFRWC5DJN5XDWMJSHA3TGNRRHA4TANY . You are receiving this because you are subscribed to this thread.Message ID: @.***>

bradleygrant commented 3 months ago

Why do we keep opening and closing this? Open it or close it.

From my perspective, it appears that we've reached a consensus that we're unable to reach a consensus. Maybe our best bet is to formally support parallel paths.

pulkitkrishna00 commented 1 month ago

As Bradley said, we've reached a consensus that we're unable to reach a consensus. Our best bet seems to be to formally support parallel paths. I will open a PR related to changes regarding this tomorrow, if there are no objections.

waciumawanjohi commented 1 month ago

The proposal to have two entry points to the curriculum is a reversion. RFC #763 discussed how having multiple beginner courses was a challenge and it led to the adoption of the single course Py4E. For that reason, I would oppose recreating a dual entry path.

I do agree that this RFC has become stuck, with cases made for and against. I note that there are many 👍 on the original proposal and wonder if that is an indication of the general consensus. Are there any objections to having a simple poll? Ask respondents to assert that they've taken both courses and then state which one they feel is the better choice for OSSUnians.

pulkitkrishna00 commented 1 month ago

@waciumawanjohi In case, you were waiting for my response, I don't have any problem with a simple poll.