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: Remove Reliable Distributed Systems and put replacement in Extras #640

Closed
waciumawanjohi opened this issue Jan 27, 2020 · 3 comments
Closed

Comments

@waciumawanjohi
Copy link
Member

waciumawanjohi commented Jan 27, 2020

Problem:
Reliable Distributed Systems is an elective level course that is only partially available.

Duration:
Feb 29, 2020

Background:
OSSU promises the equivalent of an undergraduate degree in Computer Science. In order to evaluate our recommended courses, we use the Curriculum Guidelines for Undergraduate Programs in Computer Science (CS2013). More information can be found here.

CS2013 details Parallel and Distributed Computing as an essential knowledge area. But within this knowledge area, the topic of distributed computing is labeled an elective.

Separately, the current recommendations for distributed systems are Reliable Distributed Algorithms 1 & 2. Unfortunately, the assignments are unavailable. The first course has been offline for 2 years. The second course is still listed, but the virtual machine image used to distribute the programming environment is no longer available. The specification for the assignments in the second course are still available, it is possible that the programming environment could be created from scratch. Fortunately the lectures for both classes are available as a Youtube playlist.

There are two other courses that cover similar material. Both are free to audit (watch lectures) but require payment to view assignments:
Cloud Computing Concepts, Part 1 is the first of a 6 course specialization on Cloud Computing.
Distributed Programming in Java is the last of three courses in a specialization. Being the last in the specialization, the class may require students to take the earlier courses to follow the material.

Proposal:

  1. Remove Reliable Distributed Systems from the main curriculum.
  2. Add Cloud Computing to Extras/Courses.

Alternatives:
a) Simply move Reliable Distributed Algorithms to Extras/Courses.

b) Place Distributed Programming in Java in Extras/Courses. This choice would require some study to determine if this third course in the specialization can be completed without the previous two courses (Parallel Programming in Java, Concurrent Programming in Java). Students would be welcome to take these two other courses. Note that there is currently a free Udacity course with C++ assignments that covers the same topics as Parallel Programming in Java.

@waciumawanjohi waciumawanjohi changed the title RFC: Remove Reliable Distributed Systems to and put replacement in Extras RFC: Remove Reliable Distributed Systems and put replacement in Extras Jan 29, 2020
@spamegg1
Copy link
Contributor

spamegg1 commented Feb 26, 2020

I think replacing RDS with the free Udacity course, but keeping it in the main curriculum is a good idea.

I was very much interested in RDS (it's distributed computing in Scala, I am planning on taking the Functional Programming in Scala Specialization eventually, maybe go into a career in parallel/distributed programming) so it would be sad if this topic is removed from the main curriculum. Of course I can just do my own thing and stray from the main curriculum, but that will diminish the feeling of accomplishment, and as someone who just started Advanced CS, I can say that the motivation comes from finishing the main curriculum courses one by one and making progress.

I did not even know that Extras existed; I don't think people will pay too much attention to things that are in Extras. It looks like a dumping ground of way too many courses; students would likely be confused as to which ones are worth doing. Of course if there is no good solution currently, then dumping things into Extras can be a temporary solution.

If the main curriculum is too bloated and needs to be trimmed then removing things (like the Software Construction courses) or moving things to Extras might be OK, but removing RDS from the main curriculum with no replacement feels like throwing out that particular topic altogether; there doesn't seem to be anything else that explicitly covers distributed programming (maybe except for Udacity's "Intro to Parallel Programming" in Advanced Programming, although I'm not sure).

P.S. (sorry if off-topic) Now having read your initial comments on the issue "The Place of Reliable Distributed Systems" which moved it to Advanced Systems, I think that "Hacking The Kernel" should also be moved to Advanced Systems. That course is INSANELY HARD (much, much, much harder than anything else, even Advanced Programming/Theory) and does not belong in Core CS in my opinion, not to mention its prerequisite "algorithms" comes AFTER this course in the curriculum.

I think Core CS can include a Required Reading of "Operating Systems Three Easy Pieces". That textbook is excellent, it is waaaay better than the crappy lecture videos they have on the course (you can barely hear what is being spoken or see what is on the projection screen), it has ACTUAL CODE EXAMPLES unlike the lectures/recitations/slides, and it has programming assignments with code/solutions on the author's website.

The HTK course does a TERRIBLE job at explaining the concepts, then throws you into a 30000+ line code base and expects you to do crazy hard assignments (ASST3 gives you NO CODE whatsoever and expects you to design a 2200+ lines of code Virtual Memory system FROM SCRATCH). People who reach Advanced Systems in their progress, who also feel masochistic, can elect to do those if they wish; but definitely not appropriate for Core CS. This course will stall the progress of many students (it took me 6 months) and discourage many from continuing.

@waciumawanjohi
Copy link
Member Author

Close of the Comment Period

Findings:

  1. The topic of distributed programming is valued.
  2. The extras section is not a clear resource for students.

Response:

  1. I certainly appreciate student enthusiasm for a topic, but don’t think that alone can justify a course’s place in the core curriculum. One can imagine that at many universities there are well loved electives that students cherish, yet these courses remain elective. Our curricular guidelines state this is the proper place for Distributed Programming. Students should note that the related topic of parallel computing will remain in the core curriculum.
  2. The Extras page can use some attention. I welcome suggestions or efforts to better organize the page.

Conclusion
Reliable Distributed Algorithms 1 & 2 will be removed from the curriculum. Cloud Computing Concepts, Part 1 will be added to the Extras page. The Udacity course Intro to Parallel Computing will remain in the required curriculum.

@waciumawanjohi
Copy link
Member Author

@spamegg1 It sounds like you have the beginning of an RFC to replace Hack the Kernel with Three Easy Pieces. I'd be very interested in such an RFC!

waciumawanjohi added a commit that referenced this issue Mar 4, 2020
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

2 participants