Competitive/Collaborative Programming Class

ICPC Computer Programming Contest Prep

Problem Solving in Computer Science

Fall 2022 -- CSC 2700 Section 01 (1216 Patrick Taylor, 6:00 PM - 7:50 PM)



Teaching Programming

Typical approach to learning a language:

The problem with this is that in a language like Java, step 1 is a lot of stuff. It takes a long time for that much stuff to make sense to a beginner. By then more stuff has been layered on top. This makes it very hard for beginners to decode and understand the basics.

Alternative idea:

This is a repeat until loop. Learning the various control structures this way will make it easier for beginners to grasp them. It will also provide the chance for a person to understand them better so they can choose wisely when to use which.

More importantly, that basic syntax could be taught day 1. In the first week, beginners could be writing code that did stuff. Simple I/O could be covered at end of week so student could then get a real positive feedback early in the cycle.

Another benefit of this approach is that it gets the concept of gestalt across. The above example is nothing but assignment, simple arithmetic and an if. Individually, these are relatively easy concepts. Combined in this manner and you have code that does a summation. The combination (sum) of the individual parts implements a more complicated concept. Very early on a beginner could see the power of combining simple commands. They could also see that the order and logic are critical in turning commands into an "algorithm".