5 ms·
In my first CS class at university the professor started with "We are not going to teach you programming. You can do it on your own time. This program is called
by paxys 3y ago
In my first CS class at university the professor started with "We are not going to teach you programming. You can do it on your own time. This program is called computer science, and that's what it will cover."
It was a bit harsh at the time, but over the next semester or two plenty of students switched majors when they couldn't keep up with graph theory, combinatorics, linear algebra, advanced algorithms, computer architecture, compilers. Too many people are enrolling in CS programs these days because they want a quick ticket to a cushy tech job, and I'm happy that's not what reputed programs are catering to.
Funny enough there were a few classes on debugging, but it wasn't about the process of finding bugs in code but rather "here's the GNU debugger, crack it open and figure out what's going on inside". I also don't understand how one can even "teach" debugging like the author envisions. It's like saying why don't schools teach problem solving or why don't schools teach intelligence. If students are getting regular non-trivial programming assignments they have no choice but to develop the skill themselves.
- Swizec 3y ago> In my first CS class at university the professor started with "We are not going to teach you programming. You can do it on your own time. This program is called computer science, and that's what it will cover." That was my school. Because of the education system in Slovenia, we even looked down on software engineering a little. Engineering was the vocational college. We were a university program thankyouverymuch. In reality, our program took 7.5 years to complete on average because people got jobs in industry and forgot to graduate. BUT we did have 2 programming classes in the first year. It was considered necessary to give everyone an even playing field so they could do the tutorials. Those were heavy on “You learned all this theory, now put it to work”. We implemented programs in ARM assembler, various graph algorithms, numerical computation methods, stuff like that. Just writing lots of code also taught you debugging. Many classes evaluated homework and even exams by running your code through a test suite. Your grade was percentage of tests passed. And then there was the compilers class. Holy shit do you learn a lot about debugging when you’re fixing your code and your compiler at the same time. That was fun.
- viraptor 3y agoThere's still a mix of "cs courses aren't up-front about not being about programming" and "programming courses are not advertised enough". I totally agree with the approach and the split, but... often it looks like people are set up for failure. I've definitely seen that happen during my time at uni. There's a lot left to fix at the system level.
- qez2 3y ago> Too many people are enrolling in CS programs these days because they want a quick ticket to a cushy tech job Or maybe, people are enrolling in CS programs these days because they want to learn how to program. Which is a perfectly appropriate skill to teach. The fact that schools fail to teach it is their defect.
- oytis 3y agoIn Germany there are two distinct kinds of higher education institutions addressing that. Vocational universities that teach skills in a very practical manner, and generally more prestigious "plain" universities that spend more time on fundamentals (as in scientific foundations), and teach under assumption that alumni will contribute to academia themselves - even if this assumption turns out false in most cases. In addition to that there are also vocational programs in software engineering that don't count as higher education at all.
- randomdata 3y agoThe same is true in America. It is just that there was that wildly successful marketing campaign a few decades ago that went something along the lines of "Go to university or you will be forever left to flip burgers", so most people won't even stop to consider vocational training from traditional vocational schools, and instead are always pushing for universities to become the vocational schools instead.
- moon_moon 3y agoBeing able to program in the context of computer science is like being able to build an airplane in the context of aeronautics. If one is not interested in things that are foundational to the context they operate in, why are they there?
- pavel_lishin 3y agoDo car mechanics and car hobbyists take a semester to study Carnot cycles, thermodynamics, and entropy?
- saagarjha 3y agoYou teach it like you teach any other skill: with guided practice. People get a lot better with debugging if you help them through some of their problems and then let them come to you when they’re stuck. The thing with debugging is you can struggle a lot and do it very inefficiently so I see plenty of students who power through these non-trivial assignments while taking far longer than they should because they never learned the fundamentals of how to validate their code. They have no idea what tools they have available to them, how to design checks that efficiently test their hypotheses of why things aren’t working, or designing code so that it works the first time as much as possible.
- Fire-Dragon-DoL 3y agoThere are good books about debugging, simple but effective. https://www.amazon.ca/Debugging-Indispensable-Software-Hardware-Problems/dp/0814474578 https://www.amazon.ca/Debugging-Indispensable-Software-Hardw...
- lunarimiso 3y agoVast majority of the CS grads won't even need to use most of what theyre taught, when they finally land a job. Facts are that most of the jobs available are the jobs that you call "cushy tech jobs". Where you can go by with having a 2-3 year long programming focused schooling. Only quite niche type of tech jobs today require exactly what CS teaches.
- randomdata 3y ago> Vast majority of the CS grads won't even need to use most of what theyre taught, when they finally land a job. Should they? A material science graduate isn't expected to use much of what they learned when they get a job as welder either. CS is for those interested in the academic pursuit of the sciences. It is not for vocational training.
- Izkata 3y agoFunny enough to the topic title, actual CS topics tend to become useful when debugging.
- pi-e-sigma 3y ago> It is not for vocational training. And yet most of the companies require CS degree when hiring
- randomdata 3y agoYou still need some way to keep out the poor and underprivileged who are not good for business. Overtly stating they are not welcome doesn't fly anymore, but rejecting anyone who isn't in a position to be able to casually engross themselves in the sciences for several years for no reason other than personal enjoyment is a decent proxy.
- pavel_lishin 3y agoI wish my university had been up-front about that. I did, in fact, teach myself programming - and had been since high school, more or less - but I didn't realize how poorly prepared I was going to be for a career in software engineering after a computer science track. I loved all the "academic" classes, though, and almost minored in math. (Turns out, while I loved them, I wasn't particularly good at them.)
- tester756 3y agoFunny how schools say "We are not going to teach you programming" yet then you have like 5-10 strongly programming related subjects which would benefit from 2 semesters of strong introduction to software engineering. But you'd need competent software engineers to teach it, instead you get people who teach you SOLID and other buzzwords they barely understand
- rented_mule 3y agoYou and your professor rightly call out the distinction between computer science and programming. I wish more new grads understood that programming and software engineering are also not the same thing. I've seen great young software engineers feel like they aren't succeeding because they aren't belting out hundreds of lines of code on every little task like some of their peers do. The reason the good ones aren't doing that is because they see a more practical way forward (i.e., find a better set of tradeoffs). For example, finding a good package instead of writing it. Or collaborating with stakeholders to simplify requirements. By taking more practical paths, they avoid the cost of developing and maintaining all that extra code. They are considerably more valuable because they are doing actual software engineering and not just programming. But so many new grads, especially the ones belting out so much code, think programming and software engineering are the same thing. They are not.
- mewpmewp2 3y agoProgrammers should also take the pragmatic choice of using a library vs coding it themselves...
- makeitdouble 3y ago> It's like saying why don't schools teach problem solving Don't they do that at the lower grades ? (around 7~10 years old ?) Or in general I would see our math classes as lessons on how to approach complex problems ("prove that X"), hand what strategies are available to match what we know with what we don't know. > why don't schools teach intelligence. Define intelligence first. Otherwise, I went to an university that thought both science and engineering, and indeed we had sessions sitting in front of an editor, looking at core dumps and asking the assistant professor for advice. Like any other skills, there's ways to teach debugging.