[HN Gopher] Ask HN: I'm an incoming freshman to college for a CS... ___________________________________________________________________ Ask HN: I'm an incoming freshman to college for a CS major, what should I know? I've been coding since I was young, so I'm not worried about struggling academically, at least in my CS classes. I'm more interested in knowing what I should do now to give me an advantage in getting a job or otherwise. All advice is appreciated! Author : fish45 Score : 46 points Date : 2020-05-31 18:33 UTC (4 hours ago) | tracer4201 wrote: | Let me start by sharing what I think is the most important | advice. I would focus and really ensure you "learn" things. Don't | worry about optimizing for exam scores. In my opinion, it's | better to get a 75% on an exam and understand that 75% well as | opposed to getting 95% on an exam but only because you | "remembered" things without really understanding them. | | When you study, spend time deeply thinking about the concepts. | Yes you're going to learn CS, but it's not just about learning | data structures, algorithms, compilers, etc. etc. College is an | opportunity to think critically. It's okay to be wrong or to not | understand things. Use the internet to reinforce concepts you | don't understand well, or go speak with your professor or TA's in | office hours. | | Okay... with that out of the way, here are some other thoughts: | | 1. Don't index too heavily on advice folks give you on learning | any specific programming language. Focus more on the concepts | that translate from one language to another. | | 2. In the first year or two, do invest in understanding object | oriented programming principles, as OOP is quite common today. | You'll probably cover this in one of your introductory | CS/programming courses anyway. Note: OOP is not the end all/be | all. | | 3. If you've used Windows your whole life, great. I would | encourage you to spend some time learning a Unix-based operating | system. This isn't so much related to your CS degree/course work, | but I will bet it comes in very handy later on. | | 4. Do take a compilers course if it's not required in your degree | program. Many universities who have ABET accreditation require it | but I recall at least one (several years ago) that didn't. | | 5. Do pay attention in your Operating Systems course. Take that | course if it's not required. Threading, memory management, | scheduling algorithms... you learn concepts here that will likely | be very useful in your career. | aloukissas wrote: | 1. Sweat the fundamentals. CS isn't a coding school. Algorithms, | complexity theory, databases, operating systems, graph theory, | compilers, math, etc. will get you further than any coding. | | 2. Go for depth, not breadth. I know most US colleges make | students do all sort of breadth stuff, which I don't get (I come | from European undergrad, all our classes were CS/EE - coming to | US for grad school, I was more prepared than others coming from | top US undergrads). You have time to dive into other stuff after | school. Do adjacent things like Biology or EE. | | 3. Find grad students and see what they're working on. This is | where you'll see the value of the fundamentals. Then work | backwards and fill the gaps. Try to get a tiny part in a research | project (ideally one that can lead to publication). | | 4. Read timeless papers one each topic. | | 5. Hack, hack, hack - the gap between theory and practice is | small in theory but large in practice. | mshron wrote: | Skill up in the humanities. Pick topics outside of technology | that interest you, and learn how to communicate about them. Take | as many seminar discussion and writing-heavy classes as you can. | | From a career perspective, programming skill is relatively easy | to come by. Programming AND speaking AND good writing will put | you on a better career path. You won't get stuck after a job or | two when you know the tools of the trade but not how to handle | things outside the compiler. | | But also, just as a person who has to make it in this world, you | need more than one frame of reference to make sense of things. | Humanities students are enriched by taking science and math | classes, and getting a new way of seeing things. STEM undergrads | who learn to tolerate ambiguity and learn some history are | rounder humans. | vegannet wrote: | I emphatically agree. Very few programmers are so talented that | their soft skills don't move the needle. For the majority of | programmers, soft skills will be the single greatest | differentiator between being a middle of the road software | engineer or excelling and being _the_ engineer people adore. | | An average programmers job is 90% writing code that anybody | with a year of experience could write, it's the 10% where | you're bridging the gap between technology and business that | can realise a whole new world of value -- and that depends on | soft skills. | ck425 wrote: | I'll plus one this and recommend you also try doing things | outside of class. Uni is an amazing time to try a load of | hobbies and new non-academic skills. I personally did a ton of | theatre and event planning for fun at uni and learned a loads | of useful skills such as: | | - How to coordinate a team - How to write a good email - How to | interview people (helps for being interviewed) - How to clearly | communicate my ideas to others - Public Speaking - How to give | feedback - Conflict resolution | | Beyond the basics technical skills tend to vary by job. Soft | skills are universal. | psidebot wrote: | On the flip side, if a degree program is at a liberal arts | institution it may have plenty of humanities builtin and you | may want to add a few extra CS courses to round things out. | bproven wrote: | >Programming AND speaking AND good writing will put you on a | better career path. | | This is very true. If you are a decent developer AND have this | "speaking AND good writing skills" you will go much further - | it really separates you from the pack... | bdcravens wrote: | Find a language and learn it deep (at this point, I'd say | probably Javascript). | | Find opportunities to work on code someone else has written. | Triaging bugs in open source projects (even if you aren't | involved, but are just following along in issues) is great. | | If you can become involved in open source, working on someone | else's project, that's a great way to learn the communication | skills needed to function in a career. | | Learn CI/CD. | | Learn SQL. | | I'd strongly encourage you to minor in business. | | Get as good as you can at public speaking, whether in coursework | or on an extra-curricular basis. | phased20 wrote: | (Some general advice in the last few paragraphs) | | One thing you should absolutely put on your radar: are you at all | interested in grad school? | | You have plenty of time to actually make the decision to go to | grad school (plenty of people don't decide until years after | graduating), but if you think it might even be a remote | possibility, there are two things you absolutely need to do: | | (1) Get STELLAR letters of recommendation. This is the most | important thing to know, and you should consider that you'll need | between 3 and 6 depending on your program. | | (2) Keep your GPA above ~3.5 (landing something lower won't break | your application, but it will make your life harder). | | Lots of the career advice I've seen maps to getting SWE jobs in | industry, where things like your undergrad GPA, research | experience, and letters of recommendation don't matter as much. | You can be a phenomenal engineer at a "prestigious" company | (whatever that means to you) with a huge variety of undergrad | track records (including not even going to college!). But just | like getting a referral from someone who works at a certain | company is a higher-signal (and easier) way to select an | applicant to interview than trying to sort through a stack of | resumes, getting a "referral" from a professor in the form of a | letter of recommendation is a higher-signal way to filter | applications than basically anything else. For research, grad | school admissions committees tend to not care too much about | internships / work experience, unless they're tied to research in | some way. If you're interested in this, read the link at the end | of this post [0]. | | Also, considering COVID-19's impact on engineering hiring right | now, if you're having trouble finding an internship, doing a | summer of undergraduate research can be a great backdoor to | getting some hands-on experience, work with a professor, and | | Generally, on the career side of things, I'd say spend a good | chunk of time exploring what types of work you enjoy and find | engaging. It's hard to predict what this will be when you're | coming in, so do lots of small experiments to try to figure this | out. Build small projects, reach out to professors and try your | hand at research, join clubs and find other students who share | your interests. | | The last thing I'll say here is realize that there might be a | whole set of career options you didn't even know existed coming | in. Amongst my friends, the most common "discovered" post- | graduate plan was (management) consulting, which virtually none | of my friends knew existed coming into college, and many ended up | getting excited about while there. | | Overall, you'll be hard-pressed to find another space where | you're surrounded by thousands of other people your age who are | excited about learning, meeting each other, and working on | ambitious stuff. There's way more to do and discover than there | was in high school, but you'll also have to be much more active | in finding and leveraging opportunities instead of waiting things | to come to you. Work hard and explore, but also remember to make | friends, let loose, find some parties, go on dates, stay healthy, | and keep an open mind throughout. It's a wild ride, and it can be | an incredibly rewarding handful of years. Good luck! | | [0] https://www.cs.cmu.edu/~harchol/gradschooltalk.pdf | NotSammyHagar wrote: | Keep writing programs, that's the ultimate skill and what you | need to demonstrate at interviews. Second, if you are shy like a | lot is us, take communications, meet other people. Try new | things. You can find friends, ignore the cool kids if you have no | connection. Also, this pandemic and violence will pass, hopefully | we can improve society - but society will still be there. | diebeforei485 wrote: | For your non-CS electives - fill them up with classes that are | much easier to learn in a college environment. | | If there is an intro to law class (preferably one meant for non- | lawyers, for example Intro to Business Law), you may find that | useful. | | Take 1 or 2 business classes. It doesn't have to be a minor or | double major - just the basics of marketing, finance, economics, | and entrepreneurship. | | Get better at "presentation" - speaking and writing. Public | speaking (or debate) would be helpful. This could be an | extracurricular like Mock Trial, it doesn't have to be a class | (though if one is offered and fits in your schedule, that could | be great). | | Oh. Machine Learning. Make sure you know the basics of it, even | if you don't want a job in ML. | zests wrote: | College is a place to learn social skills as well as technical | skills. 75% of your effort should go to technical college work, | 25% of your effort should go to socializing. Conversely, 75% of | your leisure should go to socializing and 25% to non technical | yet brain stimulating work. | | I shouldn't have to state that this rule is better taken | figuratively than literally. | tsumnia wrote: | This is more of an aside, but since you've been coding for some | time, please understand that concepts you already know need to be | taught to those that do not. Concepts like a nested loop are | often one of the hardest initial hurdles for many students. Your | first CS courses will spend a lot of time on these types of | concepts. | | Please be patient and not become annoyed with how "slow" the | class is going. Students that struggle with that first hurdle | will continue to struggle as the class moves forward [1]. I would | say, if you pick up or complete the homework without any issues | to reach out to your peers and offer help. You don't need to | share code, but something like a small whiteboard to explain | concepts would be good. | | [1] http://www.ppig.org/sites/ppig.org/files/2014-PPIG-25th- | Ahad... | sircastor wrote: | In spite of having programmed for many years before starting my | degree, there was a lot of academic challenge. There's a lot of | theory that simply writing code does not teach you. There's a lot | of course work that doesn't have to do with programming. | Iteracting with people, project design, team management. If | nothing else, it's 8-9 hours of work a week per class any way you | look at. | | Do the work, don't short-change yourself in your education. | JabavuAdams wrote: | Do side projects. Do internships, if possible. Aim for A's | instead of A+'s. The time-savings will be enormous, and allow you | to do other things. | | EDIT> Join project teams, if possible. E.g. game development | club, robotics club, rocketry club, etc. | acmexyz wrote: | Doing side projects is so key and very underrated. The downside | of a CS degree is it tends to be heavily theory-skewed (which | can be really great!), but it doesn't take much to forget the | practical side of the craft. | Spooky23 wrote: | Math. | | When I was a TA, the kids who struggled were most hurt by | calculus. | | The other thing is read up on how to do the college game. | Participate in office hours, understand what drives your grades, | etc. I had a hard time with this, as I was able to coast through | high school with minimal effort. | bra-ket wrote: | start doing competitive programming as early as you can , enroll | in ICPC https://icpc.baylor.edu/ and join competitive programming | weekly group at you school (or start one if you don't find any) | | this is a good book for preparation | https://www.amazon.com/Competitive-Programming-3rd-Steven-Ha... | | participate in contests on https://onlinejudge.org/, topcoder or | similar on weekly basis (you will hear a lot about leetcode as a | hard prerequisite to getting a job these days, but it's trivial | for people who do competitive programming) | | you will learn much more from doing that for a couple of years | than any college can teach you | tibbar wrote: | This. After a couple years of serious effort on Codeforces, | algorithms interviews are trivial. And perhaps more | importantly, it becomes much easier to bang out a state | machine, toss around some data structures, check for edge | cases. You'll become really comfortable with that middle tier | of software algorithms that are a non-trivial composition of | standard ideas, but still fall short of needing a research | paper, etc. (And you'll develop a sense for when a problem _is_ | actually-hard). | mikaelmello wrote: | I second this. Competitive programming helps you develop skills | that I find important in a career and that, in my opinion, had | a strong influence on my current success. | | There are many benefits and things where Comp. Programming can | help you, but the most obvious one is how interview questions | in FAANG (and similar) companies are easy compared to your | weekly Comp. Programming contests. | saalweachter wrote: | 1. Don't assume your CS classes will always be easy. | | Having programmed a lot is a big advantage, but you're going to | be learning a wide variety of things as a CS major that you may | not have had to think about previously, and there is going to be | a lot of it which isn't intuitive. Be prepared to study more than | you have in the past and don't get cocky; sometimes it isn't | until your junior or senior year that you get beyond what you | already sort-of know and hit a wall. | | 2. Try to double major or minor in something completely unrelated | to CS and math, unless you are _really_ into CS or math. | | Programming is a tool to make computers do stuff. A pure CS | degree leaves you qualified to program compilers and IR systems | and computer games. If you learn about something really hard, | like chemistry or biology or whathaveyou, you'll also know what | sort of programs chemists and biologists and whathaveyou need and | have a domain to write programs in. | liquidise wrote: | I strongly second both of these points will provide some more | color: | | > 1. Don't assume your CS classes will always be easy. | | Easy or _quick_. Some of my worst college experiences involved | putting off CS work that, while still easy, had sneaky edge- | cases that took many hours to cover. Don 't be lazy with your | CS projects and you will be in a comfortable place. | | > 2. Try to double major or minor in something completely | unrelated to CS and math | | Sage advice. I know a few CS/SE majors who minored in psych. | Each, without exception, left college with an understanding of | what drives office politics and dynamics that surpassed their | peers. Computers are easy in that they work in objective ways. | It is hard to overstate how valuable a diverse education can be | once you are in the real world dealing with real (read: flawed) | humans. | hatsunearu wrote: | double majoring is a hilarious waste of time and money. don't | do it. | curiousllama wrote: | Definitely not a waste of time. Learning to think in a non-CS | way can be incredibly valuable. Will it make you a better | programmer? Maybe not. Will it make you a more effective | employee, founder, or person? Yes. | javajosh wrote: | False. I was a physics/philosophy double and I haven't | regretted it for a second. Physics was profound (although | somewhat disappointing!) but philosophy is the home of | ethics, and lots of writing, and the study of both of those | will serve you in good stead. | mattlondon wrote: | Here are a few things that either I regretted not learning/being | taught in my CompSci course, or that I see lacking in new juniors | who start on my team: | | - How to actually build something entirely from scratch and host | it somewhere so others can use it. I.e. do something 100% top-to- | bottom where you not only design & write a bit of software then | hand the assignment in, but actually set up a server, install | what you need, deploy the software, monitor it etc etc - bonus | points for getting your friends to try and use it have them file | bugs for you to fix. Some suggestions - write a clone of | Wordpress/StackOverflow/HackerNews or whatever and do the _whole | thing_ yourself, right down to database schemas and installing | and configuring nginx yourself. You will learn so much if you | have never done this. Too much at school was compartmentalised so | that you only had to "focus on the problem" and the other stuff | was provided for you. | | - Source control: Git/Mercurial and other distributed ones, plus | also still-in-use dinosaurs like Perforce/SVN. These days with | Github everyone probably knows this, but I'll say it anyway since | at school it is often just you working on your own. | | - Unit testing :-) Bonus points for continuous | integration/deployment. | | - Basic project management: how things are run in teams, code | reviews, bug handling etc. | | - web + networking fluently (answer the "what happens when I | enter example.com in the browser" question from the initial DNS | lookup through to the DOM rendering and everything in between) | | - fundamental *nix familiarity. Don't need to be l33t, but at | least be able to get basic grunt work done with pipes and the | like instead of having to resort to dumping data to excel and | filtering it there. Sed, awk, grep, wc, uniq, sort, vi etc etc | etc. | | - the obvious algorithms + data structures stuff. | | - These days: Cloud: the 12 Factor App thing is quite a good | thing to read and internalise - it may change your perspective of | how you think about approaching things. Probably worth having at | least a basic understanding of docker + k8ns, as well as using at | least one of the major cloud provider's services (they're all | largely the same for the basics) | | Otherwise my advice would be to just generally get stuck into | stuff and just keep messing around with as much different stuff | as you can to keep your horizons broad and experience varied. | Don't try to focus too much on specific areas - there might be | stuff you didn't even think about previously. | | Have fun & good luck! | downerending wrote: | You're young and your brain is still rather plastic. So, learn | everything. Textbooks for a CS curriculum is a great place to | start. But also practical programming texts, the Unix classics, | man pages galore, lots of math (esp discrete and linear algebra). | xupybd wrote: | Find Friends to work with. You will help them they will help you. | Exams are not like coding they need practice despite how well you | know the topics. Sitting down for hours by yourself is near | impossible. Sitting with a group helps to maintain focus and | gives you someone to explain this. It also gives you someone to | explain things too. Nothing will sharpen your ability to clearly | answer an exam question more than teaching someone that concept. | | Those same friends will be the start of your professional | network. The more contacts you have the better for you career. | | Finally try to intern during your holidays. Work experience will | help you land a job. | 3pt14159 wrote: | There is no speed limit. I wish I read this when I was younger: | | https://sivers.org/kimo | | I breezed through university and I could have made so much more | of it if I'd just self-taught from the textbooks and started | grappling with papers in my undergrad. Once your foundation of | mathematics and CS is stronger than your peers you'll find so | many doors open to you. | hindsightbias wrote: | Look to other comments for short term advice. For long term, play | to your strengths and work on your weaknesses. Those things you | might never be good at - look around you. You are surrounded by | all sorts of people with their own skills. Mingle - build a team, | it will help getting thru all the ups and downs of college life | and teach you about people | | Jobs are mostly about connections. Volunteer. Mentor a freshman | every year. Ask for help. Treat the lab guys well. Connect | people. | | Finally, the most important thing: screw up enough to get | noticed. | Jemaclus wrote: | My advice might be controversial, but here are some thoughts I | have... | | My big piece of advice: Major in something useful (CS, check!), | minor in something fun. A lot of the computer science classes you | take will be boring AF, or you'll start to bang your head against | the desk wondering why you have to know how operating systems | work when you just want to make iOS apps (or vice versa!). Some | of the classes will be deeply math heavy. It can and will seem | overwhelming at times. So minor in something fun. Pick something | that has no bearing on your chosen career path. Minor in Theater | or Music or Art or Literature or Physical Education. The best | part about minors is that you generally get to take all the fun | classes and not the terrible ones! You'll meet a whole bunch of | people with diverse interests that aren't solely computer nerds. | | As far as the CS stuff is concerned, focus on absorbing as much | as you can. Contrary to what other people said, don't sweat the | details. You should have a fundamental understanding of all the | big areas (databases, languages, algorithms), but you don't need | to be an expert in any of those things to get a job. In fact, 90% | of the subject matter you learn in college won't be relevant to | whichever job you get. BUT... the act of learning is important, | and the fact that you have fundamental understandings of those | things will get your foot in the door | | Think of your college degree as a ticket to an interview, and | your first job as the real education. Your degree is proof of two | things: 1) that you can learn, and 2) that you can start, stick | with, and complete a large, multi-year project. Nobody expects | someone with a Bachelor's degree to be an expert programmer, but | they _do_ expect critical thinking skills and the ability to | learn. You'll learn more on the job in the first 6 months than | you will in 4+ years of college education... so don't put too | much stress on yourself there. | | So... take it seriously, but not too seriously. Study hard, but | take fun classes too. Make connections in your computer classes, | but make friends across a wide variety of interests. Learn the | fundamentals, but don't sweat the details. | | (Also, pro tip: nobody gives a shit about your GPA. A 4.0 doesn't | get you anything in the real world except a rude awakening. By | all means, try to get all A's if you can, but don't burn yourself | out by trying to get perfect grades.) | LifeIsBio wrote: | I read through this waiting to get to the controversial part | and never found it. This is good advice not only for CS but for | any rigorous degree. One of my favorite classes in undergrad | was Ultimate Frisbee because it ensured I got some aerobic | exercise each week and I got to experience playing UF with some | really good people. | | There are lots of other critical points casually shoved in here | that could probably be expanded to book chapters if you wanted. | The point about making connections is huge. Arguably the | biggest difference between a state school and Ivy League | education is the network available to you. Regardless of where | you're at, establishing connections is a major part of | undergrad. | tsumnia wrote: | > minor in something fun | | I agree. I double majored in CS and Acting specifically because | I enjoy both topics and wanted to get better. It does take some | dancing around with your schedule, but if you take the time to | create some different alternative schedules it can be done. | There were some semesters where I was more CS heavy, and others | more Theatre heavy. I was able to walk out with both degrees in | 4.5 years. | flaque wrote: | You should take a serious look right now to make sure you're | going to a college with a good program for getting a job. | | From someone who went through a school with effectively no | program, I definitely wished I'd considered this before devoting | 4 years and 100k to one particular school. | | So here's some actionable questions you can ask your career | center right now to see if you're getting your money's worth. | | __Does the university protect you against exploding offers? __An | exploding offer is when a company offers you a job offer, but you | have to decide immediately or within a short time period (like a | day or two). In the "real world" this can make sense because the | company may actually need someone immediately. For students | though, this practice is a bit scummy, since no company | immediately needs an intern. Typically it's just manipulating | someone who might not know any better. To prevent this, any | college worth it's tuition will require all companies recruiting | students to follow some form of [offer | guidelines](https://ecs.engineering.illinois.edu/career- | resources/offer-...). | | If they _don't_ have this sort of guideline, it likely means they | don't have any leverage or industry connections. For example, | most schools will just blacklist companies from their career | fairs that don't follow their guidelines. If the companies don't | care, then the career program is pretty bad. | | And on that note, __does the school have regular career fairs | attended by tech companies you 've heard of? __ | | In some schools the vast majority of students get their | internships or new-grad jobs from career fairs. In others, there | won 't be a technical career fair. Or if there is, there won't be | any CS/programming jobs that show up. | | One hack to figure this out is to check if the school is | _charging companies_ money for STEM career fairs. For example, | San Jose state charges $850 a table the last time I checked. If a | school isn't charging, it often means they can't actually get | anyone to come. (though obviously YMMV) | | __Does the school have course offerings for technical | interviews? __Many, many schools these days are creating classes | specifically to help students pass their technical interviews. | For example, here 's [Boise State's | class](https://github.com/BoiseState/CS-HU390). | | If the school _doesn't_ have a course like this at some point, it | may mean they are disconnected to the real world and have little | to no support for you in general. It is not a hard thing for CS | professors to setup a class for extra practice with algorithms & | data structures. | | __Do students have access to investment capital or startup | support? __Many schools have some form of a "student startup" | program specifically around CS students. If they don't, there may | also be a "college student" specific VC fund nearby, such as | [Contrary Capital](https://contrarycap.com/), [Dorm Room | Fund](https://www.dormroomfund.com/), or [Rough Draft | VC](https://www.roughdraft.vc/). | | _You_ may not start a business, but one of your peers might, and | that creates a network that can help you get a job in the future. | Plus, this opens up opportunities you may not have considered | before. | | It's important for you that these are heavily associated with the | computer science program and not uniquely available to the | business students. Some schools only allow biz kids to do these; | the money comes from a grant that's only allocated for biz | students. | | __Does the school have access to hackathons? __Hackathons may be | for you, or they may not be. (I personally dislike them) But you | should seek out a place where they exist or you have access to | them. They encourage students to actually build things, which is | the type of environment you want to be in. You should surround | yourself with other people who are actually using their CS skills | rather than just passing their classes. | | Does the university host a hackathon? If not, is it in the local | area? If not, does it sponsor students to go? If not, have _any_ | students gone? | | You'd be surprised how many schools with a CS program where all | of those answers are "no". | | __In general, you should a baseline goal in your university. | __There 's obvious benefit to learning as much as you can in many | different subjects while you have the time. But get a job at the | end. | kccqzy wrote: | > I've been coding since I was young | | Same here, but that doesn't mean you won't struggle. If you have | been coding since very young, you could very well be quite | skilled at software engineering, the practical aspect of | producing software, but not at computer science. I was fortunate | enough that a middle school teacher found out I was interested in | coding and decided to teach me real computer science instead. | That's where I struggled a lot. I didn't even know why for | example learning about heaps or binary trees was a necessary | endeavor, when I could very well build websites or make DOS games | on my own. It took until high school for me to truly grok these | computer science concepts, mostly about algorithms and data | structures. Even then I still learned a great lot in my undergrad | CS classes beyond algorithms and data structures. | | Computer science is a vast field; don't think that just because | you have coding experience you can afford to coast along, instead | there's always something new to learn. Go find your own subfield | that you are interested in and go deep in it. I personally really | enjoyed learning about type theory (going through Pierce's TAPL) | for example. It may not be an undergrad course but still. | | As for advice, I'd say go talk to the professors more often. They | are generally willing to help. And if they sense that you are so | much ahead of your peers, they could very well give you new work | to challenge yourself. Perhaps even ask you to collaborate on a | research project they are working on. | Jhsto wrote: | > Go find your own subfield that you are interested in and go | deep in it. | | Conversely, do know that this may not yield much appreciation | from professors. BSc and MSc degree programs don't generally | reward you for doing work that is so deep to be publishable. | Even though you are at college to learn, you can't get carried | away learning by yourself, if it is in the way of passing | exams. | koheripbal wrote: | How to differ admission for 1 year. | | Seriously. College is going to be a shit show this year with | covid-19. | aaron_seattle wrote: | "Real life has no curriculum". | | ~80% of what I've learned vocationally, came after school, under | the informal mentorship of seasoned practitioners. | | Arguably the #1 exportable skill you gain from college is | metacognition - learning how to learn. So that the next time you | find yourself staring into a "I have no idea" moment, instead of | being stuck, you'll be able to iteratively expand your mental map | of the territory; form and test hypotheses; sketch out needed or | missing tooling, etc. | aaron_seattle wrote: | i.e. remember this when you find yourself deep into some "am I | ever going to really need this" curriculum. Directly, probably | not. Indirectly, you are rewiring your neurons for generalized | problem solving to the nth degree. | | Also, this "missing course": https://missing.csail.mit.edu/ | lackbeard wrote: | Join your school's ACM Programming Contest or ICPC team. It will | prepare you well for whiteboard coding interviews. | | Also try to do at least two internships; they'll teach you a lot | about what professional work is really like and once you've | graduated a lot of companies will like seeing this experience on | your resume. | veeralpatel979 wrote: | I'd say choose an area to specialize in. Whether it's security, | graphics, drones, something else...find what you like and don't | just gravitate toward AI/machine learning/blockchain since that's | what's hot. | Ologn wrote: | In recent times I have been taking night and weekend classes to | finish my CS bachelors along students half my age, so I will tell | you what I told them. | | One thing is we took CS classes, and also some English courses in | writing. Even on the job, those writing classes are important. | You will be writing e-mails, documentation etc. and being able to | be clear and to the point is helpful. | | Also, in my eyes, some students were not doing enough to get an | IT job out of school, never mind a good IT job with an upward | trajectory. One guy told me "I don't study for quizzes since they | are only 10% of the grade". I studied for quizzes because they | were 10% of the grade, but also because I wanted to keep up with | the subject and know about it for the future. Then part-way | through a semester, or after a semester, I would often manifest | whatever I learned. So if I learned Java, I would write a project | in Java for myself. Or at least go on Github or somewhere and fix | an issue on a Java project. Or if I learned graphics programming | I would write a graphics program, or at least contribute to a | free/open-source one. Through this, I would take all the theory I | had learned over some months and ground it and manifest it in | real work. | | Also you would probably do well to get on CS department mailing | lists, and check the bulletin board or whatever for internship | listings. | | I was surprised how lackadaisical some kids took it. Maybe it was | their youth. I have seen many people parlay their CS skills into | everything from a well-paying job, to parlaying it into an | enormous amount of money. So I went above and beyond. I recall | one homework where we had to talk about process schedulers, | something I was always interested in but never stopped to read | about. I figure in the first half hour of work, I already had | gotten an A, but I spent hours and hours reading about process | schedulers before turning in my homework. | | I recall speaking to a bunch of the brighter CS seniors, and I | mentioned something about version control. "Version control?" one | said. I said, "Yes, you know, like git". "Git?" he said. None of | them knew what version control was. You should know things like | that before your first job interview, taking classes is not | enough. It's good to know what algorithms are linear big O, and | which are exponential, but you are going to have to learn some | things they won't teach you in class to get a job. I would | suggest going to Github, finding a project that has merged pull | requests from a number of contributors recently, and looking at | contributing a pull request to that project. Then at least you'll | get an idea of what work is - someone posts a bug to issues, you | look at it, you fix it and put up a pull request, then someone | with more (or equivalent) experience looks at it and either gives | you some pointers, or merges your changes. At work you will be | doing similar stuff. | mnky9800n wrote: | Paying for mooc courses from your University is going to suck. I | would defer if I was you assuming your University will be having | some sort of crazy online or hybrid thing in the fall due to | covid19. | nlawalker wrote: | Not to imply you're not ready, but in response to "I've been | coding since I was young, so I'm not worried about struggling | academically": | | _" Computer science is no more about computers than astronomy is | about telescopes."_ | | Depending on the nature of what your department offers, be | prepared to learn about, spend time on and potentially struggle | with concepts that have _nothing_ to do with coding or software | engineering as you might be familiar with it, or even sitting in | front of a computer. | xyzwave wrote: | Such a timeless quote. I believe this is the source: | | https://youtu.be/2Op3QLzMgSY | | While there, SICP is not a bad way to augment a CS degree :-) | Gmw1999 wrote: | My advice as someone who was in the same position and has just | done a year in industry and about to go back and do my final year | of CS (UK), is make sure you enjoy yourself and learn how to | manage your time as this will help dramatically. Then during this | time if you can learn parts of the syllabus, so it's not the | first time you hear about it when going into a lecture. Find your | niche what interests you, and gets you excited, talk to your | lectures about that stuff, that can help later, especially if you | get bored or want to go into research. Overall spend time doing | side projects, enjoying learning, part taking in clubs and | societies and if you find it easy find something to challenge | you! If you want to ask me anything more about my experience so | far, feel free to send a message (email in bio) | yawz wrote: | This! You should never lose the curiosity and drive that made you | ask a question here. I would argue this is the most important | thing you need for good first steps in your career and in life. | cushychicken wrote: | You squander a big benefit of going to college if you focus | solely on academics. | | This is one of the only times in your life you will have a ton of | free time and proximity to a bunch of smart people your own age. | Don't pass up an opportunity to do something fun, just because it | doesn't have anything to do with school! | verdverm wrote: | Learn your first (class's) language now, so when you are learning | you can focus on concepts not syntax. | | Learn bash and master the terminal, bash programming guide, | advanced bash PG, https://github.com/hofstadter-io/jumpfiles | | Consider Vim | | Be involved in the CS groups, this is where the smartest people | are | | Talk to your faculty all the time | | Get into research | | Build things that aren't for class | | Hit me if you like, email is in my profile | | Good luck! | sesuximo wrote: | Make friends with the TAs. In a year or two, they'll be able to | refer you for internships. | javajosh wrote: | Learn to meditate, find a sport that you like and do it | regularly, take a class on how to learn (Coursera has a good one | "Learning how to Learn"), and take a class on how to take good | notes. You might also want to study up on personal organization | and personal finance. | | WRT study groups, YMMV. I found them incredibly stressful and | counter-productive, but other people really seemed to like them. | Eventually I actively avoided them. | | Start your projects as soon as possible, and then put them aside. | You'll come back with new eyes, but your brain needs time to chew | on it. Sadly, I think a lot of college courses go too fast, and | sometimes you'll have an "aha!" moment months, or even years | later. Not sure if there is a solution to this. | | Love is almost inevitable, and is almost always a huge disaster | for everyone. It's possibly an even worse impact on study than | video-game addiction. I would say try to avoid love, but honestly | its wonderful. But if you feel lonely, feel lucky that you're not | either distracted or heartbroken. | enhdless wrote: | Some thoughts I have as a CS student right now (for context, I | grew up the in Bay Area and am a rising senior at UC Berkeley): | | - I started coding when I was young, and I still struggled | academically. There is a difference between knowing how to code | and understanding computer science. For me, I found discrete math | and formal proofs extremely difficult. | | - It is very, very easy to get caught up in a constant mode of | grinding CS hw/projects, especially if you're around a lot of | studious people. Work smarter, not harder. | | - Grades aren't everything! If your main goal is to get a job, | you don't need straight A's. No recruiter or manager has ever | asked for my GPA. | | - Take classes outside of CS. Have hobbies outside of coding. | Make friends who are studying different disciplines. You need | outside perspectives to better understand the impact of | technology on the world. Be aware of life outside the tech | industry. Recognize software engineering as a tool to apply to | issues. | | - You'll meet people from so many different backgrounds. Some | people come from high schools that taught Java and some people | come from high schools that are not able offer any technology- | related classes. Remember that some people are learning to code | for the first time in their life! | | For getting an internship (assuming you're interested in a SWE | role): | | - First of all, it's perfectly fine to not have an internship!! | You can take classes, do research, work on side projects, etc. | | - If you don't have prior job experience, spend some time on side | projects (that are meaningful to you!!) to demonstrate your | technical abilities. | | - Have someone who is more experienced review your resume. | | - You might hear that it's very difficult to get an internship | straight out of freshman year. Honestly, at that stage, it's just | a numbers game-the more online applications you throw your resume | at, the more likely you'll get an interview. | | - Don't discount career fairs on campus! I used to think they | wouldn't be helpful because they were so crowded, but I got my | internship after freshman year by talking to a manager at a | career fair. | | - Be able to clearly and succinctly describe yourself and your | goals. What are your interests, and why? How do your hobbies | and/or past experience support those interests? | newqaz wrote: | Discrete math topics teach amazing way to think that most people | never get to see in high school. Knowing stuff in free a book | like [0] is immensely helpful. There are a ton of decent | introductory discrete math books like the ones by Susanna Epp, Ed | Scheinerman, Goranko bros and Gary Chartrand. Just google "list | of discrete math book". What google spits out won't even scratch | the surface of what's available out there. But modern CS folk | will have to know much more than the basics of discrete math. For | example, math analysis and probability theory are very helpful. | This free book [1] gives a sampling of such topics. As | preparation, one can start by looking at pre-real-analysis books | like the ones by Lara Alcock and Jay Cummings, Linear Algebra by | Kuldeep Singh and Probability Theory by Dimitri | Bertsekas/Tsitsiklis. These books are very easy to read. There | are also introductory books that give a bare-bones sampling of | most undergrad math subjects from abstract algebra to topology | like the ones by Gary Chartrand (separate from his discrete math | book) and Steve Warner. Such books are designed to be as hand- | holdy as possible. The more I type the more I realize there's | more (much, much, much more) to say about the math side of | things. Anyway, for another thing, google category theory just to | be aware of it. There are a few undergrad/high school level books | on the subject, but I am not sure how useful that is to a | freshman. | | [0] Book Of Proof by Richard Hammack | | https://www.people.vcu.edu/~rhammack/BookOfProof/ | | [1]Foundations of Data Science by Avrim Blum, John Hopcroft, and | Ravindran Kannan | | https://www.cs.cornell.edu/jeh/book%20no%20so;utions%20March... | MattGaiser wrote: | Hackathons! Check out Major League Hacking. It is a ton of fun | and the prizes have been quite useful when job searching. | _hardwaregeek wrote: | I've written a lot about this. If you want a job, start applying | early. But don't feel like you have to get one immediately. If | you're sufficiently motivated, consider taking time off to work | on your own projects. | | 1. Don't take all CS classes. Try other subjects and diversify | your knowledge. 2. Get good at sending emails. It can help you | get a job, get contacts or just gather information. 3. Even | though you should take non-CS courses, that doesn't mean you | should get a double major. It's not always worth it. 4. Make sure | you like CS. Having experience is a good sign, but people can be | advanced or good at a subject they don't like. Make sure you like | it even when it gets tough. | | [1]: https://blog.torchnyu.com/2020/03/04/take-fewer-cs- | classes.h... [2]: https://blog.torchnyu.com/2019/12/19/sent-from- | my-iphone.htm... [3]: https://blog.torchnyu.com/2020/05/15/the- | case-against-double... [4]: | https://blog.torchnyu.com/2020/05/14/do-you-like-it.html | theduder99 wrote: | don't go straight through college fast as possible. take some | internships along the way. If I see a resume that only includes | class based projects, it is an immediate skiperino. | readingnews wrote: | As a CS professor, the main thing most incoming freshmen are | lacking in is MATH skills. If the weed out courses of "can you | think algorithmically" do not get them, the math department will. | So many students too far behind in math. | | I would second a number of comments on here like "study another | subject" (most CS courses require a minor outside of CS, other | than MATH, which you should get a minor in just due to the | numbers) | | I would also second the idea that CS in college is not coding, is | not SW engineering, etc. It is learning fundamentals and how to | prove your code is correct, mathematically and algorithmically. | jimhefferon wrote: | Lot of good advice here. Another is: take courses in accounting | and management. | | First of all, the path up from being a coder is to lead a group | of coders. Second-- who knew? -- a lot of this stuff is | interesting. | caymanjim wrote: | CS undergrad will teach you principles and fundamentals, but | won't teach you much of anything about actually writing software. | Make sure you learn practical skills, like organizing large | projects, deploying, scaling, tools, etc. You'll be exposed to | some of this, but I've never met a CS grad who could hit the | ground running unless they'd already been working as well. Get | internships as early as possible. Work on large team projects and | learn some structured planning and estimation skills. Learn Unix | deeply. Don't skimp on the math and statistics, because while you | might not need it for a decade (or ever), knowing math opens a | lot of doors (NASA, finance, machine learning, and also general | utility). | ykevinator wrote: | You just have to know one thing- cs takes more time than you | think. It's normal to spend 4 hours a night, your non-cs friends | are going out, you can't. Everyone's going to the game, you | can't. Don't get upset because it takes time. Literally, some | homework may take 4 hours. Just accept that and you'll enjoy it | and you'll do well. If you think it's an hour a night of work, | you will fail. | kleiba wrote: | Don't forget your social life. Don't forget to study. | zengid wrote: | Two main points. Care about the details, but don't get | overwhelmed. | | 1) Care about the details. Programming languages are incredibly | powerful, but there is a lot of subtle effects that even a tiny | change of syntax can make (`*` vs `&` in C++ for instance). Try | to pay attention to these details and their implications, because | that is the key to get to being more productive and also to not | making costly mistakes. | | That being said, there is a limit to how many details you can | keep in your head at one time, so: | | 2) Don't get overwhelmed. Just try to focus on the problems | you're trying to solve, and take a first step towards solving it. | IT WON'T BE PERFECT! Just keep going, and always acknowledge that | there might be a better solution if you need to go back and | improve on what you have. This is what I believe technical | interviewers will be looking for: "Can this individual solve | problems, and know the value of the trade-offs at hand. Do they | know why choosing 'x' over 'y' is the better choice in this | situation, and do they also know the cost of choosing 'x' now?". | You can only spend so much time worrying about details if you | have a deadline to meet, so sometimes you just have to make a | decision and live with it. | | Good luck and godspeed. | dehrmann wrote: | Be mindful of your program's retention rate. My first CS class | has a very bimodal distribution (this is common in CS classes), | and about half the students weren't in the followup class next | semester. We lost another third after that semester. The | engineering program at my school was run similarly--only about a | third of students entering the program would graduate with an | engineering degree. | | Not every school is run like this, but it's something to be aware | of. | | Don't immediately freak out if you get a 70% on your first | Physics exam. A lot of science and math classes are graded on | curves, and professors don't want to see too many (or any) | perfect scores. I had one class where 25% was the lowest passing | score on an exam. | | Especially at research universities, professors are often more | interested in research than teaching. Even when it's not | obviously that bad, they're worse at teaching and care less than | the average high school teacher. | | Try to get out and have some fun. | | Also do something that's somehow very different than programming. | I majored in CS, but got three minors (two in liberal arts), and | even found time to take a golf class and a scientific | glassblowing class. But even intramural sports are good. | RNeff wrote: | College is more than just learning a vocation. Another goal is | evolving yourself into a well rounded human being. Each quarter / | semester take one course outside your comfort zone. Public | speaking, improv theater, drawing, photography, music, | philosophy, film production, drama, writing. Join a non-tech | club. Learn new stuff, and how to relate to non-nerds. Expand | your abilities, world view, and persistence. | schoolornot wrote: | I think more people who be apt to do this if electives were | pass/fail. There were tons of interesting classes available | that I could have taken but chose not to because I had a decent | GPA in major reqs. | MattGaiser wrote: | My university gives certain faculties a certain number of | pass/fails for this very reason. | dahart wrote: | > I'm more interested in knowing what I should do now to give me | an advantage in getting a job or otherwise. | | Always stay curious, challenge yourself, and have fun. | | Take charge of your education, talk to your professors during | class, visit them during office hours, interrupt the class to ask | questions when you don't understand. I was always scared to be | noisy in public, but finally discovered in a grad school math | class that when I didn't get it and I spoke up, other people in | the class would thank me later because they were in the same | boat, and I learned faster. | | Try to find an undergrad research project. | | Do an internship between junior & senior year. | | When you're a senior, start researching which companies you like. | Read about job interviews and how to do well. Practice some job | interviews! You'll be ahead of the majority of applicants if you | do any practicing at all. Learn what companies want. (Hint: | superior coding skills often aren't the top item in their list.) | | Also, exercise (I'm not kidding, it doesn't matter how, but this | will help your CS career, your life, and your job prospects.) | abhinuvpitale wrote: | This probably sounds too cheesy, but don't forget to have fun! | So, try different domains of CS, and see which one excites you | the most! | | There are a lot of subtleties of programming, algorithms and | there are enough domains to choose from. So, don't follow the | crowd, try enough new things to know what excites you, and then | be a master at it! | currymj wrote: | take linear algebra ASAP. it's probably the single most useful | course you can take at a university. | dehrmann wrote: | I'm trying to decide what the right call is if school is online- | only in the fall. On one hand, a lot of what you're paying for is | in-person instruction and all the other experiences you get in | college. If it's online, it's not worth $5k-$10k for a semester. | On the other, if a college says you can defer, there might not be | room in a year because of how many people deferred, and the | longer your break between high school and college, you're either | less likely to actually go to college or less likely to graduate. | dilap wrote: | look into ACM aka ICPC programming competitions -- super-fun, | you'll learn tons, & job interviews will seem easy in comparison | zekehernandez wrote: | You should know why you want a degree in CS. Because if it's | solely to get a job in software development, know that it's one | of the longest and most expensive ways to reach that goal, | especially since you've been coding for such a long time. There | are many other reasons one would want to go to college, and if | they apply to you, feel free to disregard this comment. But to | reiterate, if your only goal is to be a software developer, I | would try to see if someone will hire you with the experience you | have now, or maybe do a bootcamp of sorts. | | Let me add more nuance: I'm not trying to say that a CS major | won't be valuable to a software developer, or that it doesn't | have advantages over a bootcamp-like thing, or just raw | experience. But there are tradeoffs, and I think a lot depends on | what kind of software development you want to do. | mixmastamyk wrote: | Disagree. Skip a CS degree and be instantly skipped over for | coveted jobs. Sure you'll still get _a_ job. Ask me how I know. | Ologn wrote: | I think these are good times for this theory of not needing a | CS degree to be tested. I am thinking of Google's recent | rescinding of offers to thousands of contractors, or the | latest from https://layoffs.fyi/tracker . Lots of companies | have frozen hiring. | | I know I would not want to be among the "I did some coding on | my own, and a bootcamp for a few months" brigade. Also | someone is of this age and is not thinking of it, but in some | years time how will they feel in tough times when they have | no degree and have a mortgage and kids, and the wife just | told them another kid is on the way, and their current job is | shaky or they just got laid off? | | Of course you can always point to outliers like John Carmack | and what have you. | | I don't see how getting a CS degree is "the longest" way to | reach that goal. You will have to learn most of this stuff | any how (unless you never learn it and want to be doing low | level low paying CRUD work in thirty years). The only | difference is you get a degree when doing it, plus professors | with office hours, peers studying the same thing you are etc. | College is flexible - you can study for four years, or you | can get a full-time job and take one class a semester at | night or on weekends. The latter way is longer, but | eventually you graduate. | | As far as expenses - you can go to an expensive private | school, or you can go to an affordable but decent state | school. And if you want an impressive college name at some | point but money is an issue at the moment - get a Bachelor's | from a state school, then get an advanced degree at a fancy, | expensive school at some future point. | | Look at all the layoffs and rescinded offers and hiring | freezes and ask if you would prefer not to have a degree now. | If you send your resume in but you don't get a response from | a high percentage of them - maybe it's because they got a lot | of resumes, and only kept the ones of people who had degrees. | dehrmann wrote: | > I know I would not want to be among the "I did some | coding on my own, and a bootcamp for a few months" brigade. | | Especially when the resume next to yours is someone from a | top-20 CS program who's been at AirbnUberLyft for 4 years. | fish45 wrote: | To be honest, I would consider finding some sort of bootcamp | type thing if not for my parents being pretty dead set on | college. I do have a lot of stuff I want to learn which will, | in my limited experience, be a lot easier to to understand with | a formal education. | | I've been looking for a software dev job for the past few | months and almost everything I've found that's more than a | WordPress/shopify job wants a bachelor's. Do you have any | advice for getting a software dev job straight out of high | school? | jrumbut wrote: | Start with a WordPress/Shopify job and then look for ways to | expand your horizons. | | Struggling startups, small consulting companies, they also | have more ability to bring someone in straight out of high | school so even if they say "bachelor's required" still apply. | mikaelmello wrote: | That depends on what type of job and career you are looking | for, CS is a pretty broad field. | | If you are looking for one of those high paying jobs in the | top companies and want them without a degree, you will need | to impress much more than your graduated peers. | analog31 wrote: | I graduated from high school in 1982, and already knew how to | program. I was keenly interested in programming, and my mom | was teaching intro CS courses at a local community college. | Now her advice may be outdated, but it was that programming | _per se_ is too easy to justify 4 years of college study, if | that 's what you want to do for a living. Also at the time, | many of the colleges didn't really have full blown CS | departments. | | I ended up teaching myself programming (and electronics) | while doing a double major in math and physics, which led me | to develop enough of an interest that I continued in physics | through grad school. | | I had a summer internship at a computing facility, which led | me to think that a pure programming job would actually be | kind of boring. Again, this was long ago, and is related to | my interests and not yours. | | Today, I program. A lot. In fact, if you walk past my office | (my basement right now), you've got a 50% or better chance of | seeing a code editor up on my screen. But I use programming | as a problem solving tool, and am not employed as a | programmer. Good programming skill is a "force multiplier" | for virtually any occupation. | | One thing about college is that _many_ students change their | majors. College is a place where you can be exposed to a | whole variety of fields, and where you can soak up the vibe | of a field and get excited about it. I don 't know where I'd | have found my love of physics at a coding boot camp. | | CS attracts a lot of students who are interested in | computers, or who hear that it's lucrative, but are not | necessarily interested in computer science as an end unto | itself. But, figuring this out is part of the college | experience! ___________________________________________________________________ (page generated 2020-05-31 23:00 UTC)