This page answers some questions that we frequently receive about the curriculum. If you have questions that aren't answered here, try asking through one of our community channels. If it seems important enough or we get asked that question a lot, we will probably add it here.
Alternatively, you could contribute an answer yourself.
- Are Coursera courses free to access?
- How can I review the math prerequisites?
- What is a good course to learn a language (C++, Rust, Java, etc)?
- Why is the Firebase OSSU app different/broken?
- In what order should I take the courses?
- Does every resource in the main curriculum have to be free?
- Is it necessary to purchase the Verified Upgrade for edX courses?
- Why do you recommend skipping the second half of CS50?
- Why doesn't the curriculum cover/ignore topic X?
- Why is the curriculum missing some pre-requisites?
- Why require experience with a sizable project before the Software Engineering courses?
Some courses that require payment to access probably do exist on Coursera, but we don't put those on our curriculum. All Coursera courses that we put on the curriculum must, at minimum, be free to audit. For some courses, all course features are available for free; for others (especially those that are part of a specialization), you may only be able to access the lecture videos. (If you find the policies have changed for any courses on our curriculum, please tell us!)
Unfortunately, for some courses, Coursera's interface is very aggressive about convincing you that you have to pay.
You may see something like this on the course page:
When attempting to enroll in such a course:
- Click the blue "Enroll" or "Enroll Now" button.
- A pop-up will appear.
- Do not click "Start Free Trial", unless you do want to pay.
- Find the text that says "Audit this course" at the bottom.
- Click Audit.
Many OSSU students choose to review math topics that they have not studied recently. OSSU recommends students use Khan Academy for such a review. Below are links to topic assessments. After taking an assessment, you should have a clear idea what topics to study, and resources on Khan Academy to use.
(Math 1, 2, 3 covers all of algebra, pre-calculus, high school geometry, trig, stats. It interleaves the order of these topics.)
OSSU focuses on finding the best courses to learn computer science topics, and isn’t focused on finding language specific courses. If you are looking to learn a particular language or framework there are two great resources to check.
- Hackr.io allows users to submit and upvote learning resources for topics such as Python or the Java Spring Framework.
- Most languages have a community on reddit. When you find the community’s page, check to see if there is a wiki or sidebar with resources. For example, see /r/python. Note that the sidebar content can be different depending on whether you use www.reddit.com or old.reddit.com.
The OSSU curriculum and ecosystem have been collaboratively built by many individuals. The Firebase app was one such contribution. When it was written, it was with the intention of helping future OSSU students.
Unfortunately, the app has not been updated in many years. It does not reflect updates to the curriculum, it contains links to courses that no longer exist, and it has known bugs that prevent students from logging in.
It is our hope that the creators of the Firebase app can bring the app up to date. Until that time, the firebase app should be considered a deprecated product that is no longer supported.
You have a few different options:
- You can progress linearly from top to bottom of the page.
- You can progress linearly through each individual section, but studying different sections in parallel.
- You can design your own custom progression using the pre-requisites to guide you.
We have designed the curriculum to work for any of the above three styles.
Yes, that is a core goal of OSSU.
At the same time, we recognize that education is a resource that requires payment to instructors to make it sustainable in the long term. Therefore, we respect the business model of websites like edX, which make their materials free but with some paid add-ons, like official certificates or extra interaction with course instructors.
So we only require that the learning materials of a resource be free to access, not that every possible add-on be free. It would be ideal if graded assignments were always free but if we had this requirement, we would have to exclude any resource that doesn't have graded assignments at all.
If you just want to watch the videos, it is never necessary for any edX course on our curriculum.
CS50 doesn't use edX's grading system; it grades all assignments for free.
The Software Development courses have mostly free quizzes and assignments, but their Final Projects will only be graded by a human if you pay.
The strongest and most useful part of CS50 is the part where they teach C. We are retaining this in the curriculum for now because it is one of the few chances the student has to play with manual memory management in a (relatively) low-level language. By learning C, students will also have a much easier time getting through the following course, Nand2Tetris.
That being said, feel free to finish CS50 if you like it and want to.
We have several goals that we have to balance:
- Ensure students learn the timeless principles of computer science in the best possible way, pedagogically speaking.
- Ensure students are given sufficient knowledge of today's systems to be employable in the near future.
- Ensure students are exposed to enough cutting-edge knowledge that they won't be left behind when technology changes, which it always does.
- Keep the curriculum brief enough that it can be completed in a reasonable amount of time.
Therefore, not everything can be included, but we strive to be eclectic so that students are both employable and well-armed for change.
The curriculum assumes two things:
- You are reasonably fluent in English.
- You have gotten through a standard high school curriculum that included physics and pre-calculus.
Without these assumptions, the curriculum would be out of control with trying to fill in your knowledge gaps. For those who want to study math pre-requisites, read more here
Of course, if you find that the curriculum is missing a pre-requisite for a course that isn't part of a normal high school curriculum, please let us know!
Software engineering tries to solve the problem of dealing with large programs. Building a sizable program before taking the SE courses will help you understand what SE is trying to solve. We recommend the Jack-to-VM-code compiler project from the nand2tetris course because it's the first project in the curriculum that is complex enough to see value in a SE course. That said, any sizable project will do and can come from outside of the OSSU curriculum. The idea is that you've done some large enough project where the pieces started to feel unmanageable. This experience will expose pain points and lead to a better understanding of SE.