高级语言程序设计 Advanced Programming
课程介绍 Overview
-
课程描述:
“面向对象程序设计”是针对电子信息学科一年级本科生开设的一门专业知识课程。本课程以“C++语言”为主要学习对象,以Linux操作系统及GNU编译器gcc/g++、调试器gdb等为工具,学习面向对象程序设计有关的概念和语法,并培养编写可维护性、可扩充性好、较大规模程序的能力。
-
Course Description:
"Object oriented programming" is a professional knowledge course for undergraduate students of electronic information science in the second semester of the first grade. This course mainly focus on the concepts and application of "C++ language". Linux operation system and GNU compiler gcc/g++ debugger GDB will be used as tools for programming skills training and codes writing. Students are required to learn the ability to write a program with high maintainability and extensionality. Students should have the ability to write a large-scale program.
-
设计思路:
本课程设计以理论结合实践为基本原则,基于网络教学综合平台采用课堂授课和网络学习的混合式课程教学模式,通过课外任务加强编程实践,为学生后续电子及计算机类相关学科专业课程乃至未来相关专业工作等打下良好的程序设计与编写基础。课程内容及编排本着从易到难、由浅入深的原则,设计了“从C走进C++”、“类和对象”、“运算符重载”、“继承与派生”、“多态与虚函数”、“文件操作和模板”、“标准模板库STL”七个模块,引导并带领学生体会和领悟面向对象程序设计方法和泛型程序设计方法的优势。
-
Course design:
This course is designed to combine theory with practice as the basic principle. This course is given by way of a range of traditional lectures and online classes. Students can strength their coding ability by doing extracurricular coding tasks. This course will lay the roots for students’ disciplinary foundation and even their future career. We organize the lecture contents from easy to difficult and divide the course into 7 parts: From C language to C++, Classes and objects, Operators overloading, Inheritance and derivation, Polymorphism and virtual functions, File operations and templates, STL standard template library. This course aim to guide and lead students to master and understand the object-oriented program design method and the advantages of generic programming method.
-
课程与其他课程的关系:
本课程先修无需任何学科和专业背景,为后续“面向对象程序设计”、“数据结构”和“程序设计实践”课程的基础。
-
The first course of this course is "advanced language programming". This course “Object-Oriented Programming” is the basis for the follow-up "Data structure" and "Program design practice".
成绩构成 Grading Policy
总成绩 Total Score
2-3人/组(每次报告提交时需注明组内分工)
-
团队合作 Group Cooperation(20%)
-
报告成绩 Report(20%)
- 每组的每名组员完成课外编程OUCOJ(每周一01:00至周日23:00开放);
- 各小组任选3题撰写详细报告,通过网络教学平台提交(http://szjx.ouc.edu.cn/);(截止时间:每周日晚23:59)
- 要求报告包括:1、问题分析(2%);2、解决方案(2%);3、算法设计(流程图)(2%);4、编程实现(10%);5、结果分析(2%);6、总结体会(2%)。
-
注意 :作业以截止日期的晚上12点为准。每人只有1次超期机会且最多延期2天(需要提出申请)。超过时限24小时以内分数减半,24小时以上不计分。
-
个人表现 Personal Performance(80%)
-
在线成绩 Online Assignments(40%)
- 课外成绩(20%)(每周一01:00至周日23:00开放)
- 上机成绩(20%)(每周六08:00至18:00开放)
-
期末成绩 Final Exam(40%)
最终闭卷考试表现
优异表现
(加总成绩1-2分/次且累计加分),包括但不限于:
- 担当科代表并协助老师教学(+5分)
- 积极回答问题并正确作答(+2分)
- 小组作业优秀(小组全员+1分)
不良表现
(扣总成绩5分/次且累计扣分),包括但不限于:
缺勤处理 Absence Policy
缺勤扣分
- 无故 缺勤一次(-10分)
- 无故 缺勤两次(-20分)
- 无故 缺勤三次(-100分)
教学大纲和课堂讲义 Syllabus and Lecture Notes
说明:本课程设计及课件等主要参考北京大学《程序设计与算法》Coursera专项课程中李戈老师《计算导论与C语言基础》和C程序设计进阶。
1.第一章 从C走进C++
本章主要包括以下内容:
- 课程定位和主要内容;
- 如何学好这门课?
- 操作系统与编程语言
- C语言回顾
- 面向对象程序设计的特点
课次 |
周次 |
时间 |
内容 |
课堂资料 |
补充材料 |
1 |
一 |
2020年03月03日周二 |
课堂事务。课程定位和主要内容。C语言的要点回顾。 |
第一周教案1 |
|
2 |
二 |
2020年03月10日周二 |
函数指针,面向对象程序设计简介。 |
第一周教案2 |
|
L1 |
一 |
2020年03月07日周六 |
实验课一:C语言强化练习1。 |
机房Linux说明 |
序, Linux应知应会, Vim练级攻略 |
L2 |
二 |
2020年03月14日周六 |
实验课二:C语言强化练习2。 |
|
|
课外任务:了解面向过程与面向对象程序设计的差别
2. 第二章 类和对象
本章主要包括以下内容:
- 内联成员函数和重载成员函数;
- 构造函数,复制构造函数,类型转换构造函数;
- 析构函数;
- 静态成员变量和静态成员函数;
- 成员对象和封闭类;
- 友元,this指针;
- 常量对象、常量成员函数和常引用。
课次 |
周次 |
时间 |
内容 |
课堂资料 |
补充材料 |
3 |
三 |
2020年03月17日周二 |
类和对象,内联成员函数和重载成员函数. |
第二章课件 |
|
4 |
四 |
2020年03月24日周二 |
封闭类、友元、this指针和常引用 |
|
|
L3 |
三 |
2020年03月21日周六 |
实验课三:类和对象。 |
|
|
L4 |
四 |
2020年03月28日周六 |
实验课四:类和对象2。 |
|
|
3. 第三章 运算符重载
本章主要包括以下内容:
- 运算符重载的基本概念;
- 赋值运算符的重载;
- 运算符重载为友元函数;
- 流插入运算符和流提取运算符的重载;
- 自加自减运算符重载。
课次 |
周次 |
时间 |
内容 |
课堂资料 |
补充材料 |
5 |
五 |
2020年03月31日周二 |
运算符重载的基本概念,运算符重载为友元函数 |
第三章课件 |
|
6 |
六 |
2020年04月07日周二 |
流插入运算符和流提取运算符的重载,自加自减运算符重载。 |
|
|
L5 |
五 |
2019年10月18日周五 |
实验课五:运算符重载。 |
|
|
L6 |
六 |
2019年10月18日周五 |
实验课六:运算符重载2。 |
|
|
4. 第四章 继承和派生
本章主要包括以下内容:
- 继承和派生;
- 复合关系和继承关系;
- 基类/派生类同名成员与Protected关键字。
- 派生类的构造函数;
- public继承的赋值兼容规则。
课次 |
周次 |
时间 |
内容 |
课堂资料 |
补充材料 |
7 |
七 |
2020年04月14日周二 |
继承与派生,复合关系和继承关系。 |
第四章课件 |
|
L7 |
七 |
2020年04月18日周六 |
实验课七:继承与派生。 |
|
|
5. 第五章 多态与虚函数
本章主要包括以下内容:
- 多态和虚函数的基本概念;
- 多态实现原理;
- 虚析构函数;
- 纯虚函数和抽象类。
课次 |
周次 |
时间 |
内容 |
课堂资料 |
补充材料 |
8 |
八 |
2020年04月21日周二 |
多态和虚函数的基本概念,多态实现原理。 |
第五章课件 |
|
9 |
九 |
2020年04月28日周二 |
虚析构函数,纯虚函数和抽象类。 |
|
|
L8 |
八 |
2020年04月25日周六 |
实验课八:多态与虚函数1。 |
|
|
L9 |
九 |
2020年05月02日周六 |
实验课九:多态与虚函数2。 |
|
|
6. 第六章 文件操作和模板
本章主要包括以下内容:
- 文件操作;
- 函数模板;
- 类模板;
- string类;
- 输入输出。
课次 |
周次 |
时间 |
内容 |
课堂资料 |
补充材料 |
10 |
十一 |
2020年04月21日周二 |
多态和虚函数的基本概念,多态实现原理。 |
第六章课件 |
|
11 |
十二 |
2020年04月28日周二 |
虚析构函数,纯虚函数和抽象类。 |
|
|
L10 |
十一 |
2020年04月25日周六 |
实验课十:文件操作和模板1。 |
|
|
L11 |
十二 |
2020年05月02日周六 |
实验课十一:多态与虚函数2。 |
|
|
7. 第七章 标准模板库与算法
本章主要包括以下内容:
- 标准模板库STL概述;
- 顺序容器vector;
- list和deque;
- STL:函数对象;
- set和multiset;
- map和multimap;
- 容器适配器;
- 算法。
课次 |
周次 |
时间 |
内容 |
课堂资料 |
补充材料 |
13 |
十三 |
2020年05月30日周六 |
标准模板库STL概述,顺序容器 |
第七章课件 |
|
14 |
十四 |
2020年06月02日周二 |
关联容器 |
|
|
15 |
十五 |
2020年06月09日周二 |
容器适配器和函数对象 |
|
|
16 |
十六 |
2020年06月16日周二 |
STL算法 |
|
|
L12 |
十三 |
2020年05月30日周六 |
实验课十二:标准模板库STL1。 |
|
|
L13 |
十四 |
2020年06月06日周六 |
实验课十三:标准模板库STL2。 |
|
|
L14 |
十五 |
2020年06月13日周六 |
实验课十四:标准模板库STL3。 |
|
|
L15 |
十六 |
2020年06月20日周六 |
实验课十五:标准模板库STL4。 |
|
|
期末总结
课次 |
周次 |
时间 |
内容 |
课堂资料 |
补充材料 |
16 |
十六 |
2020年06月23日周二 |
总复习 |
期末复习课件 |
|
L16 |
十七 |
2020年06月27日周六 |
实验课十六: 综合练习 |
|
|
补充内容:第八章 C++11新特性和异常处理
本章主要包括以下内容:
- 初始化方法;
- auto与decltype关键字;
- 智能指针shared_ptr;
- 空指针null_ptr;
- 右值引用和move语义;
- 异常处理。
课次 |
周次 |
时间 |
内容 |
课堂资料 |
补充材料 |
|
|
|
C++11新特性 |
第八章课件 |
|
TOP 返回顶部