This was a memo I wrote in my freshman year of college to share with friends who wanted to get started with Computer Science. I’ve posted here so anyone can use.
Christian’s CS Advice
I’ve been asked by several friends who are interested in either getting started with CS or wanting to take their skills to the next levels for advice on tutorials and projects. So I went through several of my texts and emails to compile a list of my advice. I am by no means an expert or a master of any of these courses / languages. However, I didn’t take an actual CS class till college so I’m used to scouring the internet and trying to determine what’s good and what’s BS.
But, the two MOST IMPORTANT pieces of advice that I can give is to not be afraid to break things and read!
(Plus Save backups. No need to have a fancy hard drive, for now creating zip files every few days will be fine.)
Introduction to Coding
Code Academy - Code Foundations: Introduction
- This course attempts to show you different areas of computer science and expose you to a little of each.
- I recommend that you go through this course quickly, not as concerned about learning the content but more exposing yourself
- https://learn.freecodecamp.org/ - Basic HTML and HTML 5
- Even if you are not interested in web design, I think it’s very vital to have a basic understanding of HTML because it is so prevalent.
- A fun way to supplement your learning is to play with the Chrome Developer Tools (tutorial).
- If you find that you want to continue learning web design, I’d recommend to continue with Free Code Camp. I really like how they guide you through projects.
- Even if you are not interested in web design, I think it’s very vital to have a basic understanding of HTML because it is so prevalent.
Making Apps
Before you start learning how to make mobile apps, I recommend that you read this article on the different types of mobile apps and ways to make them. There is no right answer, just preference and a lot of debate in the mobile world. No need to complete all of these below or in a certain order.
IOS App Development with Swift
- Swift, a language developed by Apple, has grown in popularity pretty steadily since it was introduced.
Cross Platform Apps with Flutter
- Flutter is a platform that uses Dart (a functional programming language) to build apps for iOS, and android (Desktop and Web are in beta)
- I personally am a huge fan. However, it is in its infancy. The downside is that it may not be around in 10 years. However, I think it’s a good skill to learn the ideas behind functional programming languages. (Plus it’s fun and easy to build things quickly)
- Biggest criticism/problem is that apps made with flutter take up more memory than an app made natively.
- I personally am a huge fan. However, it is in its infancy. The downside is that it may not be around in 10 years. However, I think it’s a good skill to learn the ideas behind functional programming languages. (Plus it’s fun and easy to build things quickly)
React Native- Cross Platform Apps
- React Native is extremely popular. I don’t have much experience but the documentation seems good.
Android Development
- As much as I love android’s openness compared to IOS, lately I have been frustrated with the android development community. It seems to me that there’s not a clear indication of the future of what android development will be.
- I’d recommend this guide if you are interested in learning how to develop Android.
Data Science
Unlike the previous categories, I recommend the following progression for data science
1. Datacamp.com
- This is a free online course.
- If you are confused on the structure/syntax of what’s going maybe try a few of their lessons
- However, don’t be too concerned if you don’t completely understand just yet
- If you are confused on the structure/syntax of what’s going maybe try a few of their lessons
2. Introduction to the “Pandas” Library
3. Fast.ai - Deep Learning/ Machine Learning
- I can not stress enough how much I love fast.ai,
- Favorite Course is Practical Deep Learning for Coders
- Recommended 1 year of coding experience but I think if you have less you’ll be fine
- They also recommend you to use a GPU,
- Can use google colab for free.
- UVA/ most students can get free Google Cloud or Azure credits.
- See free student software
- Favorite Course is Practical Deep Learning for Coders
Tips for Success
Reading
Hacker News
I recommend you read daily https://news.ycombinator.com/
- For me, at first it was very overwhelming and I thought I didn’t understand anything I was reading.
- But, if you stick with it you’ll learn a lot very quickly.
- Great for showing cool projects and new technologies
I personally made a separate academic twitter where I follow leaders in data science. It takes time to develop, but twitter is a useful way to understand what you’re interested in. Leave the memes and friends in another account. (Plus, it gives you a chance to see how leaders are thinking before it makes press.)
Look at my follower list to get an idea on how I did it.
Medium
Much lower priority to me, great articles will show up in Hacker News
- There a lot of really good publications on medium (https://towardsdatascience.com/, https://hackernoon.com/)
- Great at project tutorials
- I also recommend once in a while to check in on Medium.com and non-publication articles
- For me it’s about every two weeks.
Free Student Software
All of these will have you upload a picture of your student ID.
- Github Student Developer Pack
- https://azure.microsoft.com/en-us/offers/ms-azr-0144p/
- They have pretty drastically changed the program since I used it, not sure if worth it.
Free Textbooks
If you don’t go to UVA ask your librarians if they have Safari Books Online.- Most likely they do
Resources
Cheat Sheets
-
One of the best programming tips, I’ve recieved is to utilize cheat sheets. If you’re confused on something maybe try googling “__ cheat sheet “ ex: Pandas Cheat Sheet
-
Most will have much more information than you’ll need
Here are a few data science ones that I like :
https://s3.amazonaws.com/assets.datacamp.com/blog_assets/PythonForDataScience.pdf
https://www.dataquest.io/blog/large_files/pandas-cheat-sheet.pdf
-
Documentation
When I first started, I tended to be overwhelmed when looking at documentation. The truth is documentation is a really mixed bag. For some things like Flutter, the documentation will be incredibly helpful. Others will be very cumbersome.
Give the documentation a shot, if you have trouble understanding it- don’t stress and move on.