Skip to main content

Free Self-taught Education in Programming/Computer Science!

 


 Contents

  • Summary
  • Community
  • Curriculum
  • Code of conduct
  • Team

Summary

The programming skills for everyone is a complete computer science/programming education path based solely on freely available online materials. It's for you if you want a proper, well-rounded basis in concepts fundamental to all programming and computing disciplines. You need to possess the discipline, will, and (most importantly!) good habits to obtain this skills largely on your own, but with support from a community of fellow learners.

It is designed according to the degree requirements of undergraduate computer science majors, minus general education (non-CS) requirements, as it is assumed most of you are already educated/have knowledge outside the field of programming/CS. The courses themselves are among the very best in the world, often coming from Harvard, Princeton, MIT, etc.

The coursework is also supplemented with relevant books when necessary. When there are courses or books that don't fit into the curriculum but are otherwise of high quality, they belong in extras/courses or extras/readings.

Organization. The curriculum is designed as follows:

  • Intro CS: for you to try out programming/CS and see if it's right for you.
  • 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: corresponds roughly to the final year of a computer science curriculum, taking electives according to the student's interests
  • Final Project: a project for you to validate, consolidate, and display your knowledge, to be evaluated by your peers.

Duration. It is possible to finish within about 2 years if you plan carefully and devote roughly 20 hours/week to your studies. 

Cost. All or nearly all course material is available for free. However, some courses may charge money for assignments/tests/projects to be graded. Note that both Coursera and edX offer financial aid.

Decide how much or how little to spend based on your own time and budget; just remember that you can't purchase success!

Process. You can work through the curriculum alone or in groups, in order or out of order.

  • You must do all courses in Core CS, only skipping a course when you are certain that you've already learned the material previously.
  • For simplicity, you need to work through courses (especially Core CS) in order from top to bottom, as they have already been topologically organized by their prerequisites.
  • Courses in Advanced CS are electives. Choose one subject (e.g. Advanced programming) you want to become an expert in and take all the courses under that heading. 

Content policy. If you plan on showing off some of your coursework publicly, you must share only files that you are allowed to. Do NOT disrespect the code of conduct that you signed in the beginning of each course!

Community

  • We have a twitter community. It is a first stop to talk with other learners. Why don't you follow and introduce yourself right now? ProTipsKe 
  • Join our LinkedIn group. LinkedIn

Curriculum

The curriculum is constantly updated to meet current requirements or comply with new programming/CS standards

Comments

Popular posts from this blog

Chapter 9 - Dictionaries in Python

Chapter 9 of the Python textbook,  Python for Everybody: Exploring Data Using Python 3 by Dr Charles R. Severance,  covers dictionaries, which are fundamental data structures in Python. Here are the significant points of each section along with explanations and examples: Section 9.1: Dictionaries Dictionaries are similar to lists but more general; they map keys to values. Keys can be almost any data type. You can create an empty dictionary using {} . To add items to a dictionary, use square brackets. Example: eng2sp = dict() eng2sp['one'] = 'uno' Section 9.2: Dictionary as a Set of Counters Dictionaries can be used to count the occurrence of items. You can create a dictionary to count characters in a string or words in a text. Example: word = 'brontosaurus' counts = dict() for c in word:     if c not in counts:         counts[c] = 1     ...

A Complete Guide to Developing Web Applications for Personal/Business Purposes (2023)

  In the early days of the internet, webpages were static, often featuring basic images and, occasionally, videos. However, the concept of web application development remained distant until around 2005 when the introduction of Ajax marked a turning point. Ajax brought forth the possibility of creating more sophisticated, faster, and interactive web applications. Fast forward to 2023, web applications have seamlessly integrated into our daily lives, often without us realizing it. From widely used applications like MS Word and PowerPoint to popular platforms like twitter, and even the ubiquitous Facebook, these applications offer personalized, immersive experiences comparable to native apps, accessible directly from web browsers. Modern web applications combine the user-centric nature of native mobile apps with the convenience of browser accessibility across various devices. This convergence makes web application development a coveted skill among developers, and more importantly,...