如何教C ++速成课程?

时间:2008-09-07 15:02:08

标签: c++

几个星期后,我们将直接从大学开始为Java程序员教授C ++速成课程。他们对C或C ++几乎没有经验。

本课程以前的版本只有1或2个半天课程,涵盖的主题包括:

  • 新语言功能,例如
    • 标题与实施
    • 指针和参考
    • 内存管理
    • 运算符重载
    • 模板
  • 标准库,例如
    • C库标题
    • 基本的iostreams
    • 基本STL
  • 使用库(标题,链接)
  • 他们将使用Linux,所以
    • 基本的Linux控制台命令
    • gcc以及如何解释其错误消息
    • Makefile和autotools
  • 基本调试器命令
  • 他们询问的任何主题

在课程中,每个人使用新引入的功能单独编写,编译,运行和调试简单程序。这是最好的学习方式吗?

您认为哪些主题最重要?
应添加或删除哪些主题?
哪些主题在短时间内无法充分涵盖?

7 个答案:

答案 0 :(得分:22)

我只能再次指向Stroustrup并宣讲:不要教C子集!这很重要,但不适合初学者! C ++很复杂,标准库类,特别是STL,比C ++的C子集更加重要,并且(至少表面上)更容易理解。

顺便提一下,指针和堆内存分配也是如此。当然,只有在教过STL容器之后,它们才是重要的。

新学生必须掌握的另一个重要概念是不同编译单元的概念,一个定义规则(因为如果您不知道它将无法解密错误消息)和标题。这实际上是一个很大的障碍,必须尽早违反。

除语言功能外,最重要的是如何理解C ++编译器以及如何获得帮助。在我的经验中获得帮助(即知道如何搜索正确的信息)是关于C ++必须学习的最重要的事情。

过去,我对这种教学方式有很好的经验。

/编辑:如果您碰巧认识任何德语,请查看http://madrat.net/coding/cpp/skript,这是我在其中一门课程中使用的非常简短介绍的一部分。

答案 1 :(得分:6)

如果他们来自Java世界,他们习惯于垃圾收集。因此,我可能会花一点时间讨论智能(引用计数)指针,以及它们与垃圾收集的比较。

答案 2 :(得分:4)

如果你打算让大量的Java程序员直接从大学编写生产代码,我会说你应该首先考虑的是指针和内存管理。

实际上,那些直接来自托管代码的人很少有调试与指针相关的异常的技能,更不用说正确使用它了,甚至不了解他们的语言/工具如何利用它。

  

指针就是思考而不仅仅是编写代码的方式。

框架和编码实践可以作为提示和注释进行教学。

但是在编写C代码时没有理解指针只是在等待自己在脚下射击,如果不是在头部。

答案 3 :(得分:4)

我想补充一点,你应该确保指出他们可以在哪里找到语言和API参考。在java中,API和语言规范在java.sun.com上在线指尖...使用C或C ++,找到参考文档并不那么简单和容易。

每当我在C或C ++中做某事时,这是我最大的问题......试图找到我需要的东西。我通常转向cplusplus.com,这通常有我需要的东西,否则我会谷歌。如果您有一组使用的参考(在线或书籍形式),请列出并告诉他们您使用的每个参考文献。

答案 4 :(得分:3)

内存管理(指针,分配等),STL和模板的基础知识(因为STL使用模板)。我认为STL非常重要,因为人们会错过C ++中Java SE类库的丰富性。

答案 5 :(得分:3)

我会花一整天的时间讨论如何用C ++编写一个好的类。 Deitel & Deitel可能有助于作为参考。

  • 什么时候被称为构造函数?
  • 何时调用赋值运算符?
  • 什么时候调用析构函数?
  • const Foo& amp;是什么意思? a_foo?

答案 6 :(得分:0)

您应该花一些时间进行内存管理,尤其是RAII。