C++ Programming  (2013 Spring Advancd Class)

Goals

(1) Understand the fundamental conceptions of C++ language, including data type, control statements, functions, array, pointer, …;
(2) Understand the principles of object-oriented software design, including Class, object, Inheritance, …;
(3) Have the basic ability and skill in C++ basic programming;
(4) Know about the background of software programming and software engineering.


Classroom and Laboratory

(1) Every Monday in Week 1-12, 14-19: Lecture hour 5-8, Laboratory N1-East204
(2) Midterm Examination: Programming Test in Week 14
(3) Final Examination: Paper Test in Week 19


Inner Course Site [>>>Entry]

(1) Upload your assginment report.
(2) Upload your group demo program.
(3) Do the tests in lecture hour.
(4) Post your questions and answers.


Syllabus

Week

Type

Date

Lecuture

Experiment

1

Lecture1

02-25
Mon.

Topic: Introduction [slides]
Textbook: Chapter1.

Instruction: Basic coding with codeblocks development tool [slides]
Task: menu.

2

Lecture2

03-04
Mon.
Topic: Basic programming with C [slides]
Textbook: Chapter2.
Instruction: Basic debugging with codeblocks development tool [slides]
Task: week day.
(report required)

3

Lecture3

03-11
Mon.
Topic: Control statement 1 [slides]
Textbook: Chapter3.
Instruction: Control statement [slides]
Task: month calendar

4

Lecture4

03-18
Mon.
Topic: Control statement 2 [slides]
Textbook: Chapter4

Instruction: Control statement [slides]
Task: week calendar
(report required)

5

Lecture5

03-25
Mon.
Topic: C function 1 [slides]
Textbook: Chapter4
Instruction: Function [slides]
Task: national holiday.

6

Lecture6

04-01
Mon.
Topic: C function 2 [slides]
Textbook: Chapter4
Instruction: Function [slides]
Task: game v1 and school holiday.

7

Lecture7

04-08
Mon.
Topic: C array 1 [slides]
Textbook: Chapter5
Instruction: Array [slides]
Task: integrated calendar by array.

8

Lecture8

04-15
Mon.
Topic: C array 2 [slides]
Textbook: Chapter5

Instruction: 2-D Array [slides]
Task: game v2 and course table v1 (report required)

9

Lecture9

04-22
Mon.
Topic: C pointer 1 [slides]
Textbook: Chapter7
Instruction: Pointer [slides]
Task: game v3.

10

Lecture10

04-27
Sat.
Topic: C pointer 2 [slides]
Textbook: Chapter7-8
Instruction: Pointer [slides]
Task: game v4.

11

Lecture11

05-06
Mon.
Topic: C struct [slides]
Textbook: Chapter10-11
sample1: create a struct
sample2: display a strcut array
sample3: save/load records in files
Instruction: Struct [slides]
Task: course table v2.

12

Lecture12

05-13
Mon.
Topic: Link list [slides]
Textbook: Chapter12
sample1: dynamic array
sample2: navigate linked list
sample3: create linked list
sample4: insert node by value
sample5: delete node by value

Instruction: Link list [slides][tips]
Task: course table v3
(report required in the end of week 13)

 

13

Middle Examination Week (No course)

14

Lecture13

05-27
Mon.
Midterm Examination:
Programming Exam Instruction
1. C coding rules and guidelines
2. Sample of programing exam

15

Lecture14

06-03
Mon.
Topic: Object oriented programming [slides]
Textbook: Chapter 15 - 16

Instruction: class design[slides]
(report required)

Task1: course table v4 [tips]
Advanced sample: C++ std list class

Task2: two classes

 

16

Lecture15

06-08
Sat.
Topic: Class I [slides]
Textbook: Chapter 17
sample1: a simple class
sample2: class Date in simple case
sample3: class Date in complex case

17

Lecture16

06-17
Mon.
Topic: Class II [slides]
Textbook: Chapter 15, 18
sample1: advanced function in C++
sample2: reference in C++

18

Lecture17

06-24
Mon.

Topic: Inheritance, Polymorphism [slides]
Textbook: Chapter 20 - 21
sample1: class student
sample2: Inheritance
sample3: pointer of class student
sample4: Polymorphism

(report required)

19

 

07-05
Friday

Paper Test
Sample of final paper exam

 

Reference Textbooks

[1] H.M.Deitel, P.J.Deitel, C How to program, 5th ,Pearson 2005
[2] H.M.Deitel, P.J.Deitel, C++ How to program  [digital version download], 5th ,Pearson 2005
[3] 谭浩强,《C++程序设计》,清华教育出版社,2004.6
[4] 郑莉 等,《C++ 语言程序设计》,清华大学出版社,2005.7
[5] 钱能 等,《C++ 程序设计教程》(第2版),清华大学出版社,2005.9

 

Reference on C++/C Coding guidelines and rules

[1] 林锐,顾晓刚,谢义军编著,《高质量程序设计指南—C++/C 语言》,电子工业出版社,2002-06
[2] 华为公司:编程规范(pdf),编程规范案例编程质量检查清单(互联网流传,未经证实)
[3] Google公司:编程规范 (互联网流传,未经证实)
[4] Andrew Koenig 著,高巍 译,《C陷阱与缺陷》,人民邮电出版社,2008-01
[5] 李健,《编写高质量代码:改善C++程序的150个建议》,机械工业出版社,2012-01
[6] Herb Sutter, Andrei Alexandrescu著,刘基诚 译,《C++编程规范:101条规则、准则与最佳实践》,2006-01
[7] 简明C语言编程规范(互联网流传)

 

Resources

(1) Textbook[1] source code [download]
(2) Reference book for standard C/C++ functions [download]
(3) Development tool: Virsual C++ 6.0 for teaching and study [download]
(4) Development tool: Virsual C++ Assistant [download]
(5) Development tool: Code Blocks [download] and in Chinese language patch [download]

Feedback

If you have questions, welcome write e-mail to liuwei@hust.edu.cn.
Due to the large number of spam e-mails, please add ``[C++][Question]'' as the prefix in the title of your e-mail.
That will help me to identify your e-mails, thank you.


<Last Updated: 2013-06-03>