How should I start to learn coding?
I am a high school senior planning on going to UIUC next year as a Computer Science + Linguistics major and have interest in the field of natural language processing, particularly research oriented roles. I don't have any coding experience right now, but I want to make sure I don't wait too long to start doing research and internships once I go to college. I assume that at least some coding experience is a prerequisite to almost all of those opportunities and thus want to do some self study over the summer. How should I start learning and what goals should I aim to accomplish over the summer? I think that I'm intelligent enough to handle fairly rigorous timelines and material (I've generally had very little trouble on school work thus far and got a 36 ACT without studying), but I still need to start from 0. My main goal is to prepare myself to be qualified to start undergrad research and take advantage of whatever other opportunities would help prepare me for a career or to try to get into a top PhD program after UIUC as early as I can, especially since I struggle with responsibility and don't want a time crunch in my later years.
4 answers
Ganeshkumar’s Answer
Thirada’s Answer
I want to echo the above answer and say that you should first learn how to do the coding, then you need to practice by using the code for a project. For example, I learned how to code in R. Then, I downloaded publicly available genomics datasets and used R code to analyze the data. I'm not sure what kind of coding you will do as a combined computer science + linguistics major, but you should think about what you will use the code for.
I also want to make a note that you should volunteer/work part time/intern in a lab that does computer science/linguistics research that you are interested in. This way, you can find out if a PhD is really for you. A CS PhD student at MIT told me that he's seen lots of PhD students enroll in the program thinking they will make more money, but instead they make less money. If you're prioritizing a high salary, probably you get a masters and then find a high-paying job. PhD is only worth it if you really love research. You will know if you love research when you're working in a lab. Doing work in labs will also get you experience to put on your resume, and letters of recommendation, which you need for PhD applications (you generally ask the PI/professor in charge of the lab to write you the letter of recommendation). I work in biology research and I've recently enrolled in a biology PhD program, so I know a little bit about this.
To get access to work/volunteer/internship opportunities, ask your professors if they have a lab, or if they know someone that has a lab and is taking undergrad students. You can also search up CS + linguistics labs that are in your area and directly email the PIs to ask if you can work with them. For example, I asked my psychology of language professor if I could volunteer in her lab. Most of the students were psychology majors (I was the only neuroscience major), and one student was a computer science major. The CS major student was in charge of the data analysis, while the rest of us directed participants through the study. You can find all kinds of opportunities, and don't be afraid to try something new! Good luck and hope this was helpful!
Kent’s Answer
I think David covered some important academic touch points, so let me cover the CS side of things. I've been a developer and engineer for a long time and have seen languages come and go. The important thing about serious SWE (Software Engineers) is to learn all the things - just like human languages - syntax, algorithms, keywords, and then use these skills to learn a new language (similar to how you might learn human languages). What you plan to emphasize your studies and research on (linguistics or computer science) will help steer what you focus on throughout your career.
Start thinking about what you want to focus on. Both CS and Ling programs have a wide range of possibilities, so you'll want to learn about what specific areas or technologies or projects in each that you find cool to study and research. If you want to focus more on the CS side, then you'll definitely want to start learning and playing around with computer languages as soon as you can (more on that in the next paragraph). If you want to focus more on the linguistic realm, start learning human languages, their syntaxes, origins, etc. If you are planning to simply do Computational Linguistics, then learn both human languages and computer languages!
For computer languages, Python is definitely here to stay and is really popular right now, so you should definitely learn this as one of your first. Most languages are built around a specific technical area, platform (Windows vs Unix), or set of tasks, so the languages you learn may depend on what you want to accomplish or which technologies you wish to use. People have used Perl or COBOL (both dated), shell/bash (unix/linux scripting), JavaScript (popular for web apps, has many frameworks/libraries), TypeScript, Ruby, C#, .Net, Java, and many more. Then there are what I like to call "tools" - special sets of commands that use a very limited vocabulary and set of commands to complete a task - such as Ansible.
Computer Language learning resources and projects:
https://freecodecamp.org/
https://www.codecademy.com/
https://www.coursera.org/ (some courses require payment)
https://www.hackerrank.com/
https://www.udemy.com (requires paid membership)
David’s Answer
Once you arrive on campus, proactively seek out the Illinois Office of Undergraduate Research and programs like PURE (Promoting Undergraduate Research in Engineering), which are specifically designed to help freshmen enter labs. Given your CS+Linguistics major, you should immediately connect with faculty in the Department of Linguistics or the Siebel School of Computing and Data Science who specialize in NLP; many professors, such as Kris Hauser, look for undergraduates with a high GPA and relevant skills to assist on existing projects. To avoid the "time crunch" later, prioritize joining a Research Student Organization (RSO) early to gain peer mentorship, which can be a smoother entry point than cold-emailing faculty before you have completed advanced coursework like CS 225 (Data Structures).