ACU is an Open University primarily dedicated to preparing & working for Big Tech companies (FAANG, FAANG+, Fortune 500, enterprises, and startups) by providing Career Services, Resources (Roadmaps & MOOCs), Networking, and Academic Advisory for CS/CSE only.
Note: If you find current onboarding hard, please issue a ticket and explain.
The Mind Map is divided into right (for the resources) and left (for the services). Topics advance as you go from the top to the bottom. For a full explanation, check ACU Mind Map Explanation.
Active Courses University is a community targeting to work in Big N. Similar to OSSU, it provides educational resources & help. Additionally, ACU provides professional Career, Networking, and Academic Advisory services.
ACU community is not "yet another Stackoverflow-like" community; The real benefit you will gain is not an answer to your question, but connection with everyone who answered.
Since there is no one use-case fits all, this is how will the community benefit you if you are a: Self-taught, Student, Junior, Senior and above.
Similar to universities, services are provided mostly by peers/students, and some by professionals (> 3 YoE). ACU members are all authentic members providing Services (Tutoring, Course curation (via feedback & comparison), Career Services, Academic Advisory, and much more in Services Onboarding).
For a full comparison between ACU and other servers, online communities, paid boot camps and real universities, Check ACU Comparison.
ACU Resources consist of three primary resources (OSSU, CS Fundamentals, and Big N SE Roadmaps) utilizing suggestions from Pioneer Software Engineers and other reliable sources. Unlike OSSU, ACU provides multiple options per subject tailored to each student's needs. Further information is in Resources.
If you like the idea, share it. You will benefit directly & indirectly. Your tutor, coach, mentor, or study buddy might be the colleague you invited or invited by him. Try to share it on your Twitter, Facebook, or class group, or ask someone famous to share it.
Check Community to join us.
- To pick courses, check Resources Explanation before you dive into any course.
- Temporary course maintenance Notes:
- Courses are still not peer reviewed; it is another student's suggestion but has not been reviewed by a college professor or senior SWE despite being the best courses in the field.
- This means one might overstudy or understudy a subject (e.g., study too many algorithms).
- Currently, the only solution is to ask a mentor or students about your specific case (where you want to work? Which minor?...).
- This problem is not limited to ACU; unless the community has a peer curriculum maintainer, it is guaranteed that it will have the same problem, and they did not mention it as they were unaware.
- Course reviews will be provided in the GitHub Issues soon. Please take the initiative and provide your course opinion if you have taken the class.
- A lot of courses are still not added here but are mentioned (Pinned in each channel, written in OSSU or Omar Shawky's CS-Roadmap) and will soon be merged.
- Resources are better represented on the Website.
- Courses are still not peer reviewed; it is another student's suggestion but has not been reviewed by a college professor or senior SWE despite being the best courses in the field.
Topic | Course Name | Topics Covered | Course Prerequisites | Course Reviews |
---|---|---|---|---|
Introduction to Programming (Pick this or Dr. Mostafa below) | How to Code - Simple Data & How to Code - Complex Data |
|
N/A | #TODO |
Computer Science: Programming with a Purpose |
|
N/A | #TODO | |
Programming Languages | Programming Languages, Part A, Programming Languages, Part B & Programming Languages, Part C which covers all topics in "Concepts of Programming Languages by Robert W. Sebesta 12th Edition" & "Programming Language Pragmatics by Michael Scott 4th edition" |
|
How to Code (Check OSSU for details) | Makes one able to skim through programming languages documentation easily as most concepts are taught. Course leans more to CS than to SW as it teaches Functional Programming. Have medium-sized projects. |
Introduction to Programming + Programming Languages + OOP + Problem-Solving | Mastering 4 Critical Skills using C++ 17 by Prof. Mostafa Saad |
|
N/A | ICPC Finalist. Ph.D. in Computer Vision. Senior SWE. Senior Computer Vision Engineer. Course is premium and does not provide autograder. Extremely suggested if feasible. Premium and Udemy courses do not provide autograder. Course provides very broad exposure to Software Engineering Discipline Principles and practices in relatively short time. Have medium-sized projects. |
DSA (Pick one) | Princeton Algorithms Course Part 1 & Princeton Algorithms Course Part 2 |
|
Basic knowledge with programming languages and OOP | DSA Review |
Mastering critical SKILLS in Data Structures, Algorithms Part 1 & 2 using C++ | #TODO | ICPC Finalist. Ph.D. in Computer Vision. Senior SWE. Senior Computer Vision Engineer. Premium Course. Extremely suggested if feasible. Leans more to Software Industry Job Preparation as it is only Problem-Solving based. | ||
Problem-Solving (Pick one) | Neetcode 150 | Check out the website. | At least 1 Programming Language, DSA (Highly Recommended) | Created by a guy who worked at Google for ~1 Year |
Mohamed Ayman Problem-Solving Training | Senior SWE with TA experience. Very similar to Neetcode but more specific and broader. More newbie friendly than Neetcode. | |||
Prof. Mostafa Saad critical SKILLS for Coding Interviews C++: Part 1 | ICPC Finalist. Ph.D. in Computer Vision. Senior SWE. Senior Computer Vision Engineer. Course is premium and covers only Data Structure. Extremely suggested if feasible. Has other courses which cover DSA for newbies similar to this. | |||
Operating Systems | UW-Madison CS-537: Introduction to Operating Systems (Based on Operating Systems: Three Easy Pieces) | |
C Programming Language, Computer Architecture Concepts | #TODO |
Database Systems | CMU 15-445/645: Database Systems |
|
C++ Programming Language, Operating Systems | #TODO |
To be done...
- Before diving into the following resources, you can first check "What they are about" from Essential Explanation.
- Essential skills:
- How to ask questions?
- Dr. Mostafa's advice on how to ask (Arabic).
- Watch Coursera's "Getting Help" video.
- Read Stack Overflow "How to ask".
- Read FreeCodeCamp's "How to ask good questions" article.
- Read about XY Problem.
- Ask a binary question if possible. (I.e., True/false)
- If not, Ask the enclosed question if possible. (I.e., the question that has an expected answer; E.g., Which color? "Red", "Green", "Blue")
- If not, ask open questions and supply atomic information in an enumerated form. (E.g., "How to study Algorithms?" 1. I know math. 2. I know Programming Languages.)
- Note: Atomic information is the simplest form of information possible that can not be further broken down into even simpler data and can never hold more than a single meaning.
- Check the following question template:
// Template 1: # How to do *X*? ## What I am trying to do (Heading is not a question) I am trying to do *Z* via *W* & *Y*. ## What I tried I tried *A*, *B*, *C*. ## Where did I reach 1. *A* can't be done because of Reason *D* 2. *B* can't be done because of *E*. 3. I am facing error *F* while doing option *C*. // Template 2: (after greatly practicing template 1) # How to do *X*? 1. I am trying to do *Z*. 2. Tried option *W* but can can't do it because of *A*. 3. Tried Option *Y* but I get error *E*. 4. Googled *E* and only found 1 2 3 links but couldn't solve it.
- Who to ask before you ask?
- How to study and not forget what you studied? Use Obsidian (using Zettlekasten & Wikipedia styles)
- What is your opinion about X/Y/Z Course?
- How do you plan and solve most of your problems (in life and the field or industry) smartly with the least thinking effort and minimize failures?
- Check "How to ask?" above.
- Check related records or background about who is giving you the advice. If he is advising on "How to work at Google?" he must have worked there at least.
- Avoid unaccountable advice or courses from unreliable people, even if they are free. Unless a person is accountable for what he says and has an active track record, treat every word with a grain of salt.
- For you to ask someone, you need to build a relationship with them. You also might need to show that you also help when you can, as this will increase the chances of getting help.
- Firmly believing that you are not exceptional by any means. 99.99% of your problems have faced others as well, and they developed a solution for them, but you just didn't research enough.
- How to ask questions?
- Essential tools: git-and-github (in ACU-English channel or ACU-Arabic channel) & Linux (in ACU-English channel or ACU-Arabic channel).
- Knowledge Base:
- @Student: recommended forum (in ACU-English or ACU-Arabic).
- For @Trusted: knowledge base forum (in ACU-English or ACU-Arabic).
- For the explanation, check Career Resources Explanation.
- You can find them in Channels & Categories Onboarding.
- Do not waste your efforts on rude people; Don't try to respond to bullying or any rude text, please mention @Moderator.
- Hateful discussion is prohibited, and you will be banned forever.
- The Server has 0% tolerance against contentions like Religious Disputes/Curses, Politics, Sexism, and NSFW Content (Curses or Images).
- Never do "Character assassination". Even for a person who isn't on the server.
- You are allowed to criticize respectfully & objectively. E.g., You can claim a course to be a "Scam" (only If you have proof) but you are not allowed to curse its instructor.
- Do not give advice when you are not eligible. For example:
- Do not tell anyone "How to become a good Software Engineer" unless you are reciting from a credible source, or you have 5+ years of experience.
- Do not say "This resume advice is wrong" unless you have a contradicting credible source, or you are a recruiter/hiring manager (at the same companies that the person is talking about).
- If talking needs more than 2 replies, you must open a thread.
- If you ask a question, be responsive to answers.
- Never ask the same question twice.
- Never ask before doing your research & showing it.
- Don't mention people (E.g., @omar1111) or DM unless they are comfortable with it. (ESPECIALLY @Mentors)
- Don't ask to ask; Ask right away.
- How to use Discord:
- Can't find a study buddy or anyone to help in a course?
- Have you tried your best to share this server in all the communities that you are in?
- Did you try to ask on the server for anyone who knows someone who is studying course X?
- Read Essential.
- Students (@Student):
- Who is @Student? Authentic admitted people who applied using one of the authentication methods in the entry channel in the Discord server.
- What are their benefits?
- Find tutors for the entire right side of the aforementioned Mind Map.
- Ask mentors.
- Have access to life-after-grad channel which provides help with ACU Services (everything on the left side of the aforementioned Mind Map) and internships channel.
- IMPORTANT NOTE: All the benefits are limited. For example, people asking questions in Princeton Algorithms Part 1 Week 6 will help people in Week 5, and the hierarchy goes on. The student receives a single warning if they do not offer help as they were helped. The second time, he is banned. (Reason in Members Explanation)
- @Alumni: Like @Student but with industry/academic experience and looking for career advancement.
- Trusted (@Trusted):
- Who are @Trusted? People supporting the community. They are nominated by 2+ @Trusted. They are offered quite much more help as compared to @Student/@Alumni.
- What are their benefits?
- Have access to the real server (entire ACU Services which is
$3X$ what @Student has access to). - Have full access to exclusive resources that are only available to them.
- Can be nominated to higher roles.
- Have access to the real server (entire ACU Services which is
- How to be @Trusted?
- Think of being @Student as an interview. Each question or help tells @Trusted more about you.
- Support the community as much as you can; Ask "How can I help the community?" or infer it.
- Provide ideas, resources and help. Check channels where you can provide help. Ask us to create one (if it is missing).
- Find and collaborate with people with mutual interests. For example:
- Find people applying for internships (in ACU-English or ACU-Arabic) or applying for full-time jobs life-after-grad (in ACU-English or ACU-Arabic).
- Help people with their resumes in life-after-grad (in ACU-English or ACU-Arabic).
- Special Roles: Only explained in Discord under their category.
- Mentor (@Mentor): An expert (with 5+ years of experience) who is open to providing mentorship.
- For the explanation, check Services Explanation
- For the explanation, check Academia Explanation.
Currently, no dedicated channels for it, but most people will answer you. For example, you can ask about graduation projects or CVs life-after-grad (in ACU-English or ACU-Arabic).
- For the explanation, check Career Explanation.
- Anything between quotes means a node in the aforementioned mind map.
- Career Services are carried out in the following places.
- life-after-grad channel: For @Student to discuss "Career" except "Problem-Solving Training".
- SPECIAL CATEGORY: For @Special Roles to discuss "Career Advancement" and "Discussions".
- SUB-COMMUNITIES:
- Open Source Programs (Name of Community):
- general-osi channel.
- gsoc channel.
- New Grads (Name of Community): CAREER Category.
- Open Source Programs (Name of Community):
- CAREER Category:
- For @Trusted to discuss "Problem-Solving Training", "Profile Review", "Interview Preparation", and "Job Search & Application".
- Partially for @Student to discuss "Problem-Solving Training" and search & apply together (mutually apply) to internships.
- For the explanation, check Sub-Communities Explanation.
They are all carried out in SUB-COMMUNITIES.
- For the explanation, check Networking Explanation
- @Student networking options are limited to studying channels and general mentorship (in the category MENTORSHIP).
- @Trusted networking options are like @Student but extend to their exclusive channels.
- For beginners, pick an interactive channel where you can collaborate with others. internships, ps-grinding. For more advanced members, tackle questions in Q&A, especially life-after-grad.
Provided only under the "MENTORSHIP" Category.
- For the explanation, check Mutual Mentorship, Coaching and Tutoring.
No dedicated channel. Provided throughout the entire server.
- For the explanation, check Events Explanation.
Third-party events are available only on the Arabic ACU Server in recommended events.
- Brief & ordered from top to bottom.
- Not all channels are mentioned to avoid redundancy.
- All channels mentioned are just for @Student (which is 40% of the entire server).
- Always check pinned messages.
- COMMUNITY:
- announcements: Any major updates in the server. @everyone tag is only used for important announcements.
- ask-mod: Used for newbies or issues within the server or moderators.
- server-suggestions: Things you wish in the server.
- NEWCOMER:
- entry-rules: Rules to apply as @Student.
- entry: Where you apply or grant people.
- general-newcomers: Used by members who do not want to enroll and keep anonymous. Further similar channels will be added if there is traffic that requires anonymity.
- MENTORSHIP
- mentors-announcements: All mentors announcements.
- SPECIAL CATEGORY: This is not the name of the category but some set of categories that have the following similar channels:
- general: Place for members to get answers from all special roles members.
- side-channel: Like "general" above but requires just one answer.
- knowledge-base: Stackoverflow-like for resources between members.
- SOCIAL:
- off-topic: For non-cs type of questions (E.g., ask for opinions, what is Gen-Ed?...).
- GENERAL: Channels that do not fit anywhere else.
- recommended: Stackoverflow-like resources for @Student.
- recommended-events: Suggested events that are not organized by ACU (the Miscellaneous events in MidMap above).
- general-questions: Topic-less Q&A.
- life-after-grad: Topic-less Q&A but for graduation year (E.g., graduation project) and beyond (E.g., resume review).
- From CORE PROGRAMMING to CORE SYSTEMS: Categories ordered after OSSUs' curriculum. Contains general channel for each topic (in OSSUs' curriculum) and a specific channel for each course covering the same topic (E.g., general-dsa & princeton-algo-part1). You can study OSSUs' courses here or there in addition to ACU SE-oriented courses.
- CS-SUB-FIELDS: For CS-minors.
- general-cs-subfields: For CS-minors that have low traffic.
- general-ai
- STACKS & TECHNOLOGIES: For cs-minors stacks but currently has SE-stacks.
- general-stacks-and-technologies: Mainly to ask about multiple domains at once and to discuss stacks of low traffic (do not currently have dedicated channel).
- SUB-COMMUNITIES: For Communities that do not require more than 2 channels for discussions.
- Open Source Programs (Name of Community).
- general-osp: Topic-less discussions about Open Source Internships like "How to prepare".
- gsoc: General discussions about Google Summer of Code.
- Open Source Programs (Name of Community).
- CAREER: For career-specific preparation topics. For general discussions (E.g., Offer negotiation), go to life-after-grad or general (for specific roles).
- ps-grinding: Accelerate studying problem-solving by studying for others to increase commitment level. Similar to mock interviews, except that each pair of people decides their terms (E.g., no camera, no voice communication...). In other words, it is half-mock-interviews.
- mock-interviews: Schedule mock-interviews between @Trusted only. Ask for a random mock or prepare before an interview (mock all day).
- internships: Share and discuss internship options, application process, and tips between @Student.
- vacancies: Applications resources. Each application has a link and useful information (Company, Job, recruiters and hiring managers) to further facilitate your application chances.
- mutual-apply: Apply together at the same time to the same vacancy.
- ALUMNI:
- general-alumni: For other uncategorized alumnus topics of interest.
- professional-inquiry: For professional communication, conflict resolution, and negotiation questions & guidance. Mainly for Alumni, but Students can participate.
- career-advancement: For All career questions & knowledge exchange of Alumnus.
- personal-finance: Money transactions, taxes, benefits, retirement, Investment, and so on.
- ARCHIVE: Old channels replaced with ways/channels of doing things or that do not have traffic anymore.