College is often the first time people are on their own. Whether or not you're paying for your tuition yourself, here are some points to keep in mind about what will be expected of you during your college career.
Plan to show up to class three minutes early and review your notes so you're prepared. If you plan to show up exactly on time instead of early, you're only giving yourself a 50% chance of being on time.
One of my high school teachers told me there would be people in college who only came to class for the exams and ace them. I have never seen this happen in technical courses during college, grad school, or in any of my years teaching. (An undergrad attempted to pull this off when I was a teaching assistant, and it was a disaster.) There's no easier way to learn class material than to be engaged during class.
Computing courses are more susceptible to distractions than other disciplines, partly due to the computers. If you're having trouble paying attention, get engaged. Ask questions, even if you are pretty sure you know the answer. If you aren't comfortable asking questions, write some questions down that you might want to know the answer to as they come up. If the professor answers one during the class, you can cross it out. If you still have questions after class, you can ask your instructor or look it up on your own.
Some instructors don't provide study material for exams. That doesn't mean you shouldn't study! Be especially afraid of exams that are "open book/notes" or where you are allowed to bring a "cheet sheat". That means the questions will test not only your knowledge of the basics, but how well you understand those basics and how to apply them. (As any good exam should!)
If your instructor gives you a practice exam for the course, set aside time and take it like you would a regular exam. Write down which parts you were unsure about so you can be sure to study them more carefully later. Meet with other students or your instructor and go over your answers to see which ones you got wrong. Ask lots of questions to make sure you understand the correct answer.
One of the best ways to get good at taking exams is to write your own questions. Get a small group together and try to write some questions that are similar to the ones on the exam. Then pass those around and see if you can answer each others'. Then practice writing new questions or ones like those your group members just wrote. Writing your own questions will help put you in the instructor's mindset. (E.g. "What is Kyle testing that I understand in this question?")
Striking a balance between school and "downtime" is important. There are some times where it will seem like you are always working and never have any free time. (E.g. the last two weeks of classes and finals.) If your entire semester goes that way, then it might be helpful to seek some outside advice. Alternatively, it's easy to disregard schoolwork and load yourself up on extracurricular activities. Beware: there won't be anyone to tell you that you're procrastinating too much until you get your grades at the end of the semester!
It's similarly important to balance your classes with each other. Somehow you want to optimize your time spent so that you do great in all your courses. I have no idea how to do this! Perhaps you can track how much time you're spending in each course, and compare this against the grades you're receiving. Although it's probably too much to ask for you to do this perfectly, your professors are expecting you to take care of the workload and spread your time out appropriately. We can't tell you how to allocate your effort; you need to figure out how to do that for yourself.
A major misconception about college is that you are paying money in exchange for education. However, just like signing up to a gym, the benefit isn't earned just through payment. College isn't a commodity. The commodity you've earned by attending college is the right to use the resources that school provides. The diploma is neither automatic, nor easily obtained.
The faculty and staff you see every day are not there to amuse you because you paid the entrance fee. Not every class will have the perfect mix of entertainment and enlightenment, but we're working on it! There's a lot to do, and we are trying our best to maximize the amount of material students absorb! Part of this material, however, is learning to pursue new things. Some amount of self-motivation is required throughout in order to benefit from the college experience.
Check your school email. Instructors will likeliy send you important messages about class, and they will expect that you are getting all those emails. "I didn't check my email." is not a valid excuse. (In addition, many important announcements and discussions in Computer Science will happen via Slack, so make sure to check all the channels that are relevant to you.)
The CSC major is hard. You should plan to spend significant effort on absorbing course material and practicing your coding skills. Later courses will build on that material.
"It's supposed to be hard. If it wasn't hard, everyone would do it. The Hard is what makes it great."
- Tom Hanks as Jimmy Dugan, A League of Their Own
At some point you are going to be looking for help. Be aware of the resources at your disposal! Tutoring hours can help out with the intro courses and your instructor's office hours are good for all questions. Know how to find and use the resources for your class.
Read each assignment in full the day you get it, and give it a little start that first day, even if you don't get very far. Getting your brain to consider the challenges of the assignment early can help you solve problems even when you're doing other things. Spread the work out over multiple days so you're not just trying to get everything done in the last two nights.
Computing is precise; small error can lead to big consequences. The assignments you complete will have specific directions, which you should be able to follow. After school, everyone is looking for people who can carefully read instructions. That's often half of the job.
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
— Jeff Atwood (@codinghorror) August 31, 2014
Most instructors spend lots of time grading and figuring out good comments to give as feedback on assignments. This is not trivial! Take time to read the comments, then follow up with the instructor if something is not clear.
You will get stuck and not know what to do next. Get used to it. Expect that this will happen when you start a new project and know what to do when it happens. If you can't solve a problem after about 20 minutes, I recommend getting up and taking a break or going on a short walk. Even after programming for over 20 years, I still find myself solving problems while I'm doing something else. This won't happen every time, but coming back to a sticking point after a pause gives you a fresh perspective. When you get stuck, don't collapse, don't complain. Get up and get busy with something else for a short time.
It's late, your project is due tomorrow, and you're stuck. Your professor is asleep and tutoring hours are over. You've tried pacing around the room, but that hasn't helped. How can you make any progress?
Remember your training. How can you find out what's actually going on? How can you figure out the line number where your error is happening? Maybe your code needs more print statements. Maybe you need to review the book section on circuit design. Maybe you need to rubber duck debug. Maybe you don't quite understand how the lecture notes apply to the assignments. Consider all of your resources and go over class examples again. Learning to fix your own problems is not easy, but it's something you'll get better at as you get further along in courses.
Unlike other disciplines, computing has the advantage of being testable without redoing the entire lab/project/experiment. Test your work. Learn to write tests to check that your project's code works. Use the tools to test the network you just deployed. Users are chaotic: make sure things work on obvious inputs, then on the not-so-obvious inputs, then see what happens when you use illegal inputs. Test, test, test. Creating robust systems is an extremely valuable tool that will help you be a better student and developer.
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers. Orders a sfdeljknesv.
— Bill Sempf (formerly @sempf on Twitter) September 23, 2014
It always surprises me when I ask students to see how they've tested something only to find out that they haven't. It is natural for humans to expect things to work the way they want them to the first time they try, but it doesn't happen. Every time you create and run a test that fails, you will learn something and improve. That's important enough to reiterate. Every time your tests fail, you learn and things get easier!
High-level technical projects are usually team projects. We want you to leave here as comfortable working with others as you are working alone. That's not an easy accomplishment, and it will require you to seek out people to work with.
There are lots of ways the team aspect of projects can be abused. The best remedy for most of these issues is to find teammates with similar schedules, so that you can all work in the same room at the same time, even if you're working on different parts. Even better, work on the same stuff together. Pair programming works!
If you're having trouble getting yourself motivated, what can you do to get back in a learning-first mindset?
Use whatever tricks you can to stay attentive in class. (I like the idea of listening to music in one ear to help keep you awake.) Warning: don't do things that take up too much attention or could be distracting to others around you! Prepare for class by doing the appropriate reading ahead of time, then look forward to the things you didn't understand getting covered. Write down the questions you came up with while reading and either cross them out as you learn the answers or ask them if things weren't clear.
I had no idea how to be a better student in college. Luckily, our Student Solutions Center has some programs you might be able to use.
(There's nothing below this comic.)