Live data from Hacker News

Ask HN: Do CS students enjoy C anymore?

news.ycombinator.com

11–20 of 101 posts

Re: Ask HN: Do CS students enjoy C anymore?

#13
Students who've taken systems programming classes (e.g. Operating Systems) would be your best bet -- in my experience, most low-level programming is shafted to those classes, except in the cases where a professor arbitrarily requires C, which doesn't necessarily happen in algorithms classes either.

But even better would be to find students who hack on open-source projects written in C (e.g. Linux-related efforts) -- that's much more representative of a graduating student's ability to be productive using C. There are a lot of students working on such projects, and it might be worth starting there.

Re: Ask HN: Do CS students enjoy C anymore?

#14
Many universities now offer a course using the Computer Systems: A Programmer's Perspective book (http://csapp.cs.cmu.edu/index.html). This is a fantastic book, focusing on nit-picky assembly and C-level work -- all the foundational stuff for an operating systems or compilers class, even if you never go on to one. Having TA'd this class the last few years, I find most students really enjoy it.

In fact, I think most of the HN crowd would greatly enjoy the "bomb lab" (http://csapp.cs.cmu.edu/public/1e/labs.html -- you can read the writeup but not get the source). The idea is that you have a binary and have to use gdb and some nice dumping tools to "defuse" a bunch of stages of the program, each with increasing difficulty. It's a fabulous exercise, and really makes students pick up a deep appreciation for stepping through assembly and data structures that are just lying around in memory.

Re: Ask HN: Do CS students enjoy C anymore?

#15
Georgia Tech still teaches a 2nd year course on C:

CS 2110 - Computer Organiz&Program An introduction to basic computer hardware, machine language, assembly language, and C programming.

4.000 Credit Hours 3.000 Lecture hours 3.000 Lab hours

Course Attributes: Tech Elect CS, Engr, &Sciences

Re: Ask HN: Do CS students enjoy C anymore?

#16
My university uses Java as the main teaching language. A few courses down the line (OS, Security) tend to use C, but it does certainly depend on the instructor. It seems to me that instructors shy away from C when they know students will likely have little experience with it. They don't want to be bothered with teaching students what a pointer is because it will take away from the actual material of the course.

That said, I personally enjoy using C when it seems to be appropriate. I would much rather write a piece of OS code in C and drop it into a linux distro than using Java to do something that would rarely be used in the real world. I've had problems with C that I wouldn't in a language like python, but if the task is better suited for C, I'd rather work through those problems and learn because of it. My personal opinion of students not learning C because it's hard is that they don't belong in a CS program. If you won't take the time to learn the best tool for the job, you won't do the job right, and no one will have benefitted because of it.

Re: Ask HN: Do CS students enjoy C anymore?

#18
It's becoming less common just like programmers who love assembly language are becoming less common.

The entire history of CS could be summed up as a move towards higher and higher levels of abstraction. They still expose you to assembly language in good CS programs as sort of a history lesson or to give you a deeper understanding of how it works underneath, but that doesn't mean people actually want to use it.

C is of course nowhere near as far along that path as assembly language, but it's a spectrum and seems to moving in that direction.

Re: Ask HN: Do CS students enjoy C anymore?

#19
As a Junior in CSC right now, and while I have to say the speed of development in languages like Python and Ruby really appeals to me, I do enjoy C development as well. Unfortunately I usually have to optimize for development time rather than anything else, so outside of a few classes (for example, Algorithms, were execution time was a competition), I end up picking the "highest"-level language. But I think most schools are avoiding C, outside of specific classes (whose goal is to teach C or something C related), because students get caught up in the complexity of C, and the difficulty of debugging it vs. a memory managed language, so they'd rather just avoid it and focus the class on the topic it's supposed to cover.

On the other hand, I know a few people who want to solely work in C because it allows them so much control over how things work, and they're capable of understanding how each and every call they make will basically function. You typically have to look pretty hard for these people specifically, but I find the ones I know are some of the best programmers around. If you're curious about getting in touch with some (I know at least two that I would /highly/ recommend, are looking for summer internships), ping me at mdwrigh2@ncsu.edu

Re: Ask HN: Do CS students enjoy C anymore?

#20
Engineering courses give a basic overview of writing in C, but that's about it at my school. I haven't taken those courses since I'm not an engineering major, but I helped my friends with the material.

Most of my programming courses are taught in Java. I've brought it up to the faculty though about moving us away from being a Java school. The issue that they presented was that the teachers may not be as familiar with C/C++ as they are with Java. My reasoning behind all of it being that Java is not a good learning language since it adds too much abstraction to get a good idea for what your code is actually doing (i.e. memory).

It doesn't particularly matter though as students who are interested in programming will learn what they want on the side.

For your situation though, I'd avoid people who classify themselves as being a 'Java/Python/C programmer'. There are too many languages and too many problems to limit yourself to merely one or two languages. A good programmer will be familiar with at least a few languages and be able to pick up a new language/framework quickly. Basically it breaks down to simply finding someone who has an interest in programming.

Also, I like C.

Post reply on HN