4 ms·
There's some debate about the role of practical instruction at engineering colleges. One one hand, you have people who say "no. we shouldn't be teaching basic
by dingosity 4y ago
There's some debate about the role of practical instruction at engineering colleges. One one hand, you have people who say "no. we shouldn't be teaching basic skills like C programming." Their point is a university level education is supposed to teach people how to think about the concept of computability and algorithm analysis. They will frequently say things like "we are not a trade school!" The other side of this debate are people who are like "Meh. It's embarrassing our grads can't write a C program." So they teach them Python.
Either way, the only way you're going to graduate knowing C programming is to realize it's something you want to do and spend a bit of your own time learning it.
And then they completely fail to teach concepts usable as a gigging coder.
I think if you ask the academy "what are you teaching young software engineering students?" the response would be something along the line of "We're teaching them knowledge and skills that will be useful for being a grad student."
It would be cool if there was an organized course teaching kids the basics of version control, what continuous integration and continuous deployment are, what agile methodologies are supposed to do (as opposed to "agile is whatever is in the JIRA manual"), the basics of logic programming -- you'll never use prolog but you'll be rewriting it in C++ or C# a couple of times, the basics of functional programming -- you'll never use lisp, but you'll be pretending function pointers are the same thing when you're writing that big C++ program, software project estimation, how to invert a binary tree -- you'll need to know this for a google interview and how to actually design data structures.
- _dain_ 4y agoin a scientific degree you still get taught how to use lab equipment and how to do physical experiments. that doesn't make it a trade school. i don't see why CS has this aloof attitude to actually teaching students how to do stuff.
- dingosity 4y agoI think the question is where's the line between "trade school" level practical instruction and "reinforcing concepts with practical examples." When I went through school, CS was taught in the Math department. In fact, not all universities had "Computer Science" undergrad degrees. Later on, my school introduced a "Computer Science and Engineering" degree that included a lot of hands on stuff (like what the previous commenter mentioned: implementing OSes, Network Stacks, Database data structures and algorithms, etc.) But they didn't teach C programming. I actually taught the Intro to C Programming class in the Continuing Education department. It might be the equivalent of a chemistry department saying "We'll teach you how not to blow yourself up in the Organic Chem Lab, but we won't teach you how to use a calculator." But yeah. Seems every school is slightly different about where they want to draw that line. And most every school I've seen has more practical work than they did 40 years ago.
- closeparen 4y agoSystems is legitimate academic CS. It is different from modern business or web application development in important ways, but it is at least hands-on-keyboard edit-compile-test cycle work, not math. You should should understand how an operating system, network stack, database, etc. works by having implemented significant parts of them in homework. That is part of the virtue of having a CS education, as opposed to a trade education. A CS education with only math is at best incomplete. And to bang on my usual academic CS bugbear on HN: algorithms is one class. It might be the most important class, or the only class in the intersection of all CS experiences, but each person's experience includes like 15 other courses. Some, perhaps even most of those should be systems. And systems classes should include substantial C programming.