Tutorial - How to become a Self Taught Programmer in Four Semesters!
programming·@brobear1995·
0.000 HBDTutorial - How to become a Self Taught Programmer in Four Semesters!
 Hello steemians! This post is aimed for those who is looking to start programming and needs some push in the correct direction. This course structure doesn't shy away from the solid mathematical background which is required in order to do effective programming and also introduces the reader to techniques like revision control. First step would be to strengthen the basics. You should complete these MOOCS in order to get a strong hold of the basics. **Semester 1** * [Introduction to Computer Science (CS50)](https://www.edx.org/course/introduction-computer-science-harvardx-cs50x) * [Effective Thinking through Mathematics](https://www.edx.org/course/effective-thinking-through-mathematics-utaustinx-ut-9-01x-0) * [Mathematics for Computer Science](http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-fall-2010/index.htm) * [Github and Git foundations](https://www.youtube.com/playlist?list=PLg7s6cbtAD15G8lNyoaYDuKZSKyJrgwB-) * [30 Days of Code](https://www.hackerrank.com/domains/tutorials/30-days-of-code) At the end of this semester, you would be having familiarity in a number of languages, including C, PHP, and JavaScript plus SQL, CSS, and HTML and you will be comfortable with concepts like abstraction, algorithms, data structures, encapsulation, resource management, security, software engineering, and web development. You will be comfortable in thinking about mathematical ideas and you would be familiar with the elementary discrete mathematics which is essential for computer science. Also, you will learn how to collaborate using Git and Github. **Semester two** * [Algorithms, Part One](https://www.coursera.org/learn/introduction-to-algorithms) * [How to Code: Systematic Program Design - Part 1 ](https://www.coursera.org/learn/introduction-to-algorithms) * [Linear Algebra Lectures - Gilbert Strang](https://www.youtube.com/playlist?list=PL49CF3715CB9EF31D) * [Object Oriented Programming in Java](https://www.coursera.org/learn/object-oriented-java) * [Calculus, Part One](https://www.coursera.org/learn/calculus1) At the end of this semester, you would be comfortable with major computer science concepts, especially Object oriented Programming. You will be also comfortable with contributing to open source projects at the end of this semester. **Semester Three** * [Introduction to Probability](https://www.edx.org/course/introduction-probability-science-mitx-6-041x-0) * [How to Code: Systematic Program Design - Part 2](https://www.edx.org/course/how-code-systematic-program-design-part-ubcx-spd2x) * [How to Code: Systematic Program Design - Part 3](https://www.edx.org/course/how-code-systematic-program-design-part-ubcx-spd3x) * [Calculus - Part two](https://www.coursera.org/learn/advanced-calculus) As you can see, this semester is more mathy, because Computer science is closely related to Mathematics and Calculus and Probability theory are very much involved in theoretical computer science. At the end of this semester, you can try your hand in solving Data Structures Code Challenges and Solving Algorithms Code Challenges to strengthen your understanding in data structure and algorithms. **Semester Four** * [Software Process and Agile Practices](https://www.coursera.org/learn/software-processes-and-agile-practices) * [Software Architecture and Design](https://www.udacity.com/course/software-architecture-design--ud821) * [Software Testing](https://www.udacity.com/course/software-testing--cs258) * [Software Debugging](https://www.udacity.com/course/software-debugging--cs259) This semester is purely on software engineering and databases. After this semester, you will be proficient with different software practices, debugging and testing different softwares which are very much necessary if you are looking to become a software developer After these four semesters, You can do specialisations from edX / Coursera / Udacity in the field of your choice or explore more about theoretical computer science. These four semesters will not make you an expert or something, but will make your computer science basics strong which is necessary for further explorations.