Closed waciumawanjohi closed 5 years ago
I don't have anything of value to add to the discussion, as I am very much in the start of my online CS education, but just wanted to express gratitude to you guys for taking out of your time to maintain this course catalogue!
Tip: The second edition of HtDP, without solutions to exercises, is also freely available online, and its latest version is 2019-02-24.
The Scala course doesn't look like an improvement on the HtC situation as — correct me if I'm wrong — it appears that you would need to pay for full access.
Of the other three video-style courses, the only one I've taken myself is Programming Languages, Part A. If I remember correctly, it does cover much of the same material as How to Code — but it goes faster and is oriented for more advanced students, probably at least sophomore level. Much of what is implicit in HtC is explicit in ProgLangA, and vice versa. I actually see ProgLangA as a great follow-up course to HtC.
And I don't know about the difficulty of the other two. I think OCaml is easier than Haskell (or Scala), but this is irrelevant, as how the courses are taught will disproportionately influence how easy they feel. If they are just a bit too hard but the content is right, maybe we could switch the order of functional computation and imperative computation in the curriculum.
If these questions can be resolved satisfactorily, my remaining concern is long-term availability. I think the OCaml course is only available seasonally? And I have no idea how long edX will leave up the Haskell course with free access, although as long as it's available now, it might be the best short-term solution, as you've proposed.
The nice part of the 4 core programming classes other than Programming Languages Part A-C, they're designed to go together, and I feel if we replace one, we should replace all of them in a similar manner. There's also been complaints based on both Software Construction courses. As far as I can tell, the suggested alternatives are mainly limited in that they only replace the first course. I don't believe I'm experienced enough to give much advice, but is there perhaps any classes from MIT or the likes that could replace the all four classes, or at least be recommended as an alternative? From what I've gathered is the main focus on the first class is learning functional programming, and I'd assume the 3rd and 4th classes are meant to teach OOP. Is it possible to replace the first two with say the famous "Structure and Interpretation of Computer Programs" class and book from MIT which uses Lisp? And if so, what could be done about the others?
Hey - I took and completed both the How To Code courses earlier this year, and bought myself a verified certificate for the second because EdX forced me to (although not a problem because I can afford it).
I am not familiar with the other courses, but I will say this - most of the Q/A bit is not actually needed to learn the course, strictly speaking. A lot of it is very basic and just repeats what the instructor told during the lecture, and the rest of it is alternative problems being solved step by step (which can just be replaced with additional problems - which are available for free).
If you see these questions - they are nothing revolutionary, 99% of them are ridiculously easy and I don't think much is lost by skipping them (assuming you solve the additional questions - which I didn't).
@riceeatingmachine The main thing that I feel is missing (I am working through the course right now) is the 'evalutation problem sets'. You know, the ones that are followed up by an evaluation video and you are supposed check your work according to what is said. Maybe someone could upload them?
I finished HtC: Simple Data about a week ago. Material was accessible for me, probably because I enrolled somewhere in the April. So after moving to HtC: Complex Data and facing the paywall I've googled around the topic a little. Maybe my findings will be useful for someone.
(https://www.youtube.com/channel/UC7dEjIUwSxSNcW4PqNRQW8w/playlists?view=1&flow=grid) - this is a youtube channel called Systematic program design. It has I believe most of lecture videos for HtC: Simple Data and HtC: Complex Data, but not the assignments and evaluations
https://github.com/theGreenJedi/How-to-Code-Systematic-Program-Design - repository of tasks and problems solutions of someone who went through the previous versions of the course (called HtC: Systematic program design)
https://github.com/plum-umd/fundamentals - repository of Systematic program design course which is being taught in University of Maryland by David Van Horn. Repository has source material and files for 3 courses
While lectures (text only, links to the latest version, hosted on university website, are in repo), problems and solutions are accessible, no automatic evaluation is available.
Do the archived versions work for you? I feel the systematic approach to programming is very valuable. https://courses.edx.org/courses/course-v1:UBCx+SPD1x+2T2016/course/ https://courses.edx.org/courses/course-v1:UBCx+SPD2x+2T2016/course/ https://courses.edx.org/courses/course-v1:UBCx+SPD3x+2T2016/course/
Very good point, would've been awesome if it did. Unfortunately, just checked and it doesn't work. You can click on enroll now but it just redirects you to the dashboard, without anything happening. If you go back, you are still asked to enroll.
Very good point, would've been awesome if it did. Unfortunately, just checked and it doesn't work. You can click on enroll now but it just redirects you to the dashboard, without anything happening. If you go back, you are still asked to enroll.
Well that sucks. I still have access, but I guess only because I've been enrolled since they came out. Edx is legit trolling with the new week/month long audit system, and the fact that it doesn't let you do the archived version...
Another potential option: the course resources available for Brown's Accelerated Introduction to Computer Science (assignments here). It references about 2/3 of Programming and Programming Languages, which is written by the course's instructor.
Advantages:
Disadvantages:
Overall, the threat of edX paywalling courses is comparable to the threat of universities shutting down access to online course materials, so this sort of thing is not a permanent solution. We should discuss whether this is the kind of short-term solution we feel comfortable using.
Follow-up: after reading commentary from someone who has done both HtDP+PAPL, it seems that parts of HtDP are recommended to do first before proceeding to PAPL. HtDP is also more rigorous than HtC due to its exercises. HtDP 2e is a substantial improvement to 1e, but I can't find solutions to exercises on the official textbook site. We might be able to find, review, and revise a solution set published by a student. If we can solve the problem with HtDP 2e's solution sets, we might be able to just combine the SPD playlist with HtDP 2e, hosting the solutions on OSSU's repos.
Setting that aside, I also went ahead and registered for the "Introduction to Functional Programming" course to see what it's teaching. Here is an outline:
I'm just not sure. It's a short course, and the exercises don't look challenging. There aren't any assigned projects that I can see. It just seems a bit random, shallow, and watered down compared to the extremely careful, thorough, evidence-based approach taken by the HtDP and PAPL authors.
Findings: 1) There is evidence that students may still find value from How to Code. Multiple students have watched the How to Code courses and supplemented the courses with other repositories of questions and answers.
2) There is little consensus on what might replace the How to Code courses. No students reported experience with Introduction to Functional Programming. One respondent suggested replacing the courses with SICP courses. Another suggestion was to replace them with the Programming Languages courses. No respondent framed an alternative as being strictly better than HtDP.
Response: The comments above suggest that before entirely replacing How to Code, we should try one of the proposed alternatives, to recommend the free textbook How to Design Programs. This would be a smaller change to the curriculum than replacing 2-4 classes. It would preserve the place of a class that many students find valuable. If edX restores audit access to How to Code assessments this change would be easy to revert. And there will be ample opportunity to make further changes to this recommendation based on future student feedback.
Conclusion OSSU will supplement How to Code with the recommendation to read How to Design Programs.
@waciumawanjohi I think replacing it with HtDP book is a good call. Introduction to Functional Programming is out of date, and many parts of the edX course don't work, or reference outside sources that have since been removed.
Really a bummer if the class got removed. The lectures and assignments are great.
Worth noting that the lectures are easily available on YouTube https://www.youtube.com/channel/UC7dEjIUwSxSNcW4PqNRQW8w
Problem: Free access to the How to Code courses has been limited. Students have been requesting an alternative.
Duration: September 30, 2019
Current State: Awaiting feedback
Proposer: Waciuma Wanjohi
Details: The tagline of OSSU is "Path to a free self-taught education in Computer Science!" In pursuit of this goal, OSSU tells students "All or nearly all course material prior to Pro CS is available for free."
Two of the earliest courses in the curriculum are How to Code - Simple Data and How to Code - Complex Data. These are well reviewed courses and have been part of the curriculum since 2015. The draft for the next version of the OSSU curriculum intended to include these courses for the purpose of teaching functional programming.
Students are able to audit the How to Code Courses. However, students report that the audit option does not include quizzes or assessments. In addition, auditing the courses now offers a short time period in which the material is available.
Feedback is a critical ingredient to an educational experience. Indeed, the advantages of an online course vs a printed book lie in primarily three aspects:
OSSU must endeavor to recommend low cost, high quality online courses. With the recent changes to How to Code, it is time to evaluate whether an alternative course will better suit students.
Proposal: Replace with How to Code with Introduction to Functional Programming.
This course is a well reviewed course on functional programming. It is often recommended. [1] [2] It is based on the similarly well reviewed book Programming in Haskell.
Introduction to Functional Programming is archived on edX. All content is available for free. The course contains lectures, prompts for student exploration and quizzes with answers available.
While the lectures use Haskell as an example of a functional language (and indeed, it is the most famous example of a pure functional language) the course labs offer a variety of languages which students can use to explore concepts. This makes the course more approachable for students.
There are drawbacks to this course. While the course teaches the building blocks of functional programming, it does not expect students to put these parts together to write programs of significance. There is little focus on software development practice. For example, How to Code spends significant time teaching Test Driven Development, a valuable practice to learn early.
Alternatives: There are a number of alternatives to replacing How to Code with Introduction to Functional Programming.
Supplement or replace How to Code with a recommendation to read How to Design Programs. How to Design Programs is a well reviewed textbook. It is the book upon which How to Code was created. The first edition is freely available from the publisher. The textbook site includes exercises and solutions. These solutions include the functions that students are expected to have written and example tests that students should have created.
Note: Completely replacing How to Code with the HTDP book would mean that early in the curriculum students would be asked to undertake a course with no video instruction. It is desirable to include courses with video content, and the earlier in the curriculum, the more this factor should weigh.
Replace How to Code with an alternate course. There are a handful of other courses on functional programming which are well reviewed or recommended:
Replace How to Code with an alternate book. There are a few books on functional programming which are already recommended by OSSU:
Leave the curriculum as is, without replacing How to Code. The advantages and disadvantages of this approach should be clear from the Details section.