Datasets for Data Science, Stats, Machine Learning, and more.
Here is a list of free APIs to mess around with.
Open access to a wide range of scholarly articles, including Computer Science
Simulated computer that can run assembly. You can view the real time actions of the computer, its registers and memory. View its instruction set.
A fun way to see binary in action using wood and marbles.
Resources on learning HTML, CSS, JS, SQL, Python, Java, PHP, C, C++, and so much more!
It is my belief that anyone who wants to be a computer scientist, can be. It can be hard work, but anyone can do it. It takes a determination, a love for solving problems, and an open mind to listen to others and explore unknown territory. Being a computer scientist isn't just about solving problems, its also about helping others using your skills.
Many people search online something like "Computer Science Projects for my portfolio" or something similar. This is OK, but I would suggest an alternative way. Most of my projects have come from two different sources of inspiration. (1) Something cool or (2) a grievance. Let me explain each.
Looking into problems you may encounter can help you create a soultion that not only helps you, but may help others. And a good tip, showcase your projects GitHub or make then in JS so you can easily show others.
Take it from me, I have written large program without running it until I have finished writing the entire thing. This is a mistake. I had to debug for ages, and my functionality wasn't even correct at the end. This is the wrong way. It costs nothing to hit that "Run" button at the top of your editor or to use the command line (for you VIM users). Run as often as you can. Be proactive and save yourself the trouble. Added a new section of code? run it! Test it! It will save you the headache later on.
This is one of the hardest things to get right when becoming a computer scientist. It takes a while for you to adjust your brain to think how a computer would. A computer follows discrete instructions. It knows how to follow them exactly. When you give directions to someone, you might say "Go left, then right, then you are at my house." A computer may take this and turns left, then right, but stays in the same spot (only turning their body). A computer can be thought of as one of the stupidest things imaginable. (See this video of a dad having his kids make algorithms. You can think of the dad as the computer in this scenario) That is the reason it is so hard to tell a computer what to do. But, there is a set of steps you can follow.
So, there is a way of thinking algorithmically. It involves total understanding of your problem and takes effor to break it down to try and explain that problem to a computer, one of the stupidest things. As a wise man once said, a computer is just a rock.
We are now in the age where using Generative AI is common, in academia, the workforce, and for personal use. It can be a wonderful tool. Instead of spending time searching through documentaion to find what a feature does, you can simply use a chatbot to look for you. There is a downside. When searching through documentation, you may not find what you were looking for, but you may stumble upon another feature that could help you even more.
But especially in learning, using Generative AI can be hurtful. If it codes for you, or writes your algorithms, then you aren't learing. When you reach a problem that the chatbot can't easily solve or some bug that the chatbot tells you shouldn't be there, if you don't have the expertise on how to solve a problem and the background to understand why a problem may occur, then you won't be able to proceed. You may fail at what you are trying to do.
It is a tool, but can also be a hiderance. Use it wisely, and remember that it may inhibit a deeper understanding.
During my Junior and Senior year of University, I was the Vice President and President of the Computer Science Club. Community is a big part of any field, but to me it matters a lot for computer science. Building ideas in a vaccuum can lead to many faults. Having a group of people that you can rely on to discuss the same ideas, bounce ideas off of, learn from, and explore new territory with is invaluable. Having others in your field that can speak the same language as you can inspire you and push you to become better at your field.
Through my time as the VP and Pres, I was able to lead meetings and put together events, which I really enjoyed. It allowed me to interact with others and see deeper into how the University actually functioned. Also, I was able to give my own presentations on CS. This taught me A LOT on how to engage with others, how to make an idea digestible, and much more. All benefits of being in the club and finding that community.
Yes. Should you be afraid? No.
I have been asked this question many times, and it has a nuanced answer. In an intro to computer science course, there isn't much math (if any at all). Your good as long as you know some basic albegra. But, the higher into computer science you go, the more math there is. Cryptography is basically all math. But to be a software engineer? Not much math required. I know, considering I was one for a little bit.
But my advice would be to not worry too much about it. Unlike a math course, the math used in CS is applicable to projects and not random problems. Every time you use math, there is a reason for it. Plus, there are many modules and libraries that do math for you, like vector math in video games. (Although I enjoy doing linear algebra myself).
Some of my favorite video games are the Ori series, Holloknight, Just Cause 3, and any game filled with explosions.
Video games are full of story, art, animation, sprites, textures, models, music, sound effects, and more. But one of the most important aspects of a video game is the mechanics. And how are the mechanics implemented? Programming. Programming is a valuable skill when doing game design. I myself have made many small games and projects using my programming skills (even if my art skills are not so good).
Programming for a game gives you practice on solving real problems in a totally different environment than the classroom, but still structured enough to be plausible. It gives you the chance to use different game engines and different programming languages. Games have very unique and challenging problems, so if you can solve those, that helps develop your skills overall. Games also have a lot going on, which can help to showcase your organization and project planning skills.
And you may find it to improve your group work skills by finding a group to make a game with. Not everyone wants to work on a pure computer science project.