9 ms·
10000 things all CS students should do before graduating
- benihana 15y agoAll of these I did the first five years of my career - I feel that I got a lot more out of them than if I would have done them while in my CS program. With a few years of experience, I have a much better context into which to place these experiences.
- gaius 15y agoHow is any of that computer science? I mean, is there a list out there for astronomy students that includes, grind your own lenses?
- zheng 15y agoIt isn't computer science per se, but it is a list of common tasks that many CS grads will end up doing in their career. However, I think it is basically a list of things for those who are going into web/software dev type positions. If I've just been hired to write Roomba firmware, some of that might not be quite as helpful. EDIT: Also, the list is numbered in binary
- jff 15y agoThis is Hacker News, sir--how dare you suggest that coding positions exist which are not web development? :)
- jarek 15y agoHaven't you heard? Mobile native applications are the new black. Great job security.
- xtreegold 15y agoIn fact there should be a buy an Arduino (http://arduino.cc http://arduino.cc) board and program it item on the list.
- parfe 15y agoWhat do you think graduating computer science majors go on to do?
- ghurlman 15y agoThat's the point. There's a general disconnect in a good amount of CS programs between the curriculum and reality. This post is trying to bridge the two. I'd also like to add: 10000 Learn to use source control, use it to store your new LAMP code on Github. 10001 Start studying design: web, graphic, type.
- gaius 15y agoI am wary of that sort of very specific advice. Why LAMP, just because it's fashionable? There are many, many other sorts of web stack alone, let alone the many, many other sorts of application. Same with GitHub (which I use myself, btw), there are plenty of others. It just sounds like ESR's advice, to be a great hacker you should be just like me...
- brianbreslin 15y agoLAMP exposure gives the CS student useful experience.
- leftnode 15y agoChill, I think it was just an example he used.
- andos 15y agoQuestioning specific advice is part of the learning, I believe.
- GHFigs 15y agoSpecific advice is good when the audience doesn't necessarily know enough about what they need to differentiate between the various options. Thousands of man-hours are wasted every day by people trying to decide which of two (or more) entirely adequate tools they should use. I think it's better presented as a heuristic instead of an imperative (as it is here), though: "Use X until you can articulate a reason not to."
- bluesnowmonkey 15y agoSure, just because it's fashionable. X86 is fashionable, C++, Java, JavaScript, HTML, CSS. You definitely should try to become familiar with everything fashionable in our industry. Yeah they're all messy, but they are the reality of how things are done. People who think they don't need to are why we have the term "ivory tower".
- quanticle 15y agoIts not, and that's the point. I've seen computer science students struggle at basic system administration tasks - even things like moving files and directories. I maintain that half the trouble we have deployment is that developers don't know anything about how configuration and setup works in the real world. This list helps to bridge some of that divide by having programmers deploy software, not just build it. EDIT: I also think astronomy students should grind their own lenses and mirrors, so that they can understand the practical difficulties of building and operating a telescope.
- rmb177 15y agoI agree, and count me as one of those who needs to learn sys admin tasks (though I can move files and directories around :) ). I developed a side project last year and used Google App Engine precisely because I've never setup my own web server. In the short-term I think it was the right decision as I had a tight deadline to get the app running. In the long-term I'm not so sure since I'm now locked into GAE. So 0001 is definitely on my someday TODO list.
- endtime 15y agoWhile I'm surprised someone got through four years of CS without learning to use mv, if you are looking for 'developers' then you should look for software engineering majors, and if you are looking for sysadmins then you should look at people with two year associates degrees in information systems or something. CS is a branch of mathematics; expecting fresh CS grads to make good sysadmins is like expecting comparative literature majors to win spelling bees. They might do better than average but it's not really what they're educated in.
- pavel_lishin 15y agoSpecifically, grinding lenses for one specific type of telescope designed for looking at once specific thing. Has everyone forgotten that there's more to computer science than writing a CRUD app with a web interface?
- Apocryphon 15y agoBut being able to write a CRUD app is a basic task. Like writing a FizzBuzz program.
- Caerus 15y agoSpeaking as a mechanical engineer, experience in fields related to your own, however tangentially, is extremely valuable. Two example from my career: I spent two summers working construction on job sites. Running pipe, cutting beams, and building scaffolding are skills I likely will never use again professionally. However, it gave me insight into what people who are directly affected by my work experience. I am now extremely careful to consider what the end users experience. Maybe moving the bolt holes from position X to Y will add 4 hours to my workload, but it will save the installer 30 minutes on every one they put in. I started in computer engineering. I didn't go very far but thanks to those 2 semesters, my programming skills are miles ahead of many of my peers (although they are still quite primitive). This gives me the ability to write scripts/programs to create functionality that is nonexistant it my field. Sometimes it allows me to work projects that would otherwise be impossible, sometimes it just saves myself or others hours or even days. I hope this doesn't come across as boastful, my skillset is woefully inadequate in many areas which my peers do have experience. Neither of those skills were touched on in my engineering curriculum, but learning them made me a much better engineer. I would imagine many of these items, while not "core computer science", would make a CS grad better and more marketable.
- bdhe 15y agoThis article has got me really conflicted. On one hand, I am a CS graduate, but on the other hand, I work in theory, and I would always point out to people that computer science and computer engineering are two completely different things. Unfortunately the two are often conflated in almsot all CS curricula. Maybe there ought to be two different majors, one that focuses on building systems and implementing algorithms (as suggested) and the second that focuses on the basic stuff, designing algorithms, working on math applied to computer science (crypto, AI, etc.)
- tolmasky 15y agoYeah in my experience (both personal and from interviewing people), you end up getting a poor introduction to both (at least at the undergraduate level) since in many universities the major can't decide which it wants to be. You have cases where people know of NP (but have never done a reduction), and simultaneously know of version control (but have never actually used svn or git). This is really unfortunate because I feel similar majors (like math and EE) probably prepare you better for these fields (math perhaps being a better precursor to real CS and EE giving you great fundamentals for programming/comp engineering). It seems more and more like there needs to be a clearer separation, something like how econ or finance is separate from math, where math majors don't really have to learn excel or financial formulas, and econ/finance majors don't have to learn linear algebra, and both can go pretty deeply into the things they actually care about. The counter argument to this is that we often see computer engineers that lack a basic grasp of the importance of algorithmic complexity and theoretical folks who write terrible code. You have only to read some discussions on "JS performance" to see the ridiculous attention paid to making sure variables are local, when in almost all cases user programs are actually being slowed down by O(n^2) algorithms being used. Similarly, a lot of theoretical work takes a long time to make it into the "real world" because they are inaccessible to engineers (being written completely "in math"), and often when they do provide actual sample code for their work its written in a very sloppy way (from a "code organization" standpoint). It really would be ideal if you could have a major that covered both of these really well (and I'm sure there exist some that do, I obviously have not gone through every CS/CECS/EECS major in every university).
- pilgrim689 15y ago
- praptak 15y agoQuite web-specific (not necessarily bad!) It's been over 10 years since my MSc in CS and even more since I started working in IT and I still haven't done most of the things.
- tudorizer 15y agoSilly me. I hesitated clicking on the link because I was affraid of reading a super long list.
- mattdeboard 15y agoYeah, especially after I saw he'd increased from 1010 to 10000 items. That's a difference of 10101... right? I should've paid more attention to the binary subtraction section in class.
- sandipagr 15y agoSame here. I actually clicked on the link because of your comment.
- johnconroy 15y agoQuick someone (preferably a graduate) knock out a web app where grads can tick the boxes & provide links (where applicable) for these milestones
- JacobIrwin 15y agoup to 0100 and haven't been accepted to a CS program... (havent applied yet either)
- dendory 15y agoActually that's not a bad comment about how an actual College CS program may not have anything to do with the real world. I run my own servers, I code my sites from scratch in HTML, JavaScript, PHP, SQL etc.. build all my computers.. made several open source contribution coding in C.. I can do everything in that list and much more.. Yet when I applied to a local University in a CS program a couple years ago I was denied. Why? High School Math grades not quite high enough.
- thisuser 15y agoGo talk to someone at the uni who who cares about enthusiasm. Simply filling out a boilerplate form deliver great results unless you are boilerplate too. Engage some social hacking.
- ryansde11 15y agoTake some math courses at a community college or online and boost your math grades, then reapply.
- vbtemp 15y agoThat just isn't true. CS isn't about "running servers, coding sites in HTML, JavaScript, PHP, etc.." Computer Science is about (per your example): 1. developing the programming paradigms underlying javascript 2. creating SQL (i.e., defining the grammar, but also proving it's correctness and completeness) 3. Architecting the network protocols that provide HTTP and HTML their plush delivery ---3.1, Naturally, is involves inter-and-inner domain routing, name system protocols, reliability and transmission throttling. Not to mention, generally, complex autonomous systems -----3.2 To formalize, define, and prove the correctness of each the protocol/solution these problems, you must resort to deep results in graph theory and other branches of applied mathematics that are useful for modelling computational problems. ----------3.3 This requires the study into the purely theoretical realms of computational complexity theory, graph theory, etc... in order to define properties of the structures in the aforementioned fields of applied mathematics. This is the traditional heart of computer science, one in which true "computer scientists" generally have to express their results in terms of. So I'm glad you can do everything on that list and much more. But that isn't computer science. sure you're hacking around, that's great, but don't go around thinking school is dumb because they don't appreciate your web development and unix skillz
- vduquette 15y ago10001 - Talk to a girl.
- sambeau 15y agoBeat me to it. :) There is, sadly, some truth hidden in this quip.
- maurits 15y agoLet me compress this list, for those people in CS programs which focus on theoretical/more abstract paradigms, it is useful ( and fun ) to code. SO 10 Write code in <language> for <project> based on <technology/idea> on <platform> 20 goto 10
- pyrhho 15y agoMaybe release it at some point? For me, actually shipping things is often the hardest part...
- JeanPierre 15y agoIt's an interesting list, but I do believe it lacks a lot of computer-specific things which I personally think people should do. For example - Build your own computer - Build your own (small) operative system - Build your own programming language would be on my list of things a CS-student should do before graduating, because you will most likely get into problems where knowledge of the three things mentioned above will help you understand/solve the problem. Obviously, that list is not complete, but I think those are some of the more important points.
- natural219 15y agoI wouldn't recommend that EVERY CS student do those. I mean, I would, but you can't expect every person to be able and willing to build any of those things. I think that this list is great in that it's reasonable; none of these things are particulalry hard, but each one of them actually sounds fun and produces something cool.
- sanderjd 15y agoI assume he means putting together a computer in the sense of constructing one from commodity parts, in which case that one is definitely in line with the rest of the list. The other two are certainly more advanced exercises than the rest, but I think they are absolutely things CS students should be expected to be able to do, though many won't be willing to. Many won't be willing to do the other things on the list either, that's kind of the point of making an inspirational list, isn't it?
- natural219 15y agoOh. I read it as, "design and construct your own circuit board." Building your own computer isn't that hard, but I don't know what (if anything) it has to do with computer science / software engineering.
- esrauch 15y agoYou would be surprised how many CS students don't even know what parts are in the computer. Picking parts yourself forces you to research exactly what each part does. Though I think that is a much lower bar than pretty much anything that is on the list there, any nontechnical person could figure out what parts to buy and put it together but it would be a lot harder for those people to write a MapReduce.
- deleted 15y ago[deleted]
- natural219 15y agoI think a lot of people here missed the point. This isn't a list of "stuff that will make you SUPER BALLER," it's a list of easy things that teach you very much and give you a lot of confidence for a very small amount of effort. Plus, all of these tasks are highly relevant in our web database-driven world. Not everyone wants to be Johnny Writes His Own C Compiler Geek, but every CS student SHOULD be able to configure LAMP.
- ender7 15y agoI'm surprised that most people seem to have ignored this line: > it’s about doing, as opposed to knowing or learning After graduating, I had to teach myself everything in that list before I could actually do anything that I found interesting. Now, this obviously doesn't apply if you're, as you say, writing a compiler, but for the average CS student, this is a great list to complete.
- xtreegold 15y agoThe key word here being "average". Many of my classmates weren't even able to do the things on the list, much less write a toy OS or language. So yes, for average people this list is a good stepping stone to become above average.
- RyanGuest 15y agoSomebody should write a "stuff that will make you SUPER BALLER" list.
- Apocryphon 15y agoHN could create a master list of that.
- jodrellblank 15y agoDidn't they do that and call it SICP(/TAOCP/K&R/HTDP/...)?
- jvehent 15y ago
- mashmac2 15y agoBinary... not a literal 10,000 item list, a mere 16 items in base-10.
- rcfox 15y agohttp://cowbirdsinlove.com/43 http://cowbirdsinlove.com/43
- dendory 15y agoI've done all of that many times before, and I don't have any CS degree. Do I get an honorary one now? :P
- JoeAltmaier 15y agoI eat a burrito - that doesn't make me Mexican :)
- badusername 15y agoBurrito eating was never a prerequisite to being a Mexican :)
- mattdeboard 15y agoFirst step for anyone who actually WANTS to be a skilled programmer is, in my opinion, find a mentor who: 1). is really really good at programming; 2). is even better at teaching complex matters in understandable ways. Made all the difference for me.
- zheng 15y agoSo, where does one find said mentor?
- mattdeboard 15y agoHave to talk to people and network. Make friends and so forth.
- KirinDave 15y agoWhy is the rule restricted to LAMP? And why should the P = PHP & Python? What makes these special? Both are poorly designed languages (since I assume we're not talking Python 3k here)? If anything, I'd say, "Do the systems engineer job application challenge at Square in 2 languages of your choice, one of which should be Valley mainstream. Keep Python or Ruby in slot one, and aim for a big-iron language for #2, like maybe Scala or C++ or OCaml or Haskell.
- potatolicious 15y ago> "Why is the rule restricted to LAMP? And why should the P = PHP & Python? What makes these special? Both are poorly designed languages (since I assume we're not talking Python 3k here)?" Hehe, I think this is the exact attitude the author is trying to prevent. Far too many CS students become too enamored and obsessed with language purity, the perfect design, etc etc, that they end up never building anything. The LAMP stack (in both its variations) is by a really long shot the easiest stack to string together (honestly though, Rails will work too). PHP is incredibly easy to approach from the perspective of someone who hasn't written too much code before, the documentation is way more extensive than just about any other platform, the user base is heavy and has a long track record for helping out. For a novice programmer this is an ideal way to build something end-to-end (which is the whole point of that advice) and learn the pitfalls that come with building a whole product (as opposed to one small module of a larger thing). The industry needs people who build things. Whether or not you're familiar with Silicon Valley's Incestuous Circle of Hot Languages And Platforms is strictly secondary.
- KirinDave 15y ago> Hehe, I think this is the exact attitude the author is trying to prevent. Far too many CS students become too enamored and obsessed with language purity, the perfect design, etc etc, that they end up never building anything. I build plenty of things. I just don't get why you'd focus on PHP, which has little business value anymore (no NEW, serious project is going to use it) or Python (which is itself less questionable, but in a big period of transition right now). I'm suggesting building something with technology you'll probably end up working with once you're out of school, and Python 2.* is probably leaving that list. I don't know where you get "language purity" from. > The LAMP stack (in both its variations) is by a really long shot the easiest stack to string together (honestly though, Rails will work too). Nonsense. > PHP is incredibly easy to approach from the perspective of someone who hasn't written too much code before, the documentation is way more extensive than just about any other platform, the user base is heavy and has a long track record for helping out. The target audience here is CS students. Odds are they've got a bit of coding experience. > The industry needs people who build things. Actually, the industry needs people who can both build and learn. EVERY JOB you go to will have its own stack, with its own idiosyncrasies, and its own tooling. If you are not ready to learn something new every time you go into work, you probably shouldn't be in this career. Seriously. It's this sort of attitude ("Stop fucking around with all that learning and build something") that has screwed our industry over so consistently. It is possible, and mandatory, to do both. > Whether or not you're familiar with Silicon Valley's Incestuous Circle of Hot Languages And Platforms is strictly secondary. Not if you'd like to be employed.
- yesimahuman 15y agoThis is essentially the same advice I give to people when they ask me. A great way to become a self-sufficient developer is to try coordinating a group of machines all running software you've written. Bonus points if someone actually uses it.
- thenduks 15y agoThis list has nothing to do with CS students. It's just (specifics about LAMP/etc aside) stuff any competent programmer should do.
- raffi 15y agoI'm a computer scientist, not a web monkey (FOOTNOTE). I'd say these are not the things all CS students should do before graduating. The field has much more to it. How about: 1) add or modify a significant feature of a working kernel 2) write a toy programming language 3) program in a programming language with concurrent constructs (e.g., erlang) 4) study some theoretical area, develop a practical application based on the theory I don't know, these are some things a CS student should aspire to. Setting up a WordPress blog and configuring a basic Apache instance? Yeah, good stuff--but I would in no way attach computer scientist to these activities. It's like calling the Best Buy Geek Squad folks electrical engineers. (FOOTNOTE let me caveat that I do on occasion, work as a web monkey.)
- presidentender 15y agoStuff on the list gets you jobs. Your stuff doesn't.
- artmageddon 15y agoI know people who do stuff on the parent's list won't find the number of job postings as plentiful as the ones who do the items in the link, but let's face it, those are hard to come by skills. If a recent grad finds himself lacking in confidence with his or her abilities, then taking "baby" steps like those outlined in the link are perfectly fine. I know I could stand to try some of those myself. The hope though is that should a person have the drive, that they can eventually be able to do the computer science tasks.
- urwrong 15y agoUmm... I don't think so. If you are thinking of CS as in Computer Science then that is CS and what the list mentions is what someone who wants to work in IT would need to know. Computer science is much more than just web technologies and many many people on HN will testify they got jobs because of knowing what this list mentions I am not denying that there are many others who would say they got jobs by knowing stuff on the list in the link, but hey its just plain wrong to say these things do not get you jobs. Many university professors have this as a minimal requirements for their job, thats one example.
- sayemm 15y agoThis is very web-based, which is good and I think it should be done by current CS students - it shows passion/motivation and actually getting real-world exp. On the other hand, for a more CS-based list of tips, this is what Joel Spolsky has to say: http://www.joelonsoftware.com/articles/CollegeAdvice.html http://www.joelonsoftware.com/articles/CollegeAdvice.html
- evan_ 15y agonumbering computer-related lists in binary stopped being cute a long time ago
- vvnraman 15y agoWell, the author intends to give us advice on the the general purpose CS stuff which all the CS students should have a practical knowledge in. I think its taken for granted that while graduating, we would be doing the more demanding things such as: -designing our own programming language. -developing a minimal OS dedicated for some specific task. -develop an new alogorithm or drastically improve upon an existing one. -etc... While doing the things mentioned in the author's list, you may surely implement a few of the crypting concepts which you have learned during your graduation. No one is stopping you to do that.
- DLarsen 15y agoI'd go further and suggest completing most of these before entering a CS program. Consider it the start of a long career of self-education and improvement.
- phxrsng 15y agoI'm a CS student, near the end, and let me add at least one or two things to this list: - Meet a lot of interesting students outside of CS - Go to at least one random social even that has no connection to CS - Minor in something non-technical, or at least take a few classes Not to detract from CS at all, but it discourages me how many of my classmates spend 4 years doing nothing but computer science and never think/learn anything else and become even the slightest bit well-rounded. So many of them barely socialize at all for 4 years, even within CS, much less outside of it. There's more to being a good student and having a good life than knowing the ins and outs of programming languages and kernels, and your career will benefit from being a little rounded.
- xxpor 15y agoI agree with this list, but let me add that when you say "Go to at least one random social even that has no connection to CS" I hope you mean "make a commitment to a social group that has no connection to CS". Also w/ regards to "Minor in something non-technical, or at least take a few classes" I can't agree more. I am a CE, not CS, but close enough. Currently I am taking German, and I would say it is one of my favorite classes. It has completely changed my way of thinking about languages, including English. To be honest, my involvement with student gov, fraternity, and German is what keeps me sane for my technical classes.
- urwrong 15y agoIsn't CS supposed to be a branch of math?
- ek 15y agoYes and no. This list makes me sad because it neglects every single computer scientist that's interested in doing work on theory. I am one such computer scientist, and much of the work that I do involves merely pen and paper. There are a lot of people on HN that are web monkeys and make good money doing Web 2.0 stuff, and there are a lot of people that know pretty much nothing about computer science but use computers and program. These people equate CS with programming and the other sorts of tasks described in this article and then forget that there are computer scientists that could conceivably have no idea how to program in a modern language and still make contributions to the field. But maybe HN is the wrong place to go looking for discourse on this sort of material. The point, though, is that this article is misleading. Perhaps it would have better been titled "10000 things every software engineer-hopeful should do" or "10000 anyone who writes code for the web should do".
- drdaeman 15y ago> Install an Apache web server and configure it in a non-trivial way, e.g. to serve multiple domains. Since when adding 3-4 self-describing lines (bare minimum required to add a virtual host) to config file is non-trivial?
- asciilifeform 15y ago10000) Learn arc welding, plumbing, or other genuinely useful skill.
- pnathan 15y agoWeb-monkeys need to get of their shell more. There's a gigantic world of computing out there, with good jobs to boot, that has nothing to do with web 2.0.
- wonnage 15y agoI don't think you actually learn much from doing any of these things. For example, most of the developers I meet set up apache the following way: google a bunch of conf files; bash at it until it works; never touch it again. In any case, what good does it do you to rote memorize how any one piece of software works? What if Apache didn't exist, what if it was 1999 and all these shiny Web 2.0 APIs didn't exist - how would you write a web server or communicate with other applications then? Seems like that's the sort of knowledge you want to have, and precisely the sort of handwavey theoretical stuff you have the luxury of spending time on in college.
- peacewise 15y agoIt is sad that CS students are now encouraged to become fancy sysadmins, linking existing technologies together 95% of the time and maybe adding 5% of actual stuff. No wonder resumes come with tens of technology names on it, but the owner fails to implement basic things like itoa.
- dlo 15y agoMaybe different lists can be prepared for different career tracks. The items enumerated in the main article obviously has a Web development feel to it. For perhaps another track, I feel that the following tasks, actually performed by someone, can be re-formed into a similar list. * modifying the Linux implementation of strace to implement system call interposition for CDE * modifying the official C implementation of the Python interpreter to create IncPy and SlopPy * prototyping Python interpreter extensions by hacking on PyPy, a Python interpreter (written in Python!) * enhancing Klee, an automated test generation and bug-finding tool based on the LLVM compiler infrastructure (written in C++) * performing quantitative data analysis using SQLite for data storage and retrieval, Python for ad-hoc data munging, and the R project for statistics * creating lightweight interactive data visualizations using HTML and JavaScript with jQuery * writing lots of Python scripts to automate routine tasks and to administer computational experiments * writing a custom memory allocator for C programs * creating dynamic program analysis tools in C using the Valgrind code instrumentation framework * building components of a software simulator for semiconductor tester hardware using C++ within the Microsoft Visual Studio IDE * creating an interactive image filtering application in C++ using OpenGL and GLU for image rendering and Qt toolkit for GUI. * building graphical applications for Palm OS handheld devices in C using the Metrowerks CodeWarrior IDE * writing a GUI for a handwriting recognition application in C++ using the Qt GUI toolkit Programming, and indeed all of computer science, is a very mixed bag! Source: http://www.stanford.edu/~pgbovine/academic.htm http://www.stanford.edu/~pgbovine/academic.htm
- younata 15y agoI just finished my first year of Uni. I'm spending the summer at an intership, where I'm writing very low level code. (For example, right now, I'm writing a utility to arping an address range. I've learned all about OSI, ethernet interfaces [I'm using BPFs [1]], etc.). In my free time, I'm playing with opencv. For example, here [2] is an image I took of myself, ran through an edge detector, ran again through a distance transformer. I'm thoroughly enjoying myself. I also know how to configure a LAMP [3], but that's nowhere near as interesting as the previous two paragraph.s [1] http://www.FreeBSD.org/cgi/man.cgi?query=bpf&apropos=0&sektion=0&manpath=FreeBSD+8.2-RELEASE&format=html http://www.FreeBSD.org/cgi/man.cgi?query=bpf&apropos=0&#... [2] http://michaelbrindle.com/images/meDistTrans.jpg http://michaelbrindle.com/images/meDistTrans.jpg [3] in my case: FreeBSD, Lighttpd, mysql, and python, so... FLMP
- jdefr89 15y agoWhy can't I down vote? That advice was horrid, and basically said 'learn all about buzz technology and blog stuff'.... Seriously, thats what they should be doing way LESS.. They should do more things such as the following: (My own biased list) 1. Designing their own CPU (this will go along with learning memory management, paging, translations, etc) 2. Learn about Linking and Loading 3. Write Toy OS 4. Learn C and x86 assembly 5. Learn TCP/IP and OSI model well. 6. Write some damn code and try to contribute to open-source 7. Learn about application security (stack overflows, heap, etc.) 8. Write your own API for anything to learn how to create consistent and easy to use code. 9. Apply what you learn about an algorithm or data structur in a novel way to solve a practical problem. Who knows you may see something and say 'wow I could use that algorithm and apply it to finding words that rhyme' or something like that.... 10. Please... have some damn system administration skills. Learn your way around a modern system be it linux, bsd, windows. 11. Figure out why design patterns and OO aren't goddamn silver bullets for every issue. 12. Christ sakes, learn some damn math. 13. Stop trying to learn every damn language you see. Just because proggit/hackernews is buzzing about some new technology doesn't mean it is worth your time. Be different go against the grain. ... and other stuff I can't think of..
- rreeves 15y agoI agree, the advice is off mark. Studying Computer Science should be about learning the fundamentals. Algorithms, Discrete Math, Operating Systems, Compilers, Computer Architecture, etc.
- flexd 15y agoI think there are about two things on that list I haven't done, besides not having started CS/Comp. Engineering yet. It might just be me but shouldn't just a whole bunch of debugging, technical know-how and actually having a strong interest in technology also be important? I know many CS students that besides gaming are not really interested in nerdy technical things and I know there are a lot of people starting CS (at least here in my country) that have never really used a computer for anything other than internet surfing and word processing. It's not like you become a good programmer or computer person over night just by taking a three year long CS bachelor. Somebody who is already committed to learning more things on their spare time and already has an interest in these things before starting school will always come out of the situation/bachelor better. Don't you think so? I would also have included a bit of electrical engineering knowledge (like soldering, electrical circuits and things like that) because just because you are a CS student and work in software it shouldn't mean you should know nothing of the systems and technology you use.
- joezydeco 15y agoLearn to install and reinstall Windows. Not just Vista or 7, but XP as well. Learn how to add/remove/troubleshoot device drivers without killing yourself. Connect to a local server, get networking set up, get wifi working. Because someone, somewhere, shortly after you graduate, will ask you to do this. You might even have to do it for yourself at your first job. [EDIT] You can downvote me, but any fellow CS grad that makes it to a business environment will encounter some coworker that will want help with their machine, and I guarantee it will be running some version of Windows. Trust me on this one.
- primitur 15y agoThis is more like what "IT" students should do before entering the workforce. CS students, lucky sods, should be making transistors.
- jccodez 15y agoI would add: Visit an art museum and learn about the different styles of art. It's about different forms of expression that don't involve 1s and 0s.
- zb 15y ago10 - learn to count in hex instead of binary.
- known 15y agoAnd do MBA. Writing software != Selling software
- Swannie 15y agoBefore GRADUATING?! This was all things I was doing before I started ATTENDING university. It's super simple, and you won't be downloading Slackware on 30 floppy disks any more!