"We saw lots of people in the City University of New York system who graduated as computer science majors but weren't going into the tech industry...It was a lot of access and network problems, and a lack of technical training."
This is really confusing. How do you graduate as a computer science major and lack technical training? And if that's the case, how does such a faculty remain in business?
I took an AI class and also a computer graphics class at a CUNY school in the fall of 2013.
Among CS-major seniors who are in the top half of the class, none that I talked to knew what software version control was, what git or Perforce or cvs etc. were.
The faculty is good. Almost all of them knew their stuff, and a few were very good at explaining things clearly.
The kids just didn't seem to have much interest in doing computer stuff outside of class. You'd think at least once in four years they'd browse Github bug reports, do a patch and send a pull request. They don't though. The ACM computer club on campus was always a little derelict and is now pretty much inactive.
A lot of kids have vague ideas about building video games, but then take a graphics course which uses matrix math to calculate transformations, formulas to calculate Phong shading and so forth. After doing that they lose interest.
They do get training - the theoretical stuff is taught beautifully. We also did a lot of Java and C++, as well as some Python, Common Lisp, Prolog etc. As well as learning about DBMSs and the various normal forms, or how the fetch/execute cycle works etc. and all of that.
I don't know how to explain the problem other than that students did the work for a grade and that was it. They had no interest in programming outside of class work. One reason I did extra work was just to feel I could apply things. I learned Java, and then fixed some open source Java bugs, and then wrote a 1000+ line program in order to get a grip on what I learned. Otherwise it would be free floating theory about inheritance, polymorphism, objects etc. The same with graphics - I did some OpenGL work to ground what I learned in class.
Some kids did not even really seem to care about learning what was needed for class or getting a decent grade. I don't know why they're even bothering. I can see slogging through required general classes, but slogging through your major?
They're there because they heard they'll get a big salary they don't deserve at the end of those 4 years, not because they have any interest in the field or want to contribute anything to the world.
It's probably been like this since the dot-com era and the mediocrity has only snowballed since. The state of the software industry and the educational institutions around it is an embarrassment. If the curriculum was any good, these minimum-effort clowns would not be able to earn a degree in Computer Science.
I really don't think that's the case. Plenty of CS majors at CUNYs have no idea how much programmers make. Most come in not knowing what to major in, end up taking an intro programming class to meet some basic requirement and end up liking it enough to continue learning it. They go through the program doing well enough to pass and hope that what they learn in class will help them get a job once they're done. None of them read hackernews, so they have no idea that living and breathing computers is prereq for becoming an employable programmer.
Current CUNY CS major here. Yes, the majority of CUNY CS majors are clueless individuals who have zero business being here. However, there are many diamonds in the CUNY rough (some can be found here: http://cunytap.wordpress.com/) who love CS and programming. There's some good talent here for startups in the alley to scoop up if they cared to look.
As someone who got to experience CS education at Columbia and Queens College I think the main reason for this is the fact that CUNYs are commuter schools. Most people at Queens College grew up in Queens, have plenty of family and friends in the area and only step on campus when they have class.
On the other hand, at Columbia most freshmen come in not knowing anyone and have no option but to go out and meet other students, join clubs and get involved in their departments. Now you have a bunch of brilliant CS majors, some of whom have been programming since the age of 5, spending most of their time together and learning from each other. The ones who are not up to speed usually catch up in a semester or 2. I've seen plenty of new student come into the Fall hackNY not knowing what Git is and then using node.js and angular few months later at the Spring hackathon.
I'd bet most CS students at Queens College, like a good portion of incoming freshmen at Columbia, don't even know what a hackathon is. There's no ADI at QC, no workshops, no info sessions from top companies, no hackathons and in most cases not even research positions.
I'm under the impression that entry-level CS jobs pay well enough now that there are people who enter the field because of the money, or because their helicopter parents told them they'd get a good, stable (ha, ha) job in it, and not just because they love the field.
I personally think that's a shame, but on the other hand, I'd rather it be CS than, say, Actuarial Science. If you love food, for example, I bet there are jobs that tie CS and food together. Same for finance, etc.
I recently read Marilla D. Svinicki's Learning and Motivation in the Postsecondary Classroom; I'd recommend you borrow a copy from your local university library if they have one. I think there's a lot that instructors can do to make class more interesting for students and also have them learn more in the end. Though juggling that and research is a challenge in and of itself.
There are CS majors that learn foundational skills but don't learn practical frameworks that companies are looking for. Also, there many other adults from other backgrounds that never have a chance to learn iOS or ruby or code. We want to provide those opportunities and build a new pipeline of technical talent, particularly for underserved communities.
> There are CS majors that learn foundational skills but don't learn practical frameworks that companies are looking for.
How many CS majors at more prestigious schools learn iOS or Ruby on Rails through their classes? I think they usually learn on their own or through internships.
> And they have a name-brand degree going for them.
And you can bet your ass they know what "version control" is and can pick up some flavor of the month framework without someone needing to hold their hands.
Half the people tell me that CS grads have to create new programming languages, write compilers, toy operating systems, computer emulators, learn thousands of complex algorithms, etc.
And then the other half tell me that there are CS grads who can't write simple loops. You simply can't do the former if you aren't capable of the latter.
As someone who did not go to college, I sure wish I knew which was really the case. Either one side is lying, or there is absolutely extreme variance between college CS courses. As in several orders of magnitude.
Any CS degree from a college that would pass a student incapable of passing fizz buzz should be absolutely worthless.
You'd be surprised how far rote memorization and Google along with a little cheating can get you.
I have a friend currently finishing up his third year for his CS degree. I've tried helping him for the entire time, but he really just doesn't give a damn enough to actually learn. He somehow passes all of the tests, but I know for a fact he could not pass FizzBuzz right now. I know. I've given it to him and watched him completely fail to even decompose the problem let alone start working on a solution.
Much of the work done at my local state college is done in groups. This means that you have 1-2 people who are writing the complex algorithms, compilers, etc. And 1-2 who can't. You do zero solo-programming. 10 years ago, there was more self programming, but then the fail rate started going up. So, everything is in 'groups'.
As long as those who can't program memorize the terms needed for the tests (no actual programming on tests) they will graduate.
Also, they give you choices for some classes. For instance, you can do a Senior Project or internship. The internship is 100h, for most students this can be done in 3 weeks during may-mester. Someone I know is currently doing their internship at a hospital fixing laptops. The Senior project usually takes 2 semesters. The Senior projects vary from a website to client/server app to robotics.
Those who do senior projects are also encouraged to do internships during the summer as it is a good way to network (although no school credit is given).
Some Computer Science programs are really strong and require students to do a good deal of intense programming work. However these programs are becoming fewer and fewer as universities water down their curriculum to get more students to pass through. So there is truth in both statements.
The school I went to originally had a 60% fail rate with their computer science program. The first class was huge, 80 students to 1 teacher. This was the first time most of the students did any programming at all. To fix, this they changed the course to the class room being "theory". Which mostly meant learning terms (What is an Int, String, etc). The second half of the class was a "lab with paired programming". Those who knew how to program going in would carry those who didn't. Many students couldn't even type at a reasonable speed. If you and your pair had no idea how to complete the assignment, the TA would basically do it for you. This brought the fail rate in line with other classes. This continued for the rest of their college career. You could get through doing zero solo programming.
The result was seniors who don't know about inheritance. The only thing they know is "public void someName()". But, because they don't have good OO practices, it ends up just being 1 program with everything in the main method.
These are the students who don't have technical training. Many came in because "Computers are the future.", "I have a friend making good money doing this.", and "everything is already written I just need to google."
This is really confusing. How do you graduate as a computer science major and lack technical training? And if that's the case, how does such a faculty remain in business?