5 ms·
This complaint comes up time and time again. "Universities should prepare students better for jobs!" "Teach more real life skills!" "Turn CS uni into trade scho
by bonoboTP 6y ago
This complaint comes up time and time again. "Universities should prepare students better for jobs!" "Teach more real life skills!" "Turn CS uni into trade school!"
But a computer science university program is not about scikit-learn or TensorFlow! It's about long-lasting principles, underlying mathematics, mental models and ways of thinking.
None of my computer science lectures were about how to apply that particular part of CS knowledge in some hot new Python library. It's expected that there will be some amount of time required to adjust to a company's software setup. That's not a big hurdle usually.
I'm not saying it should be only theory, though. University courses often have accompanying assignments or projects. Depending on the country in question, they often offer more hands-on, practical courses ("lab courses") as well, where you do actually go through the steps of making the theory work in real life. I had such courses where we played with microcontrollers and FPGAs to understand CPU instructions, assembly and low-level C concepts (but even there the goal wasn't to learn exactly the thing that you will use on the job. Most CS graduates will never need to program FPGAs in their day job.).
But sure, there is a place for even more data engineering training, but I don't think it's computer science university programs. Where do people like network engineers learn how to configure Cisco routers and use whatever config software they use? Where do sysadmins learn Bash, Unix, backup management etc? Not at university courses. Wherever they learn those skills, that's where data cleaning, parallelization engineering etc aspects of machine learning should be taught as well.
- jasim 6y agoI've oscillated between these two positions for a few years now, when in truth neither positions are really in conflict. When we complain about universities not preparing students better for jobs, what we really mean is that universities are not doing the bare minimum that they should be doing - in case of CS, students should at least know how to program well, and be well versed in the practicalities of computing. That does not exclude learning the fundamentals (which is often denigrated as "theory"). It is just that students often have neither the theory nor the practice, and at a minimum, we're asking, they should know the practice so they can at least be useful in their jobs.
- marketingPro 6y agoThe fact that there is somehow a notable size of computer science grads that don't know how to program is the most major red flag. Are students cheating? Is curriculum group based? Is the content not hard enough? If people need to do coding interviews, I see no reason why similar can't be done in college at a 200 and 300 level checkpoint. Programming/logic is easy if you understand. It doesn't need to be directly tested often.
- bonoboTP 6y agoThere's lots of hard CS content you can learn and take exams in without writing code. Logic design, complexity theory and automata, graph theory theorem proofs, linear algebra, complex analysis, coding theory (compression, encryption, ...), algorithms, proofs about data structures, operating system theory (scheduling algorithms, deadlocks, race conditions, virtual memory), database theory, etc.
- zdragnar 6y agoWhen I was at a major US University in thr early 2000's, anything higher than C wasn't taught because the field changes faster than a 4 year degree would make sense- modern languages were seen as the domain of 2 year tech schools. I believe that has since changed, but I am not sure to what extent.
- mlthoughts2018 6y agoI think this is more of an expression that coding interviews are horribly poor for assessing effectiveness at delivering code to solve business problems. Those people you say “can’t code” actually can code very well - it’s just that the question “can you pass this timed hazing trivia test in coderpad or on a whiteboard?” has no relationship to “can you code?”
- marketingPro 6y agoI don't think a coding interview can figure out if you can solve a complex business problem. It will show you if someone knows basic programming.
- tracer4201 6y agoI’m an engineer who helps quite a bit with hiring interviews. In my humble opinion, there’s a surprising number of fresh grad candidates who are not very skilled with theory nor practice. It has been many, many years since I was in school. I think it’s fine that your computer science education focuses on fundamental CS concepts and the mathematics so you can easily pick up areas that require that math (ML, for example). I do think universities can do better. At my school, we had mandatory “block” classes in arts and humanities, which in my opinion, offered no value. To be clear, I’m not saying these subjects aren’t valuable. I am saying, however, that the quality of these courses was very poor, and they could have been substituted entirely with classes related more to my discipline. I remember sitting in some political science classes that were part of this required pool. I have no idea what we learned in there. As far as I can remember, we read political science papers that were very poorly written/extremely inaccessible. It was impossible to differentiate the authors personal opinion from objective truth of any kind. It was more or less a checkbox - I had to have so many credit hours from this pool in their curriculum to graduate. Did it force me to think critically in some manner? Not at all. It actually gave me a false sense of how “intelligent people” write. Yes - all these years later I understand that it wasn’t me who just could understand those papers - it was half rambling, pretentious rambling nonsense. It was the opposite of effective communication, and it provided no value.
- bonoboTP 6y ago> there’s a surprising number of fresh grad candidates who are not very skilled with theory nor practice. Is there any "entrance point" where people don't complain about this? Companies complain universities don't prepare students. Universities complain that first-year students come out of high school without necessary background. High schools complain that elementary school does not prepare their entrants etc. Elementary schools complain kindergarten doesn't prepare kids to be mature enough. Kindergarten probably complains that parents don't prepare the kids enough. Broadly speaking, I think there is more demand for highly skilled, highly intelligent people than can be produced by any given cross-section of the population born in a given year. Sure, universities could do better, but beyond a certain point teaching doesn't work. There are people who are intrinsically motivated and soak up knowledge and seek it out in books and online (so much high quality content can be found online, especially for CS!), and there are those who just coast and do the bare minimum. I don't think you can radically improve the outcomes by changing the curriculum.
- jagger27 6y agoThere’s a big gap between the whiteboard in a classroom and a blinking terminal cursor. As a teaching assistant a few years ago I spent a good chunk of my time in the lab showing otherwise brilliant computer science students things like basic terminal commands, how to read error messages, and just overall basic problem solving skills. Almost all of the students I worked with were much stronger than me in terms of theory and what I call “whiteboard computer science”, but many of those same students who aced written tests really struggled with basic roadblocks like learning language syntax to do practical assignments. It sounds really silly, but some of the best instruction I gave was “Tab” to autocomplete a command and “Up Arrow” to re-run the last command. Whenever I would do a class demo on the projector someone would always stop me to ask how I was running commands so quickly and fluidly and how on Earth I could remember them all.
- p1esk 6y agoSomeone (Knuth?) said there are only 2% students in any CS class who are good. I worked as a CS TA as well, and I found that to be true. The top 2% of students already had practical skills (shell, vim, git, networking, etc), usually because they've been coding since they were 12 and learned by doing cool projects. Sometimes I saw bright students without prior experience picking up those skills quickly (much quicker than I did).
- bonoboTP 6y agoWhy does CS seem unique in this? Why does the same not apply to medicine, law, physics, mechanical engineering etc.? Or perhaps it does? Would you say only a low percentage of mechanical engineering students are any good, namely those who have tinkered with mechanical contraptions from age 12? Does CS require uniquely high intelligence / problem solving ability compared to other fields? I don't think so. Then what do those 2% have that others don't? Some have suggested frustration-tolerance, we could perhaps add detail-orientedness. But these are also needed in engineering. Perhaps the abstract, intangible nature of CS makes it harder?
- mlthoughts2018 6y agoI think the article is actually saying the exact opposite - that Tensorflow / PyTorch / sklearn code soup from “trade school” sources like bootcamps or quick online programs are not very valuable out in the world. You might be misunderstanding the focus on data cleaning and feature engineering as being less specialized than say PyTorch coding but it’s exactly the opposite. The most critical aspects of ML engineering for production are all about advanced statistics. Understanding multicollinearity, overfitting, dimensionality reduction, convergence, and time series issues like assumptions of stationarity or conditional independence effects. Any engineer can crank out neural network software - that has pretty much zero value. Value lies in realizing some stratification error in the data and following that lead to use a multi-level model to control for it. Value lies in realizing several key feature inputs are correlated on a seasonal basis - leading to multicollinearity - and then setting up some adaptive feature aggregation to mitigate it and dashboards with things like variance inflation factor to be able to raise alerts on it across time. Value lies in working on small data problems and using literature review to determine the best prior to use for a Bayesian model, and doing robust posterior predictive checks to validate it. These things require many years of education and experience dealing with statistical irregularities, understanding confounders and causal inference, understanding missing data treatments, understanding time series forecasting. You cannot learn that in 101 courses that overly focus on the mechanics of how to type Tensorflow or sklearn code - that part can be picked up by anyone in a month or two. And mere intro to data cleaning and plotting distributions or proportions of missing data is not a substitute for actual statistical knowledge.
- p1esk 6y agoOr you can just use 100x more weights in a transformer, and it will learn how to write human level quality texts without much data cleaning or fancy statistics. /s
- tester756 6y ago>None of my computer science lectures were about how to apply that particular part of CS knowledge in some hot new Python library. Mine were I had C#, .NET Core, Docker, MongoDb, MSSQL, Postgres, GraphQL, OData, Neo4j, Redis, WebAssembly (Blazor), React, Vuejs and stuff like Git. that was covered on "Web apps", "Databases", "Non relational databases" and meanwhile some bigger/smaller programming projects. Public school, studying at weekends.
- andreyk 6y agoTo be fair, this piece is mostly arguing against just teaching Tensorflow or Pytorch and is in favor of more general skills (with data engineering being fairly general, though as you point out also something that can be taught via concrete assignments). And as to your last point, that's pretty much the conclusions of the piece itself: "Based on the current state of machine learning courses it is clear that AI courses will get you through the door in your effort to perform cutting edge research or landing a machine learning job, but they won’t teach you everything you need to know. To fill in the knowledge gaps that remain you will have to put in outside effort on your own. " I guess the question is whether the outside effort needs to be addressed by universities, or by other resources.
- dunkelheit 6y agoThis complaint has nothing to do with teaching hot new python libraries. The thing is, data cleaning is no less fundamental than backpropagation. Maybe more so - learning algorithms come and go, but real-world data is always going to be inherently messy. The difference is in that we have a beautiful mathematical theory for backpropagation but not for data cleaning. So the courses that teach the former but not the latter are akin to the proverbial drunkard that searches for the lost keys under the street light - beautiful mathematical theories are easier to lecture on so they teach them instead of messier (but not less fundamental or useful) topics such as data cleaning.
- PeterisP 6y agoTo comment on "Where do people like network engineers learn how to configure Cisco routers and use whatever config software they use? Where do sysadmins learn Bash, Unix, backup management etc?" - they certainly can do at university courses. Just as universities offer study programs and degrees in software engineering, there are also programs and degrees for network engineering, which would include not only the theoretical basis of networking but university courses for applied networking where they would learn all that you describe and much more; a university teaches a network engineer to configure routers and manage backups just as they teach a first year electronics engineer to solder stuff. Sure, a generic computer science or software engineering program will not include these courses, that's a usually a separate specialization, but universities definitely do offer engineering programs.