Please note! Course description is confirmed for two academic years, which means that in general, e.g. Learning outcomes, assessment methods and key content stays unchanged. However, via course syllabus, it is possible to specify or change the course execution in each realization of the course, such as how the contact sessions are organized, assessment methods weighted or materials used.


The student knows the basics of C programming language and can write short programs using the C language.

Credits: 5

Schedule: 01.06.2021 - 31.08.2021

Teacher in charge (valid 01.08.2020-31.07.2022): Jukka Manner, Pasi Sarolahti

Teacher in charge (applies in this implementation): Yusein Ali, Pasi Sarolahti

Contact information for the course (valid 29.05.2019-21.12.2112):

We will use Microsft Teams as the main communication channel during the course for all technical and exercise-related questions.  The course exercises and other contact activities will likewise happen in Teams. If you have problems joining (may be possible if you are not a regular Aalto student), please send an email to the course email address given below. Closer to the beginning of the course we will also automatically add those people to Teams who have registered to the course in Oodi.

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. 

For questions about the course arrangements, the course personnel can be reached by email at  The emails should be in English, otherwise, you might not get a response

Do not use email for questions on course exercises or the environment setup, but use either Teams of exercise sessions for thatAlso, we'd like to request that you do not use direct personal emails in course matters, but the above address that goes to all people in course personnel

We will also use MyCourses Announcements for the course.

Late exercise submissions are possible. The arrangement is as follows:

  1. Module 1 & 2 exercises can be submitted till 23rd of June with 50% late submission penalty.
  2. Module 3 and onwards can be submitted at most 1 week late for 30% late submission penalty.
  3. In exercise sessions, we will not respond to requests about deadline-passed modules. For example, if you attend exercise sessions on week (14 -18 of June 2021), we will not answer the questions about Module 1 and Module 2.

CEFR level (applies in this implementation):

Language of instruction and studies (valid 01.08.2020-31.07.2022):

Teaching language: English

Languages of study attainment: English


  • Valid 01.08.2020-31.07.2022:

    Basic concepts of systems-level programming. Basics of the C programming language. Dynamic memory management and its application in common data structures. Basic use of programming and debugging tools for C. Small programming exercises in C.

  • Applies in this implementation:

    The course is divided into 10 modules that will take place from early June to mid August. There will be weekly deadlines. In addition, there will be a small programming project and exam in August. 

    The ten modules are:

    1. Basics
    2. Input and Output
    3. Pointers and Arrays
    4. Strings
    5. Dynamic memory
    6. Structured data types
    7. Multidimensional arrays
    8. Binary operations
    9. I/O streams
    10. Advanced features

Assessment Methods and Criteria
  • Valid 01.08.2020-31.07.2022:

    Exercises and programming test.

  • Applies in this implementation:

    The course grade will be a weighed average from the following:

    • Exercises (40%): max. 1000 points out of the ten modules (max. 100 points each), min. 500 points, at least seven modules must have 50 points or more
    • Programming project (30%): Graded on a scale from 0 to 10. At least 5 points required.
    • Exam (30%): Maximum points yet undecided, at least 50% of maximum points are required to pass.

    All three of the above components need to be passed at acceptable level. When computing the grade, a normalised sub grade between 0 and 5.5 will be calculated from each of the above three categories. The final grade will be weighed average of the three sub grades, rounded to nearest integer. The exact equation for calculating the grade is

    ((PointsE - 500) / 500 * 5 + 0,5) * 0,4 + ((PointsP - 5) / 5 * 5 + 0.5) * 0,3 + ((PointsT - MinT) / (MaxT-MinT) * 5 + 0,5) * 0,3

    (where PointsE is exercise score, PointsP is the project score and PointsT is the result from programming test. The final grade is the above result rounded to nearest integer. MaxT is the maximum number of points from programming test (yet undecided) and MinT is the minimum points for acceptable test (50% of maximum).

  • Valid 01.08.2020-31.07.2022:

    4 h lectures

    assisted programming exercises with voluntary participation. There will be about 10 h of weekly exercise hours that can be taken as needed.

    120 h individual study

  • Applies in this implementation:

    There will be two 2-hour lectures.

    Each exercise round is estimated to require about 10 hours of work, based on online material and exercises.

    Programming project is estimated to require about 10 - 15 hours of work.

    Exam takes 3 hours + preparation. If you have done exercises actively, not much additional preparation is needed.


Study Material
  • Valid 01.08.2020-31.07.2022:

    Study materials and exercises are available in the web. Study materials and exercises are available also in Finnish.

  • Applies in this implementation:

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

Substitutes for Courses
  • Valid 01.08.2020-31.07.2022:

    ELEC-A1100, AS-0.101/AS-0.1101/AS-0.1103

  • Valid 01.08.2020-31.07.2022:

    Basics in proramming (for example CS-A1111).


Details on the schedule
  • Applies in this implementation:

    The C programming course starts with a kick-off session on Tuesday, June 1st, 2021 at 14:15 @ Course Teams

    Modules and deadlines

    1. Basics, deadline 8.6.2021
    2. Input and Output, deadline 11.6.2021
    3. Pointers and Arrays, deadline 18.6.2021
    4. Strings, deadline 2.7.2020
    5. Dynamic memory, 9.7.2021
    6. Structured data types, 16.7.2021
    7. Multidimensional arrays, 23.7.2021
    8. Binary operations, 30.7.2021
    9. I/O streams, 6.8.2021
    10. Advanced features, 13.8.2021

    There will be no activity during the midsummer week (21.6. - 27.6.)

    Kickoff session for programming project: Tue 3.8.2021 at 14:15

    Deadline for programming project: Sun 22.8.2021

    The programming test is on the last week of August (dates to be confirmed).