Stack Exchange Network

Stack Exchange network consists of 175 Q&A communities including Stack Overflow, the largest, most trusted online community for developers to learn, share their knowledge, and build their careers.

Visit Stack Exchange
51

100% yes. In beginning courses, it's practically a cognitive requirement. Let me see if I can break down for you why it is so important. It comes down to what we can know that the student knows. Let's say we have a student who is a rather mediocre coder and who, to be honest, really has no idea what is going on in class. We're going to give him a problem ...


50

Edit: This relatively high voted answer seems to be confusing to some, as it does not seem to give a clear answer. TL;DR: yes, doing tests on paper is usual at least in my university, at least many years ago. My anecdotal experience means to give a background where this might be coming from, together with the title "CS!=coding". The last section at the end ...


49

My best practice would be to provide students with test cases and require them to submit additional test cases with their code. Then run everyone's test cases against everyone's code. Let the students know that they will get extra credit if their tests break anyone's code. That will put them in a mindset of creating tough tests and writing bullet-proof code, ...


41

Please don't... ...give the students who are ahead more of the same kind of work to do. Please. That's just boring. If they get it, they get it. ...make groups by mixing the students who are ahead with the students who are behind - often, the students who are ahead won't teach the behind students, but will just do the whole thing themselves. I say this from ...


36

To know that you know nothing. Recent graduates can be afflicted by arrogance or low self worth. These are two sides of the same problem. It is important to know that you are at the beginning of a journey, that has no end. The sum of all knowledge that is known, is but a drop in an ocean, and your personal knowledge is but an atom. However this has not ...


32

I don't think the core issue is that some students are bad at using Stack Overflow -- I view that more as a symptom of a deeper root problem. When somebody doesn't seem to be able to productively ask questions on Stack Overflow, I think that one or more of the following core issues are at play: They don't really understand what it means to self-learn and ...


31

I suspect that the lions share of new CS grads seek jobs in what is actually software engineering, a related but different field. Things I see missing when I interview these people: An ability to actually Program in the languages on that CV, if you claim C then know what volatile means and that i=i++ is broken, if you claim javascript then know the ...


23

You can find a fair amount of information about accredited programs in the US here, including links to schools that have one or the other programs. In general, Software Engineering is more directed at the processes involved in creating software, and Computer Science is more generally focused on the underlying theory. But, I'd suggest that both programs ...


22

Although most of the answers here seem to be in agreement that coding tests should be done on paper, I would like to offer a different opinion. Any test that includes coding would benefit the student, and most likely the teacher, if it was done on a computer with an IDE for the appropriate language rather than on paper. Since the question contains the tags ...


20

Speaking as a former student and as a coder: yes. Perhaps there's an element of in-my-day geezerism here, but under the assumption that by "on a computer" you mean "in an IDE" I'll point out that when you have to write it out, you don't get: syntax highlighting autocomplete as-you-type compiler checking new project wizards ("What was the signature for main ...


18

I've always released a number of test cases for the purposes of clarity. I do have to double- and triple-check that my unpublished test cases are nevertheless unambiguously specified in the documentation I provided. However, I am a computer science teacher, not a mystery novelist. It would never occur to me to deduct points for test cases that are not ...


15

Firstly, I think CS degrees vary widely in how "theoretical" they are. Some try to teach you about programming languages and even vendor-specific products that you are likely to encounter in the real world; others focus much more on teaching the fundamental principles. Personally (as someone who has always worked in industry) I would much rather have people ...


14

As a student who went through 4 years of undergraduate in computer science, writing all my exams on paper, I do think there are advantages to a paper exam. If you need an IDE to tell you the things that are missing, then do you really know your material and syntax?. Having an environment to test your code over and over isn't really practical for examination ...


14

The simple breakdown is: Anything that performs input/output involes a series of system calls. Anything that's purely computational doesn't involve system calls. Both of these statements have exceptions (I/O through memory-mapped files or peripherals is I/O without syscalls, calling a hardware accelerator or allocating memory is syscalls without externally ...


14

I once had the opportunity to sit down with a very high level Google engineer (who is also an alum of the institution at which I now teach.) I gave him an overview of our program, and then, since I knew that hundreds of engineers reported to him, I asked him what he would like to see more of from graduates. Without even a moment's hesitation, he said, "...


13

You seem to already realize that this is a subtle question. When I taught Mathematics early in my career, I also forbade students to work together. Later on, teaching Computer Science, I found myself at the opposite pole. I normally forced students to work together on nearly every task. In some ways I changed, but it was more that the subjects are different. ...


13

I took both the AI and (basic) ML undergrad courses at Princeton and currently teach an AI elective at the HS level for some very bright students. I've seen some good online material from Berkeley (CS188) and MIT (6.034), and of course Stanford's ML lecture series is amazing. Russell & Norvig's textbook is basically the bible for these sorts of courses. ...


13

From my experience, you don't get good at coding while in college. You'll learn to code, but writing good code comes, in my opinion, much more from experience than education (and I say this as a student who has work experience). These two majors focus more on things around the code, so choosing your major will really depend on what you want to do next. ...


12

Speaking as a former student, a coder & a teacher: yes. In addition to the points raised by G. Ann, I would add the following: Problems on tests are typically far simpler than full real world problems. It's reasonable to expect increased attention to detail (missing semicolons, etc) when there are fewer details to attend to. In a writing class with ...


12

Speaking as a former student, a former competitive programmer, a real world programmer, yes. Forcing student to write code on paper is not pointless. It has following benefits: Giving you syntax awareness, avoid computer generated code. Therefore giving you deeper understanding of the concept. You will find a way to write shorter code, since you can't copy-...


11

Maybe some complementary points to what as already been said (as a CS assistant professor, giving both theoretical and practical courses). Even for practical courses (those which involve coding), writing code on paper is good. The point is not to fill your page with boilerplate code (and I cannot stress that enough). Writing sequence of Java imports or ...


10

Having taken and TA'd for classes which use both approaches, I would have to say that it all depends on what you want to see from the students. On the side of having paper exams, it has already been mentioned that CS!=Programming. If you're trying to test concepts of CS, there doesn't have to be a single line of code written on the exam, and a paper exam ...


10

Your question has an implicit assumption: that CS is programming and what you're learning (and will always learn) in CS is programming. That's not necessarily true. Even though an introductory course "teaches" a language, probably something like Python, C/C++, or Java, in actuality you're learning a type of programming language, a procedural language (...


10

TL;DR: If there's no special reason against it, release them before the assignments are done. If you'd like to keep them secret to the students while developing, I would still recommend releasing them after the assignment for the students to help them to evaluate their mistakes. I think whether and when the test cases should be released depends on a few ...


10

The easiest way to set the conditions so that they can all be reached continuously in every class period is to make the conditions so easy that all can achieve them with very little effort. However, this is not at all motivational and sells the students short of being stretched, inspired and challenged. Dumbing-down the curriculum so that all succeed can get ...


10

I've interviewed a ton of people fitting your criteria. What is missing from a typical undergraduate program, or not sufficiently emphasized, that a person needs to know for successful employment in a software development position? I don't want to hire programmers. I don't care if you can write beautiful code or ace a list of algorithms questions. You ...


9

As much as I hate the fact that we need to consider this, paper and pencil makes it harder to cheat. Even if you restrict them to using lab computers and not their own laptops, and cut off networking to the room, it'd be easy to smuggle in a USB key with entire books worth of notes and the source code from every one of their labs and projects. (Yes, with ...


9

As a wise man once said, "We are preparing students to solve problems that don't exist / using technologies that haven't been invented." I agree with alephzero in the sense that you can't avoid this issue. Every sign is that technologies will keep changing rapidly, at least for the foreseeable future. This is why we must always keep our instruction ...


9

Actually, the similarities between C++ and Java are fairly shallow and the differences are very deep. The syntax of both is derived from C, but the underlying ideas are very different. The biggest difference is that an "object" in C++ is built on the stack, like a struct, not on the heap. It takes additional work and a lot of understanding to become ...


8

I think this question is perhaps mis-framed or at least misleadingly framed. Fundamentally, the question an educator has to answer is: what knowledge do you want your students to demonstrate? Once you know that, the next question is how do you strip away all other distractions so that whatever product you evaluate gives you a good proxy for what knowledge ...


Only top voted, non community-wiki answers of a minimum length are eligible