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


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


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


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

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


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

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


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

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


2

My five year old had really fun with https://www.google.com/doodles/celebrating-50-years-of-kids-coding and even scratch was fun to her, even though she was not able to read at that point in time. Rot13 might be nice as well (secret languages are great to kids), and if you are having more time, you could try to play https://en.wikipedia.org/wiki/...


2

See this resource from computer-science unplugged https://csunplugged.org/en/ (see also https://www.youtube.com/watch?v=VpDDPWVn5-Q) it is aimed at teaching this age group, and has some similarities to some of your ideas. The people that made it are very good teachers, so you will get an idea of how to teach this age group. Substitution There is a ...


2

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


2

The problem of literary in education is much more severe in the work of institutions where it is difficult to show individual contributions in different fields in particular. With many others, we found the evidence of literature in the last year of the undergraduate projects. This is an important part of our program. The undergraduate partnership is about 20%...


1

Ideally, of course, the professor should teach you how to do this as part of the course. It isn't a simple or obvious task. Large companies, such as IBM and Oracle, employ documentation specialists who have special training and work with other technologists to produce the documentation. If you were a teacher and didn't have a lot of time to teach ...


1

I teach classes that each use different languages: Python, C#, Visual Basic, Thunkable, Scratch, Alice, Small Basic and a few other odds and ends. I am not good in any of them off hand, but I have a set of resource locations that will refresh my memory or show me the important features of the languages. I learn how to learn languages. I get the language ...


1

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


1

True novices If the they are novices, then you may be asking to much, to get them to write large programs from scratch. More useful exercises may be: Parsons problems: Give them «all the right code, but non in the right order» Works well with about 4 lines of code. Contribute to a bigger project: Have them work on something that is already written, and ...


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