I don't have a CS degree. In fact, I have a degree in Business Administration. Not a bad degree, but not something that directly helps me in my day-to-day job as a software engineer. This is perfectly fine. When it comes to job qualifications, coding jobs are very much a "Blue Collar" type job, or in other words, a job that cares more about how you do the day-to-day and less about how you learned it. Degrees can help you get a job, especially your first job, but are not the only path needed.
That said, I've always been curious about what skills and knowledge one gains while getting a degree in Computer Science. I've asked several people if their degree helps them in their day-to-day job, and most say not that much. That said, It is hard to measure how much the things learned in a degree help you learn new skills. There is no doubt that the programing class I took my senior year helped me learn to code more than 20 years later. In that same vein, those who have gotten a degree in Computer Science have an interesting skill that others don't.
I'm getting a CS degree in 2022, kinda
Another exciting part of the modern web is that schools like MIT and Harvard provide many online courses for free. It is legit possible to "take" all the required classes for some of the degrees at MIT 100% online for free. I get it that you don't get credit for it, but all the skills and knowledge are there to be learned for free.
So that is what I am going to do in 2022. I will earn my CS degree using MIT Open Course Ware and the required course list found at MIT's Department of Electrical Engineering and Computer Science website.
Since I am the one giving myself this "degree," I will go ahead and accept my previous business degree in place of taking any general studies. This means the courses I am going to take are the following, in order:
- 6.0001 - Introduction to Computer Science Programming in Python
- 6.0002 - Introduction to Computational Thinking and Data Science (replacement for Fundamentals of Programing since it isn't available)
- 6.004 - Computation Structures
- 6.006 - Introduction to Algorithms
- 6.02 - Introduction to EECS via Communication Networks
- 6.031 - Elements of Software Construction
- 6.033 - Computer Systems Engineering
- 6.034 - Artificial Intelligence
- 6.042J - Mathematics for Computer Science
- 6.046J - Design and Analysis of Algorithms
In addition, I will need to pick two courses from the advanced undergraduate courses, but I will put that off until after I have finished the other courses. I intend to finish all of these courses in 2022 to end the year with my special CS degree.
One final note, I will use TypeScript for all the courses when at all possible, and I will push up all the code to GitHub.
That's, my goal for 2022 and I hope you follow me as I go through this journey this year.