FACULTY OF ENGINEERING
Department of Mechatronics Engineering
SE 310 | Course Introduction and Application Information
Course Name |
Advanced C++: Templates and Generic Programming
|
Code
|
Semester
|
Theory
(hour/week) |
Application/Lab
(hour/week) |
Local Credits
|
ECTS
|
SE 310
|
Fall/Spring
|
3
|
0
|
3
|
5
|
Prerequisites |
None
|
|||||
Course Language |
English
|
|||||
Course Type |
Elective
|
|||||
Course Level |
First Cycle
|
|||||
Mode of Delivery | - | |||||
Teaching Methods and Techniques of the Course | - | |||||
Course Coordinator | ||||||
Course Lecturer(s) | ||||||
Assistant(s) | - |
Course Objectives | C++ is currently the most widely used programming language in industry, thanks to its flexible design, scalability and efficiency. The objective of this course is to improve on the students C++ knowledge and programming skills by introducing them to the cutting edge practices in C++ language, including Standard Template Library (STL), template programming techniques, generic programming, and selected Boost C++ Libraries. Topics include programming with templates, advanced template programming techniques, template specializations, traits, overview of GUI programming in C++, overview of Standard Template Library, STL containers, STL iterators, standard algorithms, and some selected Boost C++ libraries |
Learning Outcomes |
The students who succeeded in this course;
|
Course Description | This course covers the principals behind the templates and generic programming, and introduces students to the state of the art generic libraries. |
|
Core Courses | |
Major Area Courses | ||
Supportive Courses | ||
Media and Management Skills Courses | ||
Transferable Skill Courses |
WEEKLY SUBJECTS AND RELATED PREPARATION STUDIES
Week | Subjects | Related Preparation |
1 | Introduction and motivation. Overview of Object Oriented Programming in C++ | Inheritance, Polymorphism, Abstraction, Encapsulation, Data Hiding, Exception handling |
2 | Basic template overview. Function and class templates. | David Vandevoorde and Nicolai M. Josuttis. C++ Templates: The Complete Guide. Addison Wesley, 2003. (Course book) Chapter 2, Chapter 3 |
3 | Nontype template parameters, tricky basics | Course book Chapter 4, Chapter 5 |
4 | Using templates in practice | Course book Chapter 6 |
5 | The polymorphic power of templates | Course book Chapter 14 |
6 | Traits and policy classes | Course book Chapter 15 |
7 | Templates and inheritance | Course book Chapter 16 |
8 | GUI programming with QT 4.6 Framework | C++ GUI Programming with Qt 4 (2nd Edition) (Prentice Hall Open Source Software Development Series) Prentice Hall, 2008 |
9 | Introduction to Standard Template Library | Josuttis, Nicolai M. The C++ standard library: a tutorial and reference. Addison Wesley, 1999 (STL Book) Chapter 2 |
10 | Associative Containers: Map, Multimap, Set, and Multiset. | STL Book Chapter 6 |
11 | STL iterators | STL Book Chapter 7 |
12 | STL algorithms | STL Book Chapter 8 |
13 | Boost Smart Pointers | Boost C++ libraries website |
14 | Other Selected Boost C++ Libraries | Boost C++ libraries website |
15 | Project Presentations | |
16 | Review of the Semester |
Course Notes/Textbooks | David Vandevoorde and Nicolai M. Josuttis. C++ Templates: The Complete Guide. Addison Wesley, 2003. Instructor notes and lecture slides. |
Suggested Readings/Materials | C++ GUI Programming with Qt 4 (2nd Edition) (Prentice Hall Open Source Software Development Series) Prentice Hall, 2008 Josuttis, Nicolai M. The C++ standard library: a tutorial and reference. Addison Wesley, 1999Boost C++ libraries website |
EVALUATION SYSTEM
Semester Activities | Number | Weigthing |
Participation |
1
|
10
|
Laboratory / Application | ||
Field Work | ||
Quizzes / Studio Critiques | ||
Portfolio | ||
Homework / Assignments | ||
Presentation / Jury | ||
Project |
1
|
30
|
Seminar / Workshop | ||
Oral Exams | ||
Midterm |
1
|
25
|
Final Exam |
1
|
35
|
Total |
Weighting of Semester Activities on the Final Grade |
3
|
65
|
Weighting of End-of-Semester Activities on the Final Grade |
1
|
35
|
Total |
ECTS / WORKLOAD TABLE
Semester Activities | Number | Duration (Hours) | Workload |
---|---|---|---|
Theoretical Course Hours (Including exam week: 16 x total hours) |
16
|
3
|
48
|
Laboratory / Application Hours (Including exam week: '.16.' x total hours) |
16
|
0
|
|
Study Hours Out of Class |
15
|
2
|
30
|
Field Work |
0
|
||
Quizzes / Studio Critiques |
0
|
||
Portfolio |
0
|
||
Homework / Assignments |
0
|
||
Presentation / Jury |
0
|
||
Project |
1
|
15
|
15
|
Seminar / Workshop |
0
|
||
Oral Exam |
0
|
||
Midterms |
1
|
22
|
22
|
Final Exam |
1
|
35
|
35
|
Total |
150
|
COURSE LEARNING OUTCOMES AND PROGRAM QUALIFICATIONS RELATIONSHIP
#
|
Program Competencies/Outcomes |
* Contribution Level
|
||||
1
|
2
|
3
|
4
|
5
|
||
1 | To have knowledge in Mathematics, science, physics knowledge based on mathematics; mathematics with multiple variables, differential equations, statistics, optimization and linear algebra; to be able to use theoretical and applied knowledge in complex engineering problems |
|||||
2 | To be able to identify, define, formulate, and solve complex mechatronics engineering problems; to be able to select and apply appropriate analysis and modeling methods for this purpose. |
|||||
3 | To be able to design a complex electromechanical system, process, device or product with sensor, actuator, control, hardware, and software to meet specific requirements under realistic constraints and conditions; to be able to apply modern design methods for this purpose. |
|||||
4 | To be able to develop, select and use modern techniques and tools necessary for the analysis and solution of complex problems encountered in Mechatronics Engineering applications; to be able to use information technologies effectively. |
|||||
5 | To be able to design, conduct experiments, collect data, analyze and interpret results for investigating Mechatronics Engineering problems. |
|||||
6 | To be able to work effectively in Mechatronics Engineering disciplinary and multidisciplinary teams; to be able to work individually. |
|||||
7 | To be able to communicate effectively in Turkish, both in oral and written forms; to be able to author and comprehend written reports, to be able to prepare design and implementation reports, to present effectively, to be able to give and receive clear and comprehensible instructions. |
|||||
8 | To have knowledge about global and social impact of engineering practices on health, environment, and safety; to have knowledge about contemporary issues as they pertain to engineering; to be aware of the legal ramifications of engineering solutions. |
|||||
9 | To be aware of ethical behavior, professional and ethical responsibility; information on standards used in engineering applications. |
|||||
10 | To have knowledge about industrial practices such as project management, risk management and change management; to have awareness of entrepreneurship and innovation; to have knowledge about sustainable development. |
|||||
11 | Using a foreign language, he collects information about Mechatronics Engineering and communicates with his colleagues. ("European Language Portfolio Global Scale", Level B1) |
|||||
12 | To be able to use the second foreign language at intermediate level. |
|||||
13 | To recognize the need for lifelong learning; to be able to access information; to be able to follow developments in science and technology; to be able to relate the knowledge accumulated throughout the human history to Mechatronics Engineering. |
*1 Lowest, 2 Low, 3 Average, 4 High, 5 Highest