Completing a Stanford Computer Science Degree without going to Stanford
After graduating with a CS associative degree from a community college in Canada, I am supposed to finish my bachelor’s degree in UBC. But as an international student, I can’t afford the high-priced tuition in any major university in Canada. To balance between going to work and wanting to learn more, I have decided to earn my “degree” at home.
To keep track of my progress and keep myself motivated, I will periodically write on Medium and use it as a notebook and journal. All the notes and material will be open to anyone. If someone wants to do the same thing, I hope this will help.
I did some research into the requirements of a bachelor’s degree from Stanford’s website and gathered enough information to set my foot on the journey.
Let’s begin with my goal and expectations from doing this.
First of all, I don’t expect that finishing all the required courses can indeed earn me a Stanford degree. I don’t equate this self-teaching education to their real life educational experience. I lack the experience working with talented people, hand-on labs and experiments, and the academic atmosphere, and so much more. I do expect to attain at least 1/4 academic knowledge from what they can get. And my goal is to finish all the required courses, following from their template, to get a Computer Science degree, concentrating on Artificial Intelligence.
From my definition, to pass a course, I have to finish most (4/5), if no all, of the homework assignments and pass them, get at least 70% on the midterms and final.
OK, here’s the requirements of getting a bachelor’s degree in science at Stanford:
- Minimum of 180 Units (Most of the Courses Are 3–5 Units)
To major in Computer Science, I am expected to get a total of 96–106 units from Computer Science courses. Different majors have different requirements, see here.
- Meet the Writing, General Education, and Language Requirements
One THINKING MATTERS course during your first freshmen year.
Eleven certified WAYS(Ways of Thinking/Ways of Doing) courses, with two courses in WAY-AII (WAY-AII: Aesthetic and Interpretive Inquiry), WAY-SI (WAY-SI: Social Inquiry), and WAY-SMA (WAY-SMA: Scientific Method and Analysis), and one course in each of the remaining five WAYS (WAY-AQR: Applied Quantitative Reasoning, WAY-CE: Creative Expression, WAY-ED: Engaging Diversity, WAY-ER: Ethical Reasoning, WAY-FR: Formal Reasoning).
Three courses for writing: Program in Writing and Rhetoric (2 courses required, PWR 1 and PWR 2), and a Writing in the Major (WIM) course.
Complete one year of college-level study or the equivalent in a foreign language. (Note. Since I am a Chinese, I will skip this requirement)
See more info here.
- Major Requirements (For Computer Science, Concentrating on Artificial Intelligence)
Minimum of 26 units in Math.
Minimum of 11 units in Science.
3–5 units (one course) in Technology in Science.
Minimum of 13 units in Engineering Fundamentals.
One course from Writing in the Major.
15 units in Computer Science Core.
Minimum of 25 units and 7 courses in your chosen track.
See more info here.
As for the the writing, general education, and language requirements, I have to choose classes from EDX.org and some other platforms since Stanford lacks the material for outsiders. And also EDX.org has more interactive functions and more feedbacks for learners, it’s much more ideal to learn that kind of classes on this platform.
Here’s the list of courses I will take. The format for each item is
Course Name, Course Number, School, Website (if any), Units
- Introduction To Music Theory, OHARM-100x, Berklee, EDX.org, 3
- Introduction to the Music Business, MB110x, Berklee, EDX.org, 3
- Social Learning for Social Impact, GROOCx, McGill, EDX.org, 3
- Making Government Work in Hard Places, MGWx,
Princeton, EDX.org, 3
- Solar Energy, Delft, EDX.org, 4
- Climate Change: The Science, Climate1x, UBC, EDX.org, 3
- The Analytics Edge, 15.071x, MIT, EDX.org, 4
- Product Design: The Delft Design Approach, DDA691x, Delft, EDX.org, 3
- Justice, ER22.1x, Harvard, EDX.org, 4
- Introduction to Negotiation, Yale, Coursera.org, 3
- The Science of Happiness, GG101x, Berkeley, EDX.org, 3
- A Global History of Architecture, MIT, EDX.org, 3
- Adventures in Writing, Stanford, Stanford Online, 3
- Writing in the Sciences, Stanford, Stanford Online, 3
45 Units for WGL requirements
- Programming Methodology, CS 106A, Stanford, Web, 5
- Introduction to Computer Science and Programming, MIT 6.00, MIT, Web, not for credit
- Single Variable Calculus, MIT 18.01SC, MIT, Web, 5
- Multivariable Calculus, MIT 18.02SC, MIT, Web, 5
- Mathematical Foundations of Computing, CS 103, Stanford, Web, 5
- Mathematical Problem-solving Strategies, CS 103A, Stanford, Web, 1
- Introduction to Probability for Computer Scientists, CS 109, Stanford, Web, 5
- Logic and Automated Reasoning, CS 157, Stanford, Web, 3
- Differential Equations, MIT 18.03SC, MIT, Web, 3
- Linear Algebra, MIT 18.06SC, MIT, Web, 3
- Physics I, MIT 8.01, MIT, Web, 4 (Substitution for PHYSICS 41)
- Physics II: Electricity and Magnetism, MIT 8.02, Web, 4 (Substitution for PHYSICS 43)
- Physics III, MIT 8.03, MIT, Web, 4 (Substitution for PHYSICS 45)
- Leadership for Engineers, LfE101x, Delft, EDX.org, 3
- Programming Abstractions (Accelerated), CS 106X, Stanford, Web, 5
- Circuits and Electronics, MIT 6.002, MIT, EXD.org, 5
- Linear and Discrete Optimization, École Polytechnique Fédérale de Lausanne, Coursera, 4
- Computer Organization and Systems, CS 107, Stanford, Web, 5
- Principles of Computer Systems, CS 110, Stanford, Web, 5
- Design and Analysis of Algorithms, CS 161, Stanford, Web, 5
- Artificial Intelligence: Principles and Techniques, CS 221, Stanford, Web, 4
- Machine Learning, CS 229, Stanford, Web, 4
- Multi-Agent Systems, CS 224M, Stanford, Web, 3
- Information Retrieval and Web Search, CS 276, Stanford, Web, 3
- Object-Oriented Programming from a Modeling and Simulation Perspective, CS 249A, Stanford, Web, 3
- Large-scale Software Development, CS 249B, Stanford, Web, 3
- Operating Systems and Systems Programming, CS 140, Stanford, Web, 4
- Software Design Studio, CS 190, Stanford, Web, 3
- Program Analysis and Optimizations, CS 243, Stanford, Web, 4
- Senior project, CS 191, Stanford, Web, 6
Total units for the major requirements: 116
- Introduction to Electrical Engineering and Computer Science I, MIT 6.01, MIT, Web, 5
- Introduction to EECS II, MIT 6.02, MIT, Web, 5
- Signals and Systems, MIT 6.003, MIT, Web, 5
- Elements of Software Construction, MIT 6.005, MIT, Web, 3
- Web Applications, CS 142, Stanford, Web, 3
- Introduction to Databases, CS 145, Stanford, Web, 4
- Software Engineering, CS 295, Stanford, Web, 3
- Graph Algorithms, CS 267, Stanford, Web, 3
- Object-Oriented Systems Design, CS 108, Stanford, Web, 4
Total units for electives: 34
Toal units of all courses: 195
Total courses: 53
CS 106A and MIT 6.00 are somewhat similar in a way that they both introduce beginners to the programming world, but 6.00 has a faster pace and 106A has a funnier professor. So I will take them simultaneously.
The above courses are subject to change, but there would not be any big change unless there is a lack of material from some courses.