# Tag Info

### 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, ...
• 33.8k
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 ...
• 638

### 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 ...
• 36.4k

### 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 (...
• 33.8k

### 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 ...
• 36.4k

### 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 ...
• 783

### 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. ...

### 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 ...
• 151
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 ...
• 5,445

### 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 ...
• 33.8k

### 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 ...
• 36.4k

### 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 ...
• 111

### 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 ...
• 171

### 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 ...
• 5,430

### 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): ...
• 9,102
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 ...
• 4,005

### 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 ...
• 783

### 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 ...

### 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 ...
• 6,312

### 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 ...
• 33.8k

### 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 ...
• 33.8k

### 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 ...
• 36.4k

### 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 ...
• 111

### 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 ...
• 4,724

### 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 ...
• 471

### 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 ...
• 532

### 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 ...
• 3,009

### How to structure a Predictive Keyboard project similar to GBoard

Markov Chains are great for putting out nonsense based on statistical data. However, a predictive keyboard that outputs nonsense isn't very useful. It needs much more context than a Markov Chain can ...
• 36.4k