All Questions

Filter by
Sorted by
Tagged with
10
votes
6answers
1k views

Why isn't Functional Programming Taught First?

We've recently gone through the process of selecting an intern from a local university to join our team for the summer. We are using F# and almost exclusively using functional programming techniques ...
10
votes
2answers
150 views

Teaching students how to construct regular expressions (and other "translation" style problems)

I'm currently helping teach a unit about languages as a part of a discrete math course -- we're currently focusing on regular expressions, NFAs, DFAs, CFGs, grammars, and the like. One of the skills ...
7
votes
8answers
2k views

Active learning for boolean algebra

I've been thinking about active learning, and I am inspired by Heather's answer to my earlier boolean algebra curriculum review. This may also be a good question for math teachers who have experience ...
17
votes
5answers
2k views

What can the instructor do to overcome the Authenticity Bias in students?

A recent Blog post by Eugene Wallingford raises the issue that students often perform according to their perception of their abilities rather than their actual abilities. If a student performs better ...
15
votes
8answers
987 views

How can I determine if a student would enjoy or has an aptitude for CS?

I'm a developer with a little CS teaching history, and I have a nephew who enjoys math (Algebra-Calculus) quite a bit in high school. Because of this, I feel like he should at least try computer ...
14
votes
4answers
529 views

The impact of switching to Java 10

Java 9 and 10 were both released recently -- Java 9 was released on Sep. 21st, 2017 and Java 10 was released on Mar. 21st 2018. These two releases contain some very big changes: Java becomes modular ...
14
votes
4answers
4k views

When does excessive collaboration become plagiarism?

I was reading the abstract for this research paper: Yan, L., McKeown, N., Piech, C.: Using programming assignment work patterns to understand excessive collaboration in large CS classes, in SIGCSE ...
11
votes
6answers
1k views

How do I teach ethics in hacking?

I teach a course on hacking every other year. It's a very difficult class, and it only attracts kids who are really enthusiastic about delving deep into the bowels of ...
10
votes
5answers
617 views

Students seem to be unable to use code to express their ideas. Is the teaching methodology improvable?

In my beginner experience as a teacher, the thing that's strucking me most is a sensation of my students' inability to express their (valid!) thoughts in code. Let me deepen it a bit. I inherited a ...
10
votes
1answer
248 views

What to consider when choosing version of Python?

I will be giving a small course on the Python programming language to a group of interns this summer. As I am sure you know, there are many different versions of the Python language. I am wondering ...
10
votes
8answers
7k views

CS-oriented Ice-Breaker Games

I will have my new incoming CS freshmen (HS) for a week-long summer orientation in August. The kids don't know each other yet, so Ice Breakers are in order! Has anyone encountered fun, physical CS-...
10
votes
4answers
676 views

What would be reasonable to include in an Introduction to AI class for a 7th-8th grade after school program?

The class meets just 8 times for 2.5 hours weekly, aimed at 7-8th graders with very basic programming skills. Possibilities off the top of my head: computer learning (neural nets and/or genetic ...
9
votes
5answers
5k views

Pseudocode or Flowcharts?

For GCSE CS in the UK, students have to analyse, design, code, test and review a solution to a problem. For the design section of their project, students have to plan out the algorithm for each part ...
8
votes
4answers
452 views

Making Technical Presentations Safe for Novices

One useful skill in CS is presentation of technical material to peers and/or superiors. Novices, however, often come to computing as introverts for whom public speaking is difficult and even ...
7
votes
5answers
220 views

Deep Learning Teaching Resources

What would you recommend as the best resources for learning and teaching about Deep Learning? These could include tools (e.g. TensorFlow), tutorials, books (e.g. Deep Learning), MOOCs (e.g. Udacity's)...
6
votes
1answer
355 views

Does teaching an intro course with a functional language really help level the playing field?

On another question, Ben. I claimed: By utilizing a functional language in your first course, you get to have a classroom full of kids who have a much more similar footing. And when you move on,...
6
votes
2answers
244 views

Use of “learnable programming” (via direct manipulation) software, in teaching

I read something on this site, that lead me to read about Bret Victor's learnable programming and direct manipulation. I was wondering if anyone has used any software like this. What software have we ...
26
votes
9answers
5k views

Once implicit/inferred typing is introduced, how can I impress upon students the importance of not abusing it?

I typically have the same students two semesters in a row, for programming I (VB.NET) and programming II (C#). In our early, impressionable time together, I stress to these students (high-schoolers) ...
18
votes
9answers
2k views

Recommended IDE for teaching web development to beginners

I have been assisting an IT teacher who has recently started teaching computer science to year 7-9s (11-13 year-olds). This year they will just be covering basic client-side web development: HTML, CSS ...
17
votes
12answers
2k views

Dealing with students who complete labs very quickly

One of my goals is to minimize homework. My high school students are high performing, grade conscious, and constantly stressed out as it is. Many of them fall into the "Ivy League or bust" camp, ...
16
votes
9answers
947 views

Should I have written tests on basic programming skills?

When making more complex programs, it is natural that one needs to run the program to see whether things work and fixing bugs. However, if one makes a lot of mistakes in basic programming, e.g. ...
16
votes
5answers
923 views

Teaching students to hunt for and debug their own errors

I'm sure we've all had this kind of conversation: Student: Mr. Choirbean, my code is crashing. Teacher: Okay, what error is it giving you when you crash? Student: Error message? Was there one of ...
15
votes
7answers
2k views

When should I scrap my projector for a blackboard?

These days, we've got all this fancy, new-fangled technology. We've got live coding, we've got presentations, we've got remote desktop adapted for classroom use. There seems to be a tool for every ...
13
votes
6answers
338 views

What are the merits of including the history of computers in the entry level curriculum?

Should some portion of introductory CS curriculum include something about the history of computers, especially with respect to Moore's law and what that might imply about the growth of computing power?...
12
votes
3answers
602 views

Why did interest in CS majors plummet in the United States after the mid-80s?

As shown by the following graph, the percentage of U.S. college students earning bachelor's degrees in CS peaked in 1986, with the percent of freshmen planning to major in CS peaking for the classes ...
12
votes
9answers
2k views

How to teach students not to use jump statements

We all know goto is the spawn of satan. To learners though, it seems easy and quick. In simple, short program codes having a goto or two won't turn the code into unreadable spaghetti code. So students ...
9
votes
2answers
264 views

Best Practices / Effective Strategies For Building Diversity In High School CS Programs

What works for building programs that are accessible to "non-traditional" CS students and which help to support the students so that they enjoy the class, start seeing themselves as "CS types," and ...
9
votes
3answers
398 views

Unit Review for boolean algebra

Background: This is the first unit in junior year for a course in theoretical computer science. Prior to this, the students have already had AP CS A and a mish-mash of other topics. They have, by ...
9
votes
5answers
684 views

How do you assess students' understanding of abstraction?

We've just uploaded a video of a presentation Simon Peyton Jones and I did about Project Quantum to CAS TV. Project Quantum is an attempt to crowd-source low-stakes formative assessment items for ...
8
votes
4answers
164 views

Ways to advance the field of computer science education as a non-researcher

I understand, as a model, how a researcher at a university can advance the entire field of CS Education. Less clear to me, however, are methods available to teachers in the field who do not have ...
8
votes
4answers
216 views

To plan or not to plan that is the question

We are often asked to plan: We are asked to make lesson plans; When I was a programmer sometimes I was asked to create a plan; We are told to ask our students to plan their projects. However there is ...
8
votes
4answers
676 views

The importance of writing understandable code [duplicate]

Many students do not see the purpose of following conventions (indentation, naming, comments, etc.) which make the code much easier to read and review. Students can learn to follow conventions, but ...
8
votes
3answers
1k views

What is the best layout for a Middle School computer lab?

My school director has given me the opportunity to redesign the layout of our school's IT lab to better suit my classes. Currently the computers are in the "inverted U" layout listed here so that I ...
7
votes
2answers
347 views

How to prevent dictating the solution when tutoring

My girlfriend is currently in her final year in college, and is following a first-years programming course, learning C++. The class is graded partially from homework exercises. She is struggling with ...
7
votes
4answers
492 views

Avoiding confusion about precedence

When mentioning operator precedence for AND / OR, I explained it wrongly. I re-explained it properly using the idea of binding: the operator "binds tightly" to the two expressions immediately on ...
7
votes
7answers
3k views

Explaining how an Interface is a contract

When teaching Interfaces (in Java, for example), it is common to describe them as a contract. Which means that if a class implements an interface, it has to use the methods in the interface. As an ...
7
votes
1answer
217 views

Designing rubrics for AP Computer Science-style free response questions

When I create questions in the style of the College Board's AP Computer Science Free Response Questions, I always attempt to create authentic rubrics that reflect how such questions would be graded. ...
7
votes
6answers
205 views

What are good, practical labs and activities for unnested loops?

I am teaching some high school students, also the first time programmers, some basic programming concepts and applications. When introducing loop I find that using it to check prime number (or find ...
7
votes
2answers
230 views

Placement of App Inventor in high school CS curriculum

Over the past couple days I've had my first opportunity to dive into App Inventor. It has quite frankly blown my mind. I had always (mistakenly) grouped it with Scratch, Snap!, etc. as "just another ...
6
votes
3answers
159 views

How to adapt pair programming to a shared terminal environment like Cloud9?

Pair programming rather than solo programming is best practice in the CS classroom. Online IDEs like Cloud9 allow both members in the pair to work in a shared environment like google docs: working ...
6
votes
4answers
313 views

Answering student questions as they work outside class

If your students are like mine, they do a lot of their work outside my view; at home, on weekends, etc. But as they work they sometimes get stuck. They get questions for which they need the answers in ...
6
votes
4answers
431 views

Classroom use of a limited port scan in the wild?

Under what circumstances is it ethical for teachers to teach the existence of a tool such as MXtoolbox? Under what circumstances is it legal and ethical to use a superficial scan with protocol-...
6
votes
4answers
138 views

Supplementing Curriculum with Online Resources

One of the blessing and curses of teaching CS is the plethora of materials freely available online. MOOCs on edX and Coursera. Tutorials on Khan Academy and Codecademy. Certifications through ...
6
votes
4answers
3k views

What is a good analogy to introduce databases and SQL?

I think that it is vital to introduce each subject area with a few handy, even if limited, images or concepts that make the idea clear. Here is how I introduce SQL (in part): SQL takes a set of ...
6
votes
2answers
78 views

Workshops on Cloud (Azure)

About a month ago (before they took off for their vacation) some of my technology club members asked me if I could conduct some workshops on cloud. Being a lifelong Microsoft man, and something of an ...
6
votes
4answers
817 views

How to teach which loop should be used

In most languages, there are many different types of loops. The most common ones seem to be for loop, while loops, and do while loops. What is the best way to illustrate the differences between the ...
5
votes
3answers
238 views

Encouraging Critical Thinking On Programs Before Students Write Them

I frequently teach our CS1 class (taught in Java), and have noticed a problem with critical thinking/planning skills on programs of any substantial size. This seems to be related to two problems: (1) ...
5
votes
2answers
291 views

How should students be encouraged to reflect and improve after summative assessment?

Computer Science lends itself to a variety of different assessment methods - from the more practical assignment based programming problems, to the more formal final exams that cover the theoretical ...
4
votes
4answers
348 views

Toy Databases for Class Examples/Homeworks

I am familiar with the Northwind database and Chinook database as good toy databases for allowing students to practice writing queries. Are there other databases in a similar vein that are available? ...
4
votes
7answers
243 views

Mental Model of Type Conformance/Subtype Polymorphism

I'm finding that my CS2 students really struggle with the notions of type conformance and subtype polymorphism in Java. Say we have the following: ...

15 30 50 per page