The UoPeople CompSci Curriculum Guide

Table of Contents

Introduction

This guide is for the University of the People(UoPeople) BSc in Computer Science because one doesn't exist and their website is slightly confusing. It offers a 'tuition free', fully online, regionally accredited Associates (2 years) and Bachelors (4 years) degrees to anybody in the world.

They also offer a BSBA or Bachelor of Science in Business Admin entirely in Arabic then you could take one of the analytical database courses here to do ETL or extracting data, transforming it and loading it into 'business intelligence systems' like Snowflake or Databricks for analysis. You would print money going around to companies in your country and doing this as it's exactly what Palantir does.

It is possible to transfer from UoP into NYU Abu Dhabi or other universities and claim that sweet financial aid but I know nothing about that you'd have to do your own research.

Accreditation

In 2025 they received USA regional accreditation so I would expect the fees to go up soon. This accreditation means you have the same piece of paper of any state school in the US and can use it for an online MSc like Georgia Tech or Johns Hopkins or anywhere else.

Curriculum

Here is the computer science curriculum you have to pass those first 20 courses to be able to take the electives. To get a BSc these 13 courses have to be taken too which is very typical of an undergrad degree or breadth requirements but who cares it's a dirt cheap BSc.

Fees

The application fee and exam fees are based on your country's GDP and slightly discounted if you're living in the poorest regions otherwise the exam fees presently are $140 USD each and the full CompSci BSc requires 40 exams some of which require proctors (another possible fee). You pay as you go and the final cost will be around $5600 USD plus whatever proctor fees unless you get financial aid or scholarship.

A regular state or commonwealth university is lowest bound $40k minimum for tuition alone not including all the other fees or cost of living so this is a steal for the same piece of paper. Any school (Harvard, CMU, Yale, etc) will accept you for a MSc and we all know remote MSc degrees are just diploma mills these days but it doesn't matter this is how you game the system and end up with a piece of paper from ivy league no matter where you live that's the only reason I'm interested.

Proctors

An exam proctor or invigilator is someone you ask or pay to watch you taking an exam. The definition of who can be a proctor is pretty loose in their guidelines. If you know anyone in your country with some kind of recognized profession like a notary or librarian you can ask them to watch you for free otherwise ProctorU and many online services exist. Local universities typically charge $40-60 for this in North America and are easier than screwing around with ProctorU tech. Maybe 7 or so courses are proctored but this can always change.

Requirements

The only requirements for the CompSci BSc is proof of high school graduation (diploma or GED) and the ability to read and write English. I sent a photo of my highschool diploma that I was surprised to find buried in some storage box while visiting my parents. If you apply from a country that doesn't use English as an official language it's likely they will force you to take an extra English course, which you can appeal after being accepted.

Semesters

There are 5 terms per year. P/T studies is 1 course per term and F/T is 2 courses per term, depending on your academic standing you can register for more. Most courses are 3 credits, consist of 8 weeks of lessons/assignments/quizzes, and the 9th week is the final exam. You can also apply for a leave of absence to take a term or more off.

This means you can finish a BSc in 2 years if you take a F/T course load but some of the courses require an enormous amount of work you may wish to start P/T like I did and switch to F/T later. Do not under estimate the hours you'll need to put in doing courses like calculus and college algebra.

How it works

There are no live lectures which is great that means you can finish these courses on your own schedule and work F/T during the day.

The 8 weeks look exactly like this:

  • read the online learning guide notes
  • read assigned chapters of a book
  • do assignments
    • usually 'discussion assignment' writing a detailed summary
    • sometimes assigned multiple chapters of exercises (college algebra)
    • programming assignments you include the output as a .doc
  • peer grading (see below)
  • take self quiz
  • take graded quiz

Week 9 you write the exam which can be anywhere from 1-2hrs.

The platform

All the materials are free and can be downloaded for offline work. They use some edtech Moodle which many other schools like ETH Zurich use. There is a class discussion forum plus Yammer which is some proprietary Microsoft app that is a mix between Facebook and Slack that I only ever used to have my assignments fixed from the bad peer grading. Most of the program assignments you upload the source .py or .java files and the output as a .doc for grading so you will need Open Office or something similar.

There's a sort of global forum for students to post but I avoided that as it seems easy to get yourself expelled posting in one of the many political cringe threads. You have friends in real life and if they're not in your class forum then don't waste your time in the global forum it's just a troll box.

Peer review

This is a global school so you have to spell out what you are doing with almost too much documentation. Expect the person reading/reviewing your work speaks no English at all and you should do fine. Whenever I had a bad peer grade I appealed to the instructor who reversed it but I have heard from other students that sometimes they don't bother because too many appeal for frivolous reasons.

This means the key to success at this school to graduate with a 4+ GPA is to finesse the peer reviewed assignments by assuming whoever is grading you needs total hand holding and to keep the work within the parameters of the material for example I wrote a bunch of Python assignments in recursive code that nobody understood so they gave me a poor review.

You will of course come across some bozo purposely screwing you with bad peer review because someone else did it to them but remember when you appeal things they can see all of your grading too and if you're petty enough to also be bozo the reviewer then they'll ignore your requests.

Preperation (waiting to start)

As of this writing (Dec 2025) their 'prepare for your studies' recommendations actually has no recommendations.

Since you're here you can take any of these other courses to fill in gaps but I would recommend to try CATS or Programming with Categories. It has no prereqs, will teach you basic programming, will help you learn math later, is going to be in a future UoPeople course on functional programming anyway (briefly) and then you can kind of see everything the UoP curriculum is trying to teach you through the lens of category theory. You'll recognize that classes are just data types which really are just sum types which are really just a finite coproduct in Category Theory. You get an overview of everything then when working through the rest of the UoP curriculum you can come back to this model and try and figure out what you just learned where it fits in the model. There are videos on youtube or audit the notes which are surprisingly good and basically a work book with many exercises.

If it starts making sense then try Applied Category Theory as you finish this because databases, graphs, they'll all be there.

General Ed req

UNIV 1001

This is a mandatory course you take about the perils of cheating, how to organize your time and how to study. Many students cut+paste their assignments, use chatgpt or grok and were banned in the courses I took don't be one of those students.

Studying

Some good advice is here and skip to the heading Part One – Learn Concepts by Analogy. Make a 'notes compression' of all essential topics. Break everything down and ask why is it all defined this way, come up with a metaphor that fits the pattern, attempt to teach it to an invisible class yourself. If for any reason you can't effortlessly teach everything and find yourself stumbling then go back and relearn it coming up with your own examples.

Math Courses

Math 1201 College Algebra (Proctored)

Syllabus here. This is a course with 40 pages of reading assigned per week and uses this OpenStax book. Remember algebra is a system of balancing invented to figure out Athenian inheritance law and it's modern version is from the Caliphate trying to figure out Islamic inheritance law balancing and scaling both sides to avoid negative numbers so many problems you can solve by doing the same thing and moving stuff around.

I highly recommend taking the Wildberger arithmetic and algebra videos in the math tripos workshop because he's very good at simplifying complex objects to it's essential properties.

I'll speed run the syllabus:

Always convert everything including radicals/decimals into a rational expression then combining these is straight forward. For example in the OpenStax book: 1.1 Exercises:

  • 6 div 2 - (81 div 32)
  • 6/2 - (81 * 3-2)
    • = 3 - 33 * 3-1
    • = 3 - 32

Any inequality can be reduced to the problem of finding the minimum of a function. The square of any variable can be assumed to be positive if the variable is not zero and this is often used in manipulating inequalities.

One technique is to substitute out an expression by assigning it to a new variable then move that variable around as a single abstract unit before substituting back at the end of all your manipulations. For example (ax + bx)(sqrt(x) * sqrt(x)) you could rewrite that as (ax + bx)y2 or whatever scheme you want to come up with to avoid having to tangle with a bunch of junk every step of a problem. In elementary math like this almost always by rewriting something into the most abstract form possible you immediately see it is a hidden quadratic or something easy to solve or factor I swear that all exams and homework the instructor takes what they want to teach you such as (a + b)2 = a2 + 2ab + b2 then from there uses substitution themselves to inject complexity such as replacing the variable 'b' with nested square roots or fractions over fractions to trip you up from seeing the greater picture or pattern of what's going on.

Polynomials can be used to approximate a function meaning if you were to record some data like the position of throwing a ball up in the air until it hit the ground you could graph this data then come up with a polynomial that fits the curves in the graph as a model of your experiment. Once you get a polynomial approximation you can now get all it's statistics and learn everything you can about that function such as the minimums/maximums. It would have been nice to know this in highschool when we all spent countless months being forced to factor and find zeros of polynomials with no clue why we were doing so.

Logarithms are linearized exponents and were invented to make dealing with large numbers easier by working with their logs instead. In calculus you only ever use base e or 'the natural logarithm' and 3Brown1Blue has many videos about e on YouTube. Because it's derivative is itself you almost always use e in computer science too because log base 2 and log base e are only off by a constant factor which is typically ignored in asymptotic notation then you get to enjoy all the nice properties of exp() and log() which is taught in calculus.

Trigonometry see the Brown Trig Boot Camp or watch 3Blue1Brown videos about it on YouTube. This is another linearization as you move around the unit circle there's a point that goes up and down the y-axis and a point going back and forth on the x-axis in a linear (periodic) way. Probability Wildberger has a good set of videos here the expected value is the mean, the variance is how far apart everything is and a random variable is a filter over the probability space and then folding all those filtered probabilities into a single value.

Math 1211 Calculus

Syllabus here. Uses OpenStax text again. Watch the 3Brown1Blue videos Essence of Calculus. A derivative is a linear operator where 'operator' means function the idea is if you super zoom a point on a graph it's immediate neighbors all seem to lay on a straight line and that's the tangent. Linearize the entire function with this imaginary tangent at all points and you get a new function that is derived from the old one. F(x) = x2 becomes F'(x) = 2x and (indefinite) integration is the undo method you integrate 2x back to x2 and definite integrals are taught as this limiting process of a bunch of partitions being summed.

You may want to read at the same time the free book The Calculus Integral by Brian S. Thomson it teaches a 21st century integral the author calls 'the natural integral on the real line' sometimes called the guage integral or the Henstock-Kurzweil integral which replaces the Riemann integral (also replaces the Lebesgue integral definition) and there is no need for any 'improper integrals' nonsense as they don't exist. This book helps to understand concretely what continuity means and every calculus proof is much simpler using this integral instead of having to prove the fundamental theorem of calculus by invoking the mean-value theorem and adding a silly hypothesis that things must be Riemann integrable. Gone are the proofs that a continuous function must be uniformly integrable too and other gnarly requirements that make proofs harder to write.

Math 1302 Discrete Mathematics

Syllabus here. Poh-Shen Loh uploaded his CMU combinatorics course to YouTube and watching just a few of these lectures helps you understand how to do these problems.

I'm pretty sure they use Levin, O. (2019). Discrete mathematics: An open introduction (3 edition). CreateSpace Independent Publishing Platform. http://discrete.openmathbooks.org/pdfs/dmoi-tablet.pdf and the only part that may hang you up is proof by induction because they always explain it with this row of dominoes being pushed over nonsense analogy.

Induction is the art of leaping to a general conclusion after you have investigated special cases. An example from the book is prove for each natural number n >= 1 that the sum of 1 to n is n(n+1)/2 and imagine yourself trying every special case so you try the sum of 1 = 1(1+1)/2 and it equals 1. You try the sum 1 + 2 (n = 2) and 2(2+1)/2 = 3. You try every case you can think of and the property that the sum of 1 to n is n(n+1)/2 seems to always hold so assume that for all n this property is true now prove it holds for n + 1 or the successor case:

  • Claim: 1 + … + n is n(n+1)/2 for any n >= 1
  • 1 = 1(1+1/2)
    • Show it works for n=1 or n=0
    • Kind of pointless if we assume it works for all n simply assume it works for the base case too
  • Assumption: 1 + .. + k = k(k-1)/2 is true
  • Add (k + 1) to both sides to prove:
    • = 1 to k + (k + 1) = (k + 1)(k + 2)/2
    • = 1 to k + k + 1 = 1/2 * (k2 + 3k + 2)
    • = 1 to k + k + 1 = k(k + 1)/2 + 2k/2 + 2/2
  • We assumed previously that k(k+1)/2 is equal to everything on the left side so now we can substitute that left hand side in
    • = 1 to k + k + 1 = (1 to k) + k + 1 and both sides are equal

Proof by induction you often want to manipulate via algebra to get one side of the equation to match the exact form of the assumption. When proving bounds for recurrences T(n) = (n - 1) + c you assume up to (n - 1) the bound holds, then prove it for T(n) by substituting in the big-O math definition of that bound.

Example T(n) = (n - 1) + c is O(n) where O(n) is defined as f(n) <= cn or a constant factor of n. If you've never seen recurrences try examples:

  • T(n) = (n - 1) + c
  • T(1) = (1 - 1) + c or 0 + c
  • T(2) = T(1) + c and T(1) was 1c
    • c + c = 2c
  • T(3) = T(2) + c and T(2) was 2c
    • 2c + c = 3c
  • T(4) = T(3) + c and T(3) was 3c
    • 3c + c = 4c

Looks like every input to T(n) is nc so let's prove the bound:

  • T(n) = (n - 1) + c is in O(n) which is cn or linear with a constant factor
  • Assume (n - 1) is cn for c >= 1
    • T(n) = c(n - 1) + c (substitute assumption into orig recurrence)
    • T(n) = cn -c + c
    • T(n) = cn

There was no adding of n + 1 to each side here because we assumed all inputs up to T(n - 1) were true and proved it for T(n) because if you look at the above recurrence it's defined T(n) = (n - 1) so we were already proving it for the T(n) case or n + 1 case. If we assumed T(n) was O(log(n)) then T(n) = clog(n - 1) or if we assumed T(n) was big-O n2 then T(n) = c(n - 1)2

This will probably be the hardest course if it is a proctored exam so practice a lot go through all the examples in the book and make sure you can prove them yourself.

Math 1280 Intro to Statistics

Syllabus here and there's many free workbooks on probability/stats and lectures (wildberger again) on the central limit theorem.

Computer Science Courses

CS 1101 Programming Fundamentals

8 week course that follows the first 12 chapters of the book How to Think Like a Computer Scientist by Allen B. Downey. You could combine this course with another no problem if you already have some kind of programming background.

Practice:

  • CodeCheck Python exercises
  • TA-Generated Problems from CMU's 15-110 similar to the Downey book
  • 15-112 which has much more difficult assignments. Click on each topic, there are short video lectures.

I have never liked Python as Python 2 was a scope disaster and Python 3 scope is also trash. Any library builtin you use is going to pollute the entire global scope too. It is what Robert Harper refers to as a bucket language where all the designers just throw everything in a bucket and each new addition breaks everything else.

CS 1102

Uses this book when I took it. Straight-forward intro to Java that anyone can do, can also be combined with another course the work load wasn't too much. The majority of the work for the rest of the degree will be Java such as their algorithm analysis course.

Practice:

  • CodinGame easy and medium puzzles you can do in Java.
  • 6.031 MIT's 2021 version which still used Java (now TypeScript).
    • Assignments on OCW but reading the notes is good enough.

The more development you do the easier this becomes. Choose a large open source project somewhere that is full of optimizations and rewrite the entire thing in your language of choice as a side project. Now you will have to read someone else's code (a good skill to have) and do it all from scratch yourself hopefully investigating better ways to optimize what they've done. There's no reason you can't rewrite the tor daemon from scratch or write your own database or browser or kernel mods or anything really and the more time you spend doing this the better you get at development.

Transfering to a university

If you attend a university already or you somehow can transfer to NYU in the Emirates then your goal should be to get involved in as much research on campus as possible and take the least amount of electives as possible. You should be able to convince the university that the research you are doing should count for electives now you avoid wasting your time and money while graduating at the top of your game with practical research experience. You may even be able to get a letter of recommendation from one of the PhDs you worked with which is worth more than any diploma.


Home