Skip to main content

Hello World!

What Is This Site's Purpose?

Hey there! I'm Yazan and Software Engineering student at York University. The purpose of this personal project is to cover FAQs and advice from myself as a student, to prepare Software Engineering students to be successful in their degree such as courses, roadmaps, etc. Even if you aren't in Software Engineering, I'm sure there is some things here to take away.

Why Did I Make This?

Engineering has an overwhelming number of courses you will take, including courses specialized for us that other non-engineering students will probably never take. So, there isn't much information on what to expect in these classes, other than the course code and name. I'm here to bridge this gap for my fellow engineering students.

I am hoping this to be a long-term project until I graduate, as I expand on more knowledge and experience moving forward.

warning

This is an unofficial guide unaffiliated with York University. So, expect the information here to be based on my own opinion and experience.

danger

Some things in the program may change, so always do your own research and verify that the information is up to date before following this guide.

Course Rating Criteria

info

I will NOT be rating classes based on how the professors are. Professors run classes differently, so a manageable class might be harder than it needs to be (the opposite is also true). This also assumes these courses are done the way and topics that is supposed to be taught.

I'm going to rank classes similarly to this video from Tamer Shaheen: Ranking Engineering Courses from Easiest to Hardest, who ranks his mechanical engineering classes in a tier list. Similarly to his video, I will ask these four questions:

  1. How difficult is it to grasp the course content?
  2. How is the workload?
  3. Do you need to know the material for future classes?
  4. Is it useful in the real world?

And grade them by usefulness and difficulty:

Example ranking

🟡 Difficulty: 6/10 🧩 Usefulness: 6/10

Difficulty (1-10)

  • 🟢 Easy (1-3): Requires minimal effort to pass, mostly course content being trivial.
  • 🟡 Medium (4-6): Good effort needs to be put in to do well in the course. Topics are mostly straightforward to grasp with maybe some harder topics here and there.
  • 🔥 Hard (7-8): Needs more investment than the average course, takes time to understand most of the course material.
  • 💀 Very Hard (9-10): Heavy attention is required with difficult topics and workload, they'll be your hardest classes in the SWE program.

Usefulness (1-10)

  • 💤 Useless (1-3): Nice to know, but there's little to no relevance of what you'll likely be doing after graduation. Additionally, the class is a pre-requisite to just one future course or no course at all. Its content also may be very similar to a past course where you won't learn a whole lot (ex. CHEM 1100, EECS 2200).
  • 🧩 Somewhat Useful (4-6): In theory you don't strictly need this course to work as a developer, but it can change the way of how you see things within or outside of your technical work. Can be useful for very niche fields like formal verification, quantum computing, OS development, embedded systems, etc. It also may be a pre-requisite to some classes (ex. EECS 2021, MATH 1014, PHYS 1801).
  • 🎯 Useful (7-8): You don't need to be an expert in the domain, but it can help when you approach certain problems and encounters as a developer. Useful in more common domains like Machine Learning, Cybersecurity, Databases, Data Science, etc. Also useful in general outside of technical work and life. Finally, it can be a pre-requisite to a lot of courses in your upper years. (ex. EECS 2032, EECS 3221, ESSE 2210)
  • 🚀 Vital (9-10): The course topics will always show up in your work as a software developer / engineer and interviewing for these roles, no matter how much you avoid them.

Final Tier Grading

Next, I'll categorize these classes using the following:

  • 😎 S-tier: Essential in the real world, ignoring difficulty.
  • 🙂 A-tier: Useful and doable.
  • 🤔 B-tier: Difficult, but worth the effort of learning.
  • 😒 C-tier: Not very useful but doable.
  • 😢 D-tier: Nice to know but not worth your time, just grasp the foundations.
  • 😭 F-tier: Difficult and completely useless, makes you question why you did engineering in the first place.

Contributing

I have written a lot on stuff in this guide, so there's room for some errors like grammar or outdated information. If so, feel free to open a pull request!

If you find this guide helpful, consider starring it on GitHub!

Last updated: Jan 6, 2026