Skip to main content
11 votes

How can I explain the difference between CS and coding to a layperson?

I regularly have to explain what computer science is to parents, and I have lately settled into this explanation: Technology keeps changing all the time. You get used to the menus in Microsoft Word, ...
Ben I.'s user avatar
  • 34.3k
8 votes
Accepted

Teaching Induction to Prove the Correctness of Algorithms

I think induction should be taught first, and then loop invariants, since you usually need induction to prove that the loop invariant is really an invariant, and also because you need induction for ...
wythagoras's user avatar
7 votes

Single-dimensional array and simple looping activities of significance

The Dutch National Flag problem is linear in running time. Essentially sort an array with only 3 distinct values each of which may appear 0 or more times. (not length 3). You are allowed only one pass ...
Buffy's user avatar
  • 36.8k
7 votes

Single-dimensional array and simple looping activities of significance

A variant on the ENIGMA machine encryption works well in a single loop, and is sufficiently complex to give students a real challenge. The core idea of the ENIGMA machine for this assignment is that (...
Ben I.'s user avatar
  • 34.3k
6 votes

JavaScript to teach Theoretical Computer Science

Maybe a bit of an orthogonal answer, but let me try to refocus your thinking. I don't think that teaching a lot of languages, especially if they are similar to one another in some way is a big ...
Buffy's user avatar
  • 36.8k
6 votes

Teaching loop invariant choice

Let's start with the term "Loop Invariance". It is a property of a loop that is true before and after each iteration, thus in-variant, non-changing. So then, what is the purpose of the loop invariance ...
Kaneki's user avatar
  • 783
6 votes

How can I explain the difference between CS and coding to a layperson?

I'll attempt a self-answer here, based on hindsight and a few previous experiences where I went in knowing I wanted to do this. I've found that starting off with an analogy helps a lot of the time. ...
Piyush Parikh's user avatar
6 votes

Ideas for exercise in parsing and compilers?

Over my career I spend a lot of time with languages and compiler construction. My opinion is that languages should be LL(1), which optimizes human understanding of the constructs. I created quite a ...
Buffy's user avatar
  • 36.8k
5 votes

How can I explain the difference between CS and coding to a layperson?

I would explain it like this: In reality, you have to solve problems on your daily basis. It may be a time problem, like "how do I get these five tasks done it just 1 hour?" or "how can I stack these ...
Tom Doodler's user avatar
5 votes
Accepted

Database theory (normalization) for beginners (adult education, MS Access)

Based on the comments, the minimum for theory and technical is how the nomenclature of MS Access relates to Excel. If they've been doing everything in Excel anyway, they've developed habits for, or ...
Gypsy Spellweaver's user avatar
5 votes

Theory of Computing project topics

If you're looking for something much harder than my other answer, and your CT course has covered lambda calculus, you can have the students create an untyped lambda calculus REPL, with inputs/outputs ...
Ben I.'s user avatar
  • 34.3k
5 votes

Ideas for exercise in parsing and compilers?

Having the lecture after the lab is indeed a tricky wicket. One way that I've approached similar problems is to make some self explanatory, exploratory portions of the lab. This is a different sort ...
Ben I.'s user avatar
  • 34.3k
4 votes

Teaching loop invariant choice

To give an explanation of this requires a problem in which to frame the discussion. I propose the Dutch National Flag problem, likely first proposed by Dijkstra, but I'm not positive. I'll pose the ...
Buffy's user avatar
  • 36.8k
4 votes

Teaching Induction to Prove the Correctness of Algorithms

I have been teaching theoretical CS to math teachers (don't ask why...). I assumed that they were comfortable with numerical induction and therefore the transition to structural induction (on a ...
Moti's user avatar
  • 111
4 votes

How can I explain the difference between CS and coding to a layperson?

Dealing with (my) parents who are not particularly aware of computers or the difference between a server and a database, I believe I have a fairly simple answer for this question. Computer science is ...
cMcNerlin's user avatar
  • 171
4 votes

Ideas for exercise in parsing and compilers?

I would highly recommend the book Crafting Interpreters. It covers many, but not all of the topics one might find in a compiler course. You may read the entire source on line for free. The authors ...
Fritz Sieker's user avatar
  • 1,263
3 votes

Single-dimensional array and simple looping activities of significance

You could use introduce elementary (one-dimensional) cellular automata. Basically, you represent a single row of cells as a simple array. Then you write a function that takes an array and applies the ...
Kevin Workman's user avatar
3 votes

How can I explain the difference between CS and coding to a layperson?

Computer science is a discipline of problem solving. I use this phrase from CS50 often (mainly because I teach an adaption of it): ...
Peter's user avatar
  • 9,112
3 votes
Accepted

Unit Review for boolean algebra

I don't know if I have a solid answer to the main thrust of your question, but I do have some one-off suggestions that may or may not be helpful. First, something you could try integrating into your ...
Michael0x2a's user avatar
  • 4,005
3 votes

Unit Review for boolean algebra

I've found a lot of success giving real world (often times very silly) examples of boolean algebra to give them a more intuitive understanding in addition to the pure algebraic laws. An example would ...
Kaneki's user avatar
  • 783
3 votes

Teaching Induction to Prove the Correctness of Algorithms

One big struggle is getting CS students to care about induction. Proving correctness doesn't really count as motivation, when "passing the tests" seems so much approachable and the extra benefits ...
Chris Okasaki's user avatar
3 votes

Teaching loop invariant choice

Firstly, I believe that if the thought process is clear to you, then going through that process with your students, out loud, clearly and slowly, can help them understand what it is that you are ...
ItamarG3's user avatar
  • 6,312
3 votes

What is standard definition of Computer Science

What you seek doesn't really exist. "Computer Science" is an umbrella term that was coined in 1956. According to the Wikipedia article, there were a bunch of terms that were proposed for ...
Ben I.'s user avatar
  • 34.3k
3 votes

Any experience/resources on teaching computer science theory with a practical approach?

My course takes this approach. I have the students create a DFA and an NFA runner, and later, a TM runner as well. We skip PDAs - they turned out to be monstrously difficult for the students to deal ...
Ben I.'s user avatar
  • 34.3k
2 votes

Teaching loop invariant choice

A great resource for the instructor to learn the max about invariants is to go to the master. David Gries, The Science of Programming It isn't a book for novice learners, though. But understanding ...
Buffy's user avatar
  • 36.8k
2 votes

Teaching loop invariant choice

At the CS1 level that I teach, I focus a lot on the role and the precise meaning of variables and encourage comments at the point of declaration that attempt to make these clear, especially variables ...
David A.'s user avatar
  • 111
2 votes

Unit Review for boolean algebra

A couple of ideas: 1st day Start by getting everybody up and moving. Have people form sets - say, a set of colors, with everybody wearing a different color, or a set of ages - but remind them that ...
auden's user avatar
  • 4,724
2 votes

How can I explain the difference between CS and coding to a layperson?

I don't know if this will help you, but I often find myself in the position of explaining the difference between CS and IT to students / prospective students / parents, and I use the experience of ...
Chris M.'s user avatar
  • 471
2 votes

Single-dimensional array and simple looping activities of significance

I recommend to check out <algorithm>, <numeric>, and related C++ headers. There are literally tons of linear ...
user58697's user avatar
  • 532
2 votes

Single-dimensional array and simple looping activities of significance

Grades. Works especially well around final exam time. You can find the average. Find the highest and lowest. Find the average with the lowest dropped. Find the most common grade. Count how many are ...
Ryan Nutt's user avatar
  • 3,009

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