Starting a Computer Science course can be daunting to new students.
There are a lot of new concepts to learn. A new environment to settle in to. And depending on your college, there can be a lot of services offered to students.
I contacted 132 different Computer Science professors and lecturers and asked them for an answer to one question:
If you could offer one piece of advice to new Computer Science students, what would it be?
Let me tell you, the insights I received from these professors and lecturers were nothing short of amazing. I’ve listed all of them below.
I’ve also extracted the most common pieces of advice into a summary for you.
Most Common Advice
The most common advice from Computer Science faculty members is (in no particular order):
- Anyone can succeed in Computer Science.
- Ask questions of your professor if you don’t understand something.
- Take a broad view of Computer Science. It’s more than just programming.
- Get broad experiences outside Computer Science.
- Don’t give up easily.
- Ensure you like it for the right reasons.
- Find what you like within Computer Science.
- Focus on the fundamentals.
- Keep learning.
- Learn to solve problems.
- Make the most of the opportunities offered by the university.
- Learn more math.
- Learn to manage your time well.
- Work hard.
Computer Science Faculty Advice for Students
Here are the responses from each faculty member.
Albert Chamillard (University of Colorado – Colorado Springs)
Make sure you understand the big ideas in addition to the syntax for the language you’re learning, and learn to use the debugger in your development environment early!
Amber Stubbs (Simmons University)
Hi students! This is your periodic reminder that learning to program can be frustrating because computers ARE NOT SMART. AT ALL. So to get them to understand you, you need to think down to their level. You can do it!
Andre Platzer (Carnegie Mellon University)
Computational thinking opens up so many exciting opportunities that it will enable you to eventually follow your dream in any area of science and engineering that you get excited about. Be sure, though, to use every opportunity to strengthen your mathematical skills so that you can build your dream on a solid foundation.
Andrew Klapper (University of Kentucky)
Learn as much mathematics as you can.
Anh Nguyen (Auburn University)
Find your pet projects and take a math degree as well!
Animashree Anandkumar (California Institute of Technology)
To have an open mind and keep learning.
Anita Sarma (Oregon State University)
Don’t get hung up on the syntax of a specific programming language, but understand the logic and how to problem solve with a computer /programming language. Currently, languages are evolving very quickly and if you know the basics, you can always pick up a new language.
Anshul Kundaje (Stanford University)
Work with real-world datasets (which are noisy and dirty). Not just the well-curated ones that are often overused in publications.
Master statistical data analysis alongside computer science. Statistics provides the skills necessary to wrangle and understand real-world datasets. Computer science gives you the skill sets to manage, compute and learn from these datasets. Finally, broaden your horizons to less-popular and neglected applied domains where computer science can have a significant impact.
Antonio Barbalace (Stevens Institute of Technology)
In the latest years computer science become very broad to encompass many other science and non-science disciplines.
Therefore, students should be very careful when picking a CS (or CE) program vs something else. Sometimes, schools offer thematic programs, or concentration, that’s awesome, but again the student should understand what he/she wants to do in the future before starting on something. In the years, I saw a lot of CS/CE students that were not able to code – if you come to CS/CE you need to code! There is no way out, and there should not be a way out if you cannot code.
Regarding my research area, that is system software, students should be passionate, and consider that they will have to spend hours in front of their computer to try to figure how to solve the problem – that is much more complicated in systems where a problem may be at any layer of software or in diverse hardware components.
Anyi Liu (Oakland University)
Stay hungry stay foolish.
Ayad Barsoum (St. Mary’s University)
Here is my simple advice:
- Practice what you are learning in the classroom
- Interact with your professors for any questions you may have
- Walk an extra mile (i.e., try to expand your knowledge by exploring things beyond what you are learning in classrooms)
- Engage in extracurricular activities (e.g., programming competitions, outreach activities)
- Do your best to have internships before graduation that will help you to have real-life experience before graduation
Azad Azadmanesh (University of Nebraska – Omaha)
You are no longer in high school – to be successful you need to go beyond classroom education and do your own knowledge investigation.
Baishakhi Ray (Columbia University)
Computer Science is not just about coding, it is about to learn what is computing and how you can achieve that in an efficient way.
Behrooz A. Shirazi (Washington State University)
Make sure you like logic, structured thinking and reasoning, and enjoy programming. Otherwise, it will be wise to consider another major!
Berthold Horn (Massachusetts Institute of Technology)
Learn more math. Everyone can learn to code. The hard part about many CS topics is mathematical. It’s hard to even know what math to go for when you are not prepared with a pretty good foundation. And, like languages, math is harder to acquire when you get older.
Blayne Mayfield (Oklahoma State University)
Not all learning takes place in the classroom. During your time at the University, OSU will host speakers, singers, ballets, orchestral performances, and so forth. Sample as many of these as possible. You will learn that you like some and dislike others.
But there is more to life than being in front of a computer, and such activities will provide you with a more well-rounded education. (And being able to talk about topics other than computers and video games at social gatherings is a plus, too.)
Bo Chen (Michigan Technological University)
The new CS students should try to get exposed to various computer science projects in different directions, like artificial intelligence, big data analytics, cybersecurity, networking, computer architecture, etc. That would help keep their interest in this useful major.
And also, they should try to get familiar with at least one programming language and obtain a solid mathematics background which would be beneficial for their study in the next few years.
Boaz Barak (Harvard University)
Computer Science courses can often be very difficult and time-consuming at first, but the more effort you put into a course the more you get out of it. Even if the course material is not something you can immediately apply, as long as you’re learning something new, you are expanding your mind and growing as a computer scientist.
Brent Baas (LeTourneau University)
My advice would be to know where you are academically in Math and English and work to remove any obstacles now that would prevent you from building on those foundations.
Carol Luckhardt Redfield (St. Mary’s University)
It is the same for any kind of student – Keep up with your school work and get help when you need it.
Then for CS students – Take advantage of internships. It is a chance to see what you like and want and for the company to see if they like your work.
Chen Qian (University of California – Santa Cruz)
I would ask them to make sure that they are interested in computer science, not just for the high salary of CS-related jobs.
Cheryl Brown (Towson University)
The one thing would be to get involved in the discipline in addition to classes; such as clubs, organizations, internships, seminars, certifications, and more. This is taking initiative!
Christine Cheng (University of Wisconsin – Milwaukee)
Get solid fundamentals from your classes. Work with like-minded peers to create interesting projects. Participate in undergraduate research. Do an internship.
Cindy Chen (University of Massachusetts – Lowell)
Get good grades in Calculus, Discrete, Linear Algebra, Probability, Statistics.
Clayton Price (Missouri University of Science & Technology)
Learn more mathematics.
Constantinos (Costas) Kolias (University of Idaho)
Avoid overburn at all costs! This is the most frequent problem students and young professionals of computer science face.
You will soon realize that time inside the cyberspace passes in a totally different way. A single task that you thought would be easily competed in 8 hours may require 12 or 16 hours. Computer scientists not only have to think over a problem and then code it but usually, they have to compile, “google”, and read documentation etc.
In some cases, a library that worked in a system won’t work for some unexplained reason in another system so they have to debug someone else’s code etc. Computer scientists are notorious for wasting time into tasks that are not directly relevant for solving their problem.
To that add the constant distractions from e-mails, Facebook messages notifications etc. All these factors might make you lose sleep and contribute towards increasing your anxiety and stress. Showing that you are capable of delivering tasks on time is noble but in the long run, it might negatively impact your health and lead to depression.
Avoid the task-oriented method and prefer the time-oriented method. Set time-limit for yourself after which you simply “call it a day”. Keep notes of what you have done so far and what went wrong. Inform your supervisor and professor about why something might take longer than expected. They might have an alternative or restrict the scope of your work to that which works (e.g., they may tell you to code it just for Windows rather than all platforms).
Da Yan (University of Alabama – Birmingham)
If you would like to work more on Data Science and business data in the future, it is more important to put efforts in Python and popular Python libraries, calculus, linear algebra, probability and statistics, popular machine learning and data mining models, databases, data visualization, etc.
If you are interested in developing scalable systems or scientific computing, it is more important to put efforts in C/C++, discrete mathematics, data structures and algorithms, parallel and distributed programming, the Hadoop ecosystem, computer architecture, operating systems, etc.
Dan Lin (University of Missouri)
Daniel Andresen (Kansas State University)
Misquoting an old professor of mine: A month in the lab saves a week in the library.
David Adams (University of Massachusetts – Lowell)
Computational thinking is an academic muscle that needs daily workouts to make large and lasting gains. Practice practice practice.
David B. Johnson (Rice University)
Computer Science is not about programming. It may use programming as a tool, but it is much more so about computational thinking and problem-solving; that is what’s important.
David Cordes (University of Alabama)
Most students who enter CS in college did well in high school. In general, they have not had to struggle in their studies up until this point. They are not used to failure, and many do not know how to react when a program does not do what they expect. They need to be able to admit they did something wrong and dig into the code to determine the issue.
Since, in general, they have done well in school up until this point, they are not used to digging into problems and solving something that does not work. They tend to want to ask for help instead of figuring it out on their own. They have got to learn how to solve problems (debug their program) on their own, which requires a different type of thinking that they are used to doing.
David Whalley (Florida State University)
Don’t easily give up on a CS degree. It sometimes takes a few semesters for the CS concepts, such as how to program, for a student to grasp them.
Dean Jensen (Elmhurst College)
My advice to new Computer Science students is you don’t know as much as you think you do.
I don’t mean that to sound as rude as it does, but many of these students have grown up with technology quite literally in their hands and pockets all their lives. The challenge is that just because you’re a wiz at Snapchat and Instagram does not mean you know the best way to architect an n-tier application using object-oriented design principles. Just because you can tech support your family’s router by turning it on and off does not mean you know how to setup and secure an enterprise network. Just because you helped a friend write some HTML for a small Web sites does not mean you know how to structure a proposal for a dynamic database driven e-commerce Web site using a modern content management system. You’re still young and have a lot to learn.
New CS students should take time and listen to their professors, and make a point to visit them during their office hours. Professors are in the classroom because they love teaching their students and sharing the wisdom they’ve accumulated over a lifetime of work, not because it’s an easy way to get rich – because it’s not and they could probably make more money in industry.
Deborah Trytten (University of Oklahoma)
Learn to manage your time. Programming projects can have unexpected bumps where you will need to get help. If you start everything a few hours before it is due it is inevitable that you will eventually be unable to submit an assignment because of one of these bumps.
Dimitris Pados (Florida Atlantic University)
Be creative and question everything.
Donald Adjeroh (West Virginia University)
Pay close attention to the theoretical foundations of computer science. This is still a critical aspect of computer science, even in this era of Big Data and Deep Learning.
Douglas Comer (Purdue University – West Lafayette)
What students need to learn is problem solving. Many students enter college with a misconception that they either need to memorize facts or learn how to look them up on the Internet. Nothing could be further from the truth – although some facts are necessary (e.g., important algorithms or details about programming languages used to implement the algorithms) the students who go on to successful careers are the ones who can “figure out” how something works, how to use it, and how it can be changed. Whether students end up with jobs where they create software, test or debug software, analyze data, or conduct R&D, they will need to solve problems.
Douglas Galarus (Utah State University)
My area is Data Science. My advice to Computer Science students, particularly those interested in Data Science, is to learn and appreciate as much Math as possible. Programming languages, operating systems, etc. etc. come and go. While there certainly will be new developments in math, the fundamentals will always be the foundation for Computer Science and especially for Data Science. Math skills and understanding will be critical for those working in the field.
Elena Glassman (Harvard University)
Take a course on Human-Computer Interaction.
Emily Hand (University of Nevada – Reno)
I would probably say to diversify your interests. Take a psychology class, or a business class, or volunteer somewhere. Many CS students become very focused on programming. Plenty of people can program, and many are being hired without CS degrees (especially with online courses offered by Coursera, Udemy, etc.). You need to have something else going on, both for your portfolio, but also for yourself. If you participate in something outside of CS, you’ll be able to bring a different perspective to your work and perhaps solve a problem that no one else is working on.
Emmett Witchel (University of Texas – Austin)
I’d say take your time and don’t get freaked out if one area of computer science does not click for you the first time you see it. If you like the subject and find a talent somewhere within CS, you will get future chances to absorb material that was challenging the first time. When you encounter challenging material down the road you might have more tools at your disposal to understand it. But find some area you like and go deep into that area. Full understanding of one area of CS will provide the key to understanding the rest.
Eric Fouh (University of Pennsylvania)
Take your time, write your solution (in pseudocode) on paper before coding, and to write tests first.
Eric Osterweil (George Mason University)
My suggestion (based on my focus on cybersecurity) is for students to pursue opportunities (even small ones) that expose them to industrial information security (infosec) work. Things like internships, research through faculty, etc. would be critical in getting an advantage in both post-graduation industry careers and/or impactful academic research.
Gail Kaiser (Columbia University)
For first/second year students Don’t be afraid to ask for help and Google, StackOverflow, Quora, etc. are your friends. But never copy/paste their answers, instead use them to help you understand the problem so you can figure out the answer yourself.
For upper division students, If you’re interested in working in bleeding-edge tech, or eventually going to grad school, get involved in faculty/PhD research by taking project courses (3998/4901) and/or 6k graduate seminars.
Geoff Draper (Brigham Young University – Hawaii)
Remember that the assignments are merely means to an end: they are there to help you learn to program. The assignments are not ends unto themselves. So copying another student’s work just to “get the assignment done” is fundamentally wrong on at least two levels. First, it is dishonest to submit someone else’s work as your own. Second, you’re not obtaining the skills that the assignment is designed to help you obtain.
In short, if you’re struggling with your homework, get help from the teacher or from the TA, but don’t copy and paste someone else’s code!
Geoff Kuenning (Harvey Mudd College)
The most important thing I usually say to students is this: When it comes time to specialize, such as by taking electives or choosing a graduate school, don’t pick an area just because it’s trendy or it seems to offer a lot of jobs. All of the specialties are going to be around for a long time, and you’re going to be doing it for many years. So choose something you love.
If you give me two answers, I’d add this: Everybody struggles with some part of the field. When you have trouble, remember that many, many people have persevered and learned the material. You can do it too.
Gerald Friedland (University of California – Berkeley)
Computer Science is moving fast. You invest a lot of time and money in your education, so make it last.
Elect classes that concentrate on the fundamentals like statistics and information theory. Make sure you understand the engineering and physical foundations of how CPUs, memory and I/O devices work. These fundamentals don’t change and will enable you to understand and assess all of the fancy programming languages, cool APIs and overhyped technologies that come along your path in the future.
Judge professors and senior colleagues by how well they can answer your “why” questions.
Haadi Jafarian (University of Colorado – Denver)
Pay special attention to learning the underlying theories of computer science, rather than only focusing on learning the technologies. Technologies will perish over time, but theories will last (almost) forever.
Henrik I. Christensen (University of California – San Diego)
Technology moves very fast so it is important to not focus on that but on the underlying principles. In addition, as technology moves so quickly it is essential to consider life-long learning.
Hui Lin (University of Nevada – Reno)
Face the challenge.
Indrakshi Ray (Colorado State University)
Be hardworking and adaptive.
Inna Pivkina (New Mexico State University)
My advice would be: Focus. If you decided to study then focus on your studies, make it a priority, and get your degree.
Ioan Raicu (Illinois Institute of Technology)
Computer science has become a fundamental subject in the 21st century, just like mathematics, reading, and writing have been the pillars of our civilization for millenniums. With computers being intertwined with virtually all disciplines today, as a computer science major, there are no limits on the potential impact you will have on humanity. Don’t settle on learning through coursework; get involved with open source projects and competitions outside the classroom. Take internships during the summers, explore Research Experience for Undergraduates (REU) programs, and work in a research lab with your favorite professor.
If you are always successful, you are not pushing yourself hard enough. If you often fail, it is important to remember that the difference between success is ++; that is, someone who is successful simply recovered from their failure one more time than all those who gave up after a failure. Be true to yourself, learn from your professors and peers, learn to fail graciously, never give up, think big, work your heart out, and have fun!
James Fastook (University of Maine)
Read the Manual (or instructions or tutorials).
James Foster (Walla Walla University)
Enjoying video games is not a good indicator for Computer Science aptitude.
Jason Lowe-Power (University of California – Davis)
Anyone can succeed at computer science. I’ve heard a lot of things over the years like You have to love math to succeed or You have to have years of experience programming before starting undergrad. These statements just aren’t true. As long as you put in the effort, anyone can be successful and understand the material.
Also, CS isn’t just one thing. There’s a huge variety of topics from mathematical theory, to software development, to psychology-focused human-computer interaction, to hardware design. If you don’t like your first coding class, that doesn’t mean that CS isn’t for you.
Jean Gao (University of Texas – Arlington)
Choose computer science because you enjoy it not simply because of the money.
Jeff Kinne (Indiana State University)
Try out and test all of the code that you see in lectures, from the most basic code snipped that is just a line or few up to working out algorithms where you weren’t given the complete code.
Jeff Strain (Brigham Young University – Hawaii)
They are on the front line of cybersecurity and need to understand common vulnerabilities that can happen in coding. Handle every exception because too many things that will never happen eventually do.
Jia Di (University of Arkansas – Fayetteville)
Do not blindly follow the hot and cool things out there; instead, focus on learning the basics.
Jie Wang (University of Massachusetts – Lowell)
Focus on three things: math, programming, algorithms.
John Edwards (Utah State University)
When compulsively working on that gripping programming project, remember that you do need to tear yourself away occasionally to eat, sleep, and remind your loved ones that you still exist.
Josh Levine (University of Arizona)
Take more math than the minimum required
Joshua Smith (Brigham Young University – Hawaii)
Failure promotes deep learning, so don’t let fear of failure paralyze you. Action – any action – is better than idleness.
Judy Goldsmith (University of Kentucky)
I would advise them to talk to professors. Go to office hours. Ask questions, about the class material, or their research, or the department, or what’s entailed in being a professor, or the field of computer science. And later, about what sorts of things undergrad students do in their research labs.
Kenneth Rouse (LeTourneau University)
I tell our new CS students two things… “First do not try to get a certain grade in a class but focus on learning. If you focus on learning good grades will follow… but the other way is not always true.”
Second “Become ‘What if thinkers’” this is different than thinking outside the box… What if thinkers are always looking how to make things better… “What if I did it this way instead of that way”.
Kevin Jamieson (University of Washington)
Everyone is familiar with stressing unnecessarily due to poor short term planning (e.g. pulling an all-nighter to get the assignment done), but too few consciously recognize that poor time management can result in long term dissatisfaction. Every several months make a list of your personal and professional priorities and goals. Then consider how you spent the hours of your last week. Reflect and adjust appropriately.
Kristin Stephens-Martinez (Duke University)
I’d say the biggest advice is practice. Learning programming is in some ways like learning a foreign language, which means practice gets you a long way in terms of mastery.
Lenore Blum (Carnegie Mellon University)
Go to graduate school!
Marc Olano (University of Maryland – Baltimore County)
Start taking computer science elective classes as early as you can. It’ll help you figure out what area within computer science you like best, and make you more competitive for internships than a bunch of required classes everyone else has too.
Expect programming projects to take three times as long as you think they will, even if they seem straight forward and you know how to approach them. Finding and fixing bugs in your code is an exercise in observation and detective work, and the part of programming that actually takes the most time, even for experienced programmers.
Marie Roch (San Diego State University)
Spend time reviewing material each class and learn your definitions. You build upon these quickly and if you do not understand the basics you will quickly drown in a sea of jargon.
Think before you code. Before you even touch the computer, mentally or on paper sketch out an outline of how your program will work, the data structures, algorithms and interfaces that you will use. Think about examples and how they will execute in your system, paying close attention to edge cases.
Mark Ackerman (University of Michigan – Ann Arbor)
Every hour that you put into data structures and algorithms as a student, you’ll get back hundred-fold. It’s the toolbox of our profession. You have to focus on getting a job after your degrees, but also learn the abstractions that will enable you to get the job after the next job after the next one. The tech keeps changing but the basic abstractions are what let you keep learning the new stuff.
Mark Stehlik (Carnegie Mellon University)
CS is a wide field, with lots of sub-areas, and you don’t have to be good at all of them! Find the ones you like, tolerate the ones you don’t, and go as far as your ambition will take you.
Marvin Andujar (University of South Florida)
Regardless of how difficult the journey gets, never give up, keep striving and take risks. Keep up with the most needed technical skills and predict the future technology trends, so you become a leader in the field just like Steve Jobs and Bill Gates did.
Mary Ann Cummings (Montana State University)
Don’t think that a computer scientist has have been born smart. It’s hard work, not smarts that work in this business. If you study and you learn to write programs in multiple languages, you will graduate with a good GPA and have a good career.
Mary Cummings (Duke University)
My best advice is to volunteer with an active CS-affiliated research lab as soon as you get on campus. Getting hands-on experience can be transformative and will open doors both personally and professionally.
Matthias Zwicker (University of Maryland – College Park)
If you want to work on the cutting edge of Computer Science, don’t leave with a Bachelor’s degree. Go to grad school. This is where you will really learn to master and help further develop the groundbreaking techniques behind self-driving cars, artificial intelligence, AR/VR, and so on.
Mehmet Koyuturk (Case Western Reserve University)
Always remember that a very important skill you will gain through your Computer Science education relates to abstraction, that is being able to look at problems at different levels of granularity, seeing connections between different problems, identifying common patterns between seemingly unrelated problems and solutions, and mapping different problems and solutions to each other. Thinking critically will help you effectively utilize this skill. Also, make sure that you master linear algebra and probability.
Micah Beck (University of Tennessee – Knoxville)
Learn system programming, learn to do proofs, learn to reason about programs. Figure out how to design and build a tool that people will really benefit from using.
Michael Bender (Stony Brook University – SUNY)
Learn the basics well… really really well.
Michelle Andreen Cheatham (Wright State University)
Computer Science is a craft — a fusion of art and technology. Don’t neglect the art.
Natallia Katenka (University of Rhode Island)
Ask questions and ask for help if needed, no one is expected to know everything. Do not stop learning; Computer Science evolves quickly.
Olfa Nasraoui (University of Louisville)
Read way beyond your textbook, learn by doing as much as by reading, and expect all the technology you learn while in school to change almost completely about every 5 years so be prepared to learn by yourself for life
Oriehi Anyaiwe (Lawrence Technological University)
It will be, look around you and ask yourself; what problem will I like to solve or be involved in tomorrow? Then learn, practice, build the computer and problem solving skills for it. While at that, be open to falling and failing, and always eager to get back on your feet always.
Paige Rodeghero (Clemson University)
Make sure to spend some time working on an open source project outside of the classroom. This will boost your resume and expand your knowledge.
Paul Hand (Northeastern University)
Computer science is transforming so many fields. Become an expert at computer science AND something else.
Paul S. Rosenbloom (University of Southern California)
One piece of important advice is to “think beyond the program”. Computer science is about much more than just programming, or the programs that result from this. I’ve even written a book claiming computing to be the fourth great scientific domain, after the physical, life and social sciences.
Paula Lauren (Lawrence Technological University)
Congratulations, you are embarking on an exciting journey! On your journey, you will need curiosity and tenacity to be successful. A surefire way to ensure failure is complacency and arrogance. Your ability to persevere will keep you progressing on your chosen path in computing. Remember to always work hard, take breaks, and keep learning.
Philip Brown (University of Colorado – Colorado Springs)
One of the most beautiful things about computer science is that there are no physical limits on what you can create; the biggest limitations on what you can do will be your own imagination and your understanding of the tools available to you. Always try to think of the learning process as though you’re exploring a set of shiny new tools, and that understanding the tools will unleash your imagination and creative powers. Once you master the tools, there’s nothing you can’t do!
Philip J. Rhodes (University of Mississippi)
When working on a problem, always have a “working theory” — and then test it. If the theory is confirmed, you’ve made progress. If it isn’t, you have more information to construct your next theory.
Piotr Gmytrasiewicz (University of Illinois – Chicago)
Pooyan Jamshidi (University of South Carolina)
I would suggest that all CS students to take math courses very seriously: Probability Theory and Statistics, Linear Algebra, Calculus, Optimization are all essential for today’s computer science students. They help to build intuitions.
Qun Li (College of William and Mary)
Don’t be intimidated in the beginning. Work hard and take advantage of all the resources provided by the college and the department. Everyone can do very well in the end.
Ramyaa (New Mexico Institute of Mining and Technology)
Play without problem then plan before coding
Rashmi Jha (University of Cincinnati)
My advice would be:
- Learn to write codes that are scalable in nature and offer opportunities for a good debugging. This is because over the time new test cases are added in software testing and if the software starts to fail then debugging will be necessary and scalability of codes to address the needs of new test conditions will be desired.
- Cybersecurity is becoming important these days. Therefore, codes should be written with security against possible malware attacks in mind.
- Compute resources are limited, therefore, algorithms and codes should be written with processor performance in mind.
Ratul Mahajan (University of Washington)
Take a broad view of computer science. Most of the exciting stuff in CS these days is happening at the edges of CS and X, where X is traditionally not thought of as CS.
Rick Sheldon (University of Idaho)
With a degree in CS, your ambition is the limit. No doubt there will be speed bumps, but CS is one of the most useful skills you can acquire. I did my graduate work mostly while employed full-time honing those skills simultaneously gaining academic credentials. CS has taken me everywhere except Mars, to every continent and opened my eyes to many people and cultures. For me, I love helping people and solving problems using computational thinking.
Robert Cartwright (Rice University)
It is important to look forward beyond the immediate hoopla about artificial intelligence and machine learning.
In the current era of move fast and break things, done is better than perfect, and Software 2.0, it is critical to observe that most core software engineering (e.g., writing operating systems, compilers, and most applications) is not done using machine learning and there is no reason to believe that they can be done via machine learning in the future. Machine learning extracts patterns from big data, ignoring noise. Most software systems like operating systems and compilers are extremely sensitive to noise (one bit errors can be catastrophic). Hardware is similarly vulnerable; recall the Pentium FDIV bug that reportedly cost Intel half a billion (1995) dollars.
Yet I recently heard a newly tenured Stanford (my Ph.D. alma mater) professor claim that Software 2.0 based on machine learning would soon supplant conventional software development. Why not hardware development as well since hardware and software are often interchangeable? There is a whole field of application development called co-design devoted to exploring this issue.
When I was a graduate student in the 1970’s, artificial intelligence was the rage (my Ph.D. research was conducted at the Stanford Artificial Intelligence Laboratory) but the field crashed in less than a decade because extravagant claims about the technology failed to materialize. I am convinced that machine learning has an important role to play in developing complex software systems, but its prospective role is exaggerated. Future computer scientists need to plan for a career spanning more than 40 years and ignoring the fundamentals of software engineering including program specification, semantics, validation, and verification is foolhardy.
Robert Erickson (University of Vermont)
Don’t copy and paste code you find on the internet, learn how to read what you find but then create your own code.
Roman Yampolskiy (University of Louisville)
Go to the very best school you can get into, ignore costs.
Ross Beveridge (Colorado State University)
Keep in mind that computer science has, over its short half-century in existence, profoundly changed how people interact with each other, solve problems small and large, approach work and entertainment, and finally how we all manage our daily lives. Any student seeking to master Computer Science should draw strength and inspiration from the depth and breadth of Computer Science’s continuing progress.
Roxana Geambasu (Columbia University)
Do your absolute best on every topic and homework you care about and don’t get distracted by grades. It’s the knowledge and foundations you acquire that are the most important things you take away after graduation, not the GPA.
Ruth Weldon (University of Saint Francis)
This is a field that requires constant learning. You’ll work hard to during your college years and learn a lot, but that’s not the end. To be successful, you always want to dig deeper, look for what’s new, what’s changing and add to your knowledge throughout your career.
Scott Aaronson (University of Texas – Austin)
Binary search is useful for your life and career as well. Use it to zero in on the hardest courses you can still do well in, and the hardest projects you can still complete.
Snigdha Chaturvedi (University of California – Santa Cruz)
There is so much more to Computer Science than programming. It is a very broad and exciting field, and if you explore it enough, you will find something that you love.
Stephanie Ludi (University of North Texas)
Don’t be afraid to ask questions, in class or in office hours. Faculty are there to help you and we want to know where you need help in order to help you succeed.
Steven Bellovin (Columbia University)
I have many, but if you want just one: remember that most computer programs and computers are parts of *systems*. They don’t stand alone; they interact with very many other pieces.
Steven Minsker (University of Arkansas – Little Rock)
It is often said that The future belongs to the flexible, and never has it been so true as applied to computer science. Keep an open mind and don’t be afraid to embrace new ideas and technologies. Nevertheless, the ability to think clearly and logically will remain of underlying importance in all that you do.
Steven R. Terrell (Nova Southeastern University)
I would tell students to get as much on the ground experience as possible through internships, volunteer work, etc. One thing is to read it in a book or accomplish it in a lab, another is to actually put what they’re learning into action. We can see a clear difference between those two types of graduates.
Subhasish Mazumdar (New Mexico Institute of Mining and Technology)
Focus on the fundamentals of the field plus ethics because the fundamentals will keep you productive many years after graduation and ethics will keep our society safe from the power you will be able to wield over it.
Sunghoon Ivan Lee (University of Massachusetts – Amherst)
Don’t rely on the school curriculum. If you find something (e.g., algorithm, coding language, research, hobby, projects) interesting, be prepared to self-educate
Susan E. Gauch (University of Arkansas – Fayetteville)
Do something fun outside of class; everyone needs a break.
Tauhidur Rahman (University of Massachusetts – Amherst)
Always try to keep an open mind. CS is a fast-changing field. The field is going to reinvent itself. The biggest innovation in CS will probably come from areas that lie at the intersection of CS and a different discipline (e.g., quantum physics, psychology, neuroscience).
Temiloluwa O. Prioleau (Dartmouth College)
My advice to new Computer Science students will be to:
- explore all options (e.g. internship, research, study abroad) as this will help you find your niche, and
- perfect your skillsets (i.e. go above and beyond to KNOW the material) as this will position you to be marketable whatever direction you choose to take in the future.
Theodora Chaspari (Texas A&M University – College Station)
Pursue the things that make you most interested and don’t be afraid to explore.
Timothy Newman (University of Alabama – Huntsville)
Persevere! Plan to dig into the material, and expect that there will be some hiccups along the way as you get into the material.
Tracy Larrabee (University of California – Santa Cruz)
Be in charge of your own education. You are studying this self because you love it (even if it frustrates the hell out of you at times–which is normal), so dive in and catch up on whatever you think you don’t want your professors to know you are weak at.
Join some student orgs. IEEE or ACM or SWE or SHPE or NSBE or CPSR or whatever floats your boat.
Ulas Bagci (University of Central Florida)
Never underestimate yourself and your field, the future is in computer science, which is already interdisciplinary and will be more in the near future.
Vernon Rego (Purdue University – West Lafayette)
I would advise them to not fall into the trap of being too narrow in their education. There is a lot of noise and fashion in the industry, depending on what the money is currently chasing and what the promises are.
This is not what education is about, though that point seems to have been lost in the last couple of decades.
I’d advise them to be broad and learn about literature and music and poetry and religion and history and finance and languages and religion ….. in addition to what they learn in computer science. It will not be easy but they somehow have to start this process in high school and university and continue this all their life. It is close to impossible to start this once they leave university.
People who are going to be of use to society have to be broad, cultured, educated. There is no other option.
Vibhuti Dave (Colorado School of Mines)
Don’t get overwhelmed by programming details. Focus on being able to strategize to solve a problem. Programming will fall in to place if you can come up with a plan of action to solve the problem
Victoria Interrante (University of Minnesota – Twin Cities)
I would advise students to take maximum advantage of all of the learning opportunities available to them. Talk to professors, get involved in research, attend talks, expand your horizons. The next four years is a precious window of time that you can use to lay the foundation for what you will be doing for the rest of your life – don’t waste it.
Vijay Chidambaram (University of Texas – Austin)
There are a lot of different aspects to computer science: from proving theorems to designing hardware to designing games! Find what you love inside computer science and enjoy!
Vir V. Phoha (Syracuse University)
Whenever you don’t understand anything, go to the fundamentals and don’t ignore theoretical foundations. Practice in computer science or any other field is built on theory.
Vojislav Kecman (Virginia Commonwealth University)
Trust in yourself, work hard, don’t yield, don’t quit, trust your professors and smile because the whole life and world is in front of you :-)
Wallace Chipidza (Claremont Graduate University)
To understand programming, read Kernighan & Ritchie. To understand algorithm design & data structures, read Knuth. Then you’re set!
Wei Ding (University of Massachusetts – Boston)
Computer Science is a discipline that you can use a computer to change the world. It does not require expensive labs. A regular person can design a novel algorithm with a broad societal impact using a regular computer.
William Beksi (University of Texas – Arlington)
The one piece of advice that I tell my students is to learn as much math as they possibly can. As engineers mathematics is our toolbox. The more math one knows the more successful they will be at solving new problems or solving an old problem in a new and better way.
William Gasarch (University of Maryland – College Park)
When you do a HW or a project don’t just try to get a high grade (though that is fine). Make sure you understand the questions, the goals, the answer you give in all aspects.
Yedidyah Langsam (Brooklyn College and Graduate Center of CUNY)
Computer science requires hard work and dedication. Make contacts with faculty and fellow students and you will succeed.
Yexiang Xue (Purdue University – West Lafayette)
Computer science is a domain of practice. Computer scientists are trained via practising computer science, similar to how tennis players are trained. Unfortunately, we cannot learn computer science well solely via reading books.
Yisong Yue (California Institute of Technology)
It is very difficult to choose a single piece of advice. If I had to choose a single piece of advice, I’d probably say something very generic, like never stop being curious and trying new things.
I hope you found this collection of advice useful. I know if I had this when I started my degree it would have been awesome! If you have any feedback, use the comment section below.
Are you a college professor or lecturer? Contact me using the comment section below if:
- you want to provide your advice to be mentioned in this article
- I’ve made a mistake such as misspelling your name or college