#
Introduction to Discrete Mathematics for Computer Science

Below are the **top discussions** from
Reddit that mention this
online Coursera specialization from
**University of California San Diego**.

Discrete Math is needed to see mathematical structures in the object you work with, and understand their properties.

Graph Theory Number Theory Cryptography Probability Mathematical Induction Proof Theory Discrete Mathematics Mathematical Logic Random Variable Probability Interpretations Combinatorics Modular Exponentiation

Accessible **for free**.
Completion certificates **are offered**.

Affiliate disclosure: ** Please** use the
blue and
green

**buttons**to visit Coursera if you plan on enrolling in a course. Commissions Reddsera receives from using these links will keep this site

**online**and

**ad-free**. Reddsera

*will not*receive commissions if you

*only*use course links found in the below Reddit discussions.

Taught by

**Alexander S. Kulikov**

Visiting Professor

and 2 more instructors

Offered by

**University of California San Diego**

This specialization includes these
**5 courses**.

Mathematical thinking is crucial in all areas of computer science: algorithms, bioinformatics, computer graphics, data science, machine learning, etc.

Alexander S. Kulikov

2 mentions

Counting is one of the basic mathematically related tasks we encounter on a day to day basis.

Alexander S. Kulikov

2 mentions

We invite you to a fascinating journey into Graph Theory — an area which connects the elegance of painting and the rigor of mathematics; is simple, but not unsophisticated.

Alexander S. Kulikov

3 mentions

We all learn numbers from the childhood.

Alexander S. Kulikov

1 mentions

We’ll implement (in Python) together efficient programs for a problem needed by delivery companies all over the world millions times per day — the travelling salesman problem.

Alexander S. Kulikov

0 mentions

#### Reddit Posts and Comments

0 posts • 41 mentions • top 33 shown below

**r/learnmath**• post

6 points • ncode23

##### Is this worth taking?

https://www.coursera.org/specializations/discrete-mathematics

Any of you maybe have some experience with this course?

Im not looking to pay for it, just take it as free. And it says that you can do it, but then you can just view and read the courses material, which sounds fine to me. But still i don't know if that would be a good thing to do.

For someone who is trying to learn math on the side by himself, is this a good course to take, even taking the free option?

Im looking to get into the IT / programming field, that's why i want to take this.

​

**r/3Blue1Brown**• comment

2 points • AWorlock

If you're looking to learn number theory with cryptography in mind then I suggest to take up Introduction to Discrete Mathematics for Computer Science Specialization from Coursera. They also have a course on graph theory and combinatorics.

**r/math**• comment

2 points • ByrdOfAFeather

Coursera - What is a Proof? And every other course in that series on mathematics for computer science is great https://www.coursera.org/specializations/discrete-mathematics

**r/cs50**• comment

4 points • dileepbn1

Hey there! You might want take a look at these:

Introduction to Discrete Mathematics on Coursera: https://www.coursera.org/specializations/discrete-mathematics

Mathematics for Computer Science on MIT OCW: https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-fall-2010/

There might be other good (or, better) ones out there, so do look around on YouTube, edX, etc.

Cheers!

P. S. I came across these courses through my own search for an Intro Discrete Math course, I haven't done them myself.

**r/AskComputerScience**• post

4 points • algo1234512

##### Starting MS in Comp Sci What Am I Missing?

Hey All,

I'm starting my MS in Comp Sci in the fall. I'm from a non-traditional background, my undergrad was in statistics & mathematics. My MS will be mostly in machine learning and AI but there will be some breadth requirements.

I'm currently a software engineer (C++), though the applications I build are largely single threaded statistical projection stuff, I'm comfortable in Python.

The areas that I've identified so far that I need to be fluent on are Algos and Data structures, analysis of said algorithms, graph theory and combinatorics.

I've started cracking the Khan Academy course on Algos, will be doing this Coursera course (https://www.coursera.org/learn/algorithms-part1) which should be good for learning java and algorithm implementations.

I'm also thinking about cracking this course: https://www.coursera.org/specializations/discrete-mathematics

What else do you guys think I should brush up on?

I have a solid 6 months and intend to prep as best as possible.

Cheers!

**r/OnlineMCIT**• comment

1 points • hangus

https://www.coursera.org/specializations/discrete-mathematics

**r/OnlineMCIT**• comment

1 points • hangus

https://www.coursera.org/specializations/discrete-mathematics

I took this specialization which consist of 5 courses. Not an easy course

**r/learnmath**• comment

1 points • cakeofzerg

> discrete math

Thanks very helpful, how does this look?

https://www.coursera.org/specializations/discrete-mathematics

**r/learnprogramming**• comment

1 points • marti2221

Np. What I would recommend as a more comprehensive option is the coursera discrete mathematics specialization. You can audit the course (free) for access to the content alone. link

**r/cscareerquestions**• comment

1 points • smash_teh_hamsta

if you are worried, you could always try to give yourself a headstart and learn some stuff right now.

e.g: https://www.coursera.org/specializations/discrete-mathematics

**r/computerscience**• post

21 points • RGnt

##### Planning a course list for undergraduate self study 'degree', and would like your input.

Hello, yet another one planning on Bachelors level studies online with heavy emphasis on machine learning and data science, i've been trying to put together a list of courses for my self to complete (and get a fancy certificate for completed courses) using coursera. So far I've come up with following list:

Learn to Program: The Fundamentals and Learn to Program: Crafting Quality Code (University of Toronto - https://www.coursera.org/learn/learn-to-program / https://www.coursera.org/learn/program-code )

Introduction to Discrete Mathematics of Computer Science (University of California, Sand Diego High School of Economics - https://www.coursera.org/specializations/discrete-mathematics )

Data Science Math Skills (Duke University - https://www.coursera.org/learn/datasciencemathskills ) Introduction to Logic (Standford University - https://www.coursera.org/learn/logic-introduction )

Data Structures and Algorithms (University of California, San Diego, High School of Economics - https://www.coursera.org/specializations/data-structures-algorithms )

Fundamentals of Computing (Rice University - https://www.coursera.org/specializations/computer-fundamentals )

Machine Learning (Stanford University - https://www.coursera.org/learn/machine-learning )

Deep Learning (deeplearning.ai - https://www.coursera.org/specializations/deep-learning )

Software Design and Architecture Specialization (University of Alberta - https://www.coursera.org/specializations/software-design-architecture )

Natural Language Processing (High School of Economics - https://www.coursera.org/learn/language-processing )

Data Science Specialization - (John Hopkins University - https://www.coursera.org/specializations/jhu-data-science)

When it comes to math, physics and possibly electrical engineering I've considered relying purely on khanacademy to fill in the gaps I have at moment.

So here's the main question, is there something you guys/gals can see that is "wrong", is there something that's missing or just would be nice to add on top of that?

Any comments/critique/your opinions are most welcome!

**r/OMSCS**• post

2 points • nickex77

##### Applying for OMSCS in the fall, best way to prepare?

Hi, I recently graduated with a bachelors in Computer Science, and I am applying to OMSCS for the fall. I did well at the program (roughly 3.7 GPA for upper level courses but 3.4 overall), but the school wasn't very reputable. I am planning on looking for internships for the Spring and Summer. I am also going to take the following MOOCs specializations as review and to fill in any "holes" I may have: https://www.coursera.org/specializations/data-structures-algorithms https://www.coursera.org/specializations/discrete-mathematics

Is there anything else you recommend me doing to improve my chances of getting in? Any other MOOCs? Do you recommend I take an online masters course too, or just save the money?

Thanks!

**r/WGU**• comment

5 points • create_a_new-account

Introduction to Discrete Math Lectures - https://www.youtube.com/playlist?list=PLHXZ9OQGMqxersk8fUxiUMSIx0DBqsKZS

Discrete Math 1 lectures https://www.youtube.com/playlist?list=PLDDGPdw7e6Ag1EIznZ-m-qXu4XX3A0cIz

Discrete Math 2 lectures https://www.youtube.com/playlist?list=PLDDGPdw7e6Aj0amDsYInT_8p6xTSTGEi2

here's an online book

Introduction to Discrete Mathematics Book - http://discrete.openmathbooks.org/pdfs/dmoi-tablet.pdf

and an interactive version

http://discrete.openmathbooks.org/dmoi/

the book and interactive version are from http://discrete.openmathbooks.org/home.php

and also patrick jmt is good too

http://patrickjmt.com/#discrete-math

http://patrickjmt.com/

edit: forgot about this PAID coursera specialization ($79 a month I think, but I also think you can work as fast as you want so maybe you could do the entire thing in a month or two)

https://www.coursera.org/specializations/discrete-mathematics

**r/WGU_CompSci**• comment

3 points • type1advocate

I haven't started these courses yet, but I have looked for outside resources to help me when I do.

Carnegie Mellon has a good Logic and Proofs course that has a free version or a more comprehensive one for like $80.

https://oli.cmu.edu/courses/logic-proofs-copy/

Brilliant.org has some fun courses and problem sets in specific areas of discrete. Everything on that site is amazing IMO.

https://brilliant.org/discrete-mathematics/

Coursera has a full specialization from UCSD in Discrete Math. It's like $49 a month I think, but looks fantastic. I have an unlimited subscription to Coursera and it's been an unbelievable resource.

Bonus: the final project in the specialization is implementing the Traveling Salesman Problem in Python, which is also the final project for one of the DSA courses at WGU.

https://www.coursera.org/specializations/discrete-mathematics

University of Cincinnati course on YouTube:

https://www.youtube.com/playlist?list=PLHXZ9OQGMqxersk8fUxiUMSIx0DBqsKZS

TrevTheTutor course on YouTube:

https://www.youtube.com/playlist?list=PLDDGPdw7e6Ag1EIznZ-m-qXu4XX3A0cIz

Awesome online open source Discrete Math textbook:

http://discrete.openmathbooks.org/dmoi3.html

Interactive version:

http://discrete.openmathbooks.org/dmoi3/

**r/OMSCS**• comment

1 points • StatsML

I did this Discrete Math specialization before I started the program and enjoyed it:

https://www.coursera.org/specializations/discrete-mathematics

For computer architecture, the NAND2Tetric course is great (I did part 1 before the program started... there's also a part 2):

https://www.coursera.org/learn/build-a-computer

But parts of it are time consuming. If you just want a quick overview, you could maybe just buy their book and read it.

**r/Purdue**• post

0 points • wefyhue3i

##### Would these online courses prepare me for CS182(which I'll be taking in the fall)?

I'll be taking CS182 with Prof. Adams in the fall and want to familiarize myself with discrete mathematics.

​

Would these five courses (which are all part of the same specialization) prepare me for the class?

https://www.coursera.org/specializations/discrete-mathematics? (Click on "Courses" to see what the courses are)

​

I am not strong in math at all and am not a huge fan of tough logic problems either, which is why I really want to make sure I am well-prepared going into the class this fall. Even if the courses don't cover all of the CS182 concepts, I do want to build a strong enough foundation over the summer so that I am not struggling during the semester.

​

Thanks

**r/learnmath**• post

1 points • ncode23

##### Learning

I want to revive my math, since it's not that great and im trying to get into Computer Science/Programming. More progamming, since im not going to a college, im just planning to learn progamming. Where do i start? And what do i learn? I want to go in order, from the most basic stuff to advanced.

Found this:

https://www.coursera.org/specializations/discrete-mathematics

And this:

https://github.com/ossu/computer-science#core-math

**r/OMSCS**• post

1 points • Program_Progression

##### Looking for help applying from a non-CS background

Hi everyone!

Firstly, apologies about the post, I can see there's quite a few of these in the subreddit. I am just about to complete a Psychology BSc for University of Birmingham (UK). In my first year I partook in two math modules, and there have been a few statistics modules during the course. I also did a year abroad at UBC where I did two intro to Java courses and a third year statistics with Python course. Along side this, I have had a range of experience with self taught programming however not much exposure to the algorithmic side of CS.

​

I have the opportunity to do a conversion CS MSc at my university. However, this is about $11000 and does not offer the depth of OMSCS, as well as being as having a less respected Computer Science department compared to GT. Honestly, I would really appreciate any information and help related to admissions and prerequisites/useful knowledge for the core modules (I am interested in either specialising in Interactive Intelligence or Computational Perception and Robotic. I have a pretty strong academic background and have considered completing these courses over the next 3 months:

https://www.coursera.org/specializations/discrete-mathematics#courses

https://www.coursera.org/specializations/algorithms

Thank you!

**r/learnprogramming**• post

1 points • ncode23

##### Math

I found these online courses for Math:

https://www.coursera.org/specializations/discrete-mathematics

https://github.com/ossu/computer-science#core-math

I want to improve my Math, since it's not really that great. I found this course on GitHub which teaches you almost the entire CS. But since i can't really find time for the entire course, i only wanted to take the Math part. So, are these courses above good for that? It says, i quote " Students struggling with MIT Math for CS can consider taking the Discrete Mathematics Specialization first. It is more interactive but less comprehensive, and it costs money to unlock full interactivity. "

So thats why i wanted to take the first course, and then take the Core Math presented at github. Btw, im learning PHP, so my plan is kinda to learn both PHP and JS for web dev. And maybe sometimes in the future, i was thinking about Java or Python. But that won't be any time soon probably. So for all that, i was planning to get a better knowledge of Math. I need your advice.

**r/compsci**• post

2 points • dani2819

##### Learning algorithms - The right way

Many people at the very start are having problems and difficulties in learning algorithms. Thomas Cormen, the author of the very famous book "** Introduction to Algorithms**" suggested to read his other book "

**" which is good for beginners and deals with basics. After this, you can move to his book "**

*Algorithms Unlocked***" (bit more advanced) but remember you can not be able to fully understand the working and efficiency of algorithms without a good grasp in "**

*Introduction to Algorithms***". Here are some resources for learning algorithms with discrete mathematics.**

*Discrete Mathematics***Algorithms Unlocked**

**Introduction to Algorithms**

*Some discrete mathematics resources:*

**Mathematical Circles: Russian Experience** Chapter (2,4,5,9,11 and 13)

**Introduction to Discrete Mathematics for Computer Science Specialization (Coursera)**

https://www.coursera.org/specializations/discrete-mathematics?

**MIT 6.042J Mathematics for Computer Science, Fall 2010**

Feel free to add other resources in the comment section.

Stay safe. Keep learning :)

**r/learnprogramming**• comment

1 points • rukawaxz

This is the best I have found online.

1) Entry level

https://www.edx.org/course/cs50s-introduction-to-computer-science

Some discrete Mathemathics classes to get you ready.

2) https://www.coursera.org/specializations/discrete-mathematics

6 university courses.

3) https://www.coursera.org/specializations/data-structures-algorithms?action=enroll

​

This is the hard way but probably one of the best choices if your goal is to work on a Top tech company like google etc.

**r/learnmath**• comment

1 points • type1advocate

I haven't started my Discrete Math courses yet (also CS major), but I have looked for outside resources to help me when I do.

Carnegie Mellon has a good Logic and Proofs course that has a free version or a more comprehensive one for like $80.

https://oli.cmu.edu/courses/logic-proofs-copy/

Brilliant.org has some fun courses and problem sets in specific areas of discrete. Everything on that site is amazing IMO.

https://brilliant.org/discrete-mathematics/

Coursera has a full specialization from UCSD in Discrete Math. It's like $49 a month I think, but looks fantastic. I have an unlimited subscription to Coursera and it's been an unbelievable resource.

Bonus: the final project in the specialization is implementing the Traveling Salesman Problem in Python, which is also the final project for one of the DSA courses at WGU.

https://www.coursera.org/specializations/discrete-mathematics

University of Cincinnati course on YouTube:

https://www.youtube.com/playlist?list=PLHXZ9OQGMqxersk8fUxiUMSIx0DBqsKZS

TrevTheTutor course on YouTube:

https://www.youtube.com/playlist?list=PLDDGPdw7e6Ag1EIznZ-m-qXu4XX3A0cIz

Awesome online open source Discrete Math textbook:

http://discrete.openmathbooks.org/dmoi3.html

Interactive version:

http://discrete.openmathbooks.org/dmoi3/

**r/WGU_CompSci**• comment

1 points • type1advocate

I haven't started these courses yet, but I have looked for outside resources to help me when I do.

Carnegie Mellon has a good Logic and Proofs course that has a free version or a more comprehensive one for like $80.

https://oli.cmu.edu/courses/logic-proofs-copy/

Brilliant.org has some fun courses and problem sets in specific areas of discrete. Everything on that site is amazing IMO.

https://brilliant.org/discrete-mathematics/

Coursera has a full specialization from UCSD in Discrete Math. It's like $49 a month I think, but looks fantastic. I have an unlimited subscription to Coursera and it's been an unbelievable resource.

Bonus: the final project in the specialization is implementing the Traveling Salesman Problem in Python, which is also the final project for one of the DSA courses at WGU.

https://www.coursera.org/specializations/discrete-mathematics

University of Cincinnati course on YouTube:

https://www.youtube.com/playlist?list=PLHXZ9OQGMqxersk8fUxiUMSIx0DBqsKZS

TrevTheTutor course on YouTube:

https://www.youtube.com/playlist?list=PLDDGPdw7e6Ag1EIznZ-m-qXu4XX3A0cIz

Awesome online open source Discrete Math textbook:

http://discrete.openmathbooks.org/dmoi3.html

Interactive version:

http://discrete.openmathbooks.org/dmoi3/

**r/uol_bscs**• post

1 points • retu12345

##### Already have a degree? This UoL program may not be for you.

Many people come into this program at UoL with a prior degree. They may not be aware that American MSCS like that from Georgia Tech and UT Austin are designed with people switching career in mind. Or they do not feel confident enough to take on such challenge. Getting into such program only to fail later would crush their confidence. Therefore, joining this UoL program is a sure bet, and it may be true for many.

However, many others are actually ready or almost ready to take on MSCS. Joining or sticking with this program would be a waste of their time, money, and opportunities.

People from an Engineering background may have these math classes:

- Calculus 1-2-3
- Differential Equations
- Linear Algebra (maybe?)

Discrete Math is a must-have, and this could break them if they join an MSCS without it. This can be easily addressed by taking it online here:

- Introduction to Discrete Mathematics for CS Specialization, Coursera, UCSD, 3 months https://www.coursera.org/specializations/discrete-mathematics
- Discrete Mathematics, Coursera, Shanghai Jiao Tong University, 11 weeks https://www.coursera.org/learn/discrete-mathematics

Also, Probability is an almost must-have that would help dealing with ML/AI/DS at Masters level. This course can be taken online here:

- Probability - The Science of Uncertainty and Data, edX, MIT, 16 weeks https://www.edx.org/course/probability-the-science-of-uncertainty-and-data
- Fat Chance: Probability from the Ground Up, edX, Harvard University, 7 weeks https://www.edx.org/course/fat-chance-probability-from-the-ground-up-2

Having two of the above would set you up for the OMSCS at Georgia Tech. For the program at UT Austin, you may need the extra prerequisites whose MOOCs equivalent can be found here:

www.reddit.com/r/MSCSO/comments/c58ii3/recommended_online_courses_from_mscso/

The BSCS program at UoL is still going thru trials and errors. Being a small university with limited resources, this process can be brutal on the students. So you may be able to save yourself time, money and opportunities by going straight for an MSCS program.

**r/MSCSO**• post

3 points • Slothfase

##### Recommended online courses from MSCSO

Hey all. I posted on the inaugural admissions thread that I was admitted without a CS undergrad and that I had taken MOOCs recommended by MSCSO. Early on in my application I had sent the admissions office an email and received a list of courses that they were considering in order to offer prospective students recommendations on how to prepare.

As per a few peoples request, here is that list:

> **CS 312 - Intro to Programming**
>
> 1) Programming Foundations with JavaScript, HTML and CSS, Coursera, Duke University, 4 weeks.
> https://www.coursera.org/learn/duke-programming-web
>
> 2) Introduction to Java Programming, edX, Universidad Carlos de Madrid, 5 weeks.
> https://www.edx.org/course/introduction-to-java-programming-starting-to-code-with-java
>
> 3) Learn to Program in Java, edX, Microsoft Professional Certificate Program, 4 weeks.
> https://www.edx.org/course/learn-to-program-in-java-1
>
> 4) Intro to Java Programming - Part 1, edX, Hong Kong University of Science and Technology, 5 weeks.
> https://www.edx.org/course/introduction-java-programming-part-1-hkustx-comp102-1x-9
>
> 5) Intro to Java Programming - Part 2, edX, Hong Kong University of Science and Technology, 5 weeks. (could combine these two courses)
> https://www.edx.org/course/introduction-java-programming-part-2-hkustx-comp102-2x-9
>
> 6) AP Computer Science A: Java Programming Classes and Objects, edX, Purdue Univ., 6 weeks.
> https://www.edx.org/course/ap-computer-science-a-java-programming-classes-and-objects
>
> **CS 314 - Data Structures**
>
> 1) Foundations of Data Structures, edX, IIT Bombay, 6 weeks
> https://www.edx.org/course/foundations-of-data-structures
>
> 2) Data Structures and Software Design, edX, University of Penn, 8-10 weeks.
> https://www.edx.org/course/data-structures-software-design-pennx-sd2x
>
> 3) Data Structures Fundamentals, edX, UC San Diego, 6 weeks.
> https://www.edx.org/course/data-structures-fundamentals-uc-san-diegox-algs201x
>
> 4) Data Structures and Algorithms, Coursera, UC San Diego, 6 weeks.
> https://www.coursera.org/specializations/data-structures-algorithms
>
> **CS 311 - Discrete Math**
>
> 1) Introduction to Discrete Mathematics for CS Specialization, Coursera, UC San Diego, 3 months
> https://www.coursera.org/specializations/discrete-mathematics
>
> 2) Discrete Mathematics, Coursera, Shanghai Jiao Tong University, 11 weeks
> https://www.coursera.org/learn/discrete-mathematics

> **CS 331 Algorithms and Complexity**
>
> 1) Advanced Algorithms and Complexity, Coursera, UC San Diego, 4 weeks
> https://www.coursera.org/learn/advanced-algorithms-and-complexity
>
> 2) Algorithmic Thinking (Part 1), Courersa, Rice University, 4 weeks
> https://www.coursera.org/learn/algorithmic-thinking-1
>
> 3) Algorithmic Thinking (Part 2), Coursera, Rice University, 4 weeks
> https://www.coursera.org/learn/algorithmic-thinking-1

4) Algorithms Specialization (4 parts), Coursera, Stanford, 4 months https://www.coursera.org/specializations/algorithms

> **CS 429 Computer Architecture**
>
> 1) Computation Structures 2: Computer Architecture, edX, MIT, 10 weeks
> https://www.edx.org/course/computation-structures-2-computer-mitx-6-004-2x
>
> 2) Computer Architecture, Coursera, Princeton, 4 weeks
> https://www.coursera.org/learn/comparch
>
>
> **CS 439 Computer Systems**
>
> 1) Build a modern computer from First Principles: From Nand to tetris (Project-Centered Course)
> https://www.coursera.org/learn/build-a-computer

I chose one class from each topic (minus the Discrete Math, given my undergrad was Mathematics) and included the certificates in my application to both MSCSO and OMSCS.

I did end up picking OMSCS, but I hope to see the MSCSO program thrive and I wish all applicants the best of luck!

**r/MSCSO**• comment

1 points • Tender_Figs

Awesome. I did notice they had this list on this reddit (which they confirmed), but I'm unsure if it's one from each or the whole list..

CS 312 - Intro to Programming 1) Programming Foundations with JavaScript, HTML and CSS, Coursera, Duke University, 4 weeks. https://www.coursera.org/learn/duke-programming-web 2) Introduction to Java Programming, edX, Universidad Carlos de Madrid, 5 weeks. https://www.edx.org/course/introduction-to-java-programming-starting-to-code-with-java 3) Learn to Program in Java, edX, Microsoft Professional Certificate Program, 4 weeks. https://www.edx.org/course/learn-to-program-in-java-1 4) Intro to Java Programming - Part 1, edX, Hong Kong University of Science and Technology, 5 weeks. https://www.edx.org/course/introduction-java-programming-part-1-hkustx-comp102-1x-9 5) Intro to Java Programming - Part 2, edX, Hong Kong University of Science and Technology, 5 weeks. (could combine these two courses) https://www.edx.org/course/introduction-java-programming-part-2-hkustx-comp102-2x-9 6) AP Computer Science A: Java Programming Classes and Objects, edX, Purdue Univ., 6 weeks. https://www.edx.org/course/ap-computer-science-a-java-programming-classes-and-objects

CS 314 - Data Structures 1) Foundations of Data Structures, edX, IIT Bombay, 6 weeks https://www.edx.org/course/foundations-of-data-structures 2) Data Structures and Software Design, edX, University of Penn, 8-10 weeks. https://www.edx.org/course/data-structures-software-design-pennx-sd2x 3) Data Structures Fundamentals, edX, UC San Diego, 6 weeks. https://www.edx.org/course/data-structures-fundamentals-uc-san-diegox-algs201x 4) Data Structures and Algorithms, Coursera, UC San Diego, 6 weeks. https://www.coursera.org/specializations/data-structures-algorithms

CS 311 - Discrete Math 1) Introduction to Discrete Mathematics for CS Specialization, Coursera, UC San Diego, 3 months https://www.coursera.org/specializations/discrete-mathematics 2) Discrete Mathematics, Coursera, Shanghai Jiao Tong University, 11 weeks https://www.coursera.org/learn/discrete-mathematics

CS 331 Algorithms and Complexity 1) Advanced Algorithms and Complexity, Coursera, UC San Diego, 4 weeks https://www.coursera.org/learn/advanced-algorithms-and-complexity 2) Algorithmic Thinking (Part 1), Courersa, Rice University, 4 weeks https://www.coursera.org/learn/algorithmic-thinking-1 3) Algorithmic Thinking (Part 2), Coursera, Rice University, 4 weeks https://www.coursera.org/learn/algorithmic-thinking-1 4) Algorithms Specialization (4 parts), Coursera, Stanford, 4 months https://www.coursera.org/specializations/algorithms

CS 429 Computer Architecture 1) Computation Structures 2: Computer Architecture, edX, MIT, 10 weeks https://www.edx.org/course/computation-structures-2-computer-mitx-6-004-2x 2) Computer Architecture, Coursera, Princeton, 4 weeks https://www.coursera.org/learn/comparch

CS 439 Computer Systems 1) Build a modern computer from First Principles: From Nand to tetris (Project-Centered Course) https://www.coursera.org/learn/build-a-computer

**r/france**• comment

1 points • thom986

Le choix d'un master est important. Tu as raison. C'est un peu le dernier filtre avant le monde du travail.

La première question à se poser est celle des débouchés : pro ou recherche. Le mieux pour savoir ce qu'il en est reste de regarder les pages web des masters qui souvent renseignent assez bien sur le sujet.

Attention tout de même, un master plutôt recherche va surement s'enchainer avec une thèse en labo ou entreprise. Mais cela veut dire qu'à la fin de ton master tu auras encore un processus de sélection (avec tes notes, notamment). Si tu continues en recherche par la suite, il faut se préparer et être d'accord avec l'idée de mobilité pour ta thèse peut-être, pour tes post-doc encore plus certainement. Si tu as une copine et des plans, je pense que tu devrais aussi tâter le terrain avec elle et l'inclure dans le processus de réflexion. Tes objectifs dans 6 ans ne seront peut-être pas les mêmes qu'aujourd'hui avec peut-être une envie de stabilité : famille, logement,...

Tu parles de l'IDF, est-ce une contrainte parce que tu loges chez ta famille, avec ta copine ?

Je pense que ça peut être intéressant de ne pas forcément faire rentrer ce critère très sélectif de la localisation aussi tôt dans ton processus de recherche de master. Alors n'hésite pas à regarder un peu ailleurs en France également.

De l'alternance en master ça arrive mais c'est assez rare. Un master reste un enseignement d'abord théorique qui est là pour te donner des connaissances qui ne s'apprennent pas forcément sur le tas mais te permettront de t'adapter assez rapidement à un travail en ayant une bonne vue d'ensemble et des bases solides. Si on est un peu caricatural, un master ne vise pas à faire de toi un bon technicien ou en étant vulgaire un pisseur de code. Un master notamment appliqué aura pour but de faire de toi un bon ingénieur. Cela implique également de communiquer par exemple.

Pour ce qui est d'embellir un peu son cv et sa lettre de motivation. (Je dirai)

- 1. Apprentissage personnel

Surtout après une telle période, je pense qu'**un élève qui n'a pas montré qu'il a cherché à bosser par lui-même, ça va être un sale gros point noir sur le dossier.**

Il y a plein de formation en ligne de qualité. Et on peut supposer que les facs vont pousser pour un enseignement en distanciel... Il faut leur dire que tu peux suivre de ton côté un cours sans être présent physiquement.

- coursera / edx / fun (en français) sont une source inépuisable de connaissance. Moi, je suivrais au moins un ou deux mooc avec au moins un en anglais. L'important ici n'est pas d'avoir un certificat à présenter mais de dire que tu es suffisamment **organisé** pour faire du travail personnel (ce qui est très important en master)

Soit pour dire que tu as des lacunes et que tu en as conscience et que tu cherches à les rattraper. En maths par exemples mais aussi dans des domaines un peu plus originales comme l'orthographe. Tu sais que tous les gens qui vont postuler vont avoir un niveau acceptable en maths et info... alors autant essayé de se démarquer.

- Renforcer ses compétences orthographiques : https://www.fun-mooc.fr/courses/course-v1:unicaen+48002+session04/about

- Algèbre linéaire : https://www.fun-mooc.fr/courses/course-v1:MinesTelecom+04032+session04/about

- des maths pour le cs : https://www.coursera.org/specializations/discrete-mathematics#courses (notamment le dernier mooc de cette spé : https://www.coursera.org/learn/number-theory-cryptography?specialization=discrete-mathematics)

Soit pour dire que le sujet t'intéresse vraiment et que tu as essayer de te renseigner (et que tu ne vient pas là uniquement en touriste) et que tu as réussi à faire le tri selon TES critères pour choisir ce qui sur le coup t'a semblé intéressant. Compétence également très importante.

- coursera : https://www.coursera.org/search?query=cyber&

- edx : https://www.edx.org/course?search_query=cyber

Soit pour dire que tu t'es formé sur des compétences transversales qui te semblaient intéressantes. Parce qu'une bonne maitrise des outils permet de passer plus de temps sur l'analyse, la discussion. C'est là qu'un master ne fait pas de toi un technicien. Tu dois connaitre les outils pour les utiliser mais ce qui est important est ce qu'il y a après, la discussion, l'analyse, le rapport... C'est là qu'on attend ton expertise.

- linux et git : https://www.coursera.org/specializations/oss-development-linux-git ou https://www.coursera.org/learn/unix#syllabus

- python et la data : https://www.coursera.org/specializations/data-science-python#courses

- cs en js: https://www.coursera.org/learn/introduction-to-computer-programming

- cs en python : https://www.edx.org/course/introduction-to-computer-science-and-programming-7

- 2. Projets persos dans un github

Il faut apporter une certaine preuve de ton organisation. Pour ça rien de mieux que de pouvoir présenter un peu de code produit.

Tu peux commencer par mettre le code produit en Licence avec un petit fichier texte (readme) accompagnant et présentant un peu le truc. N'hésite pas à mettre de petits projets (même si ça ne t'a pris qu'une journée, une semaine) Si tu suis des mooc tu mets le code produit chaque semaine dedans un petit dépôts

L'utilisation et ce souci de préservation de ton code et ton projet étant aussi important que le projet en lui même. J'ai mis au propre mes petits projets que j'avais fait à l'époque : https://github.com/homeostasie/petits-pedestres

C'est pas terrible, si tu veux faire un dépôt par projet c'est peut-être mieux...

Ce qui est important ici est aussi de **communiquer** autour.

- Implication local

Je pense que ça peut-être un peu plus dans une lettre de motivation de dire que tu te renseignes et chercher à participer dans les activités locales.

Assos, hackspace, salon, même peut-être des communautés en ligne... C'est un peu plus dur à caler mais ça peut le faire. Cela renvoi comme image que tu vas te bouger le cul pour avoir un taf après leur master ce qui est bon pour leurs stats.

Bref, ça te fait quasiment un plan pour ta lettre de motiv.

Bon courage.

**r/OMSCS**• comment

1 points • jknasse2

>OMSCS

I reached out and have an undergrad in Math and Finance from UofH. I had just comp sci 1 and 2 along with advanced math courses, but don't know what they will allow me to substitute for certain prereq if any. I got the following response. Until they nail down the pre-req that will qualify for there program I am not going to willy nilly start taking these courses. I am planning to apply in Spring 2020, but thinking of applying in hopes of getting some type of conditional acceptance completing some defined prerequisite course work.

For me I don't think since I took comp sci 1 and 2 at my university and used java I don't think I need Intro to programming. I also think since I have a math degree and took discrete math for finance and more advanced coursework I shouldn't need Discrete Math for Computer Science. But, there is no way to know unless I apply and try to get conditionally accepted. I need to respond back and see if they are going to conditionally accept students given they complete some course work on edx or courseera.

​

Thank you for your interest in the online masters program. We understand that there are many excellent students who haven’t formal CS training and we've identified some online courses through edX and Coursera that could serve as prereqs. Currently, some of our professors are going through the courses to make sure they actually will give non-CS students the knowledge to be successful in our masters program. Once we’ve compiled a list of courses, we’ll post them on the website and send an email.

​

**CS 312 - Intro to Programming**

1) Programming Foundations with JavaScript, HTML and CSS, Coursera, Duke University, 4 weeks.

https://www.coursera.org/learn/duke-programming-web

2) Introduction to Java Programming, edX, Universidad Carlos de Madrid, 5 weeks.

https://www.edx.org/course/introduction-to-java-programming-starting-to-code-with-java

3) Learn to Program in Java, edX, Microsoft Professional Certificate Program, 4 weeks.

https://www.edx.org/course/learn-to-program-in-java-1

4) Intro to Java Programming - Part 1, edX, Hong Kong University of Science and Technology, 5 weeks.

https://www.edx.org/course/introduction-java-programming-part-1-hkustx-comp102-1x-9

5) Intro to Java Programming - Part 2, edX, Hong Kong University of Science and Technology, 5 weeks. (could combine these two courses)

https://www.edx.org/course/introduction-java-programming-part-2-hkustx-comp102-2x-9

6) AP Computer Science A: Java Programming Classes and Objects, edX, Purdue Univ., 6 weeks.

https://www.edx.org/course/ap-computer-science-a-java-programming-classes-and-objects

**CS 314 - Data Structures**

1) Foundations of Data Structures, edX, IIT Bombay, 6 weeks

https://www.edx.org/course/foundations-of-data-structures

2) Data Structures and Software Design, edX, University of Penn, 8-10 weeks.

https://www.edx.org/course/data-structures-software-design-pennx-sd2x

3) Data Structures Fundamentals, edX, UC San Diego, 6 weeks.

https://www.edx.org/course/data-structures-fundamentals-uc-san-diegox-algs201x

4) Data Structures and Algorithms, Coursera, UC San Diego, 6 weeks.

https://www.coursera.org/specializations/data-structures-algorithms

**CS 311 - Discrete Math**

1) Introduction to Discrete Mathematics for CS Specialization, Coursera, UC San Diego, 3 months

https://www.coursera.org/specializations/discrete-mathematics

2) Discrete Mathematics, Coursera, Shanghai Jiao Tong University, 11 weeks

https://www.coursera.org/learn/discrete-mathematics

**CS 331 Algorithms and Complexity**

1) Advanced Algorithms and Complexity, Coursera, UC San Diego, 4 weeks

https://www.coursera.org/learn/advanced-algorithms-and-complexity

2) Algorithmic Thinking (Part 1), Courersa, Rice University, 4 weeks

https://www.coursera.org/learn/algorithmic-thinking-1

3) Algorithmic Thinking (Part 2), Coursera, Rice University, 4 weeks

https://www.coursera.org/learn/algorithmic-thinking-1

**CS 429 Computer Architecture**

1) Computation Structures 2: Computer Architecture, edX, MIT, 10 weeks

https://www.edx.org/course/computation-structures-2-computer-mitx-6-004-2x

2) Computer Architecture, Coursera, Princeton, 4 weeks

https://www.coursera.org/learn/comparch

**CS 439 Computer Systems**

1) Build a modern computer from First Principles: From Nand to tetris (Project-Centered Course)

https://www.coursera.org/learn/build-a-computer

I’ve attached the list of classes that we’ve identified in case you want to work through any of these. Please let me know if you have any other questions and we’ll send more information very soon.

**r/learnprogramming**• post

1 points • hobbitmagic

##### Learn the Undergraduate CS Core Online for Free

I noticed that almost every university has the same set of core Computer Science courses, and I wanted to put together a list of resources for those classes that are most commonly required.

# CS Core

Introduction to Computer Science I

- Georgia Tech Introduction to Python Programming (just do each individual course)
- Python based
- Very thorough and well organized
- Doesn't leave you feeling like you're drowning in the deep end
- Harvard CS50 Introduction to Computer Science (alt)
- Python, C, SQL, and more
- Good balance of breadth and depth
- MIT Introduction to Computer Science and Programing Using Python (alt)
- Python
- Challenging and long

Computer Science II (a second programming langage and OOP)

- UCSD's Object Oriented Java Programming: Data Structures and Beyond Specialization
- Duke's Object Oriented Programming in Java
- Princeton's 2-part Java series: Computer Science: Programming with a Purpose and Computer Science: Algorithms, Theory, and Machines

Data Structures and Algorithms

- Princeton's Algorithms, Part I and Algorithms, Part II
- UCSD's Data Structures and Algorithms Specialization
- Stanford's Algorithms Specialization

Discrete Mathematics

- UCSD's Introduction to Discrete Mathematics for Computer Science Specialization
- MIT's Mathematics for Computer Science
- Shanghai Jiao Tong University's Discrete Mathematics

# Extended CS Core

(These courses are part of the CS Core for many universities, but not as universal as the ones above)

Computer Architecture

- MIT Computation Structures, Part 1, Part 2, Part 3 (alt)
- Princeton's Computer Architecture
- Carnegie Mellon Computer Architecture (lectures)

Operating Systems

- Georgia Tech's Introduction to Operating Systems
- Berkely CS162 (Lectures)
- MIT Operating System Engineering

# Typical Math Requirements

Calculus

- MIT Single Variable Calculus
- Khan Academy Calculus BC
- Professor Leonard Calculus 1 and Calculus 2

Multivariable Calculus

Linear Algebra

Differential Equations

- MIT Differential Equations
- Khan Academy Differential Equations
- Professor Leonard Differential Equations

​

The main coursers (Intro to CS, Object Oriented Programming, Data Structures/Algorithms, and Discrete Math) are requirements almost everywhere I've reviewed CS curriculum, from top ten universities to my community college. I've listed the best resources I could find to learn these subjects, but it may not get you credit or the job opportunities you want. They're also free to audit the last time I visited them (although coursera has been changing their billing, I think you can still find a way to audit courses). I added an extra section for Architecture and Operating Systems because these seem to be very common, but not to the extent as the first four. Lastly, I threw in some math resources for the subjects that are typically required/recommended. If this is useful, maybe it can be expanded to have some justification about why these courses are so important.

Also, OSSU Computer Science exists and is far more comprehensive. I wanted this to have a much smaller scope and just point to resources for the "essential" courses.

If you have any recommendations or alternatives, put them in the comments.

**r/OMSCS**• comment

2 points • juniordevv

Here you are m8.. Since I do software development my initial focus was Algs/DS, Software Dev Methods, Languages, and OOP ... I want my next area of focus to be (Networking/Cybersecurity), then (Computer Architecture/Systems and OS) ... then the 3 math classes ... and from there we will see, maybe applying to OMSCS soon after. I'm sure that will be a solid 18 months of classes if not more.

​

Here is the degree program I modeled my MOOC pursuit after :

https://www.colorado.edu/cs/current-students/undergraduate-students/bs-degree/bs-degree-requirements

http://www.cs.colorado.edu/courses/catalog/

​

​

**Discrete Math/Structures**

https://www.coursera.org/specializations/discrete-mathematics#about

UCSD

**Linear Algebra**

https://www.edx.org/course/linear-algebra-foundations-to-frontiers

UT Austin self-paced

**Probability / Statistics**

https://www.coursera.org/learn/probability-statistics

Uni London

**Intro to CS**

https://www.edx.org/course/cs50s-introduction-computer-science-harvardx-cs50x

Harvard

**Algorithms / Data Structures**

https://www.coursera.org/learn/algorithms-part1

https://www.coursera.org/learn/algorithms-part2

Princeton

**Principles of Programming Languages**

https://www.coursera.org/learn/programming-languages/home/welcome

U Washington

**Software Development Methods / Tools**

https://courses.edx.org/courses/course-v1:PennX+SD1x+2T2017/course/

U Penn

**Databases**

https://lagunita.stanford.edu/courses/DB/2014/SelfPaced/about

Stanford self-paced

**CyberSecurity**

https://www.edx.org/course/introduction-to-cybersecurity

https://www.edx.org/course/building-a-cybersecurity-toolkit

U Washington self-paced

**Computation Theory**

https://www.edx.org/course/computation-structures-part-1-digital-mitx-6-004-1x-0

https://www.edx.org/course/computation-structures-2-computer-mitx-6-004-2x

https://www.edx.org/course/computation-structures-2-computer-mitx-6-004-2x

MIT archived/self-paced

https://www.coursera.org/learn/comparch

Princeton

**Operating Systems**

http://pages.cs.wisc.edu/\~remzi/OSTEP/ (e book)

**Networking**

https://www.coursera.org/learn/computer-networking

https://www.coursera.org/specializations/networking-basics#courses

Cisco 5-part

**Object-Oriented Design/Analysis**

https://www.edx.org/course/software-construction-object-oriented-ubcx-sof

UBC self-paced

https://www.edx.org/course/object-oriented-programming-in-java-1

Microsoft self-paced

**Data Science**

https://www.coursera.org/learn/python-data-analysis

U Mich

**Linux SysAdmin**

https://www.coursera.org/learn/linux-server-management-security

CU

**Compilers**

**???**

**Cryptography**

https://www.coursera.org/learn/crypto

Stanford

**Machine Learning**

https://www.edx.org/course/machine-learning-columbiax-csmm-102x-4

Columbia

**Computer Security / Hacking**

https://www.coursera.org/learn/hacking-patching

https://www.coursera.org/specializations/computer-network-security

CU

**High Performance Computing**

https://www.edx.org/course/high-performance-computing-reproducible-harvardx-ph525-6x-1

Harvard

**Concurrent Programming**

https://www.coursera.org/learn/concurrent-programming-in-java

https://www.coursera.org/learn/parallel-programming-in-java

https://www.coursera.org/learn/distributed-programming-in-java

Rice

**Operations Research**

https://www.coursera.org/learn/wharton-operations-analytics

UPenn

​

​

**r/learnprogramming**• post

1 points • ewig94

##### My (5+5)-step self-taught CS curriculum [Updated]

I've recently posted a list of resources I want to use as a self-taught CS "curriculum" and got some fantastic feedback! Thank you all for your kind and thoughtful suggestions! Here is the updated list based on the feedback you provided! **Any future updates will be applied here.** To read full explanations and see the old list, please check out my original post.

​

**Step 0: "Coding"**

**0.0**Harvard's CS50x: Introduction to Computer Science**0.1**MIT 6.0001: Introduction to CS and Programming in Python -*OCW***0.2**CS50's Web Programming with Python and JavaScript*(Maybe!)***Bonus**: The Missing Semester of Your CS Education -*MIT CSAIL***Book**: Automate the Boring Stuff with Python**Practice***(a lot!)***: Codewars

​

**Step 1: "Programming"**

**1.1**MIT 6.0002: Introduction to Computational Thinking and Data Science -*OCW***1.2**Stanford's CS106B: Programming Abstractions*(Mainly to learn C++, can ignore it)***1.3**Stanford's CS107: Programming Paradigms*(Same as above)***1.4**University of Washington's CSE341: Programming Languages (Coursera)**Book**: Composing Programs

​

**Step 2: Mathematics**

**3.1**High school math -*Khan Academy***3.2**Set Theory -*Eddie Woo's Youtube playlist***3.3**AP®︎ Calculus BC -*Khan Academy***3.4**Essence of calculus -*3Blue1Brown's Youtube playlist***3.5**MIT 18.01: Calculus I*- OCW***3.6**Introduction to Discrete Mathematics for Computer Science*- Coursera specialization by UC San Diego***3.7****[Recommended]**MIT 6.042J: Mathematics for Computer Science -*OCW*

Extra, nonrequired math (just in case, because I like math!):

**3.8**Introduction to Logic -*Coursera (Stanford)***3.9**MIT 18.02: Calculus II*- OCW***3.10**Essence of linear algebra -*3Blue1Brown's Youtube playlist***3.11**MIT 18.06: Linear Algebra -*OCW***3.12**Analytic Combinatorics -*Coursera (Princeton)*

​

**Step 3: Algorithms & Data Structures**

**4.1**Algorithms -*Coursera specialization by Stanford***4.2**MIT 6.006: Introduction to Algorithms*- OCW***4.3****[Recommended]**SBU's CSE 373: Analysis of Algorithms**4.4**MIT 6.046J: Design and Analysis of Algorithms -*OCW***4.5**Harvard's CS 224: Advanced Algorithms**Book**: The Algorithm Design Manual**Practice**: LeetCode and Techie Delight

​

**Step 4: Computer Architecture/Systems**

**2.1**Nand2Tetris Part 1 and Part 2 -*Coursera***2.2****[Recommended]**CMU's 15-213: Introduction to Computer Systems**Book**: Computer Systems: A Programmer's Perspective, 3rd Edition

​

**Note: The following 5 steps are optional and not as "required" as the previous ones.**

​

**Extra Step 1: Operating Systems**

**5.1 [Recommended]**UC Berkeley's CS 162: Operating Systems and Systems Programming**Book**: Operating Systems: Three Easy Pieces

​

**Extra Step 2: Computer Networking**

**6.1 [Recommended]**Stanford's CS144: Introduction to Computer Networking -*Youtube playlist***Book**: Computer Networking: a Top Down Approach

​

**Extra Step 3: Databases**

**7.1 [Recommended]**Berkeley CS 186: Introduction to Database Systems -*Youtube channel***7.2**Georgia Tech's CS 6400: Database Systems Concepts and Design**Book**: Architecture of a Database System*(link to PDF file)***Readings**: Readings in Database Systems -*the "Redbook"*

​

**Extra Step 4: Languages & Compilers**

**8.1 [Recommended]**Stanford's CS 143: Compilers**8.2**Georgia Tech's CS 8803 O08: Compilers - Theory and Practice**Book**: Crafting Interpreters

​

**Extra Step 5: Distributed Systems**

**9.1**MIT 6.033: Computer System Engineering*- OCW***9.2 [Recommended]**MIT 6.824: Distributed Systems*- MIT CSAIL***Book**: Designing Data-Intensive Applications**Papers**: Distributed Systems Reading Group

​

*That's it! Again, any feedback would be appreciated!*

**r/learnprogramming**• post

1 points • ewig94

##### My 10-step self-taught CS curriculum - any recommendations?

Hi, everyone!

I've had a great passion for computer science and coding since high school, but I chose medicine eventually and I've recently graduated as a physician.

Due to some changes in my situation, I'm gonna have a few hours of free time each day for the next 2 or 3 years. I decided to use this opportunity and learn CS as my serious "hobby"; both to improve my creativity and problem-solving skills and to create something out of my "medical software/website" ideas that come to my mind every once in a while. **My goal is not getting a job as a software engineer**, I just love CS per se and simply enjoy learning it! To this end, I made my personal curriculum, but I'm not 100% confident if that's the ideal study plan to learn CS.

Each step has one "recommended course" (often the one recommended by this great guide: Teach Yourself Computer Science), but given my **non-technical background**, I think it would be difficult for me to dive right into those courses, so I have gathered a few "intermediate" courses for each step as some sort of introduction/backup to take before/instead of the recommended course.

Math is a special subject for me. After 7+ years of studying medicine, it's inevitable to forget most of the math I had learned back in high-school. So I need a deep and comprehensive review. I will be (re-)studying high-school math (3.1, 3.2, and 3.3 in the list below) along with the first 3 steps of the curriculum and before getting to the actual "Step 3".

​

**Step 0: "Coding"**

**0.0**Harvard's CS50x: Introduction to Computer Science**0.1**MIT 6.0001: Introduction to CS and Programming in Python -*OCW***0.2**MIT 6.0002: Introduction to Computational Thinking and Data Science -*OCW***0.3***(Maybe!)*The Missing Semester of Your CS Education -*MIT CSAIL***0.4***(Also maybe!)*CS50's Web Programming with Python and JavaScript

*I know there are lots of alternatives for learning web development, but I like the way this guy teaches. Alternatives (just in case):* W3Schools Online Web Tutorials, *freeCodeCamp and its Youtube tutorials for* HTML, CSS, *and* JavaScript, *and so on...*

**Book**: Automate the Boring Stuff with Python**Practice***(a lot!)***: Codewars

​

**Step 1: "Programming"**

**1.1**University of Washington's CSE341: Programming Languages*(Also available on**Coursera**)***1.2****[Recommended Course]**Berkeley CS 61A: Structure and Interpretation of Computer Programs**1.3**Stanford's CS106B: Programming Abstractions*(Mainly to learn C++)***1.4**Stanford's CS107: Programming Paradigms**Recommended Book**: Composing Programs

​

**Step 2: Computer Architecture/Systems**

**2.1**Nand2Tetris Part 1 and Part 2 -*Coursera***2.2****[Recommended Course]**CMU's 15-213: Introduction to Computer Systems**2.3**MIT 6.004: Computation Structures -*OCW (Not sure about this one!)***Recommended Book**: Computer Systems: A Programmer's Perspective, 3rd Edition

​

**Step 3: Mathematics**

**3.1**High school math -*Khan Academy***3.2**AP®︎ Calculus BC -*also Khan Academy***3.3**Essence of calculus -*3Blue1Brown's Youtube playlist*

*Time for serious stuff! I'm not really sure about the order/content or even if by taking previous courses I'm ready to take the next ones:*

**3.4**MIT 18.01: Calculus I*- OCW***3.5**Introduction to Discrete Mathematics for Computer Science*- Coursera specialization by UC San Diego***3.6**MIT 18.02: Calculus II*- OCW***3.7****[Recommended Course]**MIT 6.042J: Mathematics for Computer Science -*OCW*

*I don't know whether I "have to" take the following courses or I'll be OK moving on without learning these topics. Of course, I can take them later on if necessary.*

**3.8**Essence of linear algebra -*3Blue1Brown's Youtube playlist***3.9**MIT 18.06: Linear Algebra -*OCW***3.10**Set Theory -*Eddie Woo's Youtube playlist***3.11**Introduction to Logic -*Coursera (Stanford)***3.12**Analytic Combinatorics -*Coursera (Princeton)*

​

**Step 4: Algorithms & Data Structures**

**4.1***OR****Algorithms -**Coursera specialization by Stanford***4.1**Data Structures and Algorithms -*Coursera specialization by UC San Diego (Not sure about this one!)***4.2**MIT 6.006: Introduction to Algorithms*- OCW***4.3****[Recommended Course]**SBU CSE 373: Analysis of Algorithms**4.4**MIT 6.046J: Design and Analysis of Algorithms -*OCW***4.5**Harvard's CS 224: Advanced Algorithms**Recommended Book**: The Algorithm Design Manual**Practice**: LeetCode

​

**Step 5: Operating Systems**

**5.1 [Recommended Course]**UC Berkeley's CS 162: Operating Systems and Systems Programming**Recommended Book**: Operating Systems: Three Easy Pieces

​

**Step 6: Computer Networking** *[I couldn't find a high-quality resource for this step, any input would be appreciated!]*

**6.1 [Recommended Course]**Stanford's CS144: Introduction to Computer Networking -*Youtube playlist***Recommended Book**: Computer Networking: a Top Down Approach

​

**Step 7: Databases**

**7.1 [Recommended Course]**Berkeley CS 186: Introduction to Database Systems -*Youtube channel***7.2**Georgia Tech's CS 6400: Database Systems Concepts and Design**Recommended Book**: Architecture of a Database System*(link to PDF file)***Recommended Readings**: Readings in Database Systems -*the "Redbook"*

​

**Step 8: Languages & Compilers**

**8.1 [Recommended Course]**Stanford's CS 143: Compilers**8.2**Georgia Tech's CS 8803 O08: Compilers - Theory and Practice**Recommended Book**: Crafting Interpreters

​

**Step 9: Distributed Systems**

**9.1**MIT 6.033: Computer System Engineering*- OCW***9.2 [Recommended Course]**MIT 6.824: Distributed Systems*- MIT CSAIL***Recommended Book**: Designing Data-Intensive Applications*- Pirated PDF can be found online*:|**Recommended Papers**: Distributed Systems Reading Group

​

**Thanks for reading... Any suggestions and recommendations on the selection or the order/priority of these resources and steps would be much appreciated!**

*PS: Sorry for my poor English!*

**r/learnprogramming**• post

1 points • ewig94

##### My 10-step self-taught CS curriculum - any recommendations?

Hi, everyone!

I've had a great passion for computer science and coding since high school, but I chose medicine eventually and I've recently graduated as a physician.

Due to some changes in my situation, I'm gonna have a few hours of free time each day for the next 2 or 3 years. I decided to use this opportunity and learn CS as my serious "hobby"; both to improve my creativity and problem-solving skills and to create something out of my "medical software/website" ideas that come to my mind every once in a while. **My goal is not getting a job as a software engineer**, I just love CS per se and simply enjoy learning it! To this end, I made my personal curriculum, but I'm not 100% confident if that's the ideal study plan to learn CS.

Each step has one "recommended course" (often the one recommended by this great guide: Teach Yourself Computer Science), but given my **non-technical background**, I think it would be difficult for me to dive right into those courses, so I have gathered a few "intermediate" courses for each step as some sort of introduction/backup to take before/instead of the recommended course.

Math is a special subject for me. After 7+ years of studying medicine, it's inevitable to forget most of the math I had learned back in high-school. So I need a deep and comprehensive review. I will be (re-)studying high-school math (3.1, 3.2, and 3.3 in the list below) along with the first 3 steps of the curriculum and before getting to the actual "Step 3".

​

**Step 0: "Coding"**

**0.0**Harvard's CS50x: Introduction to Computer Science

**0.1**MIT 6.0001: Introduction to CS and Programming in Python - OCW

**0.2**MIT 6.0002: Introduction to Computational Thinking and Data Science - OCW

**0.3**(Maybe!) The Missing Semester of Your CS Education - MIT CSAIL

**0.4**(Also maybe!) CS50's Web Programming with Python and JavaScript

*I know there are lots of alternatives for learning web development, but I like the way this guy teaches. Alternatives (just in case):*

W3Schools Online Web Tutorials

freeCodeCamp's website and Youtube tutorials: HTML, CSS, and JavaScript

and so on...

**Book**: Automate the Boring Stuff with Python

**Practice (a lot!)**: Codewars

​

**Step 1: "Programming"**

**1.1**University of Washington's CSE341: Programming Languages

(Also available on Coursera)

**1.2****[Recommended Course]**Berkeley CS 61A: Structure and Interpretation of Computer Programs

**1.3**Stanford's CS106B: Programming Abstractions (Mainly to learn C++)

**1.4**Stanford's CS107: Programming Paradigms

**Recommended Book**: Composing Programs

​

**Step 2: Computer Architecture/Systems**

**2.1**Nand2Tetris Part 1 and Part 2 - Coursera

**2.2****[Recommended Course]**CMU's 15-213: Introduction to Computer Systems

**2.3**MIT 6.004: Computation Structures - OCW*(Not sure about this one!)*

**Recommended Book**: Computer Systems: A Programmer's Perspective, 3rd Edition

​

**Step 3: Mathematics**

**3.1**High school math - Khan Academy

**3.2**AP®︎ Calculus BC - also Khan Academy

**3.3**Essence of calculus - 3Blue1Brown's Youtube playlist

​

*Now time for the real stuff! I'm not really sure about the order/content or even if by taking previous courses I'm ready to take the next ones:*

**3.4**MIT 18.01: Calculus I - OCW

**3.5**Introduction to Discrete Mathematics for Computer Science - Coursera specialization by UC San Diego

**3.6**MIT 18.02: Calculus II - OCW

**3.7****[Recommended Course]**MIT 6.042J: Mathematics for Computer Science - OCW

​

*I'm don't know whether I "have to" take the following courses or I'll be OK moving on without learning these topics. Of course, I can take them later on if necessary.*

**3.8**Essence of linear algebra - 3Blue1Brown's Youtube playlist

**3.9**MIT 18.06: Linear Algebra - OCW

**3.10**Set Theory - Eddie Woo's Youtube playlist

**3.11**Introduction to Logic - Coursera (Stanford)

**3.12**Analytic Combinatorics - Coursera (Princeton)

​

**Step 4: Algorithms & Data Structures***OR

**4.1**Algorithms - Coursera specialization by StanfordData Structures and Algorithms - Coursera specialization by UC San Diego*4.1

*(Not sure about this one!)*

**4.2**MIT 6.006: Introduction to Algorithms - OCW

**4.3 [Recommended Course]**SBU CSE 373: Analysis of Algorithms

**4.4**MIT 6.046J: Design and Analysis of Algorithms - OCW

**4.5**Harvard's CS 224: Advanced Algorithms

**Recommended Book**: The Algorithm Design Manual

**Practice**: LeetCode

​

**Step 5: Operating Systems**

**5.1 [Recommended Course]**UC Berkeley's CS 162: Operating Systems and Systems Programming

**Recommended Book**: Operating Systems: Three Easy Pieces

​

**Step 6: Computer Networking***[I couldn't find a high-quality resource for this step, any input would be appreciated!]*

**6.1 [Recommended Course]**Stanford's CS144: Introduction to Computer Networking - Youtube playlist

**Recommended Book**: Computer Networking: a Top Down Approach

​

**Step 7: Databases**

**7.1 [Recommended Course]**Berkeley CS 186: Introduction to Database Systems - Youtube channel

**7.2**Georgia Tech's CS 6400: Database Systems Concepts and Design

**Recommended Book**: Architecture of a Database System (link to PDF file)

**Recommended Readings**: Readings in Database Systems - the "Redbook"

​

**Step 8: Languages & Compilers**

**8.1 [Recommended Course]**Stanford's CS 143: Compilers

**8.2**Georgia Tech's CS 8803 O08: Compilers - Theory and Practice

**Recommended Book**: Crafting Interpreters

​

**Step 9: Distributed Systems**

**9.1**MIT 6.033: Computer System Engineering - OCW

**9.2 [Recommended Course]**MIT 6.824: Distributed Systems - MIT CSAIL

**Recommended Book**: Designing Data-Intensive Applications - Pirated PDF can be found online :|

**Recommended Papers**: Distributed Systems Reading Group

​

**Thanks for reading... Any suggestions and recommendations on the selection or the order/priority of these resources and steps would be much appreciated!**

*PS: Sorry for my poor English!*