4 ms·
> Students are expected to have a good working knowledge of the C programming language, have written non-trivial programs before, and to be able to competently
by 0x445442 4y ago
> Students are expected to have a good working knowledge of the C programming language, have written non-trivial programs before, and to be able to competently use a Unix system with a command-line shell interface. All coursework will be done exclusively on a Unix system from the command-line. This is not an introduction to using Unix!
My son just finished an undergrad CS degree at a major university and I don’t think he’d meet this pre req.
- turndown 4y agoI’m not sure - I took an operating systems course in C that used command line only for submissions, and of course if you didn’t run a *nix locally you had to SSH in and work in a terminal environment for the entire course. This was three years ago. You could nitpick about what “non-trivial” means, but I’d say most CS degrees require some non-trivial work(to them).
- ghostpepper 4y agoJust because they have experience in C and (hopefully) some non trivial work over the course of the entire degree doesn’t mean they have non trivial experience in C. I’d love to hear what the author considers nontrivial but I’m going to guess it has something to do with pointers, and familiarity more generally with the memory model of C.
- chucksmash 4y agoHoning in on what is meant by "non-trivial" is a good point, because it will really mean different things when talking about different audiences. I took a few undergrad CS courses during some downtime recently and found them blindingly, disappointingly easy to the point where I found myself fading the (prestigious) school that created the material. They felt completely trivial, as did the assignments. On the other hand, I'd be willing to entertain the argument that I've not yet written a non-trivial program in my ~10 years working.
- 0x445442 4y agoYeah I guess it’s the non-trivial bit that needs clarification. My son shelled into nix systems and wrote some c++ code that made system calls. It’s just the way the prereq was written leads me to believe a good portion of his time in this class would be spent on learning things ancillary to the main content.
- hdjjhhvvhga 4y agoSo? This is a specific course with specific requirements. Many unis today don't teach C nor require students to be familiar with Unix, but if you think about writing server-side software it's an excellent introductory course.
- throw827474737 4y ago> My son just finished an undergrad CS degree at a major university and I don’t think he’d meet this pre req. Wow, that's somehow sad : - |
- gavinray 4y agoAnecdotal experience: I used to work out of a space provided to my employer by a university, as part of their startup accelerator program It was on-campus and there were students also in that space, so during lunch and breaks I got to know many of them In my experience, students about to graduate from the CS program had near-zero tangible skills and lacked the ability to build basic applications, in any language. This was in the USA, FWIW. I think our CS programs are pretty trash at most universities. One of my current coworkers applied after graduating and failed the interview and was only able to pass after paying thousands to attend a coding bootcamp.
- tadfisher 4y agoCS is the study of computing. There are plenty of Software Engineering programs that focus on how to architect and deliver software products.
- cinntaile 4y agoThe fact is that most CS graduates go and work in industry when they're finished. Having some basic knowledge on how to deliver and architect software projects would come in really handy considering that's what they'll be doing as they've graduated.
- hoistbypetard 4y agoYeah, but that's the shit I can teach them easily on the job. I'd rather their degree teach them the answers to the "why" kinds of questions. It's more onerous for me to schedule someone to shadow them and answer those.
- dingosity 4y agoThere'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.
- black3r 4y agoThat's kind of the point of splitting CS degrees into general undergraduate basis and specialized graduate level. In undergraduate you have to learn the basics of everything and can start to specialize on projects or bachelor's thesis if your uni has one, then you finish your specialization during graduate studies. You can be a very good software developer without ever touching a command-line interface or having a working knowledge of C these days. On the other hand if you want to become a C/Unix developer, there are enough courses and projects available for you to learn. Also I'm fairly sure you can start a course like this even without matching the prereqs, it's just gonna be a bit harder, but university is all about challenging yourself...
- 2devnull 4y ago“You can be a very good software developer without ever touching a command-line interface or having a working knowledge of C” No disrespect but that isn’t true. Touching the command line is required for sure.
- verisimilitudes 4y agoUNIX sucks. Of course, enough time has passed that people expect a mathematics degree to come with diarrhea from the 1970s for stupid reasons.
- icedchai 4y agoWhat would you prefer?
- verisimilitudes 4y agoLisp and Smalltalk existed before the C language, and don't have its damning flaws. Ada's also much nicer. As for the operating system, there are currently no good such systems that aren't very old. I use Emacs to largely avoid the UNIX sh. Ideally, a university would have its own operating system, but I suppose that would be too hard, in comparison to accreting another layer of shit over UNIX. Something such as Alan Kay's VPRI would be best: http://vpri.org http://vpri.org I didn't go to a university to learn anything about computers, fortunately.
- anthk 4y agoToday one of the best "Not really Unix, but close" it's called Guix(SD) and it's bound to Scheme. And without C, forget about having a kernel and a Scheme compiler. The best env to complete SICP it's, paradoxically, a Unix like system written in C with an Scheme DSL to set up the system declarativelly.
- 0x445442 4y ago> Ideally, a university would have its own operating system, but I suppose that would be too hard Actually that’s exactly what Nicklaus Wirt did with Oberon.
- shepherdjerred 4y agoMany peers at my CS program (I graduated a few years ago) also wouldn't meet these prereqs. 1. Exclusive use of Windows. You couldn't submit binaries unless it was compiled with msvc. 2. Junior year was when we were first taught the shell. This was a major challenge for many as they didn't understand commands like `cd` or `dir`. 3. C was never taught, even in our OS course, it was all C++. 4. When working on my senior project with my team, one of my teammates asked if his code needed to compile (the IDE had riddled his code with red underlines for the many, many syntax errors) 5. Bonus: Git was never taught. When I suggested to a teammate that we collaborate on GitHub he instead emailed me his code.