TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

What did you cover in your undergrad CS degree?

34 点作者 sharksforcheap超过 12 年前

17 条评论

basseq超过 12 年前
The key question that some have touched on is this: What should comprise a CS degree? (E.g., should these (and/or other areas) be a part of a CS degree?)<p>I think the right balance needs to be struck between the academic and vocational views. Big-O, grammar, automata, etc. are the fodder of academic papers, not the Real World. But when you talk about higher ed, here's the rub: its supposed to be the theoretical foundation, not a purely vocational preparation.<p>The danger of the more vocational point of view is that you're supporting what I see as the slide from "skilled software engineering" to "coding". (Think the difference between having John Carmack on your team, versus some guy making $8/hr in a developing country.) This is hyperbole, but if you focus on the day-to-day elements of any job, then you're advocating for movement to a technical school curriculum (which, right or not, has a different level of career momentum, responsibility, etc.).<p>CS (using the term to apply to the genre, inclusive) is maybe unique in that there are very vocational components, but also very intellectual/academic components. I think, like any career, there are going to be Things You Don't Know coming out of school. Interviewing, for example. Is that in ANY university-level curriculum, for ANY major? Are you expected to be 100% "operational" in a particular job immediately after your degree is awarded? Moreover, since when are all CS jobs the same? Why should it be any different for CS?<p>This is what bothers me about this argument: CS is not equal to programming, and not equal to a (particular) job.<p>And moreover (and I think most here would agree), the greatest hallmark of a great "technical thinker" (programmer, academic, problem-solver, tester, DB admin, whatever) is their willingness, nay INTEREST, in pursuing the details of their craft beyond the structure of a class or a job or (god forbid) an employee handbook.<p>I don't want to work with someone who goes through the motions. I don't want to work with someone who comes out of college thinking they're prepared for their capital-C Career. I want a lifelong learner, and someone who wants to get into the guts of operations and make an impact.<p>Educate and train for THAT.
评论 #4715209 未加载
评论 #4715736 未加载
评论 #4715439 未加载
评论 #4715936 未加载
评论 #4715618 未加载
评论 #4715440 未加载
barakm超过 12 年前
So I did EECS at Cal. And while some of these things are definitely in the category of software engineering and not computer science, I have to say that, in the few years between my undergrad and today, I've kept in touch with the community. And it's my sense that a lot of skills which one might find on this list are starting to be emphasized more: testing, version control, scale, timelines, communication -- so it does feel like undergrad curricula "get it" and are supplementing the standard courses with some generally useful stuff. Not replacing, but suggesting/providing/using some of the useful stuff in the context of the greater course.<p>I'm a little surprised schools didn't touch upon complexity already; that's been around for awhile. Yet, it is the biggest category in the responses, so that's probably why.<p>I'd also say that things like deployment, sysadmining -- <i>browser incompatibilities</i>? These are a lot more role-specific and better learned in situ. If the guy who knows browser incompatibilities needs to know how to do deployment, you are either (a) a pre-funding startup or (b) spreading your talent kinda thin.<p>I'm sure most of the responses here will say something like "I have never let my schooling interfere with my education" -- which is all well and good for you. But if we want more and better candidates, it couldn't hurt to adopt some of the best-of-the-best practices (version control!) into CS curricula.
anusinha超过 12 年前
This doesn't look like a CS degree---this looks more like software engineering requirements. CS and SE focus on distinctly different things. I might suggest changing the page title.
评论 #4714601 未加载
评论 #4715220 未加载
评论 #4715819 未加载
lumberjack超过 12 年前
Personally I find things like version control and system administration to be things that students should learn for themselves. They should be encouraged, even actively encouraged (in fact they are already in most institutions) but there shouldn't be a class dedicated to this stuff. You are in University, studying CS ffs. If you can't learn such petty things for yourself, what good are you?
评论 #4714711 未加载
评论 #4714800 未加载
评论 #4714752 未加载
评论 #4715106 未加载
评论 #4714683 未加载
评论 #4715752 未加载
marvin超过 12 年前
-Philosophy of science, the scientific method<p>-Object-oriented programming<p>-Basic calculus<p>-Basic discrete mathematics<p>-Linear algebra<p>-Algorithms, data structures and asymptotic analysis<p>-Basic compiler design<p>-Theory of computation, Turing machines and formal languages<p>-Basic practical computing technology, from the gate level<p>-Basic software engineering: SE methodology, version control and developing software in a team<p>-Cryptography, ciphers and data security<p>-Overview of the role of operating systems<p>-Networking, encapsulation and the TCP/IP stack<p>-Basic web technology, server-side programming and client-side scripting<p>Anything outside of this, I've learned on the job or in my spare time. This includes AJAX and the use of heavier web technology. To my intuition, this is more descriptive of an undergrad degree in computer science rather than a software engineering degree. But it'd be nice to hear what others think.
评论 #4715640 未加载
TwiztidK超过 12 年前
On the results, rather than displaying the % of votes that each subject received, it would be more helpful to show the % of voters that selected it.<p><i>Instead of this:</i><p>Total voters: 613<p>Total votes: 3168<p>Designing data structures (543 votes, 17%)<p><i>Show this:</i><p>Total voters: 613<p>Total votes: 3168<p>Designing data structures (543 votes, 89%)
hkarthik超过 12 年前
I graduated with a CS degree ten years ago and I could only check the following:<p>Designing data structures Analyzing algorithmic complexity (Big O)<p>Version control was glossed over in my class with little importance given to it.
评论 #4714830 未加载
antiterra超过 12 年前
Browser incompatibilities? That's a candidate for the 'information to be most quickly rendered outdated/irrelevant after graduation' award. I would rather spend my $1400 a credit hour on poetry workshops (and I did.)
评论 #4715634 未加载
Mystitat超过 12 年前
The table of results is hard to read. More contrast between the results bars and the background would help.
zt超过 12 年前
"We believe that the bar for training and hiring of front end JavaScript developers is even more attainable, and that is why we have chosen to be the first, and as of now, the only training program specifically for that market."<p>You know what I want--a twelve week, intense course on scientific computing in something like Python--for people who already know some core scientific subject and statistics. If we took <a href="http://www.drewconway.com/zia/wp-content/uploads/2010/09/Data_Science_VD.png" rel="nofollow">http://www.drewconway.com/zia/wp-content/uploads/2010/09/Dat...</a> as a guide (and yes, yes, data science is just a name for something that has existed for twenty years), I want a program to move people from traditional research to data science.
joncalhoun超过 12 年前
I feel like there should be a follow up survey asking recent grads what their degree enabled them to learn outside of their coursework.<p>My CS degree hardly taught me anything in comparison to everything I learned outside of my coursework, but I don't feel like my coursework was lacking. On the contrary, my education allowed me to learn new things on my own that would have been significantly harder otherwise.<p>eg a basic algorithm course lead me to get involved in TopCoder. An introductory course on software development (source control, testing, etc) gave me enough knowledge to find an internship where I learned about peer reviews and how to work effectively with a large codebase - something that is very hard to pick up in a semester of college.
anonymoushn超过 12 年前
I got to check three of these, but one (version control) was only because I took game programming. A person could easily earn a CS degree from my school without using version control for any class.
archagon超过 12 年前
One thing that I wish my undergrad CS degree taught me was how to manage and structure larger programs. It's a vast topic that I still have a lot of difficulty with two years into my career.
breckenedge超过 12 年前
So did anyone ask these same questions to businesses that hire CS grads? How about business that hire programmers/non-CS grads? Would be useful to see the flip side.
TYPE_FASTER超过 12 年前
CompSci should include at least a semester or two of business classes, including the delegation lessons in the HBS article posted earlier today.
评论 #4715228 未加载
j45超过 12 年前
Very little that was directly transferable to the real world. Some may argue this doesn't apply to CS, but I think applied computing science is what I'd look for.<p>Things that were not covered included:<p>- Basic business skills<p>- Basic sales skills (We all have to sell our ideas, be it to peers, departments, customers.)<p>- Storytelling skills<p>- People networking skills<p>- Understanding very few businesses have technology problems, but instead business problems that they are trying to solve with technology.<p>- You don't understand anything if you don't understand how the data in any system inputs, exists, interacts, and outputs. You don't understand the business if you don't understand the data. You should not be allowed anywhere near building software for an organization if you don't understand the data.<p>- Understanding that the data in many ways is the system. No software/system is useful without data.<p>- Learning an organization's competitive advantage and magnifying it with software. Too often programmers interpret things killing the competitive advantage.<p>- It's not about you, it's about the user. Users rarely care what you code in, or the frameworks, or whatever you've done to make your own life selfishly easier and continuing to neglect actually getting to know their world, their data, and the the problems they face with it.<p>- Marketing skills - eliminate feature babble and focus on benefits once you've been in user's shoes working on users problems.<p>- Communicating with the world to first understand, and then address their needs. You are no better than a technically clueless business guy if you make assumptions as blindly in other ways about the business process.<p>- How the real world does not start every project with a clean slate like CS projects. This is probably one of the biggest gaps.<p>- Learning to learn other people's code, refactor + more.<p>Instead, we learned the theoretical using many languages building the same kinds of things over and over for 4 years. It was awesome to the geek in me. Sprinkle in some UI or database skills, and yes, I did get very good at learning any technology I needed, but implementing it in a meaningful, sustainable way. But the real world used very little of what I learnt for 4 years.<p>When I took CS in the late 90's I had to learn to build web apps, databases, load balancing, administrating servers, all on my own, not to mention getting a business education largely by learning to swim by diving in.<p>The social skills are really big. Partially I think CS attracts folks that aren't extroverted, and it can be a problem.<p>We're at or nearing a crossroads in my opinion where the entire world has come to the internet and technology, and those building technologies and online need to be better bridges in interfacing with humanity.
评论 #4715259 未加载
mememememememe超过 12 年前
I am not surprised with "Interviewing candidates" getting low score, but it did receive some votes.... any proof?