Topic outline

  • General information

    This course is about C Programming language and aims at introducing you to its syntax and features. On this page, you can find detailed information on the course's organizational details.

    • The course starts with a kick-off session on Monday, 05.06.2023 @ 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.fiAll 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 for that.

    • There are weekly online exercise sessions on Live exercise sessions Channel of Microsoft Teams

      Participation is not mandatory, but you can check in at any time during the session if you want to discuss exercises or other course topics.

      The exercise sessions are arranged at the following times with the following assistants:

      Online exercise sessions
      Time/Day Monday Tuesday Wednesday Thursday Friday
      10:15 - 12:00

      Dinh
      Tuan

      Kaarlo
      Petri 
      Elsa
       12:15 - 14:00 
         Tran
      Harsh
       Tran 
      Otto
        Kaarlo
      Harsh
      Tuan
       14:15 - 16:00       Dinh
      Otto
       
       16:15 - 18:00 Tuukka
      Markus
           Petri
      Elsa
       
       18:15 - 20:00  Tuukka
      Markus
             

    • Important links
    Learning outcomes

    After completing this course, you will:

    • master 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 C language to implement computational tasks.

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

    Course organization

    This course is organized as a basic course in the C programming language. The presented content makes the following assumptions:

    • The presented content is not a complete reference to the language so that some details are left out of the content.

      The primary purpose of the provided content is to introduce you to the important features and syntax of the C programming language.

    • Familiarity with the basic terminology of computer programming. For example, it is assumed that you recognize functions, variables, data structures, etc., although whenever possible these concepts are briefly summarized.
    Accordingly, the course content is divided into the following parts.
    1. Basic C Programming Language Syntax: In this part, the basic software constructs of the language are presented. It is composed of 7 modules including this module.

    2. Midterm exam: The exam is a short-duration exercise in the 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 be assigned to a programming project. 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 8 modules following this module, each of which aims at introducing you to a certain topic and asking you to solve several programming exercises. There will be an online exam, which is a short time-limited exercise that measures your learning level. You will be also asked to solve some programming problem after completing the modules.

    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 Microsoft Teams General Channel  @ Monday, 05.06.2023 @ 12:15.

    2. C Programming Language Basics

      The modules of this part are mandatory.  You must get 50 points or more from the exercises in each module.

      1. Getting started (Deadline: Monday, 12.06.2023 @ 19:59)

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

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

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

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

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

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

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

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

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

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

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

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

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

    3. Midterm exam (Start Time: Thursday, 27.07.2023 @ 07:59  Deadline: Friday, 28.07.2023 @ 11.59)

      You must get 10/15 points from the exam.

    4. Standard Library of C Programming Language

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

        You can collect 100 points from the exercise assignments.

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

        You can collect 100 points from the exercise assignments.

    5. Project kick-off session on  Microsoft Teams General Channel @ Monday, 14.08.2023 @ 12:15.

    6. Programming project (Deadline: Friday, 25.08.2023 @ 19:59)

      You can collect a maximum of 10 points from the project.

    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.

      • 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% of penalty.

    Mid-term exam (short time-limited exercise)

    After completing the first part, Basic C Programming Language Syntax, there will be a short time-limited exercise to measure 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 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 the standard input stream.

    2. Modify the state of a database according to a 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 to 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 frequently used functions throughout this material.

    Grading

    The four-course parts 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

      \[\begin{split}\text{P}_1 = \begin{cases} \min\left\{\text{round}\left(\frac{\text{EP}_1 - 350}{350} \times 5 + 0.5\right), 5 \right\}, & \text{ if } \text{EP}_1 \ge 350\\ 0,& \text{ if }\text{EP}_1 < 350 \end{cases}\end{split}\]
    2. Exam sub-grade \(\text{Ex}\) when total collected exercise points \(\text{X}\) out of maximum 15 points is calculated by

      \[\begin{split}\text{Ex} = \begin{cases} \min\left\{\text{round}\left(\frac{\text{X} - 10}{5} \times 5 + 0.5\right), 5 \right\} & \text{ if }X \ge 10 \\ 0 & \text{ if }X < 10 \end{cases}\end{split}\]
    3. Part II Exercises sub-grade \(\text{P}_2\) when total collected exercise points ia \(\text{EP}_2\) out of maximum 200 points is calculated by

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

      \[\text{PP} = \text{round}\left(\frac{\text{P}}{10} \times 5\right)\]

    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 7 (Part I: C Programming Language Basics). In other words, you should get at least 350 points, but also each module must exceed 50 points limit.

    2. You must get at least 10/15 points from the exam.

    If you fulfill the basic requirements, your 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

    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 Modules 1 - 3 takes much less time than 10 hours, but Modules 4 - 9 would take more than 10 hours.

      Module 7: Advanced data types is more difficult than others. Please schedule your time accordingly.

    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

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

    • There will be live exercise sessions in the Live exercise sessions Channels of Microsoft Teams.  Teaching assistants will answer your questions during these sessions.

      The schedule for these meetings is tabulated below.

      Online exercise sessions
      Time/Day Monday Tuesday Wednesday Thursday Friday
      TBD TBD TBD TBD TBD TBD

    • We will use the Microsoft Teams for general announcements.

      In some cases, we will also use MyCourses to send you announcement emails in addition to Microsoft Teams.

      Some announcements will also be posted Zulip organization of the course.

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

    Course personnel

    • Resposible teacher: Yusein R. Ali

    • Head assistant: Niilo Heinonen

    • Teaching assistants:

      • Tran Duong
      • Dinh Trong Minh
      • Markus Säynevirta
      • Tuukka Himanka
      • Elsa Kattainen
      • Tuan Tran Quang Anh
      • Petri Huotari
      • Kaarlo Kauriinvaha
      • Harsh Rathee
      • Otto Salmela

    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 violations, you might face severe consequences.