Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RFC: Replace Py4E with CS50P #1164

Open
pulkitkrishna00 opened this issue Jul 20, 2023 · 30 comments
Open

RFC: Replace Py4E with CS50P #1164

pulkitkrishna00 opened this issue Jul 20, 2023 · 30 comments

Comments

@pulkitkrishna00
Copy link
Member

pulkitkrishna00 commented Jul 20, 2023

Problem:

  • OSSU recommends course X to teach a topic, but there exists a higher quality course that covers the same material.

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:

  • Replace Py4E with CS50P.

Alternatives:

  • Recommend Py4E only upto Regular Expressions in the curriculum.
@zackyvt
Copy link

zackyvt commented Jul 20, 2023

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
Copy link
Member

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

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

  • Do we know anybody yet who's taken CS50P to completion? Even better, do we know anybody who has taken both Py4E and CS50P? Ideally we would love to involve several people who can meaningfully speak to the differences.
  • If we don't know anybody yet who has, can we get a few people to volunteer to take both??
  • Frequent criticisms of CS50x (the parent course for CS50P) include that the lectures are monolithic, the assignments are too long and too hard for people working individually, and that the topic selection is extremely broad yet skin-deep -- like a "survey course". How does CS50P address these concerns?

@Saffronosu
Copy link

Saffronosu commented Jul 20, 2023

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
Copy link

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
Copy link
Member Author

pulkitkrishna00 commented Jul 21, 2023

@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
Copy link
Member Author

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
Copy link
Member Author

@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
Copy link

aryankumarakj commented Jul 21, 2023

@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
Copy link
Member Author

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
Copy link

aryankumarakj commented Jul 21, 2023

@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
Copy link
Member Author

@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
Copy link

@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
Copy link

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
Copy link
Member

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:

  • a pinned message in the PY4E discord channel
  • a recurring message in the PY4E discord channel
  • a course page for Intro to Programming which explains that we'd like some student volunteers to take both courses and share their experience.
    It would be helpful in these messages to ask students to flip a coin to decide which to take first, so we avoid an ordering bias.

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

@pulkitkrishna00
Copy link
Member Author

@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
Copy link
Member

PR merged.

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

@Mohamed1khaled2
Copy link

Can i take both at the same time?

@malkajaco
Copy link

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
Copy link

z1xel commented Dec 7, 2023

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
Copy link

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
Copy link

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
Copy link

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
Copy link

lovnir commented Feb 28, 2024

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.

@pulkitkrishna00 pulkitkrishna00 closed this as not planned Won't fix, can't repro, duplicate, stale Mar 11, 2024
@edcedcedcedc
Copy link

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
Copy link

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):

  • CS50P has some topics specific to Python, not to programming overall, which may add an unneeded layer of difficulties.
  • CS50P has topics not suited for beginners like 'Testing' which is not needed at the start of a CS curriculum.
  • Instructor's live coding in CS50P's lectures is great but highlighting code in a presentation in Py4E is sufficient for a beginner.
  • The fact that a Py4E learner needs to write Python code 'locally' is an acceptable difficulty and a CS learner should overcome it.
  • Py4E is easier to pass and has no final project (no need for it at this point) which makes it more beginner-friendly.

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.

@pulkitkrishna00 pulkitkrishna00 closed this as not planned Won't fix, can't repro, duplicate, stale May 21, 2024
@Ag909090
Copy link

Ag909090 commented May 21, 2024 via email

@bradleygrant
Copy link
Member

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
Copy link
Member Author

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
Copy link
Member

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
Copy link
Member Author

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests