-
Notifications
You must be signed in to change notification settings - Fork 22k
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
Reorganize Advanced Curriculum #799
Comments
There is already an Advanced Theory and an Advanced Programming track. Is the thrust of this Issue to replace Advanced Applications? |
The thrust of this issue is to separate the current advanced sections into smaller sections that are more like "senior sequences", which involves replacing advanced applications. However, as shown above, I think it would also be useful to separate sections like Advanced Programming into Programming Languages and Software Engineering. I think this approach would benefit students because it gives a list of topics, not courses to pick from. |
This is the current intention. That's reflected in language like:
and
|
Here's a provocative idea. Perhaps we should go the opposite direction. Perhaps we should replace Separate from that we can have Capstone/Major Project. This would be filled with courses that expect students to take on a project of significant scope. Advantages:
Drawbacks:
|
That is quite an interesting idea. While I do like the idea of branching out, I think I prefer the idea of gradually building up towards a project in a track. I think it would be beneficial if we could get additional opinions on the topic. |
@Alphyte Here is some additional opinion: I've finished Advanced Programming and I'm halfway through Advanced Theory. Also finished one and a half Advanced Applications (Scala + half of Fullstack Open). In my opinion they cannot be organized to build up to a project. They are fairly separate topics that don't mesh together well. Such is the nature of these topics (and electives in ANY subject in general). As for Advanced Applications, they are very much self-contained (due to how Coursera designed specializations). They can be taken while ignoring the rest of Advanced CS. They are designed to build up to a project by themselves. Let's say there are 5 courses in a specialization; the first 4 handle the build-up, the fifth being the project. The purpose of CS2013 is to be well-rounded and cover pretty much everything. The only way, as far as I can see, to create tracks to build up to a project, would be to create multiple, much shorter, more specialized mini-curricula, separate from OSSU; obviously this would move far, far away from CS 2013. (One example would be: "Functional Programming Curriculum": How to Code 1,2 + Prog Lang A,B,C + Haskell + (maybe 1-2 other general courses) + Scala Spec. But even this has a lot of repetition in it.) So I'm against this idea. I agree with @waciumawanjohi that it would be easier to maintain his idea of I think the current More importantly they paint a very good picture of the overall landscape of CS, which is really vast. The current setup greatly alleviates this. You want to be: an Academic? -> go Theory. A Programmer? go Programming. A Systems person? go Systems. Something else? choose an Application. We should also consider the maturity and the interests of advanced students. While we continue to recommend that they stick to one Advanced subset, they can feel free to mix and match courses from multiple subsets if they like. They will have much more command over their own destiny at that point, strict adherence to the guidelines is not necessary. (This kind of thing happens even in real life universities.) By that point maybe they will have already found jobs and forgotten about "finishing" OSSU, or they will continue to learn whatever they like. At least this has been my personal experience. I "officially" finished OSSU by taking Advanced Programming then a specialization; but continue in the other subjects (partly as a guinea pig for the community). I think the current organization is excellent, let's not rock the boat. Don't fix it if it ain't broke, ya know? I'm probably going to be in the minority on this one. But I will support whatever comes out of this. Best of luck to all of you! |
I honestly don't understand why Haskell, Prolog and Scala programming courses are included in advanced track. They should be considered as an optional side tracks and not advanced. Why there are no good courses on Java and C++? Compilers should be included in Core CS. It is a base course essentially. Tim Roughgarden' Algorithms courses are highly dependent on prior knowledge of discrete math, complexity theory and computation theory. You should consider including more depth intro in those subjects before the algos courses or provide an optional course like the one from Sedgewick which is more independent. Consider adding Blockchain course as part of Advanced apps track. Thanks. |
In the OSSU:CS curriculum, advanced courses are somewhat optional.
Haskell and Prolog are included not to teach those languages, but to teach programming language concepts that they embody well. If a better course were found that taught the same concepts in a different language, we would switch.
There was a group of contributors that looked at this earlier in the year. Ultimately they made a recommendation to keep the current structure. (Read more here: #664) If you would like to bring together a few other contributors to take another look at how to improve the algorithms & data structures recommendations, I would be interested in reading that analysis.
I think a fintech track in the Advanced Applications would be a great idea. |
I do really agree with this thread that specializations should be more specific, for example if i want to be a software engineer there is no specific guide in the course after finishing the Core CS. Haskell and Scala after searching i found it's more suitable for making programming languages and compilers which is good for people who want to learn how things have built or beyond the high level programming and that fit with Compiler Course in the Curriculum. So i see @Alphyte new design it's more professional. Thanks in advance |
I would like to nominate teachyourselfcrypto.com for this. It's a website inspired from the OSSU itself and is a complete course on all the big crypto topics. It's free. I'd say blockchain forms a part of advanced systems. |
Speaking of reorganization, game theory in advanced theory has a part 2 which is a nice course but not in the curriculum. It requires some basic calculus though (to compute local maxima/minima). Not sure why it's not in the course, given that part 1 is. |
@waciumawanjohi I read #664 and it seems like one of the issues is that the coverage of Data structures isn't good enough. I found a course specifically focusing on teaching data structures (it's a part of a Data Structures and Algorithms Specialization). The instructors are quite good, I did their course on Intro to discrete math, which is a part of the OSSU. I found one review directly comparing the specialization with Roughgarden:
|
Currently, the Advanced CS courses are organized in such a way where the learner is encouraged to pick a subset of the courses. I think that organizing it in a way such that there are separate "sequences" and having the learner pick from those sequences allows for the following benefits:
A short example of what I had in mind is shown below.
Advanced CS
After completing every required course in Core CS, students should choose a couple of topics in Advanced CS based on interest.
Programming Languages
Software Development
Robotics
Theory (Focus on Algorithms)
The text was updated successfully, but these errors were encountered: