Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/computer-science/extras/other_curricula.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ The Borr Prject is one of a few efforts to inform learners how they can pursue c
- [P1xt](https://github.com/P1xt/p1xt-guides)
- [Functional CS](https://functionalcs.github.io/curriculum/)

What differentiates the Borr Project? The Borr Project is dedicated to how an individual can learn the undergraduate CS curriculum. This is why we use the [CS2013](../../curricular_guidelines) as our curricular guidelines. These guidelines are written by the two foremost professional organizations in computing.
What differentiates the Borr Project? The Borr Project is dedicated to how an individual can learn the undergraduate CS curriculum. This is why we use the [CS2013](../curricular_guidelines.md) as our curricular guidelines. These guidelines are written by the two foremost professional organizations in computing.

To know what makes the Borr Project Different from OSSU, read [this blog post](https://borrproject.github.io/blog/announcing-borr-project/).

Expand Down
6 changes: 3 additions & 3 deletions docs/computer-science/faq.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ 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](../#community).
If it seems important enough or we get asked that question a lot, we will probably add it here.

Alternatively, you could [contribute](../../contributing) an answer yourself.
Alternatively, you could [contribute](../contributing.md) an answer yourself.

## Questions

Expand All @@ -13,7 +13,7 @@ No. The Borr Project creates guides to resources that will empower you to learn

### How can I review the math prerequisites?

See our [Pre-College Math](../../precollege-math) curriculum for a list of resources to use for reviewing the math prerequisites.
See our [Pre-College Math](../precollege-math/index.md) curriculum for a list of resources to use for reviewing the math prerequisites.

### What is a good course to learn a particular language?
The Borr Project 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.
Expand Down Expand Up @@ -72,7 +72,7 @@ Sometimes a course is on multiple platforms that are reasonably similar in quali

### Why doesn't the curriculum cover/ignore topic X?

You can read more about our curricular guidelines and the qualifications of the guidelines' authors [here](../curricular_guidelines). If you find a topic that is required by our guidelines and is not included in the curriculum, we should make a change! Read more about [contributing to a change](../../contributing).
You can read more about our curricular guidelines and the qualifications of the guidelines' authors [here](./curricular_guidelines.md). If you find a topic that is required by our guidelines and is not included in the curriculum, we should make a change! Read more about [contributing to a change](../contributing.md).

### Why is the curriculum missing some pre-requisites?

Expand Down
80 changes: 40 additions & 40 deletions docs/computer-science/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,17 +22,17 @@ but specifically chosen to meet the following criteria.
- Be open for enrollment
- Run regularly (ideally in self-paced format, otherwise running multiple times per year)
- Be of generally high quality in teaching materials and pedagogical principles
- Match the curricular standards of the [CS 2013](curricular_guidelines): Curriculum Guidelines for Undergraduate Degree Programs in Computer Science
- Match the curricular standards of the [CS 2013](./curricular_guidelines.md): Curriculum Guidelines for Undergraduate Degree Programs in Computer Science

When no course meets the above criteria, the coursework is supplemented with a book.
When there are courses or books that don't fit into the curriculum but are otherwise of high quality,
they belong in [extras/courses](extras/courses) or [extras/readings](extras/readings). Some may be mentioned as supplemental to the recommended course.
they belong in [extras/courses](./extras/courses.md) or [extras/readings](./extras/readings.md). Some may be mentioned as supplemental to the recommended course.

**Organization**. The curriculum is designed as follows:

- *[Intro CS](#intro-cs)*: for students to try out CS and see if it's right for them
- *[Core CS](#core-cs)*: corresponds roughly to the first three years of a computer science curriculum, taking classes that all majors would be required to take
- *[Advanced CS](#advanced-cs)*: corresponds roughly to the final year of a computer science curriculum, taking [electives](advanced-cs/electives/index.md) according to the student's interests and a [final project](advanced-cs/final-project/index.md) for students to validate, consolidate, and display their knowledge, to be evaluated by their peers worldwide
- *[Advanced CS](#advanced-cs)*: corresponds roughly to the final year of a computer science curriculum, taking [electives](./advanced-cs/electives/index.md) according to the student's interests and a [final project](./advanced-cs/final-project/index.md) for students to validate, consolidate, and display their knowledge, to be evaluated by their peers worldwide

**Duration**. It is possible to finish within about 2 years if you plan carefully and devote roughly 20 hours/week to your studies. Learners can use [this spreadsheet](https://docs.google.com/spreadsheets/d/1Pp4z-ulYDT9Px88oTQP5FJiZWyk8LcF7cBvc6SVXu6o/) to estimate their end date. Make a copy and input your start date and expected hours per week in the `Timeline` sheet. As you work through courses you can enter your actual course completion dates in the `Curriculum Data` sheet and get updated completion estimates.

Expand All @@ -52,14 +52,14 @@ just remember that you can't purchase success!
**Content policy**. If you plan on showing off some of your coursework publicly, you must share only files that you are allowed to.
*Respect the code of conduct* that you signed in the beginning of each course!

**[How to contribute](../contributing)**
**[How to contribute](../contributing.md)**

**[Getting help](../getting-help)** (Details about our FAQ and chatroom)
**[Getting help](../getting-help.md)** (Details about our FAQ and chatroom)

## Community

- We have a Discord server! [![Discord](https://img.shields.io/discord/1385616874200371350.svg?label=&logo=discord&logoColor=ffffff&color=7389D8&labelColor=6A7EC2)](https://discord.gg/uR2QS36pdH) This should be your first stop to talk with other Borr project students. Why don't you introduce yourself right now? [Join the Borr Project Discord](https://discord.gg/uR2QS36pdH)
- You can also interact through GitHub issues. If there is a problem with a course, or a change needs to be made to the curriculum, this is the place to start the conversation. Read more [here](../contributing).
- You can also interact through GitHub issues. If there is a problem with a course, or a change needs to be made to the curriculum, this is the place to start the conversation. Read more [here](../contributing.md).

> **Warning:** There are a few third-party/deprecated/outdated material that you might find when searching for Borr Project or OSSU. We recommend you to ignore them, and only use the [Borr Project website](https://borrproject.github.io). Some known outdated materials are:
> - OSSU repos and websites
Expand All @@ -75,95 +75,95 @@ just remember that you can't purchase success!

Get a thorough idea of what it takes to begin study of Computer Science at The Borr Project. While some of these prerequisites may be daunting, they are vital for success in this curriculum. To break things up, feel free to work on Elementary Programming, an optional course that introduces the very basics of programming.

- [Prerequisites & Motivation](prerequisites/index.md)
- [Elementary Programming](prerequisites/elementary-programming.md) (Optional)
- [Prerequisites & Motivation](./prerequisites/index.md)
- [Elementary Programming](./prerequisites/elementary-programming.md) (Optional)

### Introduction to Computer Science

*Timeline: 108 - 164 hours*

*Prerequisites: [High school math](../precollege-math/)*
*Prerequisites: [High school math](../precollege-math/index.md)*

Get a birds eye view of what the field of Computer Science entails. Even if you have programmed in the past, you will find the MIT's Intro to CS with Python to be a great experience in teaching you the basics of computer science. Note that although the course is taught with Python, the focus of the course is not on the particular language, but core concepts of Computer Science.

- [Introduction to CS](intro-cs/index.md)
- [Introduction to CS](./intro-cs/index.md)

Understanding theory is important, but you will also be expected to create programs. There are a number of tools that are widely used to make that process easier. MIT's Missing Semester is a course reviewing such tools. Learn them now to ease your future work writing programs.

- [Missing Semester](intro-cs/missing-semester/index.md)
- [Missing Semester](./intro-cs/missing-semester/index.md)

## Core CS

### Program Design

*Timeline: 325 - 500 hours*

*Prerequisites: [High school math](../precollege-math/), [Intro CS](intro-cs/)*
*Prerequisites: [High school math](../precollege-math/index.md), [Intro CS](./intro-cs/index.md)*

Learn how to think like a programmer and build robust, well-structured, thoroughly-tested software. These courses are the cornerstone of your CS education. You will find that the practical concepts of Data Structures and Algorithms distributed throughout this pathway. More theory-oriented DSA courses come later in the theory track.
Learn how to think like a programmer and build robust, well-structured, thoroughly-tested software. These courses are the cornerstone of your CS education. You will find that the practical concepts of Data Structures and Algorithms distributed throughout this pathway. More theory-oriented DSA courses come later in the theory track.

- [Systematic Program Design](program-design/spd/index.md)
- [Class-Based Program Design](program-design/class-based/index.md)
- [Programming Languages](program-design/programming-languages/index.md)
- [Object-Oriented Design](program-design/object-oriented/index.md)
- [Software Architecture](program-design/software-architecture/index.md)
- [Systematic Program Design](./program-design/spd/index.md)
- [Class-Based Program Design](./program-design/class-based/index.md)
- [Programming Languages](./program-design/programming-languages/index.md)
- [Object-Oriented Design](./program-design/object-oriented/index.md)
- [Software Architecture](./program-design/software-architecture/index.md)

### Math

*Timeline: 1 - 2 years*

*Prerequisites: [High school math](../precollege-math/)*
*Prerequisites: [High school math](../precollege-math/index.md)*

Build a rigorous foundation in mathematical thinking, which is essential for mastering computer science. The goal is to sharpen your analytical thinking so you can confidently tackle complex computational and algorithmic challenges.

- [Calculus](math/calculus/index.md)
- [Discrete Mathematics](math/discrete-math/index.md)
- [Calculus](./math/calculus/index.md)
- [Discrete Mathematics](./math/discrete-math/index.md)

### Systems

*Timeline: 250 - 500 hours*

*Prerequisites: [Program Design](program-design/)*
*Prerequisites: [Program Design](./program-design/index.md)*

Learn how computers actually works. You will build a simulated version of a computer from scratch, learn the inner workings of operating systems, and take a look into how computers communicate with each other. This track will demystify how the programs you write actually get executed by the computer.

- [Intro to Computer Systems](systems/computer-systems/index.md)
- [Operating Systems](systems/ostep/index.md)
- [Computer Networking](systems/networking/index.md)
- [Intro to Computer Systems](./systems/computer-systems/index.md)
- [Operating Systems](./systems/ostep/index.md)
- [Computer Networking](./systems/networking/index.md)

### Theory

*Timeline: 64 - 128 hours*

*Prerequisites: [Discrete Math](math/discrete-math/), [Program Design](program-design/)*
*Prerequisites: [Discrete Math](./math/discrete-math/index.md), [Program Design](./program-design/index.md)*

Get a perspective into why certain ways of solving a problem are better than others. Learn about complexity and theoretical limits of algorithms. Get an idea of what computers can or cannot do. These courses are the pillars of Computer Science.
- [Theory](theory/index.md)
- [Theory](./theory/index.md)

### Ethics & Security

*Timeline: 167 - 183 hours*

*Prerequisites: [Program Design](program-design/)*
*Prerequisites: [Program Design](./program-design/index.md)*

Learn how to think critically about the social impact of technology and protect digital systems against evolving threats. These courses lay the foundation for responsible and secure software development. You will find concepts like privacy, threat modeling, cryptography, and ethical reasoning deeply interwoven throughout this track.

- [Ethics](ethics-security/ethics/index.md)
- [Cybersecurity Fundamentals](ethics-security/cyber-fundamentals/index.md)
- [Secure Coding Practices](ethics-security/secure-coding-practices/index.md)
- [Ethics](./ethics-security/ethics/index.md)
- [Cybersecurity Fundamentals](./ethics-security/cyber-fundamentals/index.md)
- [Secure Coding Practices](./ethics-security/secure-coding-practices/index.md)

### Applications

*Timeline: 279 - 291 hours*

*Prerequisites: [Program Design](program-design/)*
*Prerequisites: [Program Design](./program-design/index.md)*

Get to know how to use the skills you have learned apply to real world applications of Computer Science. Learn how to design database systems, how computer graphics work, and dip your feet into the world of machine learning. This track ends with teaching you how to tackle large sized real world projects.

- [Databases](applications/databases/index.md)
- [Machine Learning](applications/machine-learning/index.md)
- [Computer Graphics](applications/computer-graphics/index.md)
- [Software Engineering](applications/software-engineering/index.md)
- [Databases](./applications/databases/index.md)
- [Machine Learning](./applications/machine-learning/index.md)
- [Computer Graphics](./applications/computer-graphics/index.md)
- [Software Engineering](./applications/software-engineering/index.md)

## Advanced CS

Expand All @@ -173,11 +173,11 @@ Get to know how to use the skills you have learned apply to real world applicati

After completing every course in all previous tracks, choose a subset of courses from Advanced CS based on interest. Understand that these are electives; not every course needs to be taken. But take every course that is relevant to the field you intend to go into. You do not need to make this choice until you have completed all previous tracks, and it is suggested to only make the choice after that.

- [Electives](advanced-cs/electives/index.md)
- [Electives](./advanced-cs/electives/index.md)

Afterwards, visit our Final Project page to decide how you want to cap off your Computer Science journey. There are many paths you can take your career, and it is up to you to decide where to go.

- [Final Project](advanced-cs/final-project/index.md)
- [Final Project](./advanced-cs/final-project/index.md)

### Congratulations

Expand All @@ -188,7 +188,7 @@ Congratulations!
What is next for you? The possibilities are boundless and overlapping:

- Look for a job as a developer!
- Check out the [readings](extras/readings) for classic books you can read that will sharpen your skills and expand your knowledge.
- Check out the [readings](./extras/readings.md) for classic books you can read that will sharpen your skills and expand your knowledge.
- Join a local developer meetup (e.g. via [meetup.com](https://www.meetup.com/)).
- Pay attention to emerging technologies in the world of software development:
+ Explore the **actor model** through [Elixir](https://elixir-lang.org/), a new functional programming language for the web based on the battle-tested Erlang Virtual Machine!
Expand All @@ -198,4 +198,4 @@ What is next for you? The possibilities are boundless and overlapping:
![keep learning](keep-learning.webp)

## Code of conduct
[Borr Project Code of Conduct](../coc).
[Borr Project Code of Conduct](../coc.md).
6 changes: 3 additions & 3 deletions docs/computer-science/prerequisites/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@ First of all, if you do not have a strong mathematical foundation from Arithmeti

Don't feel like you need to start completely from scratch as we provide diagnostic tests to determine what you need to study to be sufficiently prepared for CS.

- [Pre-College Math](/precollege-math/index.md), 0 - 2 years
- [Pre-College Math](../../precollege-math/index.md), 0 - 2 years

Secondly, there is the mental aspect of self-study. Are you prepared to commit to a routine of studying Computer Science regularly for a few years? This is a challenge for everyone, but rest assured we have resources designed to help. Be sure to join our [Discord](https://discord.gg/uR2QS36pdH) server for cohort meetings, progress sharing, tutoring, and an overall passionate community to hang out & study with. Check out [Getting Help](/getting-help.md) before asking questions. Another good read is [How to Ask Technical Questions](https://www.theodinproject.com/guides/community/how_to_ask) by The Odin Project; these tips can help you anywhere.
Secondly, there is the mental aspect of self-study. Are you prepared to commit to a routine of studying Computer Science regularly for a few years? This is a challenge for everyone, but rest assured we have resources designed to help. Be sure to join our [Discord](https://discord.gg/uR2QS36pdH) server for cohort meetings, progress sharing, tutoring, and an overall passionate community to hang out & study with. Check out [Getting Help](../../getting-help.md) before asking questions. Another good read is [How to Ask Technical Questions](https://www.theodinproject.com/guides/community/how_to_ask) by The Odin Project; these tips can help you anywhere.

Here are a few courses that some may find helpful to get the right mindset necessary for self study. They are both optional, but past students have mentioned that they have been helpful.

Expand All @@ -22,6 +22,6 @@ Here are a few courses that some may find helpful to get the right mindset neces

Finally, if you feel like the prerequisites are too daunting, feel free to break up your math studies with some basic programming. The following course is completely optional, but it can break up the monotony of exclusively studying high school math.

- [Elementary Programming](elementary-programming/), 75 - 100 hrs
- [Elementary Programming](./elementary-programming.md), 75 - 100 hrs

Once you're ready, feel free to start the [Intro Computer Science](../intro-cs/index.md) track to get an idea of what CS is all about. Afterwards, complete the [Program Design](../program-design/index.md) and [Math](../math/index.md) track in any order. Once both of those are done, you can do any of the other tracks any time.
Loading