Programming 2

A tantárgy neve magyarul / Name of the subject in Hungarian: A programozás alapjai 2

Last updated: 2023. február 26.

Budapest University of Technology and Economics
Faculty of Electrical Engineering and Informatics
BSc Computer Engineering
Course ID Semester Assessment Credit Tantárgyfélév
VIIIAA03 2 2/0/2/f 6  
3. Course coordinator and department Dr. Somogyi Péter,
Web page of the course https://www.aut.bme.hu/Course/bop2
4. Instructors Dr Dunaev Dmitriy associate professor, Department of Automation and Applied Informatics
5. Required knowledge Knowledge of C programming language
6. Pre-requisites
Kötelező:
(TárgyEredmény("BMEVIEEAA00", "jegy", _) >= 2
VAGY
TárgyEredmény("BMEVIEEA100", "jegy", _) >= 2
VAGY Training.Code=("5N-MGAIN"))

ÉS NEM
(TárgyEredmény("BMEVIIIA114", "jegy", _) >= 2
VAGY
TárgyEredmény("BMEVIIIA114", "felvétel", AktualisFelev()) > 0
VAGY
TárgyEredmény("BMEVIIIA115", "jegy", _) >= 2
VAGY
TárgyEredmény("BMEVIIIA115", "felvétel", AktualisFelev()) > 0
VAGY
TárgyEredmény("BMEVIIIAA00", "jegy", _) >= 2
VAGY
TárgyEredmény("BMEVIIIAA00", "felvétel", AktualisFelev()) > 0)

ÉS (Training.Code=("5N-A8") VAGY Training.Code=("5NAA8"))

VAGY EgyenCsoportTagja("Kreditpótlás_2023/24/2")

A fenti forma a Neptun sajátja, ezen technikai okokból nem változtattunk.

A kötelező előtanulmányi rend az adott szak honlapján és képzési programjában található.

Ajánlott:
Received credits from Basic of Programming 1 course is compulsory
7. Objectives, learning outcomes and obtained knowledge The fundamental goal of the course, as a foundation course, to continue to raise awareness (knowledge) about computerised problem-solving methods and basic tools, started last semester, at a level that would enable the students to apply their knowledge in their further studies effectively.
The primary objective of this semester to deepen the knowledge of the C programming language, and introduce the fundamentals object-oriented programming. The aim of the course is gained by familiarising C ++, based on the C knowledge from the previous semester.
The exercises and labs material continues to follow the syllabus of lectures. The exercises help to deepen the knowledge of the C++ programming language.


8. Synopsis
  1. Lecture: Summary of the previous semester. "Repair" of the C language: value type struct, enum, bool type. Low-level Function call. The need for prototypes, the introduction of a reference type. Using function as by left value. Introduction to isostream.

    Lab: Summary of Basic Operating System knowledge. Practice with the development environment - usage of the development tools.
  2. Lecture: Function name overloading. Default function parameters, inline functions, namespaces. A short introduction to memory allocation and the exception handling mechanism of C++

    Lab: Exercising with const and reference. Rewriting code written in C to C++ using C++ elements. Discovery of memory leaking.

Fundamentals of the object-oriented programming.

  1. Lecture: Object-oriented programming: Basic concepts, principles, object definition. Classes, encapsulation, concept of information hiding and visibility. Member variables and member functions. Getters and setters. The „this" pointer. Constructors, destructors.

    Lab: A simple class implementation. Getter/setter functions.
  1. Lecture: Constructors and destructors. Copy constructor, assignment operator. The initialisation of member variables. Constant and static members.

    Lab: Constructors, destructors, operator<< overload.
  2. Lecture: Visibility. The concept of operator overload. The realisation of operation overload by the member and global functions. Restrictions.

    Lab: Classes width dynamic data. Copy constructor, assignment operator.

  3. Lecture: The role of the inheritance in object-oriented programming. Inheritance, derived class, base class. Influence of inheritance on visibility. Constructors and inheritance.

    Lab: Implementation of more complex objects (e.g. Dynamic array). Operator overload., Homework specification.

  4. Lecture: Virtual functions, abstract classes. Restricting inheritance. Virtual destructors. Heterogeneous collections.

    Lab: Inheritance, Impact of inheritance on visibility and overloading.

  5. Lecture: Multiple inheritance, virtual base classes. Concept and implementation of persistence.

    Lab: Heterogeneous collections. Homework: skeleton

  6. Lecture: Type conversion, conversion (cast) operators, exception handling.

    Lab
    : Multiple inheritance and persistence related tasks.
  1. Lecture: The role of the generic data structures. Function and class templates.

    Lab: Type conversion (cast), and exception handling exercises.

  2. Lecture: Introduction of Standard Template Library (STL).

    Lab:
    Generic data structures and algorithms.

  3. Lecture: STL containers and algorithms, iterators.

    Lab:
    STL containers and algorithms. Homework presentation.

  4. Lecture: Presentation of complex example. Language tools.

    Lab:
    Homework presentation.

  5. Lecture: Summary. Introduction to design patterns.

    Lab: Spare lab
9. Method of instruction There are two lectures and two computer laboratory practices every week. 
10. Assessment

During the semester:

  • Presence: It is compulsory to visit lectures and lab practices. The presence is checked every time. The absence of a student at the lectures and laboratory practices must be less than 30%, for each type individually. Reaching this limit in either of the lecture or lab practice results in an incomplete. Tutors are entitled to check the required knowledge of the students prior to the lab, or during the lab. The lab is registered as absence for students failing this check.
  • Small tests. There are three small tests on laboratory practices. Two of the tests score must reach 40%. A missed test is treated as 0 points.
  • Mid-semester tests. There are two mid-semester tests. These have no minimum limit one by one, but the sum of the score of the two tests must reach 50%. A missed test is treated as 0.
  • Beside the small tests, there is a long-term individual homework assignment for each student to solve. The specification is published on week 6, the solution is to be delivered on week 13.

Mid-semester mark is given to those students who completed all assessments. The mark is based on the sum of the score of the two mid-semester tests (2×40), and the score of the best two small tests (2×10). The maximum, therefore, is 110 points. If the assessments are completed, the student passes the course.

11. Recaps

There is no repeat possibility neither for the presence.

The small tests are repeated during the semester, as the maximum score of two is taken automatically.

The mid-term tests can be repeated at the repeat week. Only one of the two mid-term tests can be repeated, and it must be the one with the lower score. The new score will overwrite the old one.

For the homework assessment, late delivery is accepted by 12:00 of the last day of the semester (Friday of week 14) while paying a late delivery fee. Beyond week 14 there is no way to deliver homework.

12. Consultations Consultation: the usual way is via e-mail. Personal consultation is also possible based on reconciliation with the teacher.
13. References, textbooks and resources
  • Bjarne Stroustrup "The C++ Programming Language", Addison-Wesley. Available in many languages.
  • Scott Meyers "Effective C++", Addison-Wesley. In English.
  • Tóth Bertalan "Programozzunk C++ nyelven", ComputerBooks, 2003. In Hungarian.
  • Programming problems with solutions: http://www.aut.bme.hu/cpppeldatar. In Hungarian.
  • C and C++ programming resources: http://www.cprogramming.com/. In English.
14. Required learning hours and assignment
Classes 56
Preparation for lectures
 14
Preparation for laboratory practices 28
Preparation for tests 43
Preparation for knowledge tests   9
Homework assessment 30
Summ
180