Topic outline

  • Kick-off lecture on 12.09.2022 12:15 @ course teams. See below.

    Learning outcomes

    After completing this course, you are required to aim at reaching the following goals.

    • master the object-oriented programming using C++ Programming Language Syntax, which will allow you to read and understand software written in this language.

    • master basic C++ Programming Language semantics to create meaningful statements in this programming language.

    • use the C++ language to implement computational tasks.

    • use C++ language development environments to write, build and validate software.

    • use C++ language to develop a group project.

    • use Version Control System, Git, to keep track of software development.

    • use Git as a collaborative software development tool.

    • use third-party libraries to develop complex applications.

    • evaluate the developments of peers.

    Course organization

    This course is organized as a basic course in the C++ programming language. Its purpose is not to present you all the details of the language as a complete reference would do, but rather to summarize the basic syntax and features. Accordingly, the course content is divided into the following parts.

    1. Setting up development environment for collaborative C++ development: In this part, you will be required to setup a development environment on your computer for the course. This part is a prerequisite for the other parts and you will be provided with detailed guidelines.

    2. Basic C++ Programming Language features: In this part, the basic software constructs of the language will be introduced. It is composed of 5 online modules, which have several exercise assignments.

    3. Programming project: At the end of the course, you will have a programming project assignment. The project will require you to use the C programming software constructs to reach the objectives of the assignment.

    Learning a programming language, in general, is an individual effort that must be supported by practicing with hands-on exercises. This course is accordingly organized into 6 modules following this module, each of which aims at introducing you to a certain topic and asking you to solve several programming exercises. After finishing the exercises, you will have a project assignment that will be completed as a group.

    In this course, we will have two online lectures.

    1. Course kick-off session, and

    2. Project kick-off session.

    The course modules and their deadlines are as follows:

    1. Course kick-off session on General Channel of Microsoft Teams @ Monday 12.09.2022 12:15.

    2. C++ Programming Language Features in A+

      1. Getting started (Deadline Friday, 23.09.2022 @ 19:59)

        You must collect at least 50/100 points from the assignments.

      2. Basics of C ++programming (Deadline Friday, 30.09.2022 @ 19:59)

        You must collect at least 50/100 points from the assignments.

      3. Containers in C++ (Deadline Friday, 07.10.2022 @ 19:59)

        You must collect at least 50/100 points from the assignments.

      4. Classes and object-oriented programming with C++ (Deadline Friday, 14.10.2022 @ 19:59)

        You must collect at least 50/100 points from the assignments.

      5. Organization and utility constructs of C++ (Deadline Friday, 21.10.2022 @ 19:59)

        You must collect at least 50/100 points from the assignments.

      6. Advanced features of C++ (Deadline Friday, 28.10.2022 @ 19:59)

        You must collect at least 50/100 points from the assignments.

    3. Programming project
      1. Project kick-off session on General Channel of Microsoft Teams @ Monday, 24.10.2022 12:15.

      2. Project plan review (Week 46, starting Monday, 14.11.2022)
      3. Project demo (Weeks 49 and 50, starting Monday, 5.12.2022)
      4. Project final commit to git (Deadline: Sunday, 11.12.2022 @ 23:59)

        You must get at least 1/5 points from the project.

      5. Peer evaluation (Deadline Friday, 16.12.2022 @ 23:59)

    Programming exercises

    The programming exercises are designed so that if you have read the text from the beginning, you should be able to do the exercise with the information you have read until that point. Therefore, when you encounter an exercise, you could stop reading and try to do the exercise. The exercises are organized as described below.

    1. In each section, you will have a chance to collect 100 points for exercises.

    2. There are two types of exercises:

      • Tasks You will be assigned in each section to allow you practice the introduced programming concept. You will need your own development environment for developing and testing your program before submitting the source code to the automatic grading server (see submitting exercises for grading). In general, you will be able to collect up to 95 points by doing these exercise tasks.

      • Questionnaires You are required to answer different questions. Each module has at least Prologue and Epilogue questionnaires. In Epilogue questionnaires, you can provide feedback to allow the course organizers to improve the course organization in the upcoming course realizations. For a perfect grade, you are required to submit your answers to the questionnaires.

    3. The programming tasks can include multiple subtasks. Each correctly implemented subtask will give you some points. However, there will be point reductions if

      • the compiler produces warnings, and 50% of the points are deducted.

      • Valgrind tool finds any errors, 50% of the remaining points are deducted (this tool is used after Module 6 and onwards).

    4. It is possible to submit the exercises within a week later than their deadlines. But there will be a 30% penalty.

    Programming project

    After completing the course material, you will be assigned a programming project. In the project, you will be required to develop a complete program on a topic that you can choose from a list we will provide to you or you can choose your own topic.

    The details of the programming task instructions and guidelines will be made available on the day of the project kick-off session.

    References

    The material presented here is directed toward exercises so that you can immediately practice the concepts you have learned by solving several exercises. In order to get additional information, you can consult the following books.

    • “C++ Primer” (book) by Stanley B. Lippman, Josée Lajoie, Barbara E. Moo, Addison-Wesley (2013), (fifth edition).

    • “The C++ Programming Language” (book) by Bjarne Stroustrup, Addison-Wesley (2013), (fourth edition).

    We strongly encourage you to frequently use online C++ language standard library reference to get more information about frequently used functions throughout this material.

    Grading

    The course parts have the following weights on the final grade.

    1. Basic C++ Programming Language features: 45%.

    2. Programming project: 45%.

    3. Peer evaluation: 10%.

    The sub-grade of each part will be calculated as follows:

    1. Part I Exercises sub-grade \(\text{Ex}\) when total collected exercise points \(\text{EP}\) out of maximum 600 points is calculated by

      \[\begin{split}\text{Ex} = \begin{cases} \min\left\{\text{round}\left(\frac{\text{EP} - 300}{300} \times 5 + 0.5\right), 5 \right\}, & \text{ if } \text{EP} \ge 300\\ 0,& \text{ if }\text{EP} < 300 \end{cases}\end{split}\]
    2. Programming project sub-grade \(\text{PP}\) is between 0 and 5.

    3. Peer evaluation sub-grade \(\text{PE}\) is between 0 and 5.

    The sub-grade formulas are applied if and only if you pass the minimum requirements of the course.

    1. You are required to get 50 points or more from each of Modules 1 to 6. In other words, you should get at least 300 points, but also each module must exceed 50 points limit.

    2. You must get at least 1/5 points from the project.

    If you fulfill the basic requirements, your final grade \(G\) will be calculated as follows

    \[G = \text{round}(0.45 \times \text{Ex} + 0.45 \times \text{PP} + 0.1 \times \text{PE})\]

    Workload

    The following workload is estimated.

    1. The online lectures should take no more than 2 hours.

    2. Each module should take roughly 10 hours. However, some modules are more difficult than others.

      We are expecting that Modules 1 - 5 takes less time than 10 hours, but Modules 6 - 7 would take more than 10 hours.

    3. The project is expected to take around 60 hours of work for each student.

    Therefore, this course requires 120-130 hours of work.

    Working practices

    • During the course, we are going to use Microsoft Teams for online meetings.

    • There will be live exercise sessions in Live Exercise Sessions channel of Microsoft Teams. Teaching assistants will answer your questions on these sessions.

      The schedule for these meetings is

      Table 1 Online exercise sessions

      Monday

      Tuesday

      Wednesday

      Thursday

      Friday

      10.15-12.00
      Lassi
      Tuan

      12.15-14.00
      Lassi
      Tuan
      14.15-16.00
      Kasper
      Tuukka
      Niilo

      16.15-18.00
      Tuukka
      Niilo

      8.15-10.00
      Duong
      Minh

      10.15-12.00
      Duong
      Nhut
      Aleksi

      10.15-12.00
      Nhut
      Mark
      Minh

      12.15-14.00
      Aleksi
      Kasper
      Mark



    • We will use General Channel of Microsoft Teams for general announcements. In some cases, we might use MyCourses to send you announcement emails.

    • Please post your written questions regarding the exercises to our Zulip organization.

      If you are not familiar with Zulip, take a look here.

    Important

    In Zulip, please select an appropriate stream to post your question. For example, if you have a question about Module 1, post your question on stream Module 1.

    Code of academic integrity

    This course is intended to be an individual study. Therefore, you should not copy the work of others, and obey the Aalto University code of Academic Integrity.

    If we identify cases of violations, you might face severe consequences.