I’m trying to find ways to get more involved in computer science besides just self study and being on the programming team for robotics. (I’m in high school.) There is an computer programming club at my school, but it conflicts with my robotics meetings.
I’ve looked into a rocketry club (outside of school), but they are more focused on electrical and don’t use anything with computers. (I also have bad vision, so working with small parts doesn’t end well and I didn’t think of that before…)
I could self study more, because I only know the very basics of a few programming languages (Java, Python, JavaScript, ECT.) What are some websites that help me learn the more “advanced” parts of these languages? I’ve used CodeAcademy and Kahn Academy, plus an Intro Java course at my school, but these only offer the basics.
Also, do you have any ideas for extracurriculars? I’m not familiar with any recognized clubs or summer programs that may help out my knowledge in computer science. Any ideas are appreciated!
There’s something called the IOI - the International Olympiad in Informatics. It’s the highest level of competition you can take part in as a high-schooler. The qualifying competition is the USACO.
But that is too far out of your reach for now, if you’ve only done basics. I too was quite unhappy with CodeAcademy but I think there is a lot more in KhanAcademy (sorting is definitely there).
Have you tried MIT OCW?
I don’t recommend Project Euler problems if you want to learn programming. Project Euler’s really is more math-oriented.
@Principle Thanks so much for the info! I am a sophomore who is really interested in programming but has not taken APCS A yet, so that changes a few things. I have self taught myself the basics of programming in JavaScript and Python, but struggle to understand the higher concepts mainly because I don’t have someone there acutally teaching me. I was actually hoping to self study Java in the summer so the AP class I take next year will be a breeze, but I have no idea where to start.
The IOI sounds really interesting! I would love to compete in it, but I realize I need to understand the advanced stuff before I can get there.
I’m very interested in computer science and my dream is to double major in computer science and engineering/mathematics.
Coursera has programming courses online, and MIT has its course content available online. In addition to the Olympiad already mentioned, there are coding competitions and hackathons for students. Look those up – you might enjoy them. There are also “science and engineering fairs” – that’s the usual science fair held at schools, counties and state and national levels. Those always have a computer science and programming category, so you could compete there as well. You can also do an internship or volunteer work related to computing, including something like teaching basic computing skills (my daughter did this at a Latin American Association).
Raspberry Pi. Great support from the website, great articles in the MagPi magazine (available via commons license online), etc.
Gives you opportunities to learn Linux (Raspbian), risking no more than an SD card. Pre soldered “hats” allow you to play with physical I/O… Raspbian comes with Wolfram, 2 java IDEs, python, and is a snap to add Arduino support. When you get bored, install Arch Linux on a new SD card.
Created as a learning tool, it allows you to explore everything from physical I/O on up.
@mommyrocks Would the Coursera programming courses be free or inexpensive? Yeah I am very interested in the IOI now that I know that exists! I am actually participating the Intel Science and Engineering Fair for an engineering project, but it is not programming.
@50N40W I actually do have a Raspberry Pi to learn Python, but keep forgetting to buy a monitor for it! Do you have any suggestions for self learning Java? (Specifically for APCS A, if you’re familiar with that.)
Any language is easier to learn if you have a need. I never worked with Java until FIRST FTC Robotics went that way, then I had to slurp enough to teach jr hi students. I used Pi’s for that :). Bluej is an IDE (Integrated Development Environment ) and there are tutorials for accessing the pins - to turn on a LED for example- on the web.
I know you’re not into very fine detail work with solder, but a basic breadboard with an LED and a resistor doesn’t cause a huge amount of strain.
Having a motor to control or a temperature sensor to read can make it a lot more like play than going through a full course, and once it becomes play, all sorts of barriers collapse.
@equationlover I think the best way to learn without an instructor is possibly through an AP books (as I said before, like you’re self-studying). Note that that’s just what I think and not something I have experienced (I learnt it in class only).
You may like the following answer - https://www.quora.com/What-are-some-of-the-best-ways-to-learn-programming
Do you know any UNIX/Linux? Picoctf.com is open for another week, and you’d learn a wide variety of things. You can do the picoCTF challenges even after the competition ends, and people say they are fun.
If you like math also (your username indicates TRUE), I would recommend the Project Euler problems. I know one person above disagreed. My son did Project Euler after learning Java online and before getting involved in USACO. So, I think it was a good bridge. If you already know the basics of programming, I would find a variety of projects to work on rather than enforcing online classes on yourself.
Another fun project-based thing in Ludum Dare or Ludum Jam, where you code up a video game in a weekend.
Does your school have an AP Comp Sci class that you have taken or will be able to take? If so, it helps to have that on your transcript.
One of my teachers just told me there is a HS hackathon going on next week at a local university. I don’t have very much “in depth” knowledge to go off of for the actual competition, but does this seem like a good learning opportunity?