10 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, ...
user avatar
  • 31.5k
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 ...
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 ...
user avatar
  • 34.9k
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 (...
user avatar
  • 31.5k
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 ...
user avatar
  • 34.9k
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 ...
user avatar
  • 773
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. ...
user avatar
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 ...
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 ...
user avatar
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 ...
user avatar
  • 34.9k
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 ...
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 ...
user avatar
  • 171
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 ...
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): ...
user avatar
  • 9,042
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 ...
user avatar
  • 3,995
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 ...
user avatar
  • 773
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 ...
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 ...
user avatar
  • 6,227
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 ...
user avatar
  • 34.9k
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 ...
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 ...
user avatar
  • 4,684
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 ...
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 ...
user avatar
  • 442
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 ...
user avatar
  • 3,029
2 votes

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 ...
user avatar
  • 34.9k
2 votes

JavaScript to teach Theoretical Computer Science

All programming languages are tools. Whether one is a programmer, a computer scientist, a student, or an instructor, the tool status of programming languages remains constant. Selecting the right tool ...
user avatar
2 votes

JavaScript to teach Theoretical Computer Science

One idea which might be a bit too trade-schooly but which I offer in case you disagree: the practice of software engineering. One big difference between Java and JavaScript is that Java has enormous ...
user avatar
  • 1,683
2 votes

Any website or textbook with problems/solutions for Computer Science Theory?

I agree that Introduction to the Theory of Computation by Sipser is good text, but I also recommend taking a look at the Stanford CS103 course page archive, which has a lot of great supplementary ...
user avatar
  • 436
2 votes

Do you know online courses with Haskell for Theory of Computation?

This is another not-an-answer that might provide some useful resources. The last is probably the best, but not Haskell related The two old standards for such a course are: Introduction to Automata ...
user avatar
  • 34.9k
2 votes

Do Theoretical Computer Science Conferences Accepts Survey Papers?

That is up to the individual conference. All of them have web sites that will explain what they prefer. I'm skeptical a bit, however. But, many such CS conferences have different "tracks" ...
user avatar
  • 34.9k

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