你家儿子好像还小吧?男孩子有些方面比女孩子要慢一点、晚一些, 不用太早担心。读完一本书,你期待他明白“故事中的逻辑关系,前因后果的推理”,有没有可能是他还没完全明白你在问他什么?
逻辑推理的能力是有天生的上限,但在上限之前还有很大的空间,培养挖掘是能提高上去的。我怀疑我们有多少人能发展自己触到那天生的上限

。
关于数学, 比较常见的是,老师或者课本教孩子定理、定律,孩子学明白了,再做习题去巩固。有一种不太一样的方法是这样的, 那些定理、定律都隐藏在问题里,孩子自己在求解问题的过程中,去发现那些定理、定律, 然后去应用、甚至自己编题目。这有几方面的好处,知识是孩子自己发现、学来的,比较牢靠;这过程迫使孩子自己思考,逻辑推理能力也慢慢练出来了。另外,还可以考虑某种形式的学习小组, 水平相当的可以互相讨论,会的教不会的,大的可以教小的。不会的孩子学到了新东西,会的孩子在教别人的过程中,也有再思考、提高的机会,还锻炼了交流能力, 这样所有的孩子都能受益良多。还有一个好处是,孩子学习不孤单,能相互打气、鼓励培养兴趣。
你儿子喜欢数学和编程的话,可以考虑引导他看看信息竞赛。计算机语言本身只是工具,就像我们人与人之间交流用的语言一样,有意思的是去用这个工具。信息竞赛比的是算法,用计算机去解数学题,他可能会有兴趣。
C语言是Sequential programming language。现今的大势是object-oriented language. 建议你儿子再看看Java/C++/Pathon,赶赶潮流

, object-oriented languages 有它们的长处。.