159 votes

How bad is a Computer Science course that doesn't teach Design Patterns?

There is more to a CS degree than programming and more to programming than Design Patterns. I'm actually an expert in such things and have designed and published a few as a committed member of the ...
Buffy's user avatar
  • 36k
55 votes

What are healthy, productive ways to encourage students to progress to more advanced constructs as opposed to staying with the familiar?

I'm afraid that there is no single silver bullet. The problem you've pointed to is very real, and isn't limited to students. All of us tend to stick to our own familiar toolsets because, well, it's ...
Ben I.'s user avatar
  • 32.9k
54 votes

What controversies in computer science education exist today?

There is a big controversy about the purpose of "Computer Science" education specifically. This controversy has become hotter the the last few decades as CS has come to the fore as an ...
Ben I.'s user avatar
  • 32.9k
52 votes

How bad is a Computer Science course that doesn't teach Design Patterns?

Buffy's answer perfectly addresses your question about design patterns. I would just like to add a bit of perspective about CS curricula in general. Computer Science (CS) is very young compared to ...
Erwan's user avatar
  • 621
44 votes

How can I convince my fellow CS teachers that reaching every student is a worthwhile goal?

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 ...
auden's user avatar
  • 4,684
35 votes
Accepted

What could be the possible advantages of teaching Scheme as first programming language?

I think that the purpose of such a course is not to teach you a language. After all, Scheme, with its abstract syntax, is pretty minimal as a language. The purpose of a course like that is to teach ...
Buffy's user avatar
  • 36k
33 votes

How bad is a Computer Science course that doesn't teach Design Patterns?

It has been well known for decades by anyone coming out of University that, as you say, "the problems in the real world, both in academia and in the industry, can be more easily handled with a good ...
Lightness Races in Orbit's user avatar
31 votes

Students can solve programming exercises but not explain their solutions. What to do?

I have seen my share of this 'program gets output' but the programmer has no clue how she/he got there. It's funny how that happens so many times. This is what I have done to at least handle the ...
Jay's user avatar
  • 1,884
27 votes

How important is learning Binary for first-year college students?

I see no reason to teach binary in an introductory programming class. It is not generally needed (see exceptions below) when programming in high-level languages, which is usually what is taught to ...
Ellen Spertus's user avatar
27 votes

What controversies in computer science education exist today?

I just did a quick scan of the SIGCSE-MEMBERS mailing list for the past year and nothing stands out. The language wars continue to smolder with some balkanization (Java, Python, C#, JavaScript, ...) ...
Buffy's user avatar
  • 36k
26 votes

What are healthy, productive ways to encourage students to progress to more advanced constructs as opposed to staying with the familiar?

I'm not sure the following will work for all students, but I remember this being a transformative "aha" moment in my own education: Show them your code. Preferably contrasted against a functioning ...
Jared Smith's user avatar
25 votes
Accepted

How important is learning Binary for first-year college students?

Binary is fundamental to programming, but this has a lot more to do with logic than just with data storage. Computers work on "yes greater than no" or "no greater than yes." There are only two ...
Wildcard's user avatar
  • 645
25 votes

On studying Computer Science vs. Software Engineering to become a proficient coder

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 ...
Buffy's user avatar
  • 36k
24 votes
Accepted

Students can solve programming exercises but not explain their solutions. What to do?

If I understand your problem correctly, it's that students can create programs that behave correctly without understanding why they behave correctly. I assume that they do this by some combination of ...
ShawnMartin's user avatar
24 votes

What could be the possible advantages of teaching Scheme as first programming language?

There's one more reason I'd like to add to those here, less high-minded, but also a genuine consideration. One of the practical difficulties of teaching an introductory course is that the students ...
Ben I.'s user avatar
  • 32.9k
24 votes

How do you teach Big O to high schoolers with varying degrees of math exposure?

One good overall educational strategy is to teach the same thing to students repeatedly, using a Spiral approach, in which each turn of the spiral teaches at a deeper level. Don't expect the students ...
Buffy's user avatar
  • 36k
23 votes

Should assembly language be taught in an introductory course (or soon after)?

I think there is very limited benefit in teaching assembly so early, and it's more likely to just scare away your students. When I started learning programming, I thought bare-metal OS development ...
Aurora0001's user avatar
  • 3,506
23 votes

What program follows "hello, world"?

When I was teaching and mentoring first-time students, what got them really excited for the first time was seeing their name in lights. Write a program that allows a student to enter their name, then ...
Robert Cartaino's user avatar
20 votes
Accepted

How to teach students not to use jump statements

I don't believe that your question is entirely valid; some languages require jumping. The first principle, therefore, is to follow the norms of your language. However, I suspect that you are asking ...
Ben I.'s user avatar
  • 32.9k
20 votes
Accepted

The impact of switching to Java 10

General overview on updating to Java: First, a general observation about updating to Java. Previous versions of Java used to be released about once two years or so. As of 2017, Java has switched to a ...
Michael0x2a's user avatar
  • 4,005
18 votes

What controversies in computer science education exist today?

One controversy within my department is whether it is a good idea to take time to both teach about and enforce the very basics of coding style. (Think indentation, variable naming, vertical spacing, ...
Ben I.'s user avatar
  • 32.9k
17 votes

What could be the possible advantages of teaching Scheme as first programming language?

Every second you spend explaining a programming language is a second you are not teaching programming, software development, software engineering, software design, or computer science. You can teach ...
Jörg W Mittag's user avatar
16 votes

What are healthy, productive ways to encourage students to progress to more advanced constructs as opposed to staying with the familiar?

There are a number of facets to this question. But the first thing you need to remember is that students (like anyone) will tend to apply solutions that they are most familiar with. In the student ...
Buffy's user avatar
  • 36k
16 votes

What controversies in computer science education exist today?

There is debate over how to respond to students' changing mental model of files and directories (as highlighted in a recent Verge article.) This doesn't solely affect computer science education, but ...
Willa's user avatar
  • 281
15 votes

What ethical practices do students (as potential software engineers) need to be trained in?

I'm going to begin by quoting Ken Thompson's Turing Award Lecture "Reflections on Trusting Trust" (link). To what extent should one trust a statement that a program is free of Trojan horses? ...
Peter's user avatar
  • 9,082
15 votes

What could be the possible advantages of teaching Scheme as first programming language?

With Scheme, you start teaching programming concepts on day 1 - and also implementing them as working code on day 1. With a typical procedural language (C++, Java, etc) you first have to crawl ...
alephzero's user avatar
  • 613
15 votes

How bad is a Computer Science course that doesn't teach Design Patterns?

Buffy has stated much of what I would have, so I won't repeat. But do read that answer carefully. The first point is, university is for proper formal education, which means heavy theory and less ...
PerformanceDBA's user avatar
14 votes

What are healthy, productive ways to encourage students to progress to more advanced constructs as opposed to staying with the familiar?

Rather than trying to motivate the students, or the reluctant ones, to progress into using your new tool (foreach after for), ...
Gypsy Spellweaver's user avatar
13 votes

What program follows "hello, world"?

I did a (rather unscientific) study of a few popular tutorials for Python to see what they did after "Hello, world": Learn Python the Hard Way introduces expressions (...
Aurora0001's user avatar
  • 3,506
13 votes

What belongs in a low-math undergraduate AI elective besides ML?

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 (...
Matthew W.'s user avatar

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