ELEC-A7100 - Basic Course in C programming, Lectures, 1.6.2022-31.8.2022
Kurssiasetusten perusteella kurssi on päättynyt 31.08.2022 Etsi kursseja: ELEC-A7100
Osion kuvaus
-
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 Wednesday, June 1st 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.
- There are weekly online exercise sessions on Live exercise sessions Channels of 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:
Mon Tue Wed Thu Fri 16:15 - 18:00 12:15 - 14:00 10:15 - 12:00 14:15 - 16:00 10:15 - 12:00 Tuukka Himanka Niilo Heinonen Niilo Heinonen Veera Fristadius Veera Fristadius Kasper Kivimäki Oskari Saarinen Oskari Saarinen Kasper Kivimäki Rami Ghoniem 16:15 - 18:00 Tuukka Himanka Rami Ghoniem
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. 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.
-
Basic C Programming Language Syntax: In this part, the basic software constructs of the language are presented. It is composed of 7 modules.
-
Midterm exam: The exam is a short-duration exercise in the A+ system. You will need to solve 4 programming exercises in 28 hours.
-
Standard Library of C Programming Language: In this part, the standard library constructs are presented. It has 2 modules.
-
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 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 a programming problem after completing the modules.
In this course, we will have two online lectures.
-
Course kick-off session, and
-
Project kick-off session.
The course modules and their deadlines are as follows:
-
Course kick-off session on General Channel of Microsoft Teams @ Wednesday 01.06.2022 12:15.
-
C Programming Language Basics
The modules of this part are mandatory. You must get 50 points or more from the exercises in each module.
-
Getting started (Deadline: Friday, 10.06.2022 @ 19:59)
You must collect at least 50/100 points from the assignments.
-
Basic concepts (Deadline: Friday, 17.06.2022 @ 19:59)
You must collect at least 50/100 points from the assignments.
-
Conditional statements and loops (Deadline: Friday, 24.06.2022 @ 19:59)
You must collect at least 50/100 points from the assignments.
-
Binary operations (Deadline: Friday, 01.07.2022 @ 19:59)
You must collect at least 50/100 points from the assignments.
-
Pointers and arrays (Deadline: Friday, 08.07.2022 @ 19:59)
You must collect at least 50/100 points from the assignments.
-
Dynamic memory (Deadline: Friday, 15.07.2022 @ 19:59)
You must collect at least 50/100 points from the assignments.
-
Advanced data types (Deadline: Friday, 22.07.2022 @ 19:59)
You must collect at least 50/100 points from the assignments.
-
-
Midterm exam (Start Time: Thursday 28.07.2022 @ 07:59 Deadline: Friday, 29.07.2022 @ 11:59)
You must get 10/15 points from the exam.
-
Standard Library of C Programming Language
-
Basic functions (Deadline: Friday, 05.08.2022 @ 19:59)
You can collect 100 points from the exercise assignments.
-
Input/output streams (Deadline: Friday, 12.08.2022 @ 19:59)
You can collect 100 points from the exercise assignments.
-
-
Project kick-off session on General Channel of Microsoft Teams @ Monday 15.08.2022 12:15. (We might discuss this time).
-
Programming project (Deadline: Friday 26.08.2022 @ 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.
-
In each section, you will have a chance to collect 100 points for exercises.
-
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 Programming locally for exercise tasks in A+). In general, you will be able to collect up to 90 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.
-
-
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).
-
-
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:
-
Acquire user input (commands and/or arguments) from the standard input stream.
-
Modify the state of a database according to a user command.
-
Save the modifications to a file.
-
Load the program state from a file.
-
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.
-
“C library” (online) http://www.cplusplus.com/reference/clibrary/.
Grading
The four-course parts have the following weights on the final grade.
-
Basic C Programming Language Syntax: 30%.
-
Midterm exam: 20%.
-
Standard Library of C Programming Language: 20%.
-
Programming project: 30%.
The sub-grade of each part will be calculated as follows:
-
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}\] -
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}\] -
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)\] -
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.
-
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.
-
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.
-
The online lectures should take no more than 4 hours.
-
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.
-
The exam should take around 2 hours (excluding 10 hours of preparation).
-
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 channel of Microsoft Teams. Teaching assistants will answer your questions during these sessions.
The schedule for these meetings is
Online exercise sessions Monday
Tuesday
Wednesday
Thursday
Friday
16:15 - 18:00
12:15 - 14:00
10:15 - 12:00
14:15 - 16:00
10:15 - 12:00
16:15 - 18:00
-
We will use the 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.
-
General course organization-related questions can be asked in the General Channel of Microsoft Teams or the General stream of the Zulip organization.
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.