4 ms·
Advice to Incoming Freshmen in Computer Science
- brooksbp 18y agofeedback?
- jmtame 18y agoI think you need to tell every single CS/ECE student at my school this (you can see which school I'm from on my profile). Loved it.
- brooksbp 18y agoProfile doesn't show what school you're from...
- jmtame 18y agoWoops. It's Illinois.edu
- deleted 18y ago[deleted]
- deleted 18y ago[deleted]
- siong1987 18y agoLuckily, I read this. So, am I one of them?
- jmtame 18y agoAll CS/ECE students would benefit from reading it. I'm sure you already did though.
- Donald 18y agoItem #7 is mildly incomprehensible and possibly irrelevant. Expand on your topic or just delete it.
- yesimahuman 18y agoYea, it seems like you are pissed about something that personally happened to you. I don't find this point to be even remotely important.
- dmm 18y agoYou should learn the difference between your and you're.
- gwc 18y agoEspecially when advocating the importance of non-technical courses.
- jrp 18y agoI like it because I actually read it, unlike the LONG "How to be a programmer". You need to change you're to your in #5. The reason to do well in non-CS classes is that when you start letting yourself slide in one area it's quite easy to keep doing so. It's simpler to just say "I always do well in classes."
- brooksbp 18y agoThanks. Fixed.
- DarkShikari 18y agoI'd add two more, from my own experience. 1. Contribute to an open source project. It gives you a great experience in real-world coding, as opposed to the seemingly-meaningless assignments one often gets in a class. Plus, it's great to put on your resume and in some cases can serve as a way to get connected to potential future jobs. 2. Get a summer internship where you actually do coding. It should pay half-decently and is useful for many of the same reasons as 1).
- kirse 18y ago5. Don't blow off you're non-CS/ECE/EE classes! This depends... I would not skip a Gen-Ed class if: - My grades depended (directly or indirectly) on my attendance. Surprisingly this wasn't too often, most profs had all notes posted via CMS. Usually I'd attend 100% up until the results of the first exam. - The professor was highly distinguished in his field - I determined that I learned more by activity/doing/hearing in the class than simply reading up on the subject (often strongly linked to the item above) There's no point in wasting your time with a class that you can skip and discover the subject matter on your own later (which is much more fulfilling). I usually caught up on sleep or worked on my own projects. =)
- eru 18y agoI am very glad that we do not have those bogus Gen-Ed classes at university in Germany.
- Zev 18y agoYou can generally pick which gen ed class you want - it just needs to cover a certain topic ("Science with a Lab" for example). Which actually means anything from Physics or Chem to Astronomy or Intro to Computational Sciences. Gen Ed doesn't mean there's one set class that people have to take. It's just a general area requirement that's needed.
- eru 18y agoYes, I know. But I still cherish that I can do math and math only. (OK, we have to do something like a minor, but I chose math-heavy theoretical computer science to complement.)
- Zev 18y agoI would hate to be stuck knowing/doing only one thing for the rest of my life. As much as i love computers and the internet and the like, I couldn't imagine not being able to pick up a notebook and write a short story or draw something. Not to be able to compose (or hell, even just identify and listen to) good music, discussing politics in depth with lots of details with people and so on. Not being able to do anything but math/code? That honestly sounds horrible to me.
- jobeirne 18y agoMy man! I wish most of the undergrads at my school cared enough to appreciate this. Also, I think encouraging blooming coders to just go out and hack something up is worth pushing. edit: also, hate to be "this guy", but there's a grammatical error here: 5. Don't blow off you're non-CS/ECE/EE classes!.
- dill_day 18y agohey brian this is erik... I went to LHS we used to play tennis and stuff. anyway yeah I'm in cs at cu now also and I definitely agree with everything you're saying!
- eelco 18y agoImplying that people who gross $20K with their iPhone application are probably not happy sounds quite bitter. You could give it a more positive spin by changing the 'probably's to 'if's or 'might's.
- davidw 18y agoAdd some CSS to make it look better - possibly some bigger margins and make it narrower.
- sundeep 18y agoI didnt really understand the Why couldn't you grow up in India; bred, born, and raised to write code? bit .. I was bred ,born and raised in India .. and received a pretty well rounded education.I like to think we can do a little more than write code ...:)
- hualibaobao 18y ago[SIZE=3][B][URL=http://www.watcheshot.com/ http://www.watcheshot.com/]Replica Watches[/URL] [/B][/SIZE] [SIZE=3][B][URL=http://www.replica-watch-shopping.com/ http://www.replica-watch-shopping.com/]Replica Watch[/URL] [/B][/SIZE] [SIZE=3][B][URL=http://www.sales-watches.net/ http://www.sales-watches.net/]Replica Watches[/URL] [/B][/SIZE] [SIZE=3][B][URL=http://www.wholesale-watches.org/ http://www.wholesale-watches.org/]Wholesale Replica Watches[/URL] [/B][/SIZE] [SIZE=3][B][URL=http://www.bagsbrand.com/ http://www.bagsbrand.com/]Replica Designer Handbags[/URL] [/B][/SIZE] [SIZE=3][B][URL=http://www.watches-collection.com/ http://www.watches-collection.com/]Replica Watches[/URL] [/B][/SIZE] [SIZE=3][B][URL=http://www.watchespage.net/ http://www.watchespage.net/]Replica Watches[/URL] [/B][/SIZE] [SIZE=3][B][URL=http://www.pxhelp.com/ http://www.pxhelp.com/]Replica Watches[/URL] [/B][/SIZE] [SIZE=2][B][URL=http://www.watcheshot.com/vacheron-constantin-watches.html http://www.watcheshot.com/vacheron-constantin-watches.html]Vacheron Constantin Replica[/URL] [/B][/SIZE] [SIZE=2][B][URL=http://www.sales-watches.net/concord-watches.html http://www.sales-watches.net/concord-watches.html]Concord Watch[/URL] [/B][/SIZE] [SIZE=2][B][URL=http://www.hotwatchshop.com/Movado-Watches.html http://www.hotwatchshop.com/Movado-Watches.html]Replica Movado[/URL] [/B][/SIZE] [SIZE=2][B][URL=http://www.replica031.com/Replica_Watches/Corum_Replica_Watches_1.html http://www.replica031.com/Replica_Watches/Corum_Replica_Watc...]Corum Watch[/URL] [/B][/SIZE] [SIZE=2][B][URL=http://www.fashion163.com/Panerai.html http://www.fashion163.com/Panerai.html]Panerai Watch[/URL] [/B][/SIZE] [SIZE=2][B][URL=http://www.watches-replicas.com/tag-heuer-watches.html http://www.watches-replicas.com/tag-heuer-watches.html]TAG Heuer Replica Watch[/URL] [/B][/SIZE] [SIZE=2][B][URL=http://www.watchespage.net/IWC-Watches.html http://www.watchespage.net/IWC-Watches.html]Fake Citizen[/URL] [/B][/SIZE] [SIZE=2][B][URL=http://iwc-watches.pxhelp.com/ http://iwc-watches.pxhelp.com/]Fake IWC Watch[/URL] [/B][/SIZE] [SIZE=2][B][URL=http://www.replica031.com/Replica_Watches/Patek_Philippe_Replica_Watches_1.html http://www.replica031.com/Replica_Watches/Patek_Philippe_Rep...]Patek Philippe Watches[/URL] [/B][/SIZE] [SIZE=2][B][URL=http://zenith.hotwatch.org/ http://zenith.hotwatch.org/]Replica Zenith Watches[/URL] [/B][/SIZE] [SIZE=2][B][URL=http://www.wholesale-watches.org/breitling-watches.html http://www.wholesale-watches.org/breitling-watches.html]Breitling Replica Watches[/URL] [/B][/SIZE] [SIZE=2][B][URL=http://www.sales-watches.net/rado-watches.html http://www.sales-watches.net/rado-watches.html]Replica Rado Watches[/URL] [/B][/SIZE]
- patio11 18y agoFour things I really wish I had learned in school, but did not because it was not on the curriculum and I did not hit it in the course of my projects 1) Source control 2) A web framework. Any one would have done, just to have some experience with MVC before I was 25 would have been really nice. 3) SQL 4) We actually studied project management, and even had a semester with an actual project doing it, but my present self wishes my past self had done it more. (Exposure to a non-waterfall methodology would have been a bonus.) If these aren't in your curriculum, get exposure by yourselves. Your future self will thank you for it. (P.S. You'll learn a lot of things over the next four years which you'll never use again. Pay attention in Data Structures, Discrete Math, and absolutely any time you hear the word "caching". Operating systems, compiler design, hardware design for non-hardware developers, and whatnot are more like brain candy for engineers.) Edited to add: Things I most benefited from my university education. 1) My ArtSci degree. It involves a human language (Japanese). I highly recommend picking up one of these for every engineer. It will make you think better (really), it will make you code better (I have been in charge of internationalization on every job I have ever had, starting with internships, because I "get" it), and it cannot possibly hurt your employment prospects. 2) AI class. Less because I learned AI, more because it introduced me to scripting languages (awk in my case), which are just indispensable. 3) Java. Hey, if you go to a Java school, you might as well graduate being pretty good in it. 4) I paid attention every time I heard the word "caching". And yay though I walk through the valley of the shadow of traffic spikes, I shall fear no performance degradation, for caching is at my side.
- jobeirne 18y agoThe only problem with including (2) and (3) into an undergraduate CS curriculum is that you inevitably have to push other subject matter out in order to make room for those guys. If you teach them explicitly, that is. Besides, those subjects are more within the domain of software engineering, which certainly merits distinction from CS, a point this article does well in alluding to. I'd much prefer that additional programming paradigms were taught to undergrads; something different than the vanilla procedural/OO duo that is the unfortunate captor of so many a CS department. I'd argue that parallelism and functional programming are topics far more vital to an aspiring computer scientist than things like web frameworks and SQL. To add to the shopping list, I think a nice proofs class would be worthwhile for CS undergrads. I also think a yearly seminar, project class would be helpful; a class where students can actually MAKE something of their own design.
- Tichy 18y ago"Actually, it's pretty tough to rationalize why someone should learn C." Maybe because most people really shouldn't bother to learn it???
- brl 18y agoYou can safely skip learning C if you don't want to know how an operating system works or what a device driver does. Also no C is needed if you just don't care about the internals of the runtime of your favorite programming language (and probably the compiler too). Also you can omit C if you're never going to have any interest at all in 90% of the software you use on your desktop and the servers you communicate with across the internet. Embedded devices are almost exclusively programmed in C, but again, not everybody cares. So if none of these things matter to you, then yes, it's very easy to rationalize not learning C.
- MaysonL 18y agoLearning assembly for some machine, and writing a non-trivial program, or writing a compiler (in any language) will get you this knowledge also. I've never learned C to any depth, although I've written some, and I've written device drivers and other kernel-level stuff (mostly various assemblers, years ago), as well as debugged other people's HLL code by looking at the emitted machine code.
- Tichy 18y agoI don't think it is necessary to know C to have an idea how an operating system works. C is just a programming language, it is not so special - it is just by accident that many OS are written in C. I am not even sure if the majority of desktop software is written in C anymore. And I indeed have no interest in understanding the "closed source" software on my desktop. Why should I, I can't change it anyway. In any case it would be sufficient to learn C when the problem arises, but to say one should learn C no matter what seems wrong to me. I haven't used C since university days, and I don't think that makes me a worse programmer than people who know C. Actually, I would say knowing LISP (or Scheme) would be much more useful for of becoming a good programmer than C. While I learned some Scheme at university, I only read SICP last year, and I feel that it opened my eyes to a lot of things.
- Spyckie 18y agoI agree with #3 the most: know the difference betweeen CS and software engineering. Specifically, if you want to do Software Engineering, be prepared to spend a lot of time learning it yourself. CS teaches you the fundamentals of programming, but applying these fundamentals is almost a completely different field. CS to software engineering is like Materials Science to Architecture - sure you'll know what the molecular structure of wood is and maybe even the exact tensile strength of a 2by4, but you won't know even the first step to designing and constructing a house.
- bitdiddle 18y agocorrection: Knuth did not make the comment about "premature optimization", I believe Hoare did.
- snorkel 18y agoSwitch to business major! The idiots that will be signing your paychecks? Guess what they majored in. That's right, and they were drunk most of time too.
- creativeembassy 18y agoOnly most good programmers know that they're never going to be paid what they're worth while working for a business major (or any non-programmer). And more and more of them are starting their own businesses and doing coding for themselves. In fact, many non-programmers realize that they would rather have someone who does the same thing they do, be their boss. Hey, want to have a job that's quickly becoming obsolete? Switch to business major! Then you can get drunk most of the time too.
- grosales 18y agoI like the humble part., surprisingly the best coders I have met are very humble. You should also mention to contribute to open source projects when they have some free time and to learn from their coding mistakes. Emphasize more the "Don't blow off your non-CS/ECE/EE classes!", this is an important point, not only because it can lower your grade, but I believe, because it makes a well rounded person. If you are well rounded, you will learn why it's not so good to be hacking away in front of a monitor for 30 hours straight (even though it's fun), and that your health, above all, is the most important thing. Also building up mental discipline is key, every project has some fun things and boring things; discipline will help them to get through the boring things so they can enjoy doing the fun things later on and finish the project, there is no point in starting something if you are not going to finish it. Just my 2 cents.
- mnemonik 18y agoI can't agree with you more regarding self-discipline. My senior year in high school was the biggest joke: no one had to attend class, complete work, follow school rules, etc... but everyone got at least a C because teachers who cared about their students got their feelings twisted and wanted to make sure everyone graduated and the administration wanted more funding for higher graduation rates. Result: I completely slacked off and drank with my friends too much and lost all self discipline for my first year in college. I took all random classes, not even working to tick off GURs, and now I have to pick up my own pieces now that I have pulled my head together and figured out what I actually want to do with my life.
- deleted 18y ago[deleted]
- nihilocrat 18y agoOkay, I'm officially annoyed. Joe Spolsky made a blog post similar to this and also stated "Don't blow off your non-CS classes". He, and to a lesser extent this article, basically summed it up as "it will help you learn to do boring stuff well". Are we CS majors really such mindless brutes that topics such as history, philosophy, religion, literature, etc., are automatically snore-fests that we complete just to make good grades? I'm just really confused how these people can have a seemingly complete lack of interest in the humanities.
- Dilpil 18y agoAs someone who is utterly convinced of the worthlessness of religious studies, literature studies, philosophy, ect, let me attempt to answer your question. CS is a topic where every question has an answer. We may not know it, but it either exists or is provably non existent. Furthermore, CS is a field which advances- and when CS advances, life often improves for millions of people. Lastly, taking CS and math classes means learning new things. I know things I did not know at the beginning of the semester about the nature of information. In humanities, while the questions are interesting, they have no answers. Furthermore, the study of humanities does not advance, the fashions and trends simply change. It is also entirely possible to go to a humanities lecture and learn absolutely nothing new. It is not the CS majors who are brutes. We are the scholars, the ones responsible for advancing human civilization. Studying CS requires constant intellectual growth and expansion as you enable your brain to understand more and more complex topics. Taking humanities courses is a major distraction from this pursuit. I have never been exposed to an idea in a humanities class that I could not have understood as a 15 year old. I have never seen irrefutable proof of something I was previously convinced was false in a humanities class. This is why I have a complete lack of interest in humanities.
- netcan 18y agoStay well away from Zen.
- nihilocrat 18y agoI can fully understand that; you're just missing the point. You're not looking for hard answers in the humanities, while accepting the fact that there's worth in things other than hard answers. History courses can do a lot to improve your ability to recognize patterns in past events or behavior. It also imparts a great deal of knowledge that requires intellectual growth and expansion. Philosophy courses can help you argue a point better, because it's so easy for someone to question your assumptions since everything is so wishy-washy and up in the air and you can't really assume anything. It's really quite frustrating, I can understand how this field feels circuitous and useless. Religious studies help you understand religious people a little better, and see some worth in some forms of religion. Most of all, it will hopefully help you understand your own life better. Most atheists seem to think religious people are categorically stupid, and while there are plenty of stupid religious people around, there are a good deal of pretty wise religious people. Foreign language courses, coupled with some sort of interaction with natives, help you to see the world in other peoples' eyes in a much more direct way than monolingual study. Also, all of these studies can be just plain fun, and tons more fascinating than a CS lecture about problems people have solved ages ago. Not everything has to be strictly utilitarian. I can see how it's really hard to see how humanities advance anything, if you are so short-sighted that material and technological progress is the only measure of human worth. Sometimes it's important for people to be educated in the human condition, both for their worth and for others.
- asciilifeform 18y agoI can do better: "Don't."