32

When I attended a Mind, Brain, and Learning conference a few years ago, a lecturer posed the following question (paraphrased): If I ask you to figure out the cube root of a number like 150 in your head, and ask Albert Einstein or Richard Feynman to do the same, they will probably come up with the answer faster than you do. But who will be using more of ...


9

About 20 years ago, I interviewed at a rather well known American software company. I met with about a dozen people over a day that lasted from 8:30 to 4:30. One of the questions was to come up with an algorithmic solution to blindly traversing a space that looked like this, from one end to the other: +----+ | | | | | +---------+ | | +-...


7

I would like to suggest my absolute favorite lesson from my intro to CS class. I usually teach it over two class periods, the first being "unplugged" and the second on the computers, but I think you can cut some corners and still offer a valuable experience. Overview: "How do computers sort things?" I start by asking what computers are good at. The answers ...


7

tl;dr: Just say no. This question is difficult on many levels. I seems to me to be a land mine of misconceptions and has the possibility to lead to poor teaching practice. First the difficulties Only concepts can be abstract. Abstraction is about ideas. Animal is a concept. Mammal is a concept. Animal is more abstract than Mammal since it contains the ...


7

When I was about eight years old, my teacher asked the class to describe fool-proof ways to make a cup of tea, or to strike a match then use it to light something like a gas-flame or a cigarette. How would that not meet your citeria?


5

I hate to be unkind, but I wonder if you are blaming others for your own lack of effort and commitment. I don't think that everything that you need to study needs to be "interesting" before you make a success of it. Some things just need to be done and done well. It is hard, of course, when it isn't interesting, but if you have a goal then you can work ...


5

The hardest part of determining anything in computer science is the requirements first. If you don't know what the program should do, then there is no way to do it correctly. Thus, Winnie the Pooh is a wonderful book on the matter. It clearly describes time and time again how simple misunderstandings of the base assumptions lead to absurdities of action. ...


5

I didn't write any myself, but I encountered several self-modifying MS-DOS batch files (this is possible due to the OS closing the batch file before executing each line), especially during the $1980$'s. I'm not sure if batch files fit within your definition of "programs", or if this usage was from too long ago since the needs & reasons for this ...


4

If you are merely looking for feedback on this, let me point out, first, that according to Piaget's work, your students seem a bit young for this. They have only just entered the third stage of Piaget's Model. Moreover, since not all people advance in sync, some may still be in the second stage. In particular they are still very concrete thinkers. Anything ...


4

The timeless way of building — Christopher Alexander (https://www.patternlanguage.com/patterns/justsostory.html) This is a 3 volume book that includes A Pattern Language. This set of books is probably one of the most influential book from outside of computing to affect computing. It was the seed that started Patterns. The volume A Pattern Language has ...


4

Fundamentally, I question the notion that you can test to see if students understand the idea of abstraction beyond a superficial level, even if you don't restrict yourself to asking just multiple choice questions. It's a little hard for me to articulate, but I sort of feel the best way to learn + get feedback on whether you understand abstraction is to ...


4

I would probably ask students to demonstrate their understanding of abstraction by writing code demonstrating solutions to a small problem at, say, three different levels of abstraction. I'd probably leave it to them to choose the levels of abstraction, and optionally write a short explanation of the differences in level of abstraction the code was intended ...


4

But I would like to teach algorithmic thinking per se, independent of the underlying programming language. The current classic book is "Introduction to Algorithms" Third Edition by Thomas H. Cormen (WorldCat) It is a collage level book but then again so are computer algorithms.


4

My go-to answer for this question would be CS Unplugged, an open-source "collection of free learning activities that teach Computer Science through engaging games and puzzles that use cards, string, crayons and lots of running around". It has been around and maintained for at least 18 years now... and even if it may be a bit low-level for high ...


3

Motivation to work through "boring" material can be from knowing that it is the required foundation for more interesting stuff. Or you might try to find some interesting angle to it. Perhaps it is presented to you in a way that doesn't match your style, look for alternative expositions (other lecture notes, videos on YouTube, rummage around in Wikipedia to ...


3

Each project manager will tell you that the success of your project refers to planning. This can take some effort at first, but in the long run having a clearly defined project plan will save you time, money, and a lot of headaches once you start the project. To start creating a project plan, focus on defining the project. Define goals and targets, define ...


3

I think it would be improper to give you advice on the content of your project. Your professor assigned it so that you would learn something and you will learn more by doing that part yourself. However, I think you are making a mistake by assuming that after the original instruction from your professor you can't go back for more advice. But if you just ask ...


3

Looking at Buffy's answer it's clear to me that I've understood the question quite differently, so I will set some context before I get to the point. However you are good in only one language. I think that this is too strong: it's possible to be good in several languages if you use them all frequently. However, I do know the feeling. The main language ...


3

Your tennis racket question, is not good. As tells as that is is abstraction, then focuses on the form, when the most important aspect of a tennis racket is its function. Therefore the answer is non of the above (those are all implementation detail, and you asked for an abstraction). A good abstraction is hitty thing. The 2nd question, is very long, and can ...


3

Since you said non-programming, rather than non-CS I'd like to add a couple of very small books by V.J Rayward-Smith: A First Course In Formal Language Theory First Course in Computability Both books give an excellent, compact, introduction to important topics and important background for upper-level courses. Both are available at GoodReads. Hard ...


3

I find Henry Petroski's book "To Engineer is Human - The Role of Failure in Successful Design" a useful read. I also suggest Tracy Kidder's "The soul of a new machine", but mainly because I was there... I also suggest "Scam: Find Out All About Popular Online and Offline Scams and How to Avoid Them" which can be an eyeopener for the naive student. I also ...


3

Software Requirements and Specifications — Michael Jackson The Mythical Man Month, revisited — Fredrick Brooks Both are software engineering books, however they are very approachable for non computer-scientists / software-engineers. They both have a set essays of various aspects of software engineering. Examples from the books De-skilling from SRS: SRS ...


3

I agree very much with ctrl-alt-delor that the level of "total novice" might be rather early to introduce larger-scale meta-design techniques into coursework. The work being done at that level simply does not require (at a cognitive level) such deep planning to execute properly. Since the need is not self-apparent, efforts to bring it into their work will ...


3

I think you have a misunderstanding about something, but I can't say precisely what. You seem to really be asking for two different sorts of CT, not CT vs something else. Both math and CS require some facility in CT and, thus, CT is a prerequisite, whether taught explicitly or learned on one's own. So, if a student can provide a "trivial" solution to a ...


3

I haven't tried to build this but it seems to have the right characteristics The Animal Game In theory, new animals could be captured with new classes, extending the known list. The user thinks of an animal and the program asked a series of yes-no questions to "guess" the animal: "Does it have antlers?" etc. Depending on the answer, it ...


2

There is the Educational Testing Service (ETS) Major Field Test for Computer Science, a standardized multiple-choice test. Scores can be compared to those at other institutions, presumably on a per question basis. The ETS website includes some sample problems, which include questions about pseudocode, cache variables, trees, graphs, combinatorics, and ...


2

I'm going to echo ctrl-alt-delor's comment and say that as one of the answerers on the original question, my understanding was not that "a few people suggested intro programming with true novices might not be the best place to introduce critical thinking/planning skills for programs". I don't think anybody suggested that. In fact I'm pretty sure that 100% of ...


2

First, Critical Thinking is a deep concept and in a first course only simple aspects of it can be taught. To explore the depth of it you need to have context and a novice, by definition, has little of that. See Wikipedia for a start on understanding how broad and deep Critical Thinking really is. To me, the most important question to be answered by ...


2

(1) not fully internalizing what tools are available to them (e.g., String methods like charAt, length) [...] The first problem seems easy enough (encourage students to write a glossary of tools we learn with examples - we only require knowledge of a handful of methods), but students rarely do it. I don't blame them. It can be very hard for ...


2

Once you learn how to program with a given paradigm, learning other languages in that same paradigm should be fairly straightforward. One of the best ways is to write a large program in the new language. But if other tools than those you are used to are more commonly used with the new language use those tools as well. But there are some subtitles. For ...


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