Topic outline

    1. General Information

    The C programming course starts with a kick-off session on Friday, January 14th at 12:15. This will be an online session on the General Channel of Microsoft Teams . The session will be recorded.

    The official course language is English, and therefore all information in MyCourses is in English. However, the course material and assignments are also available in Finnish. In exercises, you can get help in both English and Finnish.

    Course materials and exercises are available in the A+ System. Materials are available in English and Finnish. 

    Course personnel can be contacted by email at elec-a7100@aalto.fi. All emails should be in English. Do not use email for questions on course exercises or the environment setup, but use either Zulip or live exercise sessions on Teams for that.

    Exercise sessions

    There are weekly online exercise sessions on Live exercise sessions Channels of Teams. Participation is not mandatory, but you can check in any time during the session if you want to discuss exercises or other course topics. The exercises are arranged at the following times:

    Mon Tue
    Wed
    Thu
     Fri
    14.15-16.00
    14.15-16.00
    16.15-18.00
    12.15-14.00
     10.15-12.00
     Niilo Heinonen
     Kasper Kivimäki
     Tuukka Himanka
     Kasper Kivimäki
     Niilo Heinonen
     Oskari Saarinen
     Kiia Mäkirinta
     Juha Ponkkonen
     Kiia Mäkirinta
     Oskari Saarinen
     Aaron Geldert
     Markus Virtanen
     Markus Virtanen
     Aleksi Sohlman
     Aaron Geldert
     Veera Fristadius
     Rami Ghoniem
     Iisa Saunamäki
     Veera Fristadius
     Iisa Saunamäki
      16.15-18.00
         
       Tuukka Himanka
         
       Juha Ponkkonen
         
       Markus Säynevirta
         
       Rami Ghoniem      


    Learning outcomes

    After completing this course, you will:

    1. master C Programming Language Syntax, which will allow you to read and understand software written in this language.

    2. master basic C Programming Language semantics to create meaningful statements to achieve your goals.

    3. use C language to express your ideas about basic computational tasks.

    4. solve simple programming tasks in the C language.

    5. use development environments to develop, build and validate software.


    Course organization

    This is course is organized as a basic course in C Programming Language. Its purpose is not present you all the details of this language as a complete reference would do, but rather summarize the basic syntax and features of this programming language. Accordingly, the course content is divided into two parts, a midterm exam (a short-duration exercise), and a programming project.

    1. Basic C Programming Language Syntax: In this part, the basic software constructs of the language are presented. It is composed of 7 modules.

    2. Midterm exam: The exam is a short-duration exercise in A+ system. You will need to solve 4 programming exercises in 28 hours.

    3. Standard Library of C Programming Language: In this part, the standard library constructs are presented. It has 2 modules.

    4. 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 the concepts with hands-on exercises. For this purpose, you are asked to do small programming exercises after reading each C programming language concept. There will be a short-time limited exercise to measure your understanding of the C language concepts. You will be also asked to solve a programming problem after completing the materials and related exercises.

    The course parts and lectures, and their deadlines are as follows:

    1. C Programming Language Basics

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

      2. Basic concepts (Deadline: Friday, 28.01.2022 @ 19:59)

      3. Conditional statements and loops (Deadline: Friday, 04.02.2022 @ 19:59)

      4. Binary operations (Deadline: Friday, 11.02.2022 @ 19:59)

      5. Pointers and arrays (Deadline: Friday, 18.02.2022 @ 19:59)

      6. Dynamic memory (Deadline: Friday, 04.03.2022 @ 19:59)

      7. Advanced data types (Deadline: Friday, 11.03.2022 @ 19:59)

    2. Midterm exam (Start Time: Monday 21.03.2022 @ 07:59 Deadline: Tuesday, 22.03.2022 @ 11:59)

    3. Standard Library of C Programming Language

      1. Basic functions (Deadline: Friday, 01.04.2022 @ 19:59)

      2. Input/output streams (Deadline: Friday, 08.04.2022 @ 19:59)

    4. Programming project (Deadline: Friday, 22.04.2022 @ 19:59)

    Programming exercises

    The programming exercises are designed so that if you have read the text from the beginning without jumping around, 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 to practice the introduced programming concept. You will need your own development environment, in which you develop and test your program before submitting the source code to the automatic grading server. In general, you will be able to collect up to 95 points by doing these exercise tasks.

      • Round feedback You are required to provide feedback for each section to allow the course organizers to improve the course organization in the upcoming course realizations. By answering the feedback questionnaires you will get up to 5 points.

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

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

      • the Valgrind tool gives any errors, 50% of the remaining points are deducted.

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

    Mid-term (short time-limited) exercise

    After completing the first part, Basic C Programming Language Syntax, there will be a short time-limited exercise, which will aim at measuring your basic syntax-related understanding of the language. This special exercise will be composed of 4 questions. Each question will be selected randomly from a predefined set of questions. You will have 28 hours to submit your solutions.

    Programming project

    After completing the course material (of both of the parts), you will be randomly assigned a programming project. In the project, you will be required to solve a programming task that will require:

    1. Acquire user input (commands and/or arguments) from standard input stream.

    2. Modify the state of a database according to user command.

    3. Save the modifications to a file.

    4. Load the program state from a file.

    5. Display the program state on the standard output stream.

    The details of the programming task instructions and guidelines will be made available two weeks before the course ends.

    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 de facto reference book on C Programming language.

    • “The C Programming Language” (book) by Brian W. Kernighan and Dennis M. Ritchie (second edition).

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

    Grading

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

    1. Basic C Programming Language Syntax: 30%.

    2. Midterm exam: 20%.

    3. Standard Library of C Programming Language: 20%.

    4. Programming project: 30%.

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

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

    \[\text{P}_1 = \frac{\text{EP}_1 - 350}{350} \times 5 + 0.5\]
    1. Exam sub-grade \(\text{Ex}\) when total collected exercise points \(\text{X}\) out of maximum 15 points is calculated by

    \[\text{Ex} = \frac{\text{X} - 7}{8} \times 5 + 0.5\]
    1. Part II Exercises sub-grade \(\text{P}_2\) when total collected exercise points \(\text{EP}_2\) out of maximum 200 points is calculated by

    \[\text{P}_2 = \frac{\text{EP}_2}{200} \times 5 + 0.5\]
    1. Programming project sub-grade \(\text{PP}\) when total collected exercise points \(\text{P}\) out of maximum 10 points is calculated by

    \[\text{PP} = \frac{\text{P}}{10} \times 5 + 0.5\]

    The sub-grade formulas above implies the following.

    1. You are required to get 50 points or more from Modules 1 to 7 (Part I: C Programming Language Basics). Thus, you should get at least 350 points.

    2. The exam will be evaluated with a grade between 0 to 15, and you must get at least 7 points.

    3. The programming project will be evaluated with a grade between 0 to 10.

    The final grade \(G\) will be calculated as follows

    \[G = \text{round}(0.3 \times \text{P}_1 + 0.2 \times \text{Ex} + 0.2 \times \text{P}_2 + 0.3 \times \text{PP})\]

    Workload

    In this course, we will have two online lectures.

    1. Kick-off session on General Channel of course Teams @ Friday 14.01.2022 12:15.

    2. Project kick-off session on General Channel of course Teams @ Monday 11.04.2022 12:15. (We might discuss about this time).

    The following workload is estimated.

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

    2. Each module should take roughly 10 hours. However, some modules are more difficult than others. We are expecting that the Modules 1 - 3 takes much less time than 10 hours, but Modules 4 - 9 would take more than 10.

    3. The exam should take around 2 hours (excluding 10 hours of preparation).

    4. The project is expected to take around 15 - 20 hours of work.

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

    Working practices

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

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