So you are a computer science student
detailed advice to computer science students

Are you interested in programming and don’t know where to start ?
Here is the getting started guide with numerous free resources.
First things first..
There are lot of technologies available out there. Which one to pick first ?
- Read this second
- Listen to this Audio Zeno Rocha talking about missing out technologies.
Pick the one which is popular, which also means you get lot of help if you are stuck with it.
Take Notes
- Keep the notes somewhere editable and easy to access eg., GitHub.
- Use GitDoc extension on Visual Studio Code to keep your notes in sync.
- Other notable extensions are Dendron, Mintlify, Foam
Learn How Computer and Internet Works:
Here is free CS101 Lesson.
Learn fundamentals of Linux: (Very Important)
Here is a Bash book to get started
Know common commands and how to execute them:
cd
mkdir
rm
ls
pwd
cp
mv
wget
tree
- Know how to Linux help system called
man
Use:man ls
Even some advanced ones:
cat
more
less
head
ln
find
sed
awk
curl
- Know what is PATH and why we use it.
- Know what is environment variable.
SetUp a HomeLab: https://www.pythian.com/blog/setting-up-a-home-learning-lab-2/
Nice Sys Admin Guide. Read this first.
Linux Books - Download one or two books and learn from it.
Learn from LaunchSchool books.
Some courses from Codecademy.
Learn to Program using Ruby
Concepts:
Know various flavors of Linux.
Debian-based eg., Debian, Ubuntu
Fedora-based eg., Fedora, CentOS, RedHat - Know how to download centos or Ubuntu - Know how to install a Linux distribution. Download and install it. - Know how to install software packages on each of them from Internet. - SSH - What is SSH and Know how to ssh in to a remote machine. - Get a nice Linux Book and learn Linux thoroghly at least one flavor.
Virtualization:
- Know the advantages. Difference between Physical Server and Virtual Server.
- Start with Virtual Box or VMWare WorkStation.
- Install various OS flavors manually and via Vagrant Script using VirtualBox or VMWare WorkStation.
- Spin-up two virtual machines and make them talk to each other via Network.
- Use Scripts to spin up instances eg., kickstart or Answerfile in Windows.
- Use tools like Vagrant to create and start instances using scripts and tools.
Scripting / Programming Language:
Bash Shell Scripting on Linux and PowerShell on Windows.
Know at least one Programming Language. Pick Ruby or JavaScript. if you do not have a Choice. Atleast know what other languages are used in the industry.
- Perl, Python, Ruby, Go
HTML and CSS Video Tutorials on HTML and CSS
Markdown - Know how to use it. This document is written using MarkDown format.
If you have picked JavaScript and NodeJS, NodeSchool or FreeCodeCamp of the best place to learn them.
Ruby Resources:
Database:
- Know at least one Database and how Database Works in General.
- Pick PostgreSQL and learn it. Move on to other one. eg., MySQL or MongoDB.
- Know CRUD (Create Read Write Delete) operations on Database.
Web Server
- Know about web servers and how to install and use it.
- Nginx, Apache etc.,
- Know about ports webserver uses. Default port is 80.
Networking:
- Know How Internet and EMail Works.
- Know what is IP Address (v4 and v6), CIDR, Subnet,Gateway.
- Know what is Public IP and Private IP ranges.
- Know what is DHCP.
- Know what is DNS.
- Know Networking Devices switches and routers.
- Know network tools nmap, netstat on Linux.
- Know Protocols - HTTP, HTTPS, FTP, TCP, IP, UDP and where they are used.
Storage:
- Know what storage types are available. Storage Area Networks (SAN), Network Attached Storage (NAS)
- Know Storage vendors. NetApp, EMC, Dell, Huawei.
- Know Cloud Storage and how to use them eg., Amazon S3
- Dropbox uses S3.
- Other common Online Storages Google Drive, Microsoft OneDrive.
Cloud Concepts:
- Know what is Cloud and who are the Cloud providers.
- AWS - Amazon Web Services
- GCE - Google Compute Engine
- RackSpace - OpenStack based Cloud.
- Know what is IaaS, PaaS, SaaS etc., There are many more *aaS available.
- Know how to spin up instances on various Clouds.
- Know what is Container in Linux. Know various container technologies eg., Docker, Rocket and related tools such as Kubernates.
Automation/DevOps Tools:
- OpsCode Chef: Know how Chef works and what is cookbook, recipe, runlist, resources, attribute. How to run a cookbook to make changes.
- Ansible
- Puppet
- Vagrant
- Docker
- Terraform
Tools:
- Git - Version Control System. Know what is this and why it is used.
Know git commands and master it.
git clone git add git commit git push git rm git remote
Github Skills - Check out as it offers various skills around GitHub.
You don’t fancy command line interface (CLI), go for Graphical User Interface (GUI) by installing GitHub Desktop Client
Click here, if you are a Windows user.
Cloud9 to Practice programming online with having to setup anything locally. - Use CodeSandBox or [CodePen]()
Exercises:
Create a git repository on github.com and upload single file to github using command line.
Create a cookbook to install something on some Linux OS. See existing cookbooks on Chef Supermarket for sample.
Create 2 virtual machines and install web server on one and Database on another one. Deploy a small web application on WebServer and make it fetch records from Database.
AWS offers a free tier so up to one year it is free to run one virtual machine with 1GB RAM and 1 CPU. Create a AWS machine and know how to login to your machine using username and password and also with ssh keys.
Interactive Learning Platform - katacoda - Docker, CoreOS, Kubernates.
NodeSchool learning by example - https://nodeschool.io/#workshoppers
Other Platforms to learn:
Find out how google is hiring Engineers
General tips:
- Be curious to know how everything works in Computing.
- Be thirsty always to learn something new.
- Get a nice Computer to work with. Ubuntu Linux machine (better and cheaper choice) or a Macbook Air or Pro is better if you can afford or Install macOS on your non-Apple hardware using OpenCore
- Read Read Read alot.
- Watch videos on YouTube about know how to on various technologies.
- Know how to search for information you are looking for on Internet.
- Improve Communication Skills by reading, writing, speaking and listening.
- Watch English movies, or listen to English Radio.
- Tell yourself knowledge is the only thing no one can steal from you and take you to higher places.
- Take one task at a time and complete that first before jumping in to another one.
- Draft a resume or CV and start adding skills one by one after you learn it. You will amazed how many things you have learned over time.
I think personally it will take 6 months to one year for you to be profient one or more related technologies. If you really want to become a developer, there is no short cut other than learning them and being knowledgeful.